根据您补充的业务场景,这已经涉及到了硬件交互逻辑和岗亭工作流的设计。这比单纯的计费算法更贴近实际落地。
核心逻辑: 身份识别 -> 权限校验(有效期) -> 自动放行。
Expire_Date(过期时间)。触发方式 B:刷卡/RFID(非车牌识别)
注意:此类进场通常需要人工辅助确认车辆身份,或配合视频录像留存。
流程:
核心逻辑: 取票进场 -> 扫码计费 -> 支付确认 -> 放行。
动作:
痛点提示: 此时不识别车牌,出场时完全依赖小票。若小票丢失,需人工核对入场记录(通过入场抓拍图片)。
场景: 票机自带扫码枪 + POS机连接
流程:
Amount。结果:
票机打印/吐出收据凭证(可选)。
场景: 现金支付,需岗亭保安协助
流程:
结果:
为了方便您开发,我将上述逻辑转化为系统的模块交互序列:
sequenceDiagram
participant User as 驾驶员
participant Machine as 出口票机(硬件)
participant Server as 管理服务器
participant POS as 刷卡POS机
User->>Machine: 扫描小票二维码
Machine->>Server: 上报票号/入场ID
Server->>Server: 查询入场时间,计算费用
Server-->>Machine: 返回金额 (例如: 15元)
Machine->>User: 屏幕显示/语音播报金额
Machine->>POS: 发送扣款指令 (金额15元)
User->>POS: 刷卡支付
POS->>POS: 银行卡扣款处理
POS-->>Machine: 返回扣款成功信号
Machine->>Server: 上报支付成功
Server->>Server: 更新订单状态为“已支付”
Server-->>Machine: 下发开闸指令
Machine->>Machine: 触发道闸抬杆
在实现这套逻辑时,请重点关注以下几个技术细节: 1. 票机与服务器的通信协议
票机通常通过 TCP/IP 或串口与服务端通信。
建议: 采用心跳包机制。服务器需要知道票机是否“在线”。如果票机断网,应立即报警,避免车辆堵在出口。 2. 小票二维码的数据安全
小票上的二维码是进出的唯一凭证。
建议: 二维码内容不要直接写“时间:20231010”,容易被伪造。建议生成一个加密的UUID或动态Token,服务器端通过Token反查入场记录,防止逃票。 3. POS机支付的异步回调
刷卡支付可能有延迟(网络波动)。
建议: 票机端应设置“支付等待状态”(比如等待30秒)。如果POS机返回成功,但票机没收到信号,需要有“重试机制”或“人工干预按钮”,避免道闸不开导致堵车。 4. 无牌车/无票车的兜底逻辑
进场: 取票进场,但进场时摄像头没拍到车牌。
出场: 用户票丢了。
如果月租车在进场时有效,出场时过期了怎么办?
逻辑建议: 通常允许出场(因为在场内过期不应惩罚),或者在进场时检查如果“距离过期少于1小时”,则语音提醒“月租即将到期,请及时续费”。 这套逻辑梳理涵盖了您提到的硬件交互细节,您可以直接基于此流程图编写开发文档。