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