• SpringMVC+Vue实现前后端的农业信息管理系统


    末获取源码 

    开发语言:Java

    开发工具:IDEA /Eclipse

    数据库:MYSQL5.7

    应用服务:Tomcat7/Tomcat8

    使用框架ssm+vue

    JDK版本:jdk1.8

    前言介绍  

    农业信息的需求和管理上的不断提升,农业信息管理的潜力将无限扩大,农业信息管理系统在业界被广泛关注,本系统对此进行总体分析,将农业信息管理的发展提供参考。农业信息管理系统对农业信息有着明显的带动效应,尤其对当地农业信息的管理帮助更大。

    本系统主要包括管理员,种植户和用户三个用户角色;主要包括首页,个人中心,用户管理,种植户管理,农业技术管理,农产品类型管理,农资类型管理,农资产品管理,农产品管理,农资订单管理,农产品订单管理,系统管理等功能的管理系统。 

    功能分析 

    考虑到实际生活中在农业信息管理方面的需要以及对该系统认真的分析,将系统权限按管理员,种植户和用户这三类涉及用户划分。

    (1)管理员功能需求

    管理员登陆后,主要模块包括首页,个人中心,用户管理,种植户管理,农业技术管理,农产品类型管理,农资类型管理,农资产品管理,农产品管理,农资订单管理,农产品订单管理,系统管理等功能。管理员用例图如图 

    (2)种植户功能需求

    种植户登陆后,在系统首页可以实现首页,个人中心,农产品管理,农资订单管理,农产品订单管理等功能。种植户用例图如图 

    (3)用户功能需求

    用户登陆后,在系统首页可以实现首页,个人中心,农产品订单管理等功能。用户用例图如图

    功能结构

    为了更好的去理清本系统整体思路,对该系统以结构图的形式表达出来,设计实现该农业信息管理系统的功能结构图如下所示:

    系统功能模块

    农业信息管理系统,在系统首页可以查看首页,农业技术,农资产品,农产品,农业政策,个人中心,后台管理等内容,并进行详细操作;如图 

    用户注册

    在用户注册页面通过填写账号、密码、姓名、年龄、手机等信息进行注册操作,如图 

    农业技术

    在农业技术页面可以查看农业技术名称,作用,产地,适宜温度,日照时长等内容,并进行收藏操作,如图 

    农产品

    在农产品页面可以查看农产品名称,农产品编号,农产品类型,价格,数量,出产地等内容,并进行收藏操作,如图 

    管理员功能模块 

    管理员进行登录,进入系统前在登录页面根据要求填写用户名和密码,选择角色等信息,点击登录进行登录操作,如图

    管理员登录系统后,可以对首页,个人中心,用户管理,种植户管理,农业技术管理,农产品类型管理,农资类型管理,农资产品管理,农产品管理,农资订单管理,农产品订单管理,系统管理等功能进行相应的操作管理,如图 

    用户管理

    在用户管理页面可以对索引、账号、姓名、年龄、性别、手机等内容进行详情,修改和删除等操作,如图 

    农业技术管理

    在农业技术管理页面可以对索引、农作物名称,封面,作用,产地,适宜温度,日照时长,视频,等信息进行详情,修改和删除操作,如图 

    种植户管理

    在种植户管理页面可以对索引、种植户账号,种植户名称,性别,年龄,联系方式等信息进行详情,修改或删除等操作,如图 

    农产品类型管理

    在农产品类型管理页面可以对索引、农产品类型等内容进行详情,修改,和删除操作,如图 

     

    农资类型管理

    在农资类型管理页面可以对索引、农资类型等内容进行详情,修改,和删除操作,如图 

    系统管理

    在农业政策页面可以对索引、标题、图片等内容进行详情,修改和删除等操作,还可以对轮播图管理进行相应的操作管理;如图 

    种植户功能模块 

    种植户登录进入农业信息管理系统可以对首页,个人中心,农产品管理,农资订单管理,农产品订单管理等功能进行相应操作,如图

    个人中心

    在个人信息页面通过填写种植户账号、种植户姓名、年龄、性别、手机等内容进行个人信息修改操作,如图 

    农产品管理

    在农产品管理页面可以对索引、产品编号,产品名称,农产品类型,图片,价格,数量等内容进行详情,修改,查看评论和删除操作,如图 

    用户功能模块 

    用户登录进入农业信息管理系统可以对首页,个人中心,农产品订单管理等功能进行相应操作,如图

    农产品订单管理

    在农产品订单管理页面可以对索引、产品编号,产品名称,农产品类型,图片,价格,数量,出产地,种植户账号,种植户姓名,用户账号,用户姓名,联系电话,收货地址,购买时间,是否支付等内容进行支付操作,如图 

    部分核心代码:  

    1. /**
    2. * 农资订单
    3. * 后端接口
    4. * @author
    5. * @email
    6. * @date 2022-06-15 14:56:43
    7. */
    8. @RestController
    9. @RequestMapping("/nongzidingdan")
    10. public class NongzidingdanController {
    11. @Autowired
    12. private NongzidingdanService nongzidingdanService;
    13. /**
    14. * 后端列表
    15. */
    16. @RequestMapping("/page")
    17. public R page(@RequestParam Map<String, Object> params,NongzidingdanEntity nongzidingdan,
    18. HttpServletRequest request){
    19. String tableName = request.getSession().getAttribute("tableName").toString();
    20. if(tableName.equals("zhongzhihu")) {
    21. nongzidingdan.setZhongzhihuzhanghao((String)request.getSession().getAttribute("username"));
    22. }
    23. EntityWrapper<NongzidingdanEntity> ew = new EntityWrapper<NongzidingdanEntity>();
    24. PageUtils page = nongzidingdanService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, nongzidingdan), params), params));
    25. return R.ok().put("data", page);
    26. }
    27. /**
    28. * 前端列表
    29. */
    30. @RequestMapping("/list")
    31. public R list(@RequestParam Map<String, Object> params,NongzidingdanEntity nongzidingdan,
    32. HttpServletRequest request){
    33. EntityWrapper<NongzidingdanEntity> ew = new EntityWrapper<NongzidingdanEntity>();
    34. PageUtils page = nongzidingdanService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, nongzidingdan), params), params));
    35. return R.ok().put("data", page);
    36. }
    37. /**
    38. * 列表
    39. */
    40. @RequestMapping("/lists")
    41. public R list( NongzidingdanEntity nongzidingdan){
    42. EntityWrapper<NongzidingdanEntity> ew = new EntityWrapper<NongzidingdanEntity>();
    43. ew.allEq(MPUtil.allEQMapPre( nongzidingdan, "nongzidingdan"));
    44. return R.ok().put("data", nongzidingdanService.selectListView(ew));
    45. }
    46. /**
    47. * 查询
    48. */
    49. @RequestMapping("/query")
    50. public R query(NongzidingdanEntity nongzidingdan){
    51. EntityWrapper< NongzidingdanEntity> ew = new EntityWrapper< NongzidingdanEntity>();
    52. ew.allEq(MPUtil.allEQMapPre( nongzidingdan, "nongzidingdan"));
    53. NongzidingdanView nongzidingdanView = nongzidingdanService.selectView(ew);
    54. return R.ok("查询农资订单成功").put("data", nongzidingdanView);
    55. }
    56. /**
    57. * 后端详情
    58. */
    59. @RequestMapping("/info/{id}")
    60. public R info(@PathVariable("id") Long id){
    61. NongzidingdanEntity nongzidingdan = nongzidingdanService.selectById(id);
    62. return R.ok().put("data", nongzidingdan);
    63. }
    64. /**
    65. * 前端详情
    66. */
    67. @RequestMapping("/detail/{id}")
    68. public R detail(@PathVariable("id") Long id){
    69. NongzidingdanEntity nongzidingdan = nongzidingdanService.selectById(id);
    70. return R.ok().put("data", nongzidingdan);
    71. }
    72. /**
    73. * 后端保存
    74. */
    75. @RequestMapping("/save")
    76. public R save(@RequestBody NongzidingdanEntity nongzidingdan, HttpServletRequest request){
    77. nongzidingdan.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    78. //ValidatorUtils.validateEntity(nongzidingdan);
    79. nongzidingdanService.insert(nongzidingdan);
    80. return R.ok();
    81. }
    82. /**
    83. * 前端保存
    84. */
    85. @RequestMapping("/add")
    86. public R add(@RequestBody NongzidingdanEntity nongzidingdan, HttpServletRequest request){
    87. nongzidingdan.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    88. //ValidatorUtils.validateEntity(nongzidingdan);
    89. nongzidingdanService.insert(nongzidingdan);
    90. return R.ok();
    91. }
    92. /**
    93. * 修改
    94. */
    95. @RequestMapping("/update")
    96. @Transactional
    97. public R update(@RequestBody NongzidingdanEntity nongzidingdan, HttpServletRequest request){
    98. //ValidatorUtils.validateEntity(nongzidingdan);
    99. nongzidingdanService.updateById(nongzidingdan);//全部更新
    100. return R.ok();
    101. }
    102. /**
    103. * 删除
    104. */
    105. @RequestMapping("/delete")
    106. public R delete(@RequestBody Long[] ids){
    107. nongzidingdanService.deleteBatchIds(Arrays.asList(ids));
    108. return R.ok();
    109. }
    110. /**
    111. * 提醒接口
    112. */
    113. @RequestMapping("/remind/{columnName}/{type}")
    114. public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
    115. @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
    116. map.put("column", columnName);
    117. map.put("type", type);
    118. if(type.equals("2")) {
    119. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    120. Calendar c = Calendar.getInstance();
    121. Date remindStartDate = null;
    122. Date remindEndDate = null;
    123. if(map.get("remindstart")!=null) {
    124. Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
    125. c.setTime(new Date());
    126. c.add(Calendar.DAY_OF_MONTH,remindStart);
    127. remindStartDate = c.getTime();
    128. map.put("remindstart", sdf.format(remindStartDate));
    129. }
    130. if(map.get("remindend")!=null) {
    131. Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
    132. c.setTime(new Date());
    133. c.add(Calendar.DAY_OF_MONTH,remindEnd);
    134. remindEndDate = c.getTime();
    135. map.put("remindend", sdf.format(remindEndDate));
    136. }
    137. }
    138. Wrapper<NongzidingdanEntity> wrapper = new EntityWrapper<NongzidingdanEntity>();
    139. if(map.get("remindstart")!=null) {
    140. wrapper.ge(columnName, map.get("remindstart"));
    141. }
    142. if(map.get("remindend")!=null) {
    143. wrapper.le(columnName, map.get("remindend"));
    144. }
    145. String tableName = request.getSession().getAttribute("tableName").toString();
    146. if(tableName.equals("zhongzhihu")) {
    147. wrapper.eq("zhongzhihuzhanghao", (String)request.getSession().getAttribute("username"));
    148. }
    149. int count = nongzidingdanService.selectCount(wrapper);
    150. return R.ok().put("count", count);
    151. }
    152. }

  • 相关阅读:
    C语言实现动态栈
    python 基础知识点(蓝桥杯python科目个人复习计划63)
    leetcode73. 矩阵置零
    Android OOM 问题探究 -- 从入门到放弃
    票据传递攻击
    机器人中的数值优化(十八)—— 锥增广的拉格朗日、半光滑的牛顿方法
    C语言编程陷阱(一)
    光盘完成-qt-动画
    摸鱼大数据——Hive表操作——分区表
    华云数据张华林:投身数字蓝海 绘就云上强国
  • 原文地址:https://blog.csdn.net/m0_49113107/article/details/125832097