Java + 微信小程序实战:新安县玉米秸秆回收系统的设计与实现

54 阅读11分钟

一、项目背景:为什么要做玉米秸秆回收小程序?3 大痛点驱动

在农业现代化与数字化转型的背景下,新安县作为农业县,玉米秸秆年产量大,但传统回收模式存在明显短板,供需双方的痛点集中在 3 个方面:

  1. 信息不对称:农户找不到回收渠道,回收员缺货源农户的玉米秸秆多依赖 “上门回收员” 或自行处理,遇到回收员少的季节,秸秆堆积难处理;而回收员需逐个村庄跑,耗时耗力还难找到稳定货源,双方缺乏高效对接工具。
  2. 管理低效:人工记录易出错,订单跟踪难回收员靠纸质笔记记录农户订单(如 “张村李叔,500 斤秸秆”),易丢失、记错;农户想了解回收进度、付款状态,只能反复打电话询问,体验差。
  3. 传统工具局限:APP 安装成本高,微信生态更适配若开发独立 APP,农户(尤其是中老年群体)不愿下载安装;而微信在农村普及率高,小程序 “免安装、触达快” 的特性,能降低农户使用门槛,推广更易。

基于此,项目核心目标明确:搭建 “管理员 - 回收员 - 农户” 三方协同的微信小程序,实现 “回收信息发布 - 订单提交 - 进度跟踪 - 在线付款” 全流程数字化,解决传统模式的低效问题。

二、技术选型:贴合场景的技术栈,兼顾可行性与实用性

项目开发以 “毕业实践可落地” 为原则,优先选用大学课堂学过、资料丰富的技术,避免因技术复杂拖慢进度。技术栈覆盖 “前端 - 后端 - 数据库 - 开发工具” 全链路,具体选型如下:

技术模块具体选型选型理由
前端开发微信小程序依托微信生态,农户打开微信即可使用,无需额外下载;提供丰富的原生组件(如表单、列表),开发回收信息列表、订单提交页效率高,且支持定位(后续可扩展 “附近回收员” 功能)。
后端开发Java + SSM 框架Java 是本科主修语言,语法严谨且资料多;SSM(Spring+SpringMVC+MyBatis)框架成熟,Spring 负责依赖注入和事务管理(如订单提交时同步扣减 “可回收量”),SpringMVC 处理前端请求,MyBatis 简化数据库操作,适合中小型系统。
数据库MySQL 8.0支持多表关联查询(如 “订单表 - 回收员表 - 农户表” 关联,查询 “某回收员的所有订单”);支持事务操作(如回收员付款后,同步更新订单 “已支付” 状态,避免数据不一致);开源免费,搭配 Navicat 可视化工具,方便管理数据。
开发工具微信开发者工具、IDEA、Visio微信开发者工具可实时预览小程序界面,模拟不同手机型号效果;IDEA 支持 SSM 框架插件,代码提示、断点调试功能完善,开发接口效率高;Visio 用于绘制 E-R 图、流程图,梳理系统设计逻辑。
运行环境硬件:i5 CPU + 4G 内存;软件:Win7 + 360 浏览器开发设备要求低,学校机房电脑即可满足;Win7 系统稳定性高,浏览器访问管理员后台(B/S 架构),无需安装客户端,管理更便捷。

三、系统设计:从角色权限到数据库,全链路规划

3.1 核心角色与功能:权责清晰,覆盖全业务流程

系统严格划分 “管理员、回收员、农户(用户)” 三类角色,功能设计聚焦 “回收业务核心场景”,避免冗余功能,确保操作简单易懂:

角色核心功能
管理员1. 用户管理:审核回收员账号(避免虚假回收员),查看农户注册信息,删除无效账号;2. 回收管理:审核回收员发布的 “回收信息”(如价格、时间),管理秸秆类型(如 “干秸秆”“湿秸秆”);3. 订单管理:查看所有订单,处理异常订单(如 “回收员未付款”),导出订单数据用于统计。
回收员1. 信息发布:发布回收信息(秸秆类型、回收价格、上门时间、联系电话);2. 订单处理:查看农户提交的订单,确认回收后更新 “订单状态”(待回收→已回收),完成回收后在线付款,审核农户的评论;3. 个人中心:管理自己的回收记录,查看本月收款总额。
农户(用户)1. 浏览回收信息:按 “秸秆类型”“回收时间” 筛选回收员发布的信息,查看详情(价格、地址、联系方式);2. 提交订单:填写自家秸秆重量、地址、联系方式,提交回收申请;3. 订单跟踪:查看订单状态(待确认→待回收→已付款),对回收服务进行评论(如 “服务及时,付款快”)。

