评审摘要
本次需求新增赠送账户,并把现金充值赠送、消费扣款顺序、赠送支付展示、提现隔离、退款回退、余额流水展示贯通到 PC、小程序和消费机端。
需评审确认
活动充值本金是否确定不可提现,可消费但不能提现。
默认是否锁定为餐补账户 -> 赠送账户 -> 个人账户。
本期是否只做满额固定赠送,不做比例、部门、人群、有效期。
赠送支付退款是否必须回赠送账户,不能转现金或个人可提现。
后端需确认 actual_money 等历史字段是否已被占用,避免实付和到账混用。
如机端不支持余额展示,是否至少展示本次实际赠送支付。
资料链接
| 资料 | 位置 | 状态 |
|---|---|---|
| 云效需求 | VWCG-1121 | 已创建,指派赖清涛 |
| 外网全页面原型 | https://recharge-gift-account-mvp.lanting611.chatgpt.site/prototype-all-pages.html | GET 200,已写入云效正文 |
| 本地点击原型 | prototype.html | 已生成 |
| 完整 PRD | PRD-final.md | V1.2 |
评审前自查结果
充值赠送账户 MVP PRD
版本:V1.2 日期:2026-07-16 产品线:智慧餐厅 / 智慧营养健康餐厅 涉及端:PC 后台、微信小程序、消费机端 状态:评审稿
0. 文档说明
0.1 一句话概述
本需求在现有个人账户、餐补账户基础上,新增“赠送账户”,支持现金充值按规则赠送金额,并在充值、消费、订单、余额、流水、提现等资金链路中完整区分实付金额、赠送金额、到账金额和赠送支付金额。
0.2 最新变更
| 版本 | 日期 | 变更 |
|---|---|---|
| V1.2 | 2026-07-16 | 明确 PC 端和小程序端充值固定展示“赠送金额”,未命中规则显示 0.00;消费顺序设置按 PC 后台表单交互交付,使用第一/第二/第三顺位下拉框、当前预览、保存校验、恢复默认、操作日志 |
| V1.1 | 2026-07-16 | 补充账户设置模块、充值订单字段、手机端余额流水、PC 人员余额、消费机端支付展示、赠送余额默认永久有效 |
0.3 交付物
| 类型 | 文件 |
|---|---|
| 完整 PRD | zhctprompt/modules/product/products/smart-canteen/requirements/2026-07-13-recharge-gift-account-mvp/PRD-final.md |
| 点击原型 | zhctprompt/modules/product/products/smart-canteen/requirements/2026-07-13-recharge-gift-account-mvp/prototype.html |
| 全页面原型 | zhctprompt/modules/product/products/smart-canteen/requirements/2026-07-13-recharge-gift-account-mvp/prototype-all-pages.html |
1. 背景
当前系统已有个人账户和餐补账户,支持现金充值、消费、订单查询、退款、提现等资金链路。现在需要在当前系统及功能下增加“现金充值赠送金额”能力:用户现金充值时可按后台规则获得赠送金额,赠送金额进入独立赠送账户,可用于消费,但不能提现。
本需求按新增 MVP 处理。当前系统没有正式上线的赠送规则、赠送账户和赠送消费字段;如本地分支存在相关开发痕迹,仅作为页面承载和代码位置参考,不作为已具备能力判断。
本版核心模块架构:
| 层级 | 模块 | 说明 |
|---|---|---|
| 账户管理 | 补贴管理 | 保持现有补贴账户能力 |
| 账户管理 | 现金管理 | 负责现金充值、现金退款、充值订单等业务执行 |
| 账户管理 | 账户设置 | 新增模块,与补贴管理、现金管理并列 |
| 账户设置 | 现金充值设置 | 配置现金充值赠送规则和充值金额字段口径 |
| 账户设置 | 消费顺序设置 | 配置餐补账户、赠送账户、个人账户扣款顺序 |
2. 目标
- 在账户管理下新增“账户设置”,包含现金充值设置和消费顺序设置。
- 支持配置现金充值赠送规则,MVP 只做满额固定赠送。
- 充值时清楚区分实付金额、赠送金额、到账金额。
- 新增赠送账户,与个人账户、餐补账户并列。
- 消费时支持按后台配置的账户支付顺序扣款。
- 所有相关消费订单、支付过程、支付成功页展示赠送支付金额。
- 充值订单、充值记录、充值统计、导出中区分实付金额、赠送金额、到账金额。
- 赠送金额不能提现,且防止“充值拿赠送后立即提现本金,只消费赠送金额”的套利。
- 手机端余额、账户流水、PC 人员余额等所有余额入口补充赠送余额信息。
3. 范围
3.1 本期做
| 优先级 | 能力 | 范围 |
|---|---|---|
| P0 | 账户设置模块 | 账户管理下新增账户设置,与补贴管理、现金管理并列 |
| P0 | 现金充值设置 | 满额固定赠送规则,支持启用/停用 |
| P0 | 消费顺序设置 | 餐补账户、赠送账户、个人账户支持后台排序 |
| P0 | 充值三金额 | PC 和小程序展示实付金额、赠送金额、到账金额 |
| P0 | 充值订单三金额 | 充值订单列表、详情、导出、统计必须区分实付、赠送、到账 |
| P0 | 赠送账户 | 新增赠送账户,可消费,不可提现 |
| P0 | 活动充值本金 | 命中赠送的充值本金可消费,不可提现 |
| P0 | 消费扣款 | 按配置顺序扣款并记录现金/餐补/赠送拆分 |
| P0 | 支付过程展示 | 手机点餐、扫码/机端消费、消费机端支付过程展示赠送支付 |
| P0 | 支付成功展示 | 手机点餐、扫码/机端消费、消费机端支付成功页展示赠送支付 |
| P0 | 手机端余额/流水 | 余额页和账户流水展示赠送余额、赠送入账、赠送消费、赠送退款 |
| P0 | PC 人员余额展示 | 人员列表、人员详情、人员编辑只读信息、组织人员列表展示赠送余额 |
| P0 | 提现隔离 | 可提现金额排除餐补、赠送、活动充值本金 |
| P1 | 订单展示 | PC 和小程序订单展示赠送支付 |
| P1 | 导出统计 | 消费订单导出和统计增加赠送支付 |
| P1 | 退款 | 按原支付来源退款,赠送支付退回赠送账户 |
3.2 本期不做
- 不做比例赠送,只做固定金额赠送。
- 不做优惠券、积分、会员等级。
- 不做赠送金额有效期、过期清零。
- 不做按人员、部门、餐厅、档口配置赠送规则。
- 不做按人员、部门、餐厅、餐次差异化支付顺序。
- 不开放赠送账户手动转入个人账户。
- 不开放人工直接编辑赠送余额。
4. 用户与场景
| 角色 | 场景 | 成功标准 |
|---|---|---|
| 后台管理员 | 配置账户设置 | 可在账户设置中维护现金充值设置和消费顺序设置 |
| 后台管理员 | 配置充值赠送规则 | 可设置满额金额、赠送金额、适用端、支付方式、状态 |
| 后台管理员 | 给人员现金充值 | 能看到实付、赠送、到账,并完成入账 |
| 后台管理员 | 设置支付顺序 | 可调整餐补、赠送、个人账户扣款顺序 |
| 用户 | 小程序充值 | 支付前知道实付金额、赠送金额和到账金额 |
| 用户 | 查看余额 | 能区分个人、餐补、赠送账户 |
| 用户 | 消费 | 系统按配置顺序自动扣款,并展示赠送支付 |
| 用户 | 提现 | 只能提现普通可提现本金 |
| 财务/运营 | 查订单和导出 | 能区分现金支付、餐补支付、赠送支付 |
| 运营/客服 | 查人员资产 | 能在人员列表和人员详情中看到个人、餐补、赠送余额 |
5. 核心口径
5.1 账户口径
| 账户 | 来源 | 可消费 | 可提现 |
|---|---|---|---|
| 个人账户 | 普通充值本金、活动充值本金、退款回退等 | 是 | 部分可提现 |
| 餐补账户 | 单位补贴 | 是 | 否 |
| 赠送账户 | 充值活动赠送金额 | 是 | 否 |
赠送账户有效期规则:
- 本期赠送余额不设置有效期。
- 赠送余额默认永久有效。
- 本期不做过期提醒、过期冻结、过期清零。
- 后续如要增加有效期,需作为独立需求重新设计规则、提示、流水和清零审计。
个人账户需要进一步区分:
| 个人账户资金类型 | 来源 | 可消费 | 可提现 |
|---|---|---|---|
| 普通可提现本金 | 未命中赠送规则的充值本金 | 是 | 按现有规则可提现 |
| 活动充值本金 | 命中赠送规则的充值实付本金 | 是 | 否 |
5.2 充值金额口径
| 字段 | 公式 | 说明 |
|---|---|---|
| 实付金额 | 用户实际支付金额 | 第三方支付/现金收款金额,财务实收口径 |
| 赠送金额 | 按现金充值设置规则计算 | 进入赠送账户,不可提现 |
| 到账金额 | 实付金额 + 赠送金额 | 用户看到的到账总额 |
示例:充值 100,命中满 100 送 20。
| 项 | 结果 |
|---|---|
| 实付金额 | 100 |
| 赠送金额 | 20 |
| 到账金额 | 120 |
| 个人账户增加 | 100 |
| 赠送账户增加 | 20 |
| 活动充值本金增加 | 100 |
| 可提现金额增加 | 0 |
5.3 防套利口径
问题路径:
充值拿赠送 -> 立即提现本金 -> 只消费赠送余额 -> 再充值再提现
控制规则:
| 规则 | 说明 |
|---|---|
| 命中赠送的实付本金标记为活动充值本金 | 可消费,不可提现 |
| 可提现金额不等于个人账户余额 | 必须按资金类型计算 |
| 赠送账户不可提现 | 不能转个人账户,不能现金退款 |
| 赠送支付退款回赠送账户 | 不能进入个人账户或现金退款 |
| 现金退款/余额退还只退普通可提现本金 | 不退赠送账户和活动充值本金 |
计算口径:
可提现金额 = 普通可提现本金 - 已提现/已退金额
不可提现金额 = 餐补账户 + 赠送账户 + 活动充值本金
6. 业务规则
6.1 现金充值设置规则
现金充值设置位于:
账户管理 / 账户设置 / 现金充值设置
配置字段:
| 字段 | 必填 | 说明 |
|---|---|---|
| 规则名称 | 是 | 如“满100送20” |
| 适用端 | 是 | PC、小程序、全部 |
| 支付方式 | 是 | 现金、微信、支付宝、全部 |
| 满额金额 | 是 | 实付金额达到该金额才赠送 |
| 赠送金额 | 是 | 固定赠送金额 |
| 状态 | 是 | 启用、停用 |
匹配规则:
- 仅启用规则参与匹配。
- 实付金额大于等于满额金额。
- 适用端匹配当前充值来源。
- 支付方式匹配当前支付方式。
- 多条命中时,优先取满额金额最高;满额相同取赠送金额最高;仍相同取最新创建规则。
- 未命中规则时赠送金额为 0,到账金额等于实付金额。
6.2 消费顺序设置
消费顺序设置位于:
账户管理 / 账户设置 / 消费顺序设置
可配置账户:
- 餐补账户
- 赠送账户
- 个人账户
默认顺序建议:
餐补账户 -> 赠送账户 -> 个人账户
配置规则:
| 规则 | 说明 |
|---|---|
| 三个账户必须全部出现 | 不允许缺失 |
| 三个账户不可重复 | 不允许两个顺位选同一账户 |
| 配置只影响新订单 | 历史订单不重算 |
| 保存需记录操作日志 | 记录操作人、操作前顺序、操作后顺序、时间 |
保存确认文案:
调整账户支付顺序后,仅影响新订单,历史订单不重算。确认保存?
6.3 消费扣款规则
消费支付时,后端按当前有效消费顺序设置依次扣款。
订单必须记录:
- 现金支付金额
- 餐补支付金额
- 赠送支付金额
- 使用的扣款顺序版本或快照
示例:订单金额 28,支付顺序为餐补 -> 赠送 -> 个人。
| 账户 | 支付前余额 | 扣款 |
|---|---|---|
| 餐补账户 | 20 | 20 |
| 赠送账户 | 50 | 8 |
| 个人账户 | 100 | 0 |
订单记录:
实付金额 28,现金支付 0,餐补支付 20,赠送支付 8
6.4 退款规则
退款按原支付来源回退:
| 原支付来源 | 退款去向 |
|---|---|
| 现金/个人账户支付 | 回退个人账户,是否可提现按资金类型判断 |
| 餐补支付 | 回退餐补账户 |
| 赠送支付 | 回退赠送账户 |
退款页面和订单详情需展示:
- 现金退款金额
- 餐补退款金额
- 赠送退款金额
赠送支付退款不能进入个人账户,也不能转为现金退款。
7. 信息架构与页面需求
7.1 PC:账户设置
7.1.1 入口
新增入口:
账户管理 / 账户设置
与以下模块并列:
- 补贴管理
- 现金管理
- 账户设置
账户设置下包含:
- 现金充值设置
- 消费顺序设置
7.1.2 现金充值设置
用途:
- 维护现金充值赠送规则。
- 固定充值金额字段口径:实付金额、赠送金额、到账金额。
- PC 端和小程序端充值时字段名固定为“赠送金额”,不因未命中规则而隐藏或改名;未命中规则时显示
赠送金额 0.00。 - 供 PC 现金充值和小程序充值读取,不直接完成充值入账。
列表字段:
| 字段 | 说明 |
|---|---|
| 规则名称 | 如满100送20 |
| 适用端 | PC、小程序、全部 |
| 支付方式 | 现金、微信、支付宝、全部 |
| 满额金额 | 命中阈值 |
| 赠送金额 | 命中后赠送金额 |
| 字段口径 | 固定展示实付/赠送/到账 |
| 状态 | 启用、停用 |
| 更新时间 | 最后修改时间 |
| 操作 | 新增、编辑、启用、停用、删除 |
表单字段:
| 字段 | 类型 | 规则 |
|---|---|---|
| 规则名称 | 文本 | 必填 |
| 适用端 | 下拉/多选 | PC、小程序、全部 |
| 支付方式 | 下拉/多选 | 现金、微信、支付宝、全部 |
| 满额金额 | 数字 | 大于 0,保留 2 位 |
| 赠送金额 | 数字 | 大于等于 0,保留 2 位 |
| 状态 | 开关 | 启用、停用 |
7.1.3 消费顺序设置
配置字段:
| 字段 | 选项 | 校验 |
|---|---|---|
| 第一扣款账户 | 餐补账户、赠送账户、个人账户 | 三选一 |
| 第二扣款账户 | 餐补账户、赠送账户、个人账户 | 不能重复 |
| 第三扣款账户 | 餐补账户、赠送账户、个人账户 | 三个账户必须全部出现 |
展示建议:
- 采用 PC 后台常规表单交互,不采用拖拽或卡片式排序。
- 表单包含“第一顺位、第二顺位、第三顺位”三个下拉框。
- 每个下拉框选项均为餐补账户、赠送账户、个人账户。
- 默认展示当前生效顺序。
- 下拉变更后实时刷新“当前预览”,如
餐补账户 -> 赠送账户 -> 个人账户。 - 页面展示“仅影响新订单”的说明。
- 保存后写入操作日志。
页面交付要求:
- 消费顺序设置必须作为独立页面交付,路径为
账户管理 / 账户设置 / 消费顺序设置。 - 页面包含当前启用顺序、三顺位下拉配置区、当前预览、保存校验区、保存确认提示、恢复默认、操作日志。
- 保存校验必须提示三个账户全部参与、账户不可重复、生效范围为新订单。
- 如果三个下拉框存在重复账户,保存按钮不可用,并提示“三个顺位必须选择不同账户,且餐补账户、赠送账户、个人账户必须全部出现”。
- 顶部快捷“保存消费顺序”和页面内“保存”必须走同一套校验逻辑,不能绕过校验。
- “恢复默认”点击后恢复为
餐补账户 -> 赠送账户 -> 个人账户。 - 操作日志记录操作时间、操作人、调整前顺序、调整后顺序、影响范围。
7.2 PC:现金管理 / 现金充值
本地落点:
- 路由:
/accountManagement/cashManagement/rechargeList - 页面:
zhctproject/store/public/static/src/view/accountManagement/cashManagement/rechargeList.vue - 组件:
zhctproject/store/public/static/src/components/rechargeTable.vue
职责:
- 执行现金充值。
- 按账户设置中的现金充值设置匹配赠送规则。
- 展示并保存实付金额、赠送金额、到账金额。
- 不承载配置入口。
新增充值弹窗字段:
| 字段 | 类型 | 规则 |
|---|---|---|
| 充值部门 | 级联多选 | 沿用现有部门选择 |
| 充值人员 | 多选 | 沿用现有人员选择 |
| 充值金额/实付金额 | 数字输入 | 大于 0,保留 2 位 |
| 充值类型 | 单选 | 现金、线下支付宝、线下微信 |
| 赠送金额 | 只读 | 根据现金充值设置自动计算 |
| 实际到账/到账金额 | 只读 | 实付 + 赠送 |
| 备注 | 文本域 | 可选 |
交互:
- 输入实付金额或切换支付方式后,实时刷新赠送金额和到账金额。
- 始终显示字段名“赠送金额”;赠送金额为 0 时显示
赠送金额 0.00,并提示“未命中赠送规则”。 - 命中规则时显示规则名称,如“满100送20”。
充值订单列表新增/调整字段:
| 字段 | 说明 |
|---|---|
| 充值单编号 | 充值订单唯一编号 |
| 姓名 | 充值人员 |
| 所在部门 | 当前部门 |
| 充值类型 | 现金、线下微信、线下支付宝等 |
| 充值前金额 | 充值前个人账户余额 |
| 实付金额 | 用户实际支付金额,财务实收口径 |
| 赠送金额 | 本次充值按规则赠送的金额,进入赠送账户 |
| 到账金额 | 实付金额 + 赠送金额 |
| 活动充值本金 | 命中赠送规则时等于实付金额,不进入可提现金额 |
| 可提现本金 | 未命中赠送规则且符合提现规则的本金 |
| 充值后金额 | 充值后个人账户余额;如展示总余额需另列“总余额” |
| 备注 | 充值备注和命中规则说明 |
| 操作人 | 后台操作人 |
| 操作时间 | 充值完成时间 |
充值订单详情必须展示:
- 实付金额
- 赠送金额
- 到账金额
- 活动充值本金
- 命中赠送规则名称
- 是否进入可提现金额
充值订单导出必须包含:
充值单编号 / 姓名 / 部门 / 充值类型 / 实付金额 / 赠送金额 / 到账金额 / 活动充值本金 / 可提现本金 / 操作人 / 操作时间
充值统计需区分:
- 实收金额合计 = 实付金额合计
- 赠送金额合计
- 到账金额合计 = 实付金额合计 + 赠送金额合计
- 活动充值本金合计
7.3 PC:消费订单
本地落点:
- 页面:
zhctproject/store/public/static/src/view/order/consume/index.vue - 表格:
zhctproject/store/public/static/src/view/order/customTable.vue
金额列顺序:
订单金额 / 优惠金额 / 服务金额 / 实付金额 / 现金支付 / 餐补支付 / 赠送支付 / 退款金额
新增要求:
- 列表增加“赠送支付”。
- 统计卡增加“赠送支付合计”。
- 导出增加“赠送支付”。
- 订单详情增加“赠送支付”。
- 退款相关页面增加“赠送退款”。
- 老订单赠送支付默认 0.00。
7.4 PC:人员管理资产展示
本地落点:
- 人员列表:
zhctproject/store/public/static/src/view/staff/staffList.vue - 人员详情:
zhctproject/store/public/static/src/view/staff/lookStaff.vue - 人员编辑:
zhctproject/store/public/static/src/view/staff/editStaff.vue - 组织人员列表:
zhctproject/store/public/static/src/view/integratedManagement/organization.vue
当前系统已有余额相关展示:
| 页面 | 当前余额字段 | 本次新增 |
|---|---|---|
| 人员列表 | 当前余额、累计余额 | 赠送余额;建议将“当前余额”明确为“个人余额”或“现金余额” |
| 人员详情 | 余额、累计消费 | 赠送余额、餐补余额、可提现金额说明 |
| 人员编辑 | 余额、累计消费 | 可补充只读赠送余额;赠送余额不能手工编辑 |
| 组织人员列表 | 现金余额、补贴余额 | 赠送余额 |
列表列建议:
现金余额 / 补贴余额 / 赠送余额 / 可提现金额
若人员列表当前只有“当前余额”,则本期最小改动为:
- “当前余额”改名为“个人余额”或“现金余额”。
- 旁边新增“赠送余额”列。
- 如接口可返回餐补余额,则同步展示“餐补余额”;否则标记为接口补充项。
- 导出人员列表时同步增加“赠送余额”列,避免页面和导出口径不一致。
- 人员编辑页如展示赠送余额,必须为只读;赠送余额只能通过充值赠送、消费、退款等账户流水变动。
人员资产页文案:
赠送余额为充值活动赠送金额,可消费,不可提现。
7.5 小程序:我的余额
本地落点:zhctproject/ai_app/settlement/payment/balance.vue
展示:
- 个人账户余额
- 餐补账户余额
- 赠送账户余额
- 可提现金额入口说明
推荐展示结构:
| 区域 | 展示内容 | 目的 |
|---|---|---|
| 顶部钱包区 | 三个账户余额并列:个人、餐补、赠送 | 让用户理解余额由三类账户组成 |
| 账户说明 | 赠送账户:充值赠送,可消费,不可提现 | 避免把赠送余额误认为可提现余额 |
| 可提现提示 | 可提现金额仅包含普通可提现本金 | 避免总余额和可提现金额混淆 |
| 入口 | 账户流水、去充值、提现 | 用户可追溯每笔赠送变动 |
文案:
赠送账户余额可消费,不可提现。
小程序钱包首页 zhctproject/ai_app/pages/wallet/index.vue 当前只展示“账户余额(元)”,需同步改为三账户展示,或入口跳转至统一“我的余额”页,避免两个余额入口口径不一致。
7.6 小程序:账户流水
本地落点:
- 余额流水:
zhctproject/ai_app/pages/wallet/balance/log.vue - 充值记录:
zhctproject/ai_app/pages/wallet/recharge/order.vue
账户流水必须增加赠送相关信息。
流水列表字段:
| 字段 | 说明 |
|---|---|
| 流水类型 | 充值赠送、赠送消费、赠送退款、普通充值、餐补发放等 |
| 账户类型 | 个人账户、餐补账户、赠送账户 |
| 变动金额 | 收入展示 +金额,支出展示 -金额 |
| 变动后余额 | 当前账户变动后的余额 |
| 来源单号 | 充值单号、消费订单号、退款单号 |
| 时间 | 流水创建时间 |
赠送流水展示规则:
| 场景 | 流水文案 | 账户类型 | 金额 |
|---|---|---|---|
| 充值命中赠送 | 充值赠送入账 | 赠送账户 | +赠送金额 |
| 消费扣赠送 | 消费扣款 | 赠送账户 | -赠送支付 |
| 订单退款 | 赠送退款入账 | 赠送账户 | +赠送退款 |
推荐文案:
[赠送账户] 充值赠送入账 +20.00
[赠送账户] 消费扣款 -8.00
[赠送账户] 赠送退款入账 +8.00
流水详情需展示:
- 来源单号
- 场景
- 账户类型
- 变动前余额
- 变动金额
- 变动后余额
- 是否可提现:赠送账户固定显示“不可提现”
7.7 小程序:充值
本地落点:zhctproject/ai_app/settlement/payment/recharge.vue
页面展示:
- 顶部账户余额面板从个人、餐补扩展为个人、餐补、赠送。
- 输入充值金额后展示:
- 支付按钮金额必须按实付金额展示。
- 赠送金额进入赠送账户,可消费,不可提现。
- 实付金额 - 赠送金额 - 到账金额
充值记录 zhctproject/ai_app/pages/wallet/recharge/order.vue 需展示:
- 实付金额
- 赠送金额
- 到账金额
- 命中规则名称
- 到账时间
7.8 小程序:手机点餐支付
本地落点:zhctproject/ai_app/settlement/ordering/cashier/index.vue
支付过程页展示:
- 订单金额
- 预计现金支付
- 预计餐补支付
- 预计赠送支付
- 当前扣款顺序
支付成功页或跳转后的订单详情展示:
- 实际现金支付
- 实际餐补支付
- 实际赠送支付
- 支付后个人余额、餐补余额、赠送余额
实际扣款拆分必须以后端返回为准,前端预估仅用于支付过程展示。
7.9 小程序:扫码/机端支付
本地落点:zhctproject/ai_app/settlement/payment/scanPay.vue
支付过程弹窗展示:
- 本次付款金额
- 预计现金支付
- 预计餐补支付
- 预计赠送支付
- 当前扣款顺序
支付成功弹窗展示:
- 实际现金支付
- 实际餐补支付
- 实际赠送支付
- 支付后赠送账户余额
7.10 小程序:订单详情
本地落点:zhctproject/ai_app/settlement/orderDetails/index.vue
价格汇总区增加:
| 字段 | 显示规则 |
|---|---|
| 现金支付 | 有则展示,0 可隐藏或展示 0.00 |
| 餐补支付 | 有则展示,0 可隐藏或展示 0.00 |
| 赠送支付 | 有则展示,退款订单也需保留 |
| 实付金额 | 必显 |
退款订单需展示赠送退款金额。
7.11 小程序:提现
本地落点:zhctproject/ai_app/settlement/payment/cash.vue
展示:
- 保持当前“可提现金额(元)”顶部大金额。
- 增加不可提现说明:
- 可提现金额仅包含个人账户中符合提现条件的普通本金。 - 餐补账户、赠送账户、活动充值本金不可提现。
文案:
餐补账户、赠送账户、活动充值本金不可提现。
如存在赠送余额,展示:
赠送账户余额 ¥xx 可消费,不可提现。
如存在活动充值本金,展示:
活动充值本金 ¥xx 可消费,不可提现。
7.12 消费机端
范围:
- 点餐消费
- 定额消费
- 自由金额消费
- 机端支付成功页
支付过程展示:
- 应付金额
- 预计现金支付
- 预计餐补支付
- 预计赠送支付
- 当前扣款顺序
支付成功展示:
- 实际现金支付
- 实际餐补支付
- 实际赠送支付
- 如当前机端支持余额展示,则同步展示支付后个人账户、餐补账户、赠送账户余额。
8. 数据与接口
8.1 数据字段建议
| 对象 | 字段 | 说明 |
|---|---|---|
| 用户资产 | cash_balance / balance | 个人账户余额 |
| 用户资产 | subsidy_balance | 餐补账户余额 |
| 用户资产 | gift_balance | 赠送账户余额 |
| 用户资产 | withdrawable_balance | 可提现金额 |
| 用户资产 | activity_principal_balance | 活动充值本金余额 |
| 人员列表 | cash_balance, subsidy_balance, gift_balance, withdrawable_balance | PC 人员管理资产列展示 |
| 充值规则 | rule_name, platform, pay_method, min_money, gift_money, status | 现金充值设置 |
| 消费顺序配置 | store_id, pay_order, update_by, update_time | 账户扣款顺序 |
| 充值订单 | pay_price, gift_money, actual_money | 实付、赠送、到账 |
| 充值订单 | is_activity_principal, withdrawable_amount | 是否活动本金、可提现本金 |
| 账户流水 | account_type, scene, money, balance_before, balance_after, source_order_no, withdrawable_flag | 流水展示账户类型和可提现口径 |
| 消费订单 | cash_payment, subsidy_payment, gift_payment | 订单支付拆分 |
| 消费订单 | gift_refund_amount, remain_gift | 已退赠送、剩余可退赠送 |
| 支付预览 | cash_pay_preview, subsidy_pay_preview, gift_pay_preview, pay_order | 支付过程预计扣款拆分 |
| 支付成功结果 | cash_payment, subsidy_payment, gift_payment, balance_after, subsidy_after, gift_after | 支付成功实际扣款和支付后余额 |
8.2 接口影响
| 接口/模块 | 改动 |
|---|---|
| 账户设置 / 现金充值设置 | 新增列表、保存、启停、删除、匹配预览 |
| 账户设置 / 消费顺序设置 | 新增读取、保存账户支付顺序;返回第一/第二/第三顺位、当前预览、校验结果、操作日志 |
| 用户资产接口 | 返回个人、餐补、赠送、活动本金、可提现金额 |
| PC 人员列表接口 | 返回现金余额、餐补余额、赠送余额、可提现金额 |
| PC 人员详情接口 | 返回现金余额、餐补余额、赠送余额、可提现金额和累计消费 |
| 账户流水接口 | 返回账户类型、场景、变动金额、变动前后余额、来源单号、是否可提现 |
| 充值记录接口 | 返回实付金额、赠送金额、到账金额 |
| PC 充值接口 | 保存三金额,拆分个人账户和赠送账户 |
| 小程序充值下单 | 返回三金额,支付金额为实付金额 |
| 充值支付成功 | 命中赠送时标记活动充值本金 |
| 充值订单列表/详情 | 返回实付金额、赠送金额、到账金额、活动充值本金、可提现本金 |
| 充值订单导出/统计 | 导出和统计按实付、赠送、到账、活动本金拆分 |
| 消费支付 | 按配置顺序扣款,记录拆分 |
| 手机点餐支付页 | 返回预计现金支付、预计餐补支付、预计赠送支付、支付顺序 |
| 扫码/机端支付页 | 返回预计现金支付、预计餐补支付、预计赠送支付、支付顺序 |
| 消费机端支付页 | 返回预计现金支付、预计餐补支付、预计赠送支付、支付顺序 |
| 支付成功结果 | 返回实际现金支付、实际餐补支付、实际赠送支付、支付后余额 |
| 订单列表/详情 | 增加赠送支付字段 |
| 提现读取/提交 | 排除餐补、赠送、活动充值本金 |
| 消费退款 | 按原支付来源回退 |
| 现金退款/余额退还 | 只允许退普通可提现本金 |
8.3 幂等与一致性
| 场景 | 要求 |
|---|---|
| 充值支付成功回调 | 幂等处理,不能重复入账赠送金额 |
| 消费扣款 | 后端原子扣减三个账户,失败整体回滚 |
| 退款 | 按原订单支付拆分计算可退金额,避免超退 |
| 账户流水 | 账户余额变动必须有流水,流水和余额一致 |
| 导出统计 | 与列表查询同一口径,不能实付和到账混算 |
9. 权限与日志
| 操作 | 权限建议 | 日志 |
|---|---|---|
| 查看账户设置 | 账户管理查看权限 | 不强制 |
| 新增/编辑现金充值设置 | 账户设置管理权限 | 记录规则前后值 |
| 启用/停用现金充值设置 | 账户设置管理权限 | 记录状态变化 |
| 保存消费顺序设置 | 账户设置管理权限 | 记录操作时间、操作人、操作前顺序、操作后顺序、影响范围 |
| PC 现金充值 | 现金充值权限 | 记录实付、赠送、到账、操作人 |
| 提现 | 用户本人或后台提现权限 | 记录提现金额、可提现金额 |
| 消费退款 | 退款审核权限 | 记录现金、餐补、赠送退款拆分 |
10. 异常与兼容
| 场景 | 处理 |
|---|---|
| 无匹配赠送规则 | 赠送金额为 0,到账金额等于实付金额 |
| 规则停用后历史订单 | 历史订单不变,仍展示当时命中的规则和金额 |
| 支付顺序缺失 | 使用默认顺序:餐补 -> 赠送 -> 个人 |
| 支付顺序配置重复 | 保存失败,提示三个账户不可重复 |
| 充值命中赠送后提现 | 可提现金额不增加 |
| 赠送账户余额不足 | 按顺序继续扣下一个账户 |
| 三账户总余额不足 | 支付失败,提示余额不足 |
| 赠送支付退款 | 退回赠送账户 |
| 老订单无赠送字段 | 默认 0.00,查询导出正常 |
| 人员编辑页展示赠送余额 | 只读,不可手工修改 |
11. 验收标准
| 编号 | 场景 | 验收标准 |
|---|---|---|
| A0 | 账户设置模块 | 账户管理下存在“账户设置”,与补贴管理、现金管理并列,包含现金充值设置和消费顺序设置 |
| A1 | 现金充值设置 | 后台可新增“满100送20”并启用 |
| A2 | PC 充值 | 充值 100 显示实付 100、赠送 20、到账 120 |
| A3 | 小程序充值 | 支付按钮金额为 100,固定展示“赠送金额”,到账展示 120 |
| A3-1 | 未命中赠送展示 | PC 和小程序充值未命中规则时仍展示“赠送金额 0.00”,不隐藏字段 |
| A4 | 入账 | 个人账户 +100、赠送账户 +20、活动本金 +100、可提现 +0 |
| A5 | 充值订单字段 | 充值订单列表、详情、导出均展示实付金额、赠送金额、到账金额 |
| A6 | 充值统计口径 | 充值统计分别展示实收金额合计、赠送金额合计、到账金额合计 |
| B1 | 充后提现防套利 | 充值 100 送 20 后,可提现金额仍为 0 |
| B2 | 普通充值提现 | 未命中赠送规则充值 100,按现有规则进入可提现金额 |
| B3 | 赠送不可提现 | 个人 0、赠送 20 时,可提现金额为 0 |
| C1 | 支付顺序配置 | 可保存“赠送 -> 餐补 -> 个人”,新订单按该顺序扣款 |
| C2 | 支付顺序校验 | 顺序重复或缺账户时不能保存 |
| C2-1 | 消费顺序设置页面 | 作为独立页面交付,采用 PC 后台表单交互,包含第一/第二/第三顺位下拉框、当前预览、保存校验、恢复默认、保存确认、操作日志 |
| C2-2 | 消费顺序保存入口 | 顶部“保存消费顺序”和页面内“保存”走同一套校验,重复账户时均不能保存 |
| C3 | 混合消费 | 订单记录现金支付、餐补支付、赠送支付 |
| C4 | 手机点餐支付过程 | 支付页金额明细展示预计现金支付、预计餐补支付、预计赠送支付 |
| C5 | 手机点餐支付成功 | 支付成功页或跳转后的订单详情展示实际赠送支付 |
| C6 | 扫码/机端支付过程 | 输入付款金额后展示预计赠送支付 |
| C7 | 扫码/机端支付成功 | 支付成功弹窗展示实际现金、餐补、赠送支付 |
| C8 | 消费机端支付成功 | 消费机支付成功页展示实际赠送支付 |
| C9 | 手机端余额展示 | 我的余额页展示个人、餐补、赠送三账户,并说明赠送不可提现 |
| C10 | 手机端赠送流水 | 充值赠送、赠送消费、赠送退款均在账户流水中以“赠送账户”标签展示 |
| C11 | PC 人员列表余额 | 人员列表展示赠送余额,原“当前余额”不与赠送余额混用 |
| C12 | PC 人员详情余额 | 人员详情展示个人、餐补、赠送、可提现金额,并说明赠送不可提现 |
| D1 | 订单展示 | PC 和小程序订单详情展示赠送支付 |
| D2 | 导出统计 | 导出和统计包含赠送支付 |
| E1 | 退款 | 赠送支付退款回赠送账户 |
| E2 | 防变相套现 | 赠送退款不能进入个人账户或现金退款 |
| F1 | 历史兼容 | 老订单赠送支付默认 0.00,查询导出正常 |
12. 全局余额相关页面排查清单
本次需求不只改充值页。凡是展示“余额、账户、提现、退款、资金流水”的位置,都要检查是否需要增加赠送余额或赠送支付口径。
| 位置 | 本地文件 | 检查结论 |
|---|---|---|
| PC 账户设置 | zhctproject/store/public/static/src/router/accountManagement/index.js | 新增账户设置模块,包含现金充值设置和消费顺序设置 |
| PC 人员列表 | zhctproject/store/public/static/src/view/staff/staffList.vue | 当前有“当前余额/累计余额”,必须新增赠送余额,并明确当前余额口径 |
| PC 人员详情 | zhctproject/store/public/static/src/view/staff/lookStaff.vue | 当前有“余额/累计消费”,必须新增赠送余额、餐补余额、可提现金额说明 |
| PC 人员编辑 | zhctproject/store/public/static/src/view/staff/editStaff.vue | 当前有只读“余额/累计消费”,可补充只读赠送余额,不能开放手工编辑 |
| PC 组织人员列表 | zhctproject/store/public/static/src/view/integratedManagement/organization.vue | 当前有“现金余额/补贴余额”,必须新增赠送余额 |
| PC 现金充值列表 | zhctproject/store/public/static/src/components/rechargeTable.vue | 需纳入三金额:实付、赠送、到账 |
| PC 消费订单 | zhctproject/store/public/static/src/view/order/consume/index.vue、zhctproject/store/public/static/src/view/order/customTable.vue | 需纳入赠送支付、赠送退款 |
| PC 现金退款 | zhctproject/store/public/static/src/view/accountManagement/cashManagement/refundList.vue | 退款/余额退还只允许普通可提现本金,不能扣赠送账户 |
| PC 电子记录/充值记录 | zhctproject/store/public/static/src/view/integratedManagement/eRecord/rechargeRecord.vue | 涉及充值金额记录时,需区分实付、赠送、到账 |
| PC 充值补贴统计 | zhctproject/store/public/static/src/view/reportManagement/rechargeSubsidy/* | 若统计充值实收或到账,需增加赠送金额口径,避免实收和权益混算 |
| 小程序钱包首页 | zhctproject/ai_app/pages/wallet/index.vue | 当前只展示账户余额,需改为个人、餐补、赠送或进入我的余额页保持一致 |
| 小程序余额页 | zhctproject/ai_app/settlement/payment/balance.vue | 需三账户展示 |
| 小程序账户流水 | zhctproject/ai_app/pages/wallet/balance/log.vue | 需赠送账户流水 |
| 小程序充值记录 | zhctproject/ai_app/pages/wallet/recharge/order.vue | 需实付、赠送、到账 |
| 小程序充值页 | zhctproject/ai_app/settlement/payment/recharge.vue | 需展示实付、赠送、到账,支付按钮按实付 |
| 小程序扫码/机端支付 | zhctproject/ai_app/settlement/payment/scanPay.vue | 需支付过程和支付成功展示赠送支付 |
| 小程序点餐支付 | zhctproject/ai_app/settlement/ordering/cashier/index.vue | 需支付过程和支付成功展示赠送支付 |
| 小程序订单详情 | zhctproject/ai_app/settlement/orderDetails/index.vue | 需展示赠送支付和赠送退款 |
排查原则:
- 页面展示“余额”时,必须说明是现金/个人余额、餐补余额、赠送余额,不能再用一个总余额覆盖三账户。
- 页面展示“可提现”时,必须排除餐补账户、赠送账户、活动充值本金。
- 页面展示“实收/收款/充值金额”时,必须区分实付金额和到账金额。
- 页面展示“消费/退款”时,必须区分现金支付、餐补支付、赠送支付。
13. 发布与灰度
建议发布顺序:
- 数据库和后端账户字段上线。
- 账户设置上线,默认消费顺序为餐补 -> 赠送 -> 个人。
- PC 现金充值三金额上线。
- 小程序充值、余额、流水上线。
- 消费支付扣款拆分上线。
- 订单、退款、导出、统计字段上线。
- 人员列表、人员详情、组织人员列表余额展示上线。
灰度建议:
- 先在测试商户或内部食堂启用现金充值设置。
- 老订单赠送金额默认 0,确保查询、导出、统计不报错。
- 灰度期间重点监控充值入账、消费扣款、退款回退、提现金额。
14. 风险与待确认
| 风险/问题 | 建议 |
|---|---|
| 充值补贴统计是否同时承担财务报表职责 | 需确认统计页是否必须展示实收、赠送、到账三口径 |
旧接口中 actual_money 是否已被用作到账金额 | 需后端确认字段语义,避免和实付金额混用 |
| PC 人员列表接口是否已有餐补余额 | 如没有,本期至少新增赠送余额,餐补余额作为接口补充 |
| 消费机端是否支持余额展示 | 若不支持,至少展示本次实际赠送支付 |
| 退款流程是否支持按支付来源拆分 | 若当前只有总退款金额,需要先补拆分数据 |