Springboot+Vue+小程序+基于微信小程序护农远程看护系统

开发平台为idea,maven管理工具,Mybatis操作数据库,根据市场数字化需要为农户打造小程序可远程查看农场的种植情况。项目是调试,讲解服务均可有偿获取,需要可在最下方QQ二维码处联系我。

Springboot+Vue+小程序,基于微信小程序的农场信息管理系统。数据库Mysql,17张表。

前台可以查阅接受保护的农产品。

后台对请求进行管理。

后台管理功能有。

1.农户管理

2.农产品展示

3.产品类型

4.农产品订单管理

5.预采摘登记管理

6.远程看护管理

7.蔬果类型管理

8.播种管理

9.施肥信息管理

10.浇水管理

11.轮播图管理,农业活动及活动分类管理。

12.个人信息管理。

部分数据库设计:

表名:nongchanpindingdan

功能:农产品订单

|------------------|-----------|------------|------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| addtime | timestamp | | 创建时间 | | CURRENT_TIMESTAMP |
| dingdanbianhao | varchar | 200 | 订单编号 | | |
| chanpinmingcheng | varchar | 200 | 产品名称 | | |
| chanpinleixing | varchar | 200 | 产品类型 | | |
| chanpintupian | longtext | 4294967295 | 产品图片 | | |
| chandi | varchar | 200 | 产地 | | |
| guige | varchar | 200 | 规格 | | |
| shuliang | int | | 数量 | | |
| jiage | int | | 价格 | | |
| zonge | double | | 总额 | | |
| goumaishijian | datetime | | 购买时间 | | |
| dingdanbeizhu | varchar | 200 | 订单备注 | | |
| shouhuodizhi | varchar | 200 | 收货地址 | | |
| youkexingming | varchar | 200 | 游客姓名 | | |
| nonghuzhanghao | varchar | 200 | 农户账号 | | |
| nonghuxingming | varchar | 200 | 农户姓名 | | |

表名:newstype

功能:农业活动分类

|----------|-----------|-----|------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| addtime | timestamp | | 创建时间 | | CURRENT_TIMESTAMP |
| typename | varchar | 200 | 分类名称 | | |

表名:yucaizhaidengji

功能:预采摘登记

|----------------|-----------|------------|------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| addtime | timestamp | | 创建时间 | | CURRENT_TIMESTAMP |
| caizhaichanpin | varchar | 200 | 采摘产品 | | |
| caizhaishijian | datetime | | 采摘时间 | | |
| caizhaididian | varchar | 200 | 采摘地点 | | |
| caizhairenshu | int | | 采摘人数 | | |
| caizhaigongju | varchar | 200 | 采摘工具 | | |
| caizhaitupian | longtext | 4294967295 | 采摘图片 | | |
| nonghuzhanghao | varchar | 200 | 农户账号 | | |
| nonghuxingming | varchar | 200 | 农户姓名 | | |

表名:news

功能:农业活动

|--------------|-----------|------------|--------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| addtime | timestamp | | 创建时间 | | CURRENT_TIMESTAMP |
| title | varchar | 200 | 标题 | | |
| introduction | longtext | 4294967295 | 简介 | | |
| typename | varchar | 200 | 分类名称 | | |
| name | varchar | 200 | 发布人 | | |
| headportrait | longtext | 4294967295 | 头像 | | |
| clicknum | int | | 点击次数 | | 0 |
| clicktime | datetime | | 最近点击时间 | | |
| thumbsupnum | int | | 赞 | | 0 |
| crazilynum | int | | 踩 | | 0 |
| storeupnum | int | | 收藏数 | | 0 |
| picture | longtext | 4294967295 | 图片 | | |
| content | longtext | 4294967295 | 内容 | | |

代码示例:

1.农产品增删改查模块

java 复制代码
package com.controller;

import java.util.Arrays;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;

import com.entity.NonghuEntity;
import com.service.NonghuService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.annotation.IgnoreAuth;

import com.entity.NongchanpinzhanshiEntity;
import com.entity.view.NongchanpinzhanshiView;

