熟食消费模式开发记录:定值商品点选
状态
已完成定值商品的本地维护、收银点选、购物车数量合并与编辑、对账单展示和本地明细兼容改造;待真机验收。
决策
- 熟食商品维持单一本地商品表,通过
saleMode区分按重量和定值商品。 - 按重量商品的单价单位固定为
500g;定值商品的单价单位固定为份。 - 定值商品点击即入车,重复点击同品时增加数量;称重商品仍必须等待稳定并由收银员主动加入。
- 存在非零重量、已选称重商品或归零锁定时,定值点选被拦截。
- 本地订单明细升级为版本 2,服务端和离线补传仍只使用一个
custom_dish。
代码变更
ProductBean增加计价方式常量与字段。ProductDatabaseHelper升级到数据库版本 3,新增sale_mode。- 新增熟食专用商品编辑弹窗,设置页可维护两种商品。
CookedFoodActivity增加“称重熟食 / 定值商品”切换、定值点选和数量编辑。- 购物车适配器、对账单和本地明细支持重量行与数量行。
- 增加定值数量合并和混合金额计算单元测试。
视觉调整
- 熟食结算页改为复用称重结算页的横屏布局层级:顶部导航、左侧 770dp 购物车栏、黑色金额栏、浅色重量区、灰色表头、右侧页签与四列商品网格。
- 商品卡片、购物车行、合计和主要按钮使用称重结算页的同款字号、尺寸和背景资源。
- 定值商品保留“份”与数量的业务差异,但不再形成独立视觉风格。
编辑弹框调整
- 重量和数量编辑不再使用系统
AlertDialog,改为复用项目现有金额输入弹框的布局、居中尺寸、取消/确认按钮和自动唤起键盘行为。 - 弹框仅接受大于 0 的整数;重量和数量分别显示对应标题与输入提示,确认后沿用原有购物车重算逻辑。
验证
- 使用 Amazon Corretto 8 执行
bash gradlew compileDebugJavaWithJavac testDebugUnitTest,结果为BUILD SUCCESSFUL。 - 已执行
git diff --check,未发现空白错误。 - 待真机验证秤盘非零拦截、称重与定值交替、对账单与支付流程。