智慧场馆解决方案实践:无人自助场馆业务模块解析
随着全民健身的普及,24小时无人自助健身场馆快速落地。无人场馆不再依赖现场工作人员值守,依靠线上预约、硬件联动、自动核销、远程运维实现全流程自助运营。很多项目在落地时,仅简单实现门禁开门功能,缺少完整业务闭环,会出现预约冲突、设备失控、故障无法告警、费用核销异常等问题。
本文从无人自助场馆业务痛点、整体业务架构、核心业务模块拆解、Java核心代码、项目落地优化等方面,解析无人自助场馆整套业务体系的设计实践。
一、无人自助场馆落地常见业务痛点
- 业务流程断裂:预约、门禁、器材、扣费相互独立,用户预约后无法自动开通门禁权限,离场不能自动结算。
- 异常场景缺少处理机制:用户超时滞留、恶意占场、设备故障后无人告警,无法及时止损。
- 运维闭环缺失:硬件故障上报、工单派单、维修验收全流程依赖人工,无人场景故障响应慢。
- 安全与风控薄弱:无法限制单人多次入场,凭证截图复用、转借入场难以拦截。
- 数据统计难度大:缺少真实入场、离场记录,无法精准统计场馆人流、有效使用率。
二、无人自助场馆整体业务架构
整体采用SpringBoot后端+IoT硬件网关架构,分层设计,实现业务系统与硬件设备解耦。
- 接入层:微信小程序用户端、Web运维后台、IoT网关,对接人脸闸机、电控锁、智能储物柜、智能健身器材、环境传感器。
- 业务层:自助预约、门禁准入、计费核销、设备运维、风控告警、数据统计六大业务模块。
- 数据层:MySQL存储业务订单、设备、用户记录;Redis缓存预约凭证、设备在线状态、分布式锁,保障高峰期快速响应。
整体业务链路:用户线上预约/购买次卡 → 生成临时准入凭证 → 到场核验开门 → 入场后联动设备通电 → 离场自动结算、关闭设备 → 异常事件触发告警并生成运维工单。
三、核心业务模块解析
3.1 自助预约与资格校验模块
用户在小程序选择场馆、时段,提交预约。系统校验场馆营业状态、时段占用情况、用户会员/次卡余额。预约成功后生成动态准入凭证,凭证仅在预约时段内有效。支持按次扣费、包时段等多种计费模式。预约超时未入场会自动失效,释放场地资源。
3.2 自助门禁准入模块
这是无人场馆的核心入口。支持二维码、人脸两种核验方式。校验时系统判断凭证有效性、时间窗口,校验通过后下发开门指令。单次预约仅允许一次入场,防止多人共用预约名额。同时记录通行日志,包含用户、设备、时间信息,用于溯源。
3.3 自动计费与离场核销模块
记录用户入场时间,离场或者预约时段结束后自动完成结算。次卡直接扣减次数,计时类型订单根据实际健身时长计费。结算完成后自动回收门禁与器材使用权限,联动关闭场地灯光、器材电源,节约能耗。
3.4 智能设备联动模块
用户核验入场后,自动解锁对应场地器材、分配储物柜;离场后延时断电。网关实时采集设备心跳,一旦设备离线、传感器上报故障,自动触发告警。支持远程查看设备状态、远程锁定故障器材,避免用户使用损坏器材产生安全风险。
3.5 远程运维与故障工单模块
无人场馆没有现场人员,依靠线上工单闭环。硬件上报故障、用户提交故障报修,系统自动生成运维工单,指派运维人员。维修完成后上传验收记录,工单闭环。运维人员可远程查看设备状态,必要时远程重启设备。
3.6 风控告警与安全模块
包含多类风控规则:重复入场拦截、超时滞留告警、短时间高频刷码拦截。当检测到异常行为,后台推送消息给管理员,严重情况下可远程锁定门禁。同时保存全部通行、设备操作日志,满足安全审计需求。
四、Java核心代码实现
4.1 自助预约订单实体类
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import java.time.LocalDateTime; @Data @TableName("venue_self_order") public class VenueSelfOrder { @TableId(type = IdType.AUTO) private Long id; private Long userId; private Long venueId; private LocalDateTime reserveStartTime; private LocalDateTime reserveEndTime; //订单状态 0待入场 1已完成 2超时失效 3取消 private Integer orderStatus; private String accessCode; private LocalDateTime enterTime; private LocalDateTime leaveTime; private LocalDateTime createTime; }4.2 门禁准入校验服务
import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.time.LocalDateTime; @Service public class SelfVenueAccessService { @Resource private VenueSelfOrderMapper orderMapper; @Resource private IotGateWay iotGateWay; public String verifyAccess(String accessCode, Long gateId){ VenueSelfOrder order = orderMapper.selectByAccessCode(accessCode); if(order == null){ return "凭证不存在,请先预约"; } if(!order.getOrderStatus().equals(0)){ return "订单状态异常,禁止入场"; } LocalDateTime now = LocalDateTime.now(); if(now.isBefore(order.getReserveStartTime()) || now.isAfter(order.getReserveEndTime())){ return "不在预约时段内"; } //下发开门指令 boolean openResult = iotGateWay.sendOpenCommand(gateId); if(!openResult){ return "门禁设备异常"; } //记录入场时间 order.setEnterTime(now); orderMapper.updateById(order); return "核验通过,开门成功"; } }4.3 订单定时结算任务
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.time.LocalDateTime; @Component public class OrderSettleTask { @Resource private VenueSelfOrderMapper orderMapper; //每分钟执行一次,处理超时订单结算 @Scheduled(fixedRate = 60000) public void autoSettleExpireOrder(){ orderMapper.settleExpiredOrder(LocalDateTime.now()); } }五、项目落地优化方案
5.1 高并发与缓存优化
将有效准入凭证存入Redis,门禁核验优先读取缓存,减少数据库压力。使用分布式锁处理预约并发,防止同一时段超约。
5.2 硬件网络容错优化
IoT网关增加指令重试与断线缓存。网络中断时本地缓存事件,网络恢复后自动上报设备状态与通行记录,避免数据丢失。
5.3 安全风控优化
准入凭证采用动态生成,单次使用失效。对高频刷码、短时间多次核验的请求增加限流。所有通行、设备操作日志持久化存储,支持审计追溯。
5.4 运维能力优化
运维工单增加消息推送,支持图片报修。管理员后台可以查看场馆实时客流、设备在线看板,远程锁定故障器材,降低现场巡检频次。
六、方案总结
无人自助场馆的核心,不是简单去掉现场管理员,而是用软件业务模块与IoT硬件联动,构建一套自助、可监控、可远程运维的闭环运营体系。 整套方案通过预约、门禁、计费核销、设备联动、运维工单、风控告警模块相互配合,支撑24小时无人值守运营。用户可以自助完成预约、入场、健身、离场结算;运营方减少人工值守成本,同时实时监控场馆设备、人流与异常事件。 该模块架构具备良好扩展性,可在基础之上叠加会员体系、运动打卡、体测记录等功能,适用于社区自助健身场馆、小型24小时运动空间等场景。