# 服务券申请核销需求业务确认清单 > 文档状态:**待评审** > 本轮评审范围:**页面结构** > 确认日期:2026-08-31 > 业务确认人:待补录 ## 1. 本次评审目的 本期只讨论用户已经兑换出服务订单之后,如何补充“申请核销”入口、申请记录和审核状态展示。 服务券仍是兑换券,现有业务关系不变: ```text 服务券 ──按现有规则兑换──> 服务订单 ──现场二维码/后台申请──> 完成核销 ``` 本期不调整服务券展示、服务选择、兑换条件、兑换数量、服务券扣减、兑换结果或撤销兑换逻辑。交互原型从“我的订单”开始,不包含兑换页面。 ## 2. 首期评审口径 1. **申请核销是服务订单的另一种核销方式,不是再次使用服务券。**服务券已经在兑换时扣除,提交申请不会再次扣券或锁券。 2. **一笔服务订单对应一份核销申请。**申请时不选择数量;一次兑换多份服务所产生的多笔订单,分别提交申请。 3. **同一笔订单同一时间只能有一份待审核申请。**重复提交不生成新申请,继续返回原待审核申请。 4. **提交前必须二次确认。**用户确认后,订单进入审核中;审核完成前不能展示可用二维码,也不能撤销兑换。 5. **用户提交后不能自行撤销、修改申请。**申请只能由后台通过或驳回。 6. **审核通过即完成该服务订单核销。**订单从“未核销”进入“已核销”。 7. **审核驳回后订单恢复原核销能力。**用户可以重新展示二维码,也可以再次提交申请。 8. **申请记录与服务订单分开表达。**“未核销/已核销”继续表示订单状态;“申请记录”只展示申请过程和审核结果。 9. **原生 Android、iOS 是本期主要客户端。**H5 沿用相同页面结构,不单独设计另一套流程。 10. **后台继续使用现有“线下服务 → 核销管理”。**保留“核销申请/核销记录”两个 Tab 和逐笔审核,不新增菜单、批量审核或统计页面。 ## 3. 当前系统现状与本期变化 | 范围 | 当前系统现状 | 本期评审目标 | | --- | --- | --- | | Android/iOS | 已有“我的订单”的未核销、已核销列表及服务订单二维码页 | 增加申请入口、二次确认、申请结果和申请记录 | | H5 | 已有与原生端一致的订单列表及二维码页 | 沿用原生端新增页面结构 | | 服务端 | 已有提交申请、申请列表、撤销申请、后台审核及二维码冲突控制 | 现有主要字段可支撑客户端;后续真实开发需同步禁止新撤销 | | 业务后台 | 已有核销申请、核销记录两个 Tab,支持逐笔通过和驳回 | 页面结构保持不变,仅用于确认客户端状态闭环 | | 兑换流程 | 已上线并按现有规则运行 | **不调整、不重做原型** | ### 3.1 已发现的实现差异 当前服务端仍提供“用户撤销待审核申请”的能力,并保留“已撤销”状态;本次评审口径改为用户提交后不能自行撤销。 后续真实开发时需要同时处理: - 新版 Android、iOS 和 H5 不展示、不调用撤销入口; - 服务端拒绝新的用户撤销请求,避免通过旧调用方式绕过客户端限制; - 历史“已撤销”申请继续只读保留,后台仍可查询,不要求迁移或删除历史数据。 本轮只在确认稿和原型中表达目标,不修改现有接口或业务代码。 ## 4. 需要业务签字的确认清单 ### A. 范围与业务对象 | 编号 | 确认问题 | 本轮建议口径 | | --- | --- | --- | | A-01 | 本期是否调整服务券兑换流程? | **不调整。本期从已生成的服务订单开始,只补申请核销。** | | A-02 | 申请针对服务券还是服务订单? | **针对服务订单;服务券已在兑换时扣除,申请不再次扣券。** | | A-03 | 一次申请可以包含多少订单? | **一份申请只对应一笔服务订单,不提供数量选择或多单合并。** | ### B. 用户端入口与页面结构 | 编号 | 确认问题 | 本轮建议口径 | | --- | --- | --- | | B-01 | 申请入口放在哪里? | **保留现有“去核销”进入二维码页,在二维码下方用“不方便现场出示二维码?”的低强调引导进入申请。** | | B-02 | 是否增加核销方式选择页? | **不增加。现场核销继续直接展示二维码,申请入口只作为另一种可选方式。** | | B-03 | 申请前是否需要填写内容? | **不需要。订单已经确定服务内容,点击“去申请”后直接进入二次确认。** | | B-04 | 申请记录放在哪里? | **“我的订单”右上角增加“申请记录”;原有“未核销/已核销”两个 Tab 不变,不增加第三个 Tab。** | | B-05 | 申请结果页提供哪些操作? | **提供“返回我的订单”和“查看申请记录”;不提供撤销或修改。** | ### C. 提交与审核规则 | 编号 | 确认问题 | 本轮建议口径 | | --- | --- | --- | | C-01 | 提交申请是否需要二次确认? | **需要。明确提示审核期间不能现场扫码、不能撤销兑换,申请提交后不能自行撤销或修改。** | | C-02 | 用户连续点击是否产生多份申请? | **不会。同一订单存在待审核申请时返回原申请,不重复创建。** | | C-03 | 审核期间订单如何展示? | **订单继续留在“未核销”,显示“审核中”;二维码不展示,申请入口不可再次操作。** | | C-04 | 后台通过后如何处理? | **通过即完成服务订单核销,订单进入“已核销”,申请记录保留“已通过”。** | | C-05 | 后台驳回后如何处理? | **订单恢复“去核销”,可现场扫码或再次申请;申请记录保留“已驳回”和驳回原因。** | | C-06 | 用户能否撤销申请? | **不能。客户端不提供入口,后续真实开发时服务端同步禁止新撤销。** | ### D. 申请记录 | 编号 | 确认问题 | 本轮建议口径 | | --- | --- | --- | | D-01 | 申请记录展示哪些状态? | **展示待审核、已通过、已驳回;历史已撤销数据可以只读展示,但新版不再产生。** | | D-02 | 申请记录展示哪些信息? | **申请编号、服务订单编号、服务名称、消耗的服务券、申请时间、当前状态、审核时间;已驳回时展示原因。** | | D-03 | 二维码核销是否写入申请记录? | **不写入。二维码核销只改变订单为已核销,并进入后台现有核销记录。** | | D-04 | 是否单独增加用户端核销记录页? | **不增加。用户仍通过“已核销”订单查看核销结果。** | ### E. 核销人员端与后台 | 编号 | 确认问题 | 本轮建议口径 | | --- | --- | --- | | E-01 | 待审核订单能否被现场扫码核销? | **不能。待审核订单不生成可用二维码,也不计入同用户、同服务的现场可核销订单数量。** | | E-02 | 核销人员端是否需要新菜单? | **不需要,继续使用现有服务券核销入口。** | | E-03 | 后台是否新增服务券申请菜单? | **不新增,继续使用“线下服务 → 核销管理”。** | | E-04 | 后台审核方式是否调整? | **不调整,继续逐笔通过或驳回;驳回原因必填。** | | E-05 | 后台是否新增批量审核或统计? | **不新增。** | ### F. 客户端与接口边界 | 编号 | 确认问题 | 本轮建议口径 | | --- | --- | --- | | F-01 | 哪些客户端需要补充申请入口? | **Android、iOS 为主,H5 使用相同结构。** | | F-02 | 现有接口是否足够支持页面? | **提交申请、申请列表、订单列表和订单详情的主要字段已经具备;本期不预设新增接口。** | | F-03 | 现有撤销接口如何处理? | **后续真实开发时同步禁用新撤销;历史状态继续保留。** | | F-04 | 是否单独设计消息通知页面? | **不设计,本轮以订单状态和申请记录作为页面评审依据。** | ## 5. 用户端目标流程 ### 5.1 现场二维码核销 ```text 我的订单(未核销) → 点击“去核销” → 展示动态二维码 → 核销人员扫码并确认 → 订单进入“已核销” ``` ### 5.2 申请核销 ```text 我的订单(未核销) → 点击“去核销” → 二维码页选择“去申请” → 二次确认 → 申请结果(待审核) → 后台逐笔处理 ├─ 通过:订单进入已核销,申请记录显示已通过 └─ 驳回:订单恢复可核销,申请记录显示已驳回及原因 ``` ## 6. 页面结构与展示规则 ### 6.1 我的订单 - 保留“未核销/已核销”两个 Tab;默认进入方式沿用客户端现状。 - 页面右上角增加“申请记录”。 - 普通未核销订单显示“去核销”。 - 待审核订单显示“审核中”,不提供重复申请或二维码入口。 - 已通过或二维码核销成功的订单进入“已核销”,显示核销时间。 ### 6.2 卡券二维码 - 延续现有黑色背景、金色描边、居中二维码的简约样式。 - 保留服务名称、商家、二维码刷新倒计时和扫码提示。 - 二维码下方增加低强调引导: - 标题:`不方便现场出示二维码?` - 说明:`可提交核销申请,审核通过后完成核销` - 入口:`去申请 ›` - 申请审核中时不展示二维码,只展示简洁的审核中状态;不提供撤销入口。 ### 6.3 二次确认 确认文案固定为: > 提交后订单将进入审核,审核完成前不能现场扫码核销或撤销兑换,且申请不能自行撤销或修改。 操作为“再想想”和“确认提交”。只有再次确认后才生成申请。 ### 6.4 申请结果 - 展示申请编号、服务订单编号和“待审核”。 - 提供“返回我的订单”和“查看申请记录”。 - 不展示撤销、编辑或再次提交入口。 ### 6.5 申请记录 - 按申请时间倒序展示。 - 待审核显示申请时间,不展示操作按钮。 - 已通过显示申请时间和审核时间。 - 已驳回同时展示审核时间和驳回原因。 - 历史已撤销记录如存在则只读展示;新版页面不提供产生该状态的入口。 ## 7. 接口与数据核对 ### 7.1 现有接口能够提供的页面信息 | 页面 | 已有信息 | | --- | --- | | 未核销订单 | 订单状态、是否审核中、是否允许申请、是否允许扫码、最新申请摘要、二次确认文案 | | 二维码页 | 服务、商家、订单编号、服务券及数量、二维码、有效时间、是否审核中、不可用原因 | | 提交结果 | 是否首次创建、申请编号、订单编号、服务、服务券、申请状态和申请时间 | | 申请记录 | 申请编号、订单编号、服务、服务券、状态、申请时间、审核时间和驳回原因 | | 后台审核 | 申请、用户、服务订单、服务内容、审核人、审核时间、驳回原因和操作权限 | ### 7.2 后续真实开发需要处理的缺口 - 禁止用户撤销申请的服务端规则尚未落地;当前接口仍可撤销待审核申请。 - Android、iOS 和 H5 尚未调用申请提交、申请列表接口,也未消费订单返回的申请状态字段。 - 其余页面所需主要字段已经存在,本轮不先行扩展接口。 ## 8. 原型页面映射 | 角色 | 原型页面 | 本轮评审重点 | | --- | --- | --- | | 用户 | 我的订单、卡券二维码、申请二次确认、申请结果、申请记录 | 入口位置、审核中状态、通过/驳回后的订单变化 | | 核销人员 | 扫码入口、确认核销、结果提示 | 待审核订单不能扫码且不计入可核销数量 | | 后台用户 | 核销申请、核销记录 | 沿用现有双 Tab 和逐笔审核,验证客户端状态闭环 | > 原型主要评审 App 页面结构;后台及核销人员端只用于演示状态闭环,操作只更新模拟数据。 ## 9. 验收清单 1. 原型从“我的订单”开始,不出现服务选择、服务兑换或兑换成功页面。 2. “我的订单”仍只有“未核销/已核销”两个 Tab,右上角可进入申请记录。 3. 普通未核销订单点击“去核销”进入动态二维码页,二维码约 60 秒自动刷新。 4. 二维码页现场展示即可核销,不要求用户继续点击;申请入口使用低强调场景引导。 5. 提交申请必须经过二次确认,一份申请只对应一笔订单且不选择数量。 6. 重复提交同一待审核订单不产生新申请。 7. 申请提交后不能撤销或修改,订单仍在未核销列表但显示“审核中”,二维码不可用。 8. 后台通过后,申请显示“已通过”,订单进入“已核销”。 9. 后台驳回必须填写原因;驳回后申请保留原因,订单恢复二维码和再次申请能力。 10. 二维码核销不生成申请记录,待审核订单不能被核销人员扫码核销。 11. 后台仍只有“核销申请/核销记录”两个 Tab,继续逐笔审核,不出现批量审核或新统计页面。 12. Android、iOS 为主要评审画面,H5按相同结构适配。 13. 桌面展示及 320px、375px 宽度无横向溢出、遮挡、空按钮或无法点击的操作。 ## 10. 不在本期范围 - 服务券分类、展示、获取、转赠和有效期; - 服务选择、兑换条件、兑换数量、扣券、兑换结果和撤销兑换; - 多订单合并申请、申请数量选择和批量审核; - 预约、场次、选座、实名、离线核销和误核销恢复; - 独立消息通知页面、独立用户核销记录页或新增统计页面; - 真实接口、数据库、权限、后台或客户端代码修改。 ## 11. 现状核对依据 以下路径均以 `poker` 项目集合根目录为基准: | 范围 | 依据路径 | 已核对内容 | | --- | --- | --- | | 服务端路由 | `poker-web/modules/offline/src/http/routes/api_v1.php` | 提交申请、申请列表和撤销申请入口 | | 申请逻辑 | `poker-web/modules/offline/src/action/service/ActServiceOrderVerificationApplication.php` | 幂等提交、撤销、通过、驳回、申请状态 | | 订单与二维码 | `poker-web/modules/offline/src/action/service/ActServiceOrder.php` | 订单列表申请摘要、二维码可用性、审核中冲突和现场批量核销 | | 核销资格 | `poker-web/modules/offline/src/action/service/ServiceOrderVerificationEligibility.php` | 可申请、可扫码的共同校验条件 | | 申请数据 | `poker-web/sql/2026_08_26_create_offline_service_order_verification_application.sql` | 申请编号、订单关联、审核及驳回字段 | | 后台页面 | `poker-web/modules/offline/resources/views/backend/service/order/` | 核销申请/核销记录双 Tab 和逐笔审核 | | Android | `android-ipg/app/src/main/java/com/silkroad/sport/ui/home/activity/OfflineOrderListActivity.java`、`android-ipg/app/src/main/java/com/silkroad/sport/ui/home/activity/OfflineOrderDetailActivity.java` | 未核销/已核销和二维码页,未接申请接口 | | iOS | `ios-ipg/IPG/Offline/SelectService/Controller/IPGServiceRecordVC.swift`、`ios-ipg/IPG/Offline/SelectService/Controller/IPGServicExchangeVC.swift` | 未核销/已核销和二维码页,未接申请接口 | | H5 | `league-h5/src/views/app/offline/OfflineServiceOrder.vue`、`league-h5/src/views/app/offline/OfflineServiceOrderDetail.vue` | 订单列表和二维码页,未接申请接口 | ## 12. 业务签字 | 项目 | 填写内容 | | --- | --- | | 评审结论 | 待填写 | | 业务确认人 | 待填写 | | 确认日期 | 待填写 | | 补充说明 | 待填写 |