建设网站建设工程信息泰州网1242低工程词,咨询公司有哪些,上海品牌全案设计公司,做宣传的网站基于JavaSpringBootvue的智能农场管理系统详细设计和实现 博主介绍#xff1a;多年java开发经验#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文…基于JavaSpringBootvue的智能农场管理系统详细设计和实现 博主介绍多年java开发经验专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式 文章目录 基于JavaSpringBootvue的智能农场管理系统详细设计和实现研究背景意义主要模块设计语言技术功能截图用户管理角色菜单菜单列表地块档案种植计划生产资料预警管理通知公告文件资料 论文报告关键源码总结获取源码 研究背景意义
中国是农业大国农业经济在整个国民经济和社会发展中一直有着非常重要的意义。20世纪90年代以来电子信息、网络通讯、自动控制等信息技术在农业领域得到广泛应用。目前我国农业发展已经由传统农业向现代化农业发展。农业信息化就是利用信息技术促进农业持续稳定的过程。它及时、有效、尤误的把农场信息他送到农场主的手中实现农场生产、管理、销售信息化提高农场经营效率。中国一直重视农业的发展但是对于农业现代化建设缺没能跟上现代化的步伐。当前阶段我国的农业信息化建设任然处于刚刚起步的阶段。在政策上我国政府在多地建设了信息化农场的试点地区。而在技术层次各类农场管理系统也被开发和应用各类农场。农产管理系统配合传感器是目前使用较广泛的信息技术。通过对农场调查研究分析建立数据库和农场信息管理系统、加工处理传感器数据帮助管理人做出正确的决策。通过传统渠道的信息搜集和查询非常繁琐而目效率低下很难把握时间上。在这种情况下我决定开发一套基于Java前后端分离的网页的在线智能农场管理系统包括登录模块普通用户管理农场数据分析展示、地块信息管理、种植计划管理、生产预警管理、生产资料管理等模块组成用来发搜集整理和发布相关信息。极大的提高了效率和缩短时间。让大家可以更方便的体验和实践与传统方式截然不同的管理方式。
主要模块设计 语言技术
开发工具IDEA 2021.3、navicat for mysql 、postman。
开发语言java、jdk1.8、mysql5、node.js 14。
硬件环境Windows 10操作系统、Google浏览器等。
主要技术springboot、mybatis-plus、vue、element UI、mysql等
功能截图
用户输入登录地址http://localhost:8001/#/login进入到登录页面、输入账号密码进行登录验证 农场信息管理首页:首页基本介绍、可以自定义展示图文视频都可以的 这里采用echarts树状图图标模拟实现。
用户管理 角色菜单 菜单列表
可以具体控制到按钮级别
地块档案 种植计划 生产资料 预警管理 通知公告 文件资料
查看上传下载等
论文报告 关键源码
用户登录 /*** 登录相关** author lyy*/
RestController
public class SysLoginController extends AbstractController {Autowiredprivate SysUserService sysUserService;Autowiredprivate SysUserTokenService sysUserTokenService;Autowiredprivate SysCaptchaService sysCaptchaService;/*** 验证码*/GetMapping(captcha.jpg)public void captcha(HttpServletResponse response, String uuid)throws IOException {response.setHeader(Cache-Control, no-store, no-cache);response.setContentType(image/jpeg);//获取图片验证码BufferedImage image sysCaptchaService.getCaptcha(uuid);ServletOutputStream out response.getOutputStream();ImageIO.write(image, jpg, out);IOUtils.closeQuietly(out);}/*** 登录*/PostMapping(/sys/login)public MapString, Object login(RequestBody SysLoginForm form)throws IOException {boolean captcha sysCaptchaService.validate(form.getUuid(), form.getCaptcha());
// if(!captcha){
// return R.error(验证码不正确);
// }//用户信息SysUserEntity user sysUserService.queryByUserName(form.getUsername());//账号不存在、密码错误if(user null || !user.getPassword().equals(new Sha256Hash(form.getPassword(), user.getSalt()).toHex())) {return R.error(账号或密码不正确);}//账号锁定if(user.getStatus() 0){return R.error(账号已被锁定,请联系管理员);}//生成token并保存到数据库R r sysUserTokenService.createToken(user.getUserId());return r;}/*** 退出*/PostMapping(/sys/logout)public R logout() {sysUserTokenService.logout(getUserId());return R.ok();}}service层实现 /*** 系统用户** author admin*/
Service(sysUserService)
public class SysUserServiceImpl extends ServiceImplSysUserDao, SysUserEntity implements SysUserService {Autowiredprivate SysUserRoleService sysUserRoleService;Autowiredprivate SysRoleService sysRoleService;Overridepublic PageUtils queryPage(MapString, Object params) {String username (String)params.get(username);Long createUserId (Long)params.get(createUserId);IPageSysUserEntity page this.page(new QuerySysUserEntity().getPage(params),new QueryWrapperSysUserEntity().like(StringUtils.isNotBlank(username),username, username).eq(createUserId ! null,create_user_id, createUserId));return new PageUtils(page);}Overridepublic ListString queryAllPerms(Long userId) {return baseMapper.queryAllPerms(userId);}Overridepublic ListLong queryAllMenuId(Long userId) {return baseMapper.queryAllMenuId(userId);}Overridepublic SysUserEntity queryByUserName(String username) {return baseMapper.queryByUserName(username);}OverrideTransactionalpublic void saveUser(SysUserEntity user) {user.setCreateTime(new Date());//sha256加密String salt RandomStringUtils.randomAlphanumeric(20);user.setPassword(new Sha256Hash(user.getPassword(), salt).toHex());user.setSalt(salt);this.save(user);//检查角色是否越权checkRole(user);//保存用户与角色关系sysUserRoleService.saveOrUpdate(user.getUserId(), user.getRoleIdList());}OverrideTransactionalpublic void update(SysUserEntity user) {if(StringUtils.isBlank(user.getPassword())){user.setPassword(null);}else{user.setPassword(new Sha256Hash(user.getPassword(), user.getSalt()).toHex());}this.updateById(user);//检查角色是否越权checkRole(user);//保存用户与角色关系sysUserRoleService.saveOrUpdate(user.getUserId(), user.getRoleIdList());}Overridepublic void deleteBatch(Long[] userId) {this.removeByIds(Arrays.asList(userId));}Overridepublic boolean updatePassword(Long userId, String password, String newPassword) {SysUserEntity userEntity new SysUserEntity();userEntity.setPassword(newPassword);return this.update(userEntity,new QueryWrapperSysUserEntity().eq(user_id, userId).eq(password, password));}/*** 检查角色是否越权*/private void checkRole(SysUserEntity user){if(user.getRoleIdList() null || user.getRoleIdList().size() 0){return;}//如果不是超级管理员则需要判断用户的角色是否自己创建if(user.getCreateUserId() Constant.SUPER_ADMIN){return ;}//查询用户创建的角色列表ListLong roleIdList sysRoleService.queryRoleIdList(user.getCreateUserId());//判断是否越权if(!roleIdList.containsAll(user.getRoleIdList())){throw new RRException(新增用户所选角色不是本人创建);}}
}权限控制 /*** Shiro配置** author admin */
Configuration
public class ShiroConfig {Bean(securityManager)public SecurityManager securityManager(OAuth2Realm oAuth2Realm) {DefaultWebSecurityManager securityManager new DefaultWebSecurityManager();securityManager.setRealm(oAuth2Realm);securityManager.setRememberMeManager(null);return securityManager;}Bean(shiroFilter)public ShiroFilterFactoryBean shiroFilter(SecurityManager securityManager) {ShiroFilterFactoryBean shiroFilter new ShiroFilterFactoryBean();shiroFilter.setSecurityManager(securityManager);//oauth过滤MapString, Filter filters new HashMap();filters.put(oauth2, new OAuth2Filter());shiroFilter.setFilters(filters);MapString, String filterMap new LinkedHashMap();filterMap.put(/webjars/**, anon);filterMap.put(/druid/**, anon);filterMap.put(/app/**, anon);filterMap.put(/sys/login, anon);filterMap.put(/swagger/**, anon);filterMap.put(/v2/api-docs, anon);filterMap.put(/swagger-ui.html, anon);filterMap.put(/swagger-resources/**, anon);filterMap.put(/captcha.jpg, anon);filterMap.put(/aaa.txt, anon);filterMap.put(/virtuel/**, anon);filterMap.put(/**, oauth2);shiroFilter.setFilterChainDefinitionMap(filterMap);return shiroFilter;}Bean(lifecycleBeanPostProcessor)public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() {return new LifecycleBeanPostProcessor();}Beanpublic AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {AuthorizationAttributeSourceAdvisor advisor new AuthorizationAttributeSourceAdvisor();advisor.setSecurityManager(securityManager);return advisor;}}全局配置
# Tomcat
server:tomcat:uri-encoding: UTF-8max-threads: 1000min-spare-threads: 30port: 8080connection-timeout: 5000msservlet:context-path: /renren-fastspring:# 环境 dev|test|prodprofiles:active: dev# jackson时间格式化jackson:time-zone: GMT8date-format: yyyy-MM-dd HH:mm:ssservlet:multipart:max-file-size: 100MBmax-request-size: 100MBenabled: truemvc:throw-exception-if-no-handler-found: true
# resources:
# add-mappings: false#mybatis
mybatis-plus:mapper-locations: classpath*:/mapper/**/*.xml#实体扫描多个package用逗号或者分号分隔typeAliasesPackage: io.renren.modules.*.entityglobal-config:#数据库相关配置db-config:#主键类型 AUTO:数据库ID自增, INPUT:用户输入ID, ID_WORKER:全局唯一ID (数字类型唯一ID), UUID:全局唯一ID UUID;id-type: AUTOlogic-delete-value: -1logic-not-delete-value: 0banner: false#原生配置configuration:map-underscore-to-camel-case: truecache-enabled: falsecall-setters-on-nulls: truejdbc-type-for-null: null#文件虚拟路径
virtuel:# filePath: D:/training/filePath: C:/Users/Administrator/Desktop/lyy/总结
经过近期对 java 面向对象程序设计、前端知识以及JAVA 框架的掌握和学习以及这段时间本教育教学系统的开发让我更加了解到 java 学习的重要性。在开发这个系统是哪个我完成了多个实验以及地块管理管理平台的功能测试阶段的系统开发学习当中我从认识到熟悉java而后到能够自主运用相关技术我发现了它确实有很多方便之处比如java集抽象性和封装性以及继承性和多态性于一体实现了对代码重用和代码扩充功能提高了整体软件开发的速度和效率。比如管理员添加用户的时候报java.lang.NullPointException、解决的方法查看控制台打印信息、发现添加的时候未填写相关信息、报java.lang.NullPointException、通过断电调试发现用户信息为空的数据项、在前端保存的时候必须填写用户完整相关信息或者数据库设置字段可以为空都可以解决、 我学习程序设计的主要目的就是提高自己实际问题的程序解决方案的关键技能和技术。 获取源码 大家点赞、收藏、关注、评论啦 查看下方微信号获取联系方式 精彩系列推荐 Java毕设项目精品实战案例《1000套》 精彩专栏推荐订阅在下方专栏