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.农产品增删改查模块

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.农产品展示实体:

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;
    }
}

                                     

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/587811.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Pyspark+关联规则 Kaggle购物篮分析案例

数据集地址&#xff1a;Market Basket Analysis | Kaggle 我的NoteBook地址&#xff1a;pyspark Market Basket Analysis | Kaggle 零售商期望能够利用过去的零售数据在自己的行业中进行探索&#xff0c;并为客户提供有关商品集的建议&#xff0c;这样就能提高客户参与度、改…

用LM Studio搭建微软的PHI3小型语言模型

什么是 Microsoft Phi-3 小语言模型&#xff1f; 微软Phi-3 模型是目前功能最强大、最具成本效益的小型语言模型 &#xff08;SLM&#xff09;&#xff0c;在各种语言、推理、编码和数学基准测试中优于相同大小和更高大小的模型。此版本扩展了客户高质量模型的选择范围&#x…

常用SQL命令

应用经常需要处理用户的数据&#xff0c;并将用户的数据保存到指定位置&#xff0c;数据库是常用的数据存储工具&#xff0c;数据库是结构化信息或数据的有序集合&#xff0c;几乎所有的关系数据库都使用 SQL 编程语言来查询、操作和定义数据&#xff0c;进行数据访问控制&…

特斯拉自动驾驶你有了解么?

有以下几点你将在本文中的了解到&#xff1a;人工智能&#xff0c;FSD 一、人工智能是什么 首先脱颖而出的chatgpt&#xff0c;而GPT的底层原理是什么&#xff1f;接下来我用生活中的经验帮你理解 GPT 你问 GPT&#xff1a;蜜蜂是如何酿造蜂蜜的&#xff1f; GPT 会从问题中…

数字旅游以科技创新为核心:推动旅游服务的智能化、精准化、个性化,为游客提供更加贴心、专业、高效的旅游服务

目录 一、引言 二、数字旅游以科技创新推动旅游服务智能化 1、智能化技术的应用 2、提升旅游服务的效率和质量 三、数字旅游以科技创新推动旅游服务精准化 1、精准化需求的识别与满足 2、精准化营销与推广 四、数字旅游以科技创新推动旅游服务个性化 1、个性化服务的创…

11【PS Blender 作图】场景作图 景深

【问题背景】 看下图,是一个插画师的作图,是不是好像现实场景;合理利用景深,让画面好像是3D现实场景 那么如何才能完成这样让人身临其境的画面呢? 大体有两个方法: 【1】2D插画,合理利用景深;如用PS画图,在画图的时候注意 画面构图,让2D的画面,看起来像3D 缺点…

无公网环境的本地yum源配置

对没有公网环境的场景下&#xff0c;部署一个本地可用的yum源的方法 注&#xff1a;两种方法本质上一样&#xff0c;centos7和centos8的repo文件格式是不一样的&#xff0c;所以在两种方法中用了不用的ISO&#xff0c;需要根据实际需求&#xff0c;结合两种方法进行部署 1.配置…

特斯拉全自动驾驶系统Tesla‘s Full-Self Driving (FSD)

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl Overview Tesla’s FSD is a suite of features that includes Autopilot, Navigate on Autopilot, Auto Lane Change, Autopark, Summon, and Traffic Light and Stop Sig…

基于语音识别的智能电子病历(一)

引子 A&#xff1a;“上周开年会了&#xff01;” 俺&#xff1a;“有啥新的动向&#xff1f;” A&#xff1a;“今年计划开发基于语音识别的智能电子病历。老板说这个算是国内首创&#xff01;” 俺&#xff1a;“嗯&#xff0c;俺做这个20多年了。” A&#xff1a;“语言…

38-3 Web应用防火墙 - 安装配置WAF

首先需要安装Centos 7 虚拟机:Centos7超详细安装教程_centos7安装教程-CSDN博客 安装配置WAF 在桌面环境中,右键点击打开终端,首先执行以下步骤: 1)安装必要的工具: 输入命令: sudo su yum install -y wget epel-release 2)第二步,安装依赖工具,输入以下命令: y…

云原生Kubernetes: K8S 1.29版本 部署Sonarqube

