当前位置: 首页 > news >正文

网站建设资讯站/小程序开发系统

网站建设资讯站,小程序开发系统,费县住房和城乡建设局网站,ui设计在线培训机构基于JavaSpringBootvuenode.js的智能农场管理系统详细设计和实现 博主介绍:5年java开发经验,专注Java开发、定制、远程、指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码…

基于Java+SpringBoot+vue+node.js的智能农场管理系统详细设计和实现

博主介绍:5年java开发经验,专注Java开发、定制、远程、指导等,csdn特邀作者、专注于Java技术领域
作者主页 超级帅帅吴
Java项目精品实战案例《500套》
欢迎点赞 收藏 ⭐留言
文末获取源码联系方式

文章目录

  • 基于Java+SpringBoot+vue+node.js的智能农场管理系统详细设计和实现
  • 研究背景意义
  • 主要模块设计:
  • 语言技术:
  • 功能截图:
    • 用户管理:
    • 角色菜单:
    • 菜单列表:
    • 地块档案:
    • 种植计划:
    • 生产资料:
    • 预警管理:
    • 通知公告:
    • 文件资料:
  • 论文报告:
  • 关键源码:
  • 总结:
  • 获取源码:

研究背景意义

中国是农业大国,农业经济在整个国民经济和社会发展中一直有着非常重要的意义。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 Map<String, 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 ServiceImpl<SysUserDao, SysUserEntity> implements SysUserService {@Autowiredprivate SysUserRoleService sysUserRoleService;@Autowiredprivate SysRoleService sysRoleService;@Overridepublic PageUtils queryPage(Map<String, Object> params) {String username = (String)params.get("username");Long createUserId = (Long)params.get("createUserId");IPage<SysUserEntity> page = this.page(new Query<SysUserEntity>().getPage(params),new QueryWrapper<SysUserEntity>().like(StringUtils.isNotBlank(username),"username", username).eq(createUserId != null,"create_user_id", createUserId));return new PageUtils(page);}@Overridepublic List<String> queryAllPerms(Long userId) {return baseMapper.queryAllPerms(userId);}@Overridepublic List<Long> queryAllMenuId(Long userId) {return baseMapper.queryAllMenuId(userId);}@Overridepublic SysUserEntity queryByUserName(String username) {return baseMapper.queryByUserName(username);}@Override@Transactionalpublic 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());}@Override@Transactionalpublic 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 QueryWrapper<SysUserEntity>().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 ;}//查询用户创建的角色列表List<Long> 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过滤Map<String, Filter> filters = new HashMap<>();filters.put("oauth2", new OAuth2Filter());shiroFilter.setFilters(filters);Map<String, 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: GMT+8date-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毕设项目精品实战案例《500套》
精彩专栏推荐订阅:在下方专栏

http://www.jmfq.cn/news/4850695.html

相关文章:

  • 个性化网站建设定制/济宁seo公司
  • 濮阳建站推广哪家好/温州网站优化推广方案
  • 响应式网站建设价位/经典软文案例100例简短
  • 客源软件哪个最好/做搜索引擎优化的企业
  • jsp做网站怎么打开/做百度推广需要什么条件
  • 做电影资源网站有哪些/网站seo优化公司
  • 天津网站建设交易/q群排名优化软件
  • 网站模板 酒类/百度云手机登录入口
  • 东莞网站设计与网站制作/全球网站排名查询网
  • 郑州做网站比较好公司/seo智能优化系统
  • 肥城网站建设费用/刷神马关键字排名软件
  • 做美团网站多少钱/网络营销电子版教材
  • 做网站 源代码/友情链接适用网站
  • 潮州营销型网站建设推广/推广赚钱的平台
  • 做电子手环网站需求分析/网站怎么优化搜索
  • 门户网站建设对策及建议/新东方烹饪学校
  • dreamweaver 创建网站/网络营销策划书ppt
  • 燕郊医疗网站建设/链接转二维码
  • 永州做网站公司/seo营销论文
  • 网站维护升级访问中/太原网站开发
  • 做网站要注意哪一点/广告商对接平台
  • 做网站和微信公众号如何招生/免费的黄冈网站有哪些平台
  • 建设网站怎么做/成都短视频代运营
  • 真人录像龙虎网站制作公司/企业推广网
  • 甘肃省人民政府网站首页/seo实战培训教程
  • 北京赛车网站建设/如何用网站模板建站
  • 国家企业信息官网查询/抖音seo是什么
  • 苏州免费网站制作/软文范文大全1000字
  • 比较好的网站开发公司电话/1688关键词排名查询工具
  • 上海企业名录 企业黄页/大连谷歌seo