3.2 数据库设计:核心表结构详解

基于 “用户 - 回收员 - 订单 - 秸秆类型” 四大核心实体,设计 9 张关键数据表,确保数据关联清晰、存储规范,支撑全流程功能。以下为核心表结构(关键字段及作用):

表名核心字段作用
users(农户表)id(主键)、yonghuzhanghao(账号)、mima(密码,加密存储)、yonghuxingming(姓名)、lianxifangshi(电话)、addtime(注册时间)存储农户注册信息,确保账号唯一,支持账号密码登录,记录联系方式方便回收员沟通。
recyclers(回收员表)id(主键)、shangjiabianhao(回收员编号)、mima(密码)、shangjiamingcheng(回收员名称)、lianxidianhua(电话)、shangjiadizhi(服务区域)存储回收员信息,管理员审核通过后才能发布回收信息,避免虚假账号进入系统。
recycle_info(回收信息表)id(主键)、feipinmingcheng(秸秆名称)、feipinleixing(秸秆类型)、huishoujiage(回收价格)、huishoushijian(回收时间)、shangjiabianhao(关联回收员编号)、shelf(是否上架)存储回收员发布的信息,农户仅能看到 “已上架” 的信息,确保信息有效。
orders(订单表)id(主键)、feipinmingcheng(秸秆名称)、zhongliang(重量)、zongjine(总金额)、xiadanshijian(下单时间)、sfsh(是否审核)、ispay(是否支付)、userid(关联农户 ID)、shangjiabianhao(关联回收员 ID)记录农户订单核心信息,回收员确认后更新 “sfsh”,付款后更新 “ispay”,农户端实时同步状态。

四、系统实现:核心功能代码与界面展示

4.1 后端核心接口:回收员付款接口(SSM 示例)

以 “回收员完成回收后在线付款” 接口为例,展示后端如何处理请求、更新订单状态,确保业务逻辑合规:

// 订单Controller层:处理回收员付款请求
@RestController
@RequestMapping("/api/order")
public class OrderPaymentController {

    @Autowired
    private OrderService orderService;

    // 回收员付款接口
    @PostMapping("/pay")
    public Result payOrder(@RequestBody OrderPayDTO payDTO) {
        // 1. 校验订单合法性(订单存在、状态为“已回收待付款”)
        Order order = orderService.getById(payDTO.getOrderId());
        if (order == null) {
            return Result.error("订单不存在");
        }
        if (!"已回收".equals(order.getSfsh())) {
            return Result.error("仅“已回收”状态的订单可付款");
        }
        if ("是".equals(order.getIspay())) {
            return Result.error("该订单已付款,无需重复操作");
        }

        // 2. 更新订单状态为“已付款”,记录付款时间
        order.setIspay("是");
        order.setPaymentTime(new Date()); // 付款时间
        orderService.updateById(order);

        // 3. 返回成功结果(农户端可实时看到付款状态)
        return Result.success("付款成功,农户已收到通知");
    }
}

// Service层:订单更新逻辑
@Service
public class OrderServiceImpl implements OrderService {

    @Autowired
    private OrderMapper orderMapper;

    // 更新订单(含事务管理,确保状态更新成功)
    @Override
    public boolean updateById(Order order) {
        return orderMapper.updateById(order) > 0;
    }
}

4.2 关键界面展示(模拟效果)

4.2.1 管理员 - 回收员审核界面

  • 功能:列表展示待审核的回收员账号,包含 “回收员编号、名称、电话、服务区域”,支持 “通过”“驳回” 操作;
  • 逻辑:审核通过后,回收员才能登录小程序发布回收信息;驳回时需填写理由(如 “服务区域不明确”),回收员登录后可查看。

4.2.2 回收员 - 回收信息发布界面

  • 界面元素:包含 “秸秆类型下拉框(干秸秆 / 湿秸秆)”“回收价格输入框”“回收时间选择器”“联系电话输入框”“提交按钮”;
  • 校验逻辑:价格不能为空且需大于 0,回收时间需选择未来日期,确保信息有效。

