☰
无人自助拼豆系统从需求拆解到上线运行全流程开发实战指南
2026/10/14 16:04:15 网站建设 项目流程

随着无人自助业态的普及,传统手工拼豆门店普遍存在人力成本高、营业时间受限、用户自助体验差的痛点,基于物联网+Java技术栈打造的无人自助拼豆系统,可实现24小时营业、自动结算、远程管理的全流程无人化运营。本文将从需求拆解、技术选型、功能开发、测试上线四个维度,完整分享无人自助拼豆系统的开发实战经验。

一、需求拆解与核心领域建模

1.1 多角色需求梳理

无人自助拼豆系统涉及C端用户、运营管理人员、硬件设备三类交互主体,需求分别如下:

  • C端用户需求:参考成熟的无人共享设备能力,支持查看附近自助拼豆柜位置、一键导航到店、扫码解锁拼豆格、选择拼豆套餐/自定义取量、实时查看订单状态、历史订单追溯。
  • 运营端需求:支持设备状态远程监控、订单全链路查询、库存自动预警、运营数据统计(门店订单量、用户复购率、耗材消耗速度)、拼豆套餐配置、异常订单处理。
  • 硬件端需求:支持远程锁控、拼豆剩余重量实时采集、异常状态(柜门未关、温度超标)主动上报、断网离线数据缓存(网络恢复后自动补传)。

1.2 核心领域建模

结合业务流程梳理核心数据表结构,保障数据逻辑清晰、可扩展:

  • 用户表(user):存储用户openid、、积分、注册时间等字段
  • 设备表(device):存储设备ID、关联门店地址、锁状态、各拼豆格剩余重量、在线状态、后上报时间等字段
  • 订单表(order):存储订单ID、用户ID、设备ID、取豆重量、结算金额、订单状态、创建/完成时间等字段
  • 库存表(stock):存储各拼豆格SKU、总容量、预警阈值、近补货时间等字段
  • 套餐表(package):存储套餐名称、对应拼豆重量、适用门店范围、上下架状态等字段

二、技术栈选型与架构设计

2.1 技术栈选型

参考成熟的无人共享类系统技术方案,采用前后端分离架构,技术栈选型如下:

  • 后端服务:基于Spring Boot + MyBatis Plus + MySQL构建,轻量易扩展,适合快速迭代业务需求;引入Redis做热点数据缓存(设备状态、热点套餐、用户会话),降低DB压力;采用MQTT协议实现硬件与后端的低延迟通信,适配物联网设备消息上报与指令下发场景。
  • 用户端:采用UniApp(基于Vue语法)开发,一次开发可适配小程序、H5、APP等多终端,降低跨端开发成本,符合用户轻量化访问的需求。
  • 管理后台:采用Vue + Element UI搭建,组件库丰富,开发效率高,可快速实现数据看板、表单配置类功能。

2.2 整体分层架构

系统采用四层架构设计,各层职责清晰,方便后续扩展:

  1. 接入层:负责多端流量接入,包含用户端入口、管理后台入口、MQTT硬件网关,其中硬件网关单独部署,隔离业务服务与硬件通信的稳定性风险。
  2. 业务服务层:拆分用户服务、订单服务、设备服务、库存服务、统计服务五个微服务模块,模块间通过RESTful接口通信,支持独立扩容。
  3. 数据层:MySQL存储核心业务数据,做分表设计(订单表按月份分表,提升大数量下的查询效率);Redis存储热点缓存与临时消息;Elasticsearch存储历史订单与统计数据,支持多维度数据分析。
  4. 硬件层:包含自助拼豆柜的锁控模块、重量传感模块、温湿度传感模块、4G通信模块,负责执行后端指令并上报设备运行数据。

三、核心功能模块开发实战

3.1 扫码开锁取料流程开发

扫码开锁是用户核心使用流程,整体链路如下:

  1. 用户使用扫码拼豆柜上的,携带设备ID、拼豆格ID请求后端开锁接口
  2. 后端校验设备在线状态、对应拼豆格库存是否满足用户选择的取量,校验通过后生成预订单
  3. 后端通过MQTT网关向对应设备发送开锁指令,设备执行开锁操作后向上游上报开锁成功事件
  4. 用户取料完成关闭柜门后,重量传感模块采集取料前后的重量差,上报给后端
  5. 后端根据实际取料重量完成订单结算,更新对应拼豆格的库存数据,推送结算通知给用户

