人脸支付流程完整性修复变更记录
问题与范围
本次修复称重结算和熟食结算的人脸支付完整性问题:称重模式错误使用单价作为人脸支付金额、支付请求清空人脸用户 ID 且没有把刷脸分发到 HTTP/MQTT;熟食离线记账没有保存人脸用户 ID,恢复网络后的历史订单补传也未恢复该字段。
改动仅覆盖支付方式判断、人脸金额、身份传递、离线订单和补传,不调整刷卡、扫码的既有业务规则。
代码改动
WeightActivity.java:人脸弹框和请求使用订单总额;传递staff_uuid;刷脸按设备配置选择 HTTP 或 MQTT。CookedFoodActivity.java:使用共享策略解析人脸用户 ID,保留现有加载、结果弹框和语音反馈。PaymentMethodPolicy.java:集中定义支付类型、用户 ID 和传输规则,避免遗漏刷脸分支。PaymentManager.java:待处理请求保留人脸用户 ID,离线记账写入本地订单消费者 UUID。UploadOrderWorker.java:补传时把消费者 UUID 恢复到staff_uuid。PaymentMethodPolicyTest.java:覆盖传输方式和人脸身份解析规则。
修复后的行为
- 称重模式刷脸使用正确订单总额,并能进入 HTTP 或 MQTT 支付流程。
- 称重和熟食在线人脸支付均传递识别用户 ID。
- 熟食 MQTT 离线记账保留人脸用户 ID,恢复网络补传时继续携带。
- 称重刷脸支付可继续进入原有加载、结果弹框、订单保存和语音流程。
验证
- Amazon Corretto 8 下执行
:app:compileDebugJavaWithJavac,结果为BUILD SUCCESSFUL。 - 执行
:app:testDebugUnitTest,共 29 个 JVM 单元测试通过,失败和错误均为 0。 - 执行
:app:assembleDebug,结果为BUILD SUCCESSFUL。 git diff --check未发现空白错误。
真机验证建议
- 称重模式刷脸,确认弹框金额等于对账单总额,并分别验证 HTTP、MQTT 结果。
- 熟食在线刷脸,确认加载框、结果弹框和结果语音正常。
- MQTT 离线记账模式断网刷脸,确认立即显示“记账成功”并播放记账语音。
- 恢复网络后检查补传请求,确认
staff_uuid与识别用户一致。
本次未执行 Git 暂存、提交、推送或分支切换。