import com.service.NongchanpinzhanshiService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MPUtil;

/**
 * 农产品展示
 * 后端接口
 */
@RestController
@RequestMapping("/nongchanpinzhanshi")
public class NongchanpinzhanshiController {
    @Autowired
    private NonghuService nonghuService;

    @Autowired
    private NongchanpinzhanshiService nongchanpinzhanshiService;

    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params, NongchanpinzhanshiEntity nongchanpinzhanshi,
                  HttpServletRequest request) {
        String tableName = request.getSession().getAttribute("tableName").toString();
        if (tableName.equals("nonghu")) {
            nongchanpinzhanshi.setNonghuzhanghao((String) request.getSession().getAttribute("username"));
        }
        EntityWrapper<NongchanpinzhanshiEntity> ew = new EntityWrapper<>();
        PageUtils page = nongchanpinzhanshiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, nongchanpinzhanshi), params), params));
        return R.ok().put("data", page);
    }

    /**
     * 前端列表
     */
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params, NongchanpinzhanshiEntity nongchanpinzhanshi,
                  HttpServletRequest request) {
        String tableName = request.getSession().getAttribute("tableName").toString();
        if (tableName.equals("nonghu")) {
            nongchanpinzhanshi.setNonghuzhanghao((String) request.getSession().getAttribute("username"));
        }
        EntityWrapper<NongchanpinzhanshiEntity> ew = new EntityWrapper<>();

        PageUtils page = nongchanpinzhanshiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, nongchanpinzhanshi), params), params));
        return R.ok().put("data", page);
    }
    
    /**
     * 列表
     */
    @RequestMapping("/lists")
    public R list(NongchanpinzhanshiEntity nongchanpinzhanshi) {
        EntityWrapper<NongchanpinzhanshiEntity> ew = new EntityWrapper<>();
        ew.allEq(MPUtil.allEQMapPre(nongchanpinzhanshi, "nongchanpinzhanshi"));
        return R.ok().put("data", nongchanpinzhanshiService.selectListView(ew));
    }

    /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(NongchanpinzhanshiEntity nongchanpinzhanshi) {
        EntityWrapper<NongchanpinzhanshiEntity> ew = new EntityWrapper<>();
        ew.allEq(MPUtil.allEQMapPre(nongchanpinzhanshi, "nongchanpinzhanshi"));
        NongchanpinzhanshiView nongchanpinzhanshiView = nongchanpinzhanshiService.selectView(ew);
        return R.ok("查询农产品展示成功").put("data", nongchanpinzhanshiView);
    }

    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id) {
        NongchanpinzhanshiEntity nongchanpinzhanshi = nongchanpinzhanshiService.selectById(id);
        nongchanpinzhanshi.setClicknum(nongchanpinzhanshi.getClicknum() + 1);
        nongchanpinzhanshi.setClicktime(new Date());
        nongchanpinzhanshiService.updateById(nongchanpinzhanshi);
        nongchanpinzhanshi = nongchanpinzhanshiService.selectView(new EntityWrapper<NongchanpinzhanshiEntity>().eq("id", id));
        return R.ok().put("data", nongchanpinzhanshi);
    }

    /**
     * 前端详情
     */
    @IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id) {
        NongchanpinzhanshiEntity nongchanpinzhanshi = nongchanpinzhanshiService.selectById(id);
        nongchanpinzhanshi.setClicknum(nongchanpinzhanshi.getClicknum() + 1);
        nongchanpinzhanshi.setClicktime(new Date());
        nongchanpinzhanshiService.updateById(nongchanpinzhanshi);
        nongchanpinzhanshi = nongchanpinzhanshiService.selectView(new EntityWrapper<NongchanpinzhanshiEntity>().eq("id", id));
        return R.ok().put("data", nongchanpinzhanshi);
    }

    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody NongchanpinzhanshiEntity nongchanpinzhanshi, HttpServletRequest request) {
        NonghuEntity nonghu = nonghuService.selectOne(new EntityWrapper<NonghuEntity>()
                .eq("nonghuzhanghao", nongchanpinzhanshi.getNonghuzhanghao())
                .eq("nonghuxingming", nongchanpinzhanshi.getNonghuxingming()));
        if (ObjectUtils.isEmpty(nonghu)) {
            return R.error(404, "该账户不存在,请确认农户账号姓名");
        }
        nongchanpinzhanshiService.insert(nongchanpinzhanshi);
        return R.ok();
    }

    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody NongchanpinzhanshiEntity nongchanpinzhanshi, HttpServletRequest request) {
        nongchanpinzhanshi.setUserid((Long) request.getSession().getAttribute("userId"));
        nongchanpinzhanshiService.insert(nongchanpinzhanshi);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    @Transactional
    public R update(@RequestBody NongchanpinzhanshiEntity nongchanpinzhanshi, HttpServletRequest request) {
        nongchanpinzhanshiService.updateById(nongchanpinzhanshi);//全部更新
        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids) {
        nongchanpinzhanshiService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }

    /**
     * 前端智能排序
     */
    @IgnoreAuth
    @RequestMapping("/autoSort")
    public R autoSort(@RequestParam Map<String, Object> params, NongchanpinzhanshiEntity nongchanpinzhanshi, HttpServletRequest request, String pre) {
        EntityWrapper<NongchanpinzhanshiEntity> ew = new EntityWrapper<NongchanpinzhanshiEntity>();
        Map<String, Object> newMap = new HashMap<String, Object>();
        Map<String, Object> param = new HashMap<String, Object>();
        Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry<String, Object> entry = it.next();
            String key = entry.getKey();
            String newKey = entry.getKey();
            if (pre.endsWith(".")) {
                newMap.put(pre + newKey, entry.getValue());
            } else if (StringUtils.isEmpty(pre)) {
                newMap.put(newKey, entry.getValue());
            } else {
                newMap.put(pre + "." + newKey, entry.getValue());
            }
        }
        params.put("sort", "clicknum");
        params.put("order", "desc");
        PageUtils page = nongchanpinzhanshiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, nongchanpinzhanshi), params), params));
        return R.ok().put("data", page);
    }
}