核心接口代码示例如下:

@RestController@RequestMapping("/api/device")publicclassDeviceController{@AutowiredprivateMqttGatewaymqttGateway;@AutowiredprivateOrderServiceorderService;@AutowiredprivateDeviceServicedeviceService;/** * 开锁请求接口 * @param req 开锁请求参数:用户ID、设备ID、拼豆格ID、预估取量 * @return 操作结果 */@PostMapping("/unlock")publicResultunlock(@RequestBodyUnlockReqreq){// 校验设备是否在线Devicedevice=deviceService.getById(req.getDeviceId());if(device.getOnlineStatus()!=1){returnResult.fail("设备当前离线,请选择其他设备");}// 校验对应拼豆格库存DeviceGridgrid=deviceService.getGridById(req.getGridId());if(grid.getRemainingWeight()<req.getExpectAmount()){returnResult.fail("该拼豆格库存不足,请选择其他颜色");}// 生成预订单Orderorder=orderService.createPreOrder(req.getUserId(),req.getDeviceId(),req.getGridId(),req.getExpectAmount());// 下发MQTT开锁指令,QoS设置为1保证消息至少到达一次mqttGateway.sendToMqtt(String.format("device/%s/grid/%s/cmd",req.getDeviceId(),req.getGridId()),1,JSON.toJSONString(Map.of("cmd","unlock","orderId",order.getId())));returnResult.success("开锁指令已下发");}}

3.2 库存自动预警模块开发

库存预警是保障运营效率的核心功能,开发逻辑如下:

  1. 设备端每15分钟主动上报一次所有拼豆格的剩余重量,断网时本地缓存上报数据,网络恢复后自动补传
  2. 后端接收到上报数据后,对比对应拼豆格设置的预警阈值,若剩余重量低于阈值则生成预警工单
  3. 预警工单同步推送到管理后台,提醒运营人员及时补货,同时在用户端标记该拼豆格为缺货状态,避免用户下单
  4. 补货完成后,运营人员扫描设备提交补货信息,后端更新库存数据并关闭预警工单

四、系统测试与上线部署

4.1 多维度测试方案

上线前需完成四类测试,保障系统稳定性:

  1. 功能测试:覆盖用户端全流程、管理后台配置、硬件通信三个维度,校验每个功能点的逻辑正确性,比如开锁成功率、重量计算误差率、库存更新准确性等。
  2. 兼容性测试:验证用户端在不同品牌手机、不同系统版本、不同入口(小程序、支付宝小程序、H5)的适配性,管理后台在主流浏览器的展示效果。
  3. 硬件联调测试:模拟弱网、断网、高温等异常场景,测试硬件数据上报的准确性、指令到达率,要求开锁指令平均延迟低于300ms,消息丢包率低于0.1%。
  4. 压力测试:使用JMeter模拟1000并发用户同时发起开锁请求,验证服务的并发处理能力,要求接口平均响应时间低于200ms,服务无宕机、无数据脏写。

4.2 生产部署策略

参考成熟Java项目的部署方案,采用容器化部署提升运维效率:

  1. 所有后端服务、MQTT网关都采用Docker打包,通过K8s进行编排,支持动态扩容,应对大流量场景。
  2. MySQL采用主从复制架构,读写分离,提升数据查询效率与数据安全性;Redis采用三主三从集群模式,保障缓存服务高可用。
  3. 上线前先做灰度发布,选择1-2个试点门店运行7天,收集运行日志与用户反馈,优化异常流程后再进行全量门店上线。

无人自助拼豆系统的开发复用了成熟的无人共享类系统的技术架构,结合拼豆业务的场景特性做了定制化开发,上线后可有效降低门店运营成本,提升用户体验。后续可基于现有数据扩展AI拼豆图案推荐、用户作品社区等功能,进一步提升系统的用户粘性。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询