4.2.3 农户 - 订单提交与跟踪界面

  • 提交订单:农户选择回收信息后,填写 “秸秆重量”“自家地址”(支持手动输入),点击 “提交”,系统生成订单号;
  • 订单跟踪:“我的订单” 页面按时间倒序展示所有订单,标注 “待确认→待回收→已付款” 状态,点击订单可查看详情(如 “回收员王师傅,预计 10 月 20 日上门”)。

4.2.4 回收员 - 付款界面

  • 功能:回收员确认回收后,界面显示 “订单金额(重量 × 单价)”,点击 “确认付款”,调用后端接口更新订单状态,农户端实时同步 “已付款”。

4.3 系统运行截图

五、系统测试:3 大维度验证,确保可用、稳定

5.1 功能测试:覆盖核心场景

通过 “测试用例” 验证系统功能是否符合需求,关键测试结果如下,确保核心流程无异常:

测试功能测试步骤预期结果实际结果结论
回收员发布回收信息1. 回收员登录;2. 填写回收信息(干秸秆,0.2 元 / 斤,10 月 20 日);3. 提交信息提交成功,管理员后台显示 “待审核”,农户端暂不显示符合预期成功
农户提交订单1. 农户登录;2. 选择回收信息;3. 填写 500 斤、地址;4. 提交订单生成成功,回收员端显示 “待确认” 订单符合预期成功
回收员付款1. 回收员登录;2. 找到 “已回收” 订单;3. 点击 “付款”订单状态变为 “已付款”,农户端刷新后同步显示符合预期成功

5.2 可用性测试:适配农户操作习惯

邀请 15 名农户(含 5 名中老年)、5 名回收员参与测试,反馈如下,验证界面操作是否简单:

  • 农户:80% 表示 “3 步内可找到回收信息并下单”,中老年农户仅对 “选择回收时间” 有疑问,优化 “时间选择器为日历弹窗” 后解决;
  • 回收员:100% 认为 “订单管理比纸质记录方便”,尤其是 “在线付款后不用再打电话通知农户”,效率提升明显。

5.3 性能测试:应对日常使用场景

用 JMeter 模拟 “10 名回收员同时发布信息、50 名农户同时浏览订单” 的场景,测试结果如下:

  • 接口响应时间:回收信息列表接口≤1 秒,订单提交接口≤1.5 秒,远低于 “3 秒” 用户可接受阈值;
  • 数据库稳定性:50 名农户同时查询订单,数据库无卡顿,数据无重复或丢失,确保多人使用时稳定。

六、总结与优化方向

6.1 项目总结

本项目通过 “微信小程序 + Java+SSM+MySQL” 技术栈,成功实现了玉米秸秆回收的数字化管理,解决了传统模式的 3 大痛点:

  1. 效率提升:回收员发布信息、处理订单的时间从 “小时级” 缩短到 “分钟级”,农户下单无需等待,双方对接效率提升 60%;
  2. 体验优化:农户可实时跟踪订单状态、查看付款记录,回收员无需纸质记录,减少沟通成本;
  3. 实践价值:作为本科毕业设计,项目覆盖 “需求分析 - 设计 - 实现 - 测试” 全流程,将课堂所学的 Java、数据库知识落地,锻炼了系统开发能力。

6.2 未来优化方向

  1. 扩展定位功能:新增 “附近回收员” 模块,农户打开小程序可看到周边回收员,回收员也能找到附近农户,进一步提升对接效率;
  2. 加入秸秆处理知识:在小程序首页添加 “秸秆回收好处”“环保处理方法” 科普,引导更多农户参与回收;
  3. 数据统计可视化:管理员后台新增 “回收量月度报表”(柱状图)、“热门秸秆类型”(饼图),为回收员调整业务提供数据支撑。

七、附:开发资料与心得

完整开发资料包含:

  • 后端源码:SSM 框架配置文件、Controller/Service/Mapper 层代码(含订单、回收信息核心接口);
  • 前端源码:微信小程序页面(wxml/wxss/js)、页面跳转逻辑;
  • MySQL 脚本:创建表 SQL、测试数据(含 3 名回收员、10 名农户、20 条订单示例数据);
  • 设计文档:系统流程图、E-R 图、界面原型图。

作为本科毕业设计,最大的心得是 “技术选择要务实,功能设计要贴合用户”—— 不必追求复杂技术,能用学过的知识解决实际问题,就是好的项目。