2.农产品展示实体:

java 复制代码
package com.entity.vo;

import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serializable;


/**
 * 农产品展示
 */
public class NongchanpinzhanshiVO implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 产品类型
     */
    private String chanpinleixing;

    /**
     * 产地
     */
    private String chandi;

    /**
     * 规格
     */

    private String guige;

    /**
     * 数量
     */
    private Integer shuliang;

    /**
     * 价格
     */
    private Integer jiage;

    /**
     * 采摘日期
     */

    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat
    private Date caizhairiqi;

    /**
     * 保质期
     */
    private String baozhiqi;

    /**
     * 产品描述
     */
    private String chanpinmiaoshu;

    /**
     * 产品图片
     */
    private String chanpintupian;

    /**
     * 农户账号
     */
    private String nonghuzhanghao;

    /**
     * 农户姓名
     */
    private String nonghuxingming;

    /**
     * 最近点击时间
     */
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat
    private Date clicktime;

    /**
     * 点击次数
     */
    private Integer clicknum;

    /**
     * 用户id
     */
    private Long userid;

    /**
     * 设置:产品类型
     */

    public void setChanpinleixing(String chanpinleixing) {
        this.chanpinleixing = chanpinleixing;
    }

    /**
     * 获取:产品类型
     */
    public String getChanpinleixing() {
        return chanpinleixing;
    }


    /**
     * 设置:产地
     */
    public void setChandi(String chandi) {
        this.chandi = chandi;
    }

    /**
     * 获取:产地
     */
    public String getChandi() {
        return chandi;
    }


    /**
     * 设置:规格
     */
    public void setGuige(String guige) {
        this.guige = guige;
    }

    /**
     * 获取:规格
     */
    public String getGuige() {
        return guige;
    }


    /**
     * 设置:数量
     */
    public void setShuliang(Integer shuliang) {
        this.shuliang = shuliang;
    }

    /**
     * 获取:数量
     */
    public Integer getShuliang() {
        return shuliang;
    }


    /**
     * 设置:价格
     */
    public void setJiage(Integer jiage) {
        this.jiage = jiage;
    }

    /**
     * 获取:价格
     */
    public Integer getJiage() {
        return jiage;
    }

    /**
     * 设置:采摘日期
     */
    public void setCaizhairiqi(Date caizhairiqi) {
        this.caizhairiqi = caizhairiqi;
    }

    /**
     * 获取:采摘日期
     */
    public Date getCaizhairiqi() {
        return caizhairiqi;
    }


    /**
     * 设置:保质期
     */
    public void setBaozhiqi(String baozhiqi) {
        this.baozhiqi = baozhiqi;
    }

    /**
     * 获取:保质期
     */
    public String getBaozhiqi() {
        return baozhiqi;
    }


    /**
     * 设置:产品描述
     */
    public void setChanpinmiaoshu(String chanpinmiaoshu) {
        this.chanpinmiaoshu = chanpinmiaoshu;
    }

    /**
     * 获取:产品描述
     */
    public String getChanpinmiaoshu() {
        return chanpinmiaoshu;
    }


    /**
     * 设置:产品图片
     */
    public void setChanpintupian(String chanpintupian) {
        this.chanpintupian = chanpintupian;
    }

    /**
     * 获取:产品图片
     */
    public String getChanpintupian() {
        return chanpintupian;
    }


    /**
     * 设置:农户账号
     */
    public void setNonghuzhanghao(String nonghuzhanghao) {
        this.nonghuzhanghao = nonghuzhanghao;
    }

    /**
     * 获取:农户账号
     */
    public String getNonghuzhanghao() {
        return nonghuzhanghao;
    }


    /**
     * 设置:农户姓名
     */
    public void setNonghuxingming(String nonghuxingming) {
        this.nonghuxingming = nonghuxingming;
    }

    /**
     * 获取:农户姓名
     */
    public String getNonghuxingming() {
        return nonghuxingming;
    }


    /**
     * 设置:最近点击时间
     */
    public void setClicktime(Date clicktime) {
        this.clicktime = clicktime;
    }

    /**
     * 获取:最近点击时间
     */
    public Date getClicktime() {
        return clicktime;
    }


    /**
     * 设置:点击次数
     */
    public void setClicknum(Integer clicknum) {
        this.clicknum = clicknum;
    }

    /**
     * 获取:点击次数
     */
    public Integer getClicknum() {
        return clicknum;
    }


    /**
     * 设置:用户id
     */
    public void setUserid(Long userid) {
        this.userid = userid;
    }

    /**
     * 获取:用户id
     */
    public Long getUserid() {
        return userid;
    }
}
相关推荐
酷酷的阿云4 分钟前
不用ECharts!从0到1徒手撸一个Vue3柱状图
前端·javascript·vue.js
齐 飞12 分钟前
MongoDB笔记01-概念与安装
前端·数据库·笔记·后端·mongodb
狂放不羁霸20 分钟前
idea | 搭建 SpringBoot 项目之配置 Maven
spring boot·maven·intellij-idea
九圣残炎21 分钟前
【从零开始的LeetCode-算法】1456. 定长子串中元音的最大数目
java·算法·leetcode
wclass-zhengge23 分钟前
Netty篇(入门编程)
java·linux·服务器
LunarCod29 分钟前
WorkFlow源码剖析——Communicator之TCPServer(中)
后端·workflow·c/c++·网络框架·源码剖析·高性能高并发
计算机学长felix1 小时前
基于SpringBoot的“校园交友网站”的设计与实现(源码+数据库+文档+PPT)
数据库·spring boot·毕业设计·交友
Re.不晚1 小时前
Java入门15——抽象类
java·开发语言·学习·算法·intellij-idea
雷神乐乐1 小时前
Maven学习——创建Maven的Java和Web工程,并运行在Tomcat上
java·maven
码农派大星。1 小时前
Spring Boot 配置文件
java·spring boot·后端