消费模式一卡通读卡器启动门禁设计

目标

一卡通读卡器成功连接是进入消费业务的必要条件。设备未检测到、USB 权限未取得或协议初始化未成功时,不得进入 ConsumptionActivity,也不得启动餐盘识别、订单查询、读卡或扣款。

入口时序

固定消费模式

  1. 应用冷启动进入 ModeDispatchActivity。
  2. 分发器读取到消费模式后进入 ConsumptionStartActivity。
  3. 启动页依次检查公共配置和一卡通读卡器连接。
  4. 两项均通过后才进入 ConsumptionActivity。

手动功能选择

  1. 用户在 FunctionSelectActivity 点击消费功能。
  2. 入口统一跳转到 ConsumptionStartActivity,不得直接进入 ConsumptionActivity。
  3. 后续执行与固定消费模式相同的门禁流程。

从设置页返回

  1. SettingActivity 根据当前运行模式选择返回目标。
  2. 消费模式下进入 ConsumptionStartActivity,不直接恢复旧的 ConsumptionActivity。
  3. 设置期间读卡器发生拔出或连接异常时,返回后重新执行完整门禁;连接恢复前不得进入消费页。

方案选择

采用“消费启动页持有前置连接门禁”方案。未采用冷启动分发器检查,因为手动功能入口可能绕过;未采用消费页内禁用业务,因为不符合连接成功前不能进入的要求。

启动门禁

未检测到读卡器

首次发现不到支持的读卡器时展示单一确认弹框,提示“未检测到一卡通读卡器,请连接读卡器”。

权限或初始化失败

USB 权限被拒绝或协议初始化失败时保持门禁关闭。提示可确认重试;确认后重新发现、授权和初始化,取消后退出应用。提示区分未检测到、权限被拒绝和初始化失败。

运行期断开保护

消费页运行期间读卡器断开时,立即停止餐盘识别并阻止新订单和读卡交易。没有在途扣款时清理尚未消费状态并进入等待连接提示;确认后等待恢复,取消后退出应用。

若断开发生在已经发出扣款指令的交易中,不强制中断串行任务;先记录已知或不确定结果,同时禁止新业务,结果收敛后再进入恢复门禁。

组件职责

日志

记录门禁开始、设备未发现、用户选择、USB 接入、权限、初始化、门禁通过和运行期断开;不记录 USB 原始报文或敏感卡信息。

测试

验收标准

  1. 未检测到读卡器时弹框,且消费页未启动。
  2. 确认后等待,连接及协议初始化成功后自动进入。
  3. 取消后退出整个应用任务。
  4. 门禁未通过期间没有餐盘、订单、读卡或扣款动作。
  5. 固定模式、手动功能选择和设置页返回都不能绕过门禁。
  6. 运行期间断开后不再接收新餐盘或启动新业务。