设计日期:2026-09-01
项目仓库:/Users/liang/AndroidStudioProjects/CusumptionMachine
当前实施分支:fix_pay_by_face
消费机当前有两种支付成功弹框:基础版 ShowPaymentSuccessPop 和营养增强版 ShowPaymentSuccessWithNutritionPop。基础版同时被普通支付、国信刷脸支付、记账成功和订单核验成功场景复用;营养增强版由 MainActivity 在营养展示开关开启时使用。
两个弹框目前仅根据余额字符串是否为空决定余额行是否显示,设置页没有统一控制项。业务需要在“支付设置”中增加开关,让管理员能够统一控制支付成功结果中是否展示账户余额,且未配置设备继续保持当前“显示余额”的行为。
采用“弹框读取统一偏好配置”的方案:支付设置页只负责保存开关,两个弹框在绑定余额数据时读取配置并决定余额视图可见性。
该方案不修改各 Activity 的构造方法或调用参数,能够覆盖当前全部调用入口,也能让后续新增调用默认遵循同一规则。未采用由各 Activity 传入布尔值或在每个调用点手动隐藏的方案,因为这两种方式改动分散,容易遗漏订单核验、记账或后续新增页面。
在 FragmentPayment 对应的支付设置页面中,紧接“支付结果弹框显示时长”增加一行设置项:
SwitchButton。设置项文案使用字符串资源,开关尺寸复用资源值,不在布局和业务代码中新增可避免的硬编码。
在 Constants 中新增职责明确的配置键和默认值:
PAYMENT_SUCCESS_BALANCE_VISIBLE:本地偏好键。PAYMENT_SUCCESS_BALANCE_VISIBLE_DEFAULT:默认值 true。FragmentPayment 进入页面时读取配置初始化开关;用户切换时通过 PreferenceUtils.putBoolean(...) 立即持久化。
ShowPaymentSuccessPop 增加统一的余额绑定方法,供 setPaymentResultInfo(...) 和 setOrderVerifyResultInfo(...) 调用。余额行显示条件为:
配置开启 && 余额字符串非空
条件不满足时将 show_payment_success_pop_show_balance_tv 设置为 View.GONE,满足时显示并设置余额文本。
ShowPaymentSuccessWithNutritionPop.applyPaymentInfo(...) 使用相同判断规则控制 pay_success_show_balance_tv。其他支付信息、营养数据、动画和自动关闭逻辑保持不变。
FragmentPayment 读取余额显示配置,未配置时使用默认值 true。null:继续隐藏余额,不显示空占位。HomeSecondPresentation 的独立支付结果界面。app 模块 Debug Java 编译或 Debug APK 构建。git diff --check,确认没有空白符错误。