一、实验 1.环境 &#xff08;1&#xff09;主机 表1 主机 主机架构版本IP备注masterK8S master节点1.29.0192.168.204.8 node1K8S node节点1.29.0192.168.204.9node2K8S node节点1.29.0192.168.204.10已部署Kuboard &#xff08;2&#xff09;master节点查看集群 1&…

用FPGA+DAC输出“心”形波

1.前言 之前在做信号处理的时候整了一下活&#xff0c;用FPGADAC&#xff08;数模转换器&#xff09;&#xff0c;输出了一个爱心形状的波形&#xff0c;今天整理资料的时候偶然发现了他&#xff0c;现在把他分享出来。当时将DAC的输出接在示波器上显示如下图所示&#xff1a; …

java中的运算

进制 十进制二进制Binary&#xff1a;0b、0B开头&#xff1b;八进制octal&#xff1a; 0开头十六进制&#xff1a; 0x或者0X开头&#xff1b; 二进制表达式 一个字节&#xff0c;最高位是符号位&#xff1a;0标识正数&#xff0c;1表示负数&#xff1b;计算机底层使用补码的…

香港Web3,步履蹒跚

4月30日&#xff0c;6支香港虚拟资产现货ETF在香港交易所敲钟上市&#xff0c;正式迎来市场首秀。 而在前一周&#xff0c;香港证监会&#xff08;SFC&#xff09;官网就已列出华夏基金(香港)、博时国际和嘉实国际三家基金公司的比特币和以太坊现货ETF&#xff0c;并陆续披露了…

Python-快速搭建一个管理平台

目录 &#x1f4dc; 准备工作 一、项目介绍 ✨ 二、制作数据库表 添加信息 ⚒️ 三、运行client.exe &#x1f680; 1、连接数据库&#xff0c;选择对应表&#xff0c;生成代码 2、把后端代码依次复制到项目中 3、把前端代码依次复制到前端项目中 4、添加路由 四、运行后端项目…

安卓中级控件(图形、选择按钮、文本输入、对话框)

图形定制 图形Drawable Android把所有能够显示的图形都抽象为Drawable类&#xff08;可绘制的&#xff09;。这里的图形不止是图片&#xff0c;还包括色块、画板、背景等。 包含图片在内的图形文件放在res目录的各个drawable目录下&#xff0c;其中drawable目录一般保存描述性…

react完整项目搭建的思路

react完整项目搭建的思路 react完整项目搭建的思路1.使用creacte-react-app初始化项目2.安装所需插件:路由、网络、样式、组件库3.reactjs目录结构组织4. 配置路径别名4.配置路由5.网络配置,对axios进行封装》获取当前环境变量 6.配置代理解决跨域7.配置使用iconfont8.状态管理…

暗区突围steam叫什么 暗区突围无限steam上线时间测试申请预约教程

暗区突围steam叫什么 暗区突围无限steam上线时间 测试申请预约教程 最近暗区突围国际服的上线在游戏圈内引起了不小的波澜&#xff0c;这是一款由腾讯游戏开发的大逃杀类型游戏&#xff0c;玩家们需要在暗区内浴血搏杀&#xff0c;使用各种武器和道具活到最后&#xff0c;来取…

Linux系统中搭建Mosquitto MQTT服务并实现远程访问本地消息代理进行通信

文章目录 1. Linux 搭建 Mosquitto2. Linux 安装Cpolar3. 创建MQTT服务公网连接地址4. 客户端远程连接MQTT服务5. 代码调用MQTT服务6. 固定连接TCP公网地址7. 固定地址连接测试 今天和大家分享一下如何在Linux系统中搭建Mosquitto MQTT协议消息服务端,并结合Cpolar内网穿透工具…

Visual Source Safe 安装与使用教程

1.VSS 的工作原理: Microsott的 vss讲所有的项目源文件(包括各种文件类型)以特有的方式存入数据库。用户成员不能对该数据库中的文件进行直接的修改,而是由版本管理器将该项目的远程序或是子项目的程序拷贝到各个用户成员自己的工作目录下进行调试和修改,然后将修改后的项目…