随着无人自助业态的普及传统手工拼豆门店普遍存在人力成本高、营业时间受限、用户自助体验差的痛点基于物联网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 整体分层架构系统采用四层架构设计各层职责清晰方便后续扩展接入层负责多端流量接入包含用户端入口、管理后台入口、MQTT硬件网关其中硬件网关单独部署隔离业务服务与硬件通信的稳定性风险。业务服务层拆分用户服务、订单服务、设备服务、库存服务、统计服务五个微服务模块模块间通过RESTful接口通信支持独立扩容。数据层MySQL存储核心业务数据做分表设计订单表按月份分表提升大数量下的查询效率Redis存储热点缓存与临时消息Elasticsearch存储历史订单与统计数据支持多维度数据分析。硬件层包含自助拼豆柜的锁控模块、重量传感模块、温湿度传感模块、4G通信模块负责执行后端指令并上报设备运行数据。三、核心功能模块开发实战3.1 扫码开锁取料流程开发扫码开锁是用户核心使用流程整体链路如下用户使用扫码拼豆柜上的携带设备ID、拼豆格ID请求后端开锁接口后端校验设备在线状态、对应拼豆格库存是否满足用户选择的取量校验通过后生成预订单后端通过MQTT网关向对应设备发送开锁指令设备执行开锁操作后向上游上报开锁成功事件用户取料完成关闭柜门后重量传感模块采集取料前后的重量差上报给后端后端根据实际取料重量完成订单结算更新对应拼豆格的库存数据推送结算通知给用户核心接口代码示例如下RestControllerRequestMapping(/api/device)publicclassDeviceController{AutowiredprivateMqttGatewaymqttGateway;AutowiredprivateOrderServiceorderService;AutowiredprivateDeviceServicedeviceService;/** * 开锁请求接口 * param req 开锁请求参数用户ID、设备ID、拼豆格ID、预估取量 * return 操作结果 */PostMapping(/unlock)publicResultunlock(RequestBodyUnlockReqreq){// 校验设备是否在线DevicedevicedeviceService.getById(req.getDeviceId());if(device.getOnlineStatus()!1){returnResult.fail(设备当前离线请选择其他设备);}// 校验对应拼豆格库存DeviceGridgriddeviceService.getGridById(req.getGridId());if(grid.getRemainingWeight()req.getExpectAmount()){returnResult.fail(该拼豆格库存不足请选择其他颜色);}// 生成预订单OrderorderorderService.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 库存自动预警模块开发库存预警是保障运营效率的核心功能开发逻辑如下设备端每15分钟主动上报一次所有拼豆格的剩余重量断网时本地缓存上报数据网络恢复后自动补传后端接收到上报数据后对比对应拼豆格设置的预警阈值若剩余重量低于阈值则生成预警工单预警工单同步推送到管理后台提醒运营人员及时补货同时在用户端标记该拼豆格为缺货状态避免用户下单补货完成后运营人员扫描设备提交补货信息后端更新库存数据并关闭预警工单四、系统测试与上线部署4.1 多维度测试方案上线前需完成四类测试保障系统稳定性功能测试覆盖用户端全流程、管理后台配置、硬件通信三个维度校验每个功能点的逻辑正确性比如开锁成功率、重量计算误差率、库存更新准确性等。兼容性测试验证用户端在不同品牌手机、不同系统版本、不同入口小程序、支付宝小程序、H5的适配性管理后台在主流浏览器的展示效果。硬件联调测试模拟弱网、断网、高温等异常场景测试硬件数据上报的准确性、指令到达率要求开锁指令平均延迟低于300ms消息丢包率低于0.1%。压力测试使用JMeter模拟1000并发用户同时发起开锁请求验证服务的并发处理能力要求接口平均响应时间低于200ms服务无宕机、无数据脏写。4.2 生产部署策略参考成熟Java项目的部署方案采用容器化部署提升运维效率所有后端服务、MQTT网关都采用Docker打包通过K8s进行编排支持动态扩容应对大流量场景。MySQL采用主从复制架构读写分离提升数据查询效率与数据安全性Redis采用三主三从集群模式保障缓存服务高可用。上线前先做灰度发布选择1-2个试点门店运行7天收集运行日志与用户反馈优化异常流程后再进行全量门店上线。无人自助拼豆系统的开发复用了成熟的无人共享类系统的技术架构结合拼豆业务的场景特性做了定制化开发上线后可有效降低门店运营成本提升用户体验。后续可基于现有数据扩展AI拼豆图案推荐、用户作品社区等功能进一步提升系统的用户粘性。