## Why 当前系统缺少完整的强充(强制充值)机制和代购订单支持,导致以下问题:(1) 个人客户无法直接给钱包充值,必须通过购买套餐间接充值;(2) 平台和代理无法为其他代理代购套餐(线下已收款场景);(3) 一次性佣金触发机制不完善,代购订单错误触发佣金且累加充值金额;(4) 缺少强充预检接口,前端无法提前告知用户充值限制。这些限制影响了业务灵活性和用户体验,需要立即完善。 ## What Changes - **新增钱包充值系统**:实现个人客户直接充值钱包功能,包含充值订单(RechargeRecord)的创建、支付、回调处理,充值成功触发佣金计算 - **新增强充预检接口**:提供钱包充值预检和套餐购买预检接口,返回强充要求、金额限制、实际支付金额等信息 - **新增代购订单功能**:支持平台/代理给其他代理代购套餐,使用线下支付方式,订单标记为代购类型 - **扩展强充配置**:ShopSeriesAllocation 模型新增 `enable_force_recharge` 和 `force_recharge_amount` 字段,支持累计充值强充配置(可选) - **修复佣金计算逻辑**:代购订单不触发一次性佣金,不累加 `AccumulatedRecharge`,确保佣金计算准确性 - **扩展订单模型**:Order 模型新增 `is_purchase_on_behalf` 字段和 `offline` 支付方式,区分代购订单和普通订单 - **完善充值验证**:创建充值订单和购买订单时强制验证强充要求,防止前端绕过限制 ## Capabilities ### New Capabilities - `wallet-recharge`: 钱包充值系统,包含充值订单创建、支付集成(微信/支付宝)、回调处理、充值成功后触发佣金计算 - `force-recharge-check`: 强充预检接口,包含钱包充值预检、套餐购买预检,返回强充要求和金额限制 - `purchase-on-behalf`: 代购订单功能,支持平台/代理为其他代理代购套餐,使用线下支付,区分代购和普通订单 ### Modified Capabilities - `commission-calculation`: 修改佣金计算逻辑,代购订单不触发一次性佣金,不累加 AccumulatedRecharge - `order-management`: 订单模型增加 `is_purchase_on_behalf` 字段,支持代购订单类型 - `order-payment`: 支付方式增加 `offline` 线下支付,代购订单创建后直接标记为已支付 - `shop-series-allocation`: 增加强充配置字段(`enable_force_recharge`、`force_recharge_amount`),支持累计充值强充设置 ## Impact ### 数据库变更 - **tb_order 表**:新增 `is_purchase_on_behalf` 字段(BOOLEAN),`payment_method` 增加 `offline` 枚举值 - **tb_shop_series_allocation 表**:新增 `enable_force_recharge` 字段(BOOLEAN)、`force_recharge_amount` 字段(BIGINT) - **tb_recharge_record 表**:已存在但未使用,需要创建对应的 Store/Service/Handler - **数据库迁移**:需要创建迁移文件添加新字段 ### 新增代码模块 - **Store 层**:`RechargeStore`(充值订单数据访问) - **Service 层**:`RechargeService`(充值业务逻辑)、强充预检逻辑(在现有 Service 中) - **Handler 层**:`RechargeHandler`(充值 HTTP 接口)、充值预检接口(在现有 Handler 中) - **Task 层**:充值支付回调处理(在现有 callback handler 中扩展) ### 修改现有代码 - **CommissionCalculationService**:增加代购订单判断逻辑 - **OrderService**:增加代购订单创建逻辑、强充验证逻辑 - **OrderHandler**(admin):增加平台创建代购订单接口 - **ShopSeriesAllocationService**:支持强充配置的创建和更新 ### API 变更 - **新增接口**: - `GET /api/h5/wallets/recharge-check` - 钱包充值预检 - `POST /api/h5/recharge-records` - 创建充值订单 - `GET /api/h5/recharge-records` - 查询充值订单列表 - `GET /api/h5/recharge-records/:id` - 查询充值订单详情 - `POST /api/h5/orders/purchase-check` - 套餐购买预检 - `POST /api/admin/orders` - 修改以支持代购订单创建 - **修改接口**: - `POST /api/admin/shop-series-allocations` - 支持强充配置参数 - `PUT /api/admin/shop-series-allocations/:id` - 支持强充配置更新 ### 支付回调处理 - **微信支付回调**:扩展支持充值订单的回调处理 - **支付宝回调**:扩展支持充值订单的回调处理 ### 业务逻辑影响 - **佣金计算**:代购订单不触发一次性佣金,但仍计算差价佣金 - **累计充值**:只有真实充值(个人客户充值或购买套餐)才累加 AccumulatedRecharge - **强充触发**: - 首次充值:必须充值阈值金额(OneTimeCommissionThreshold) - 累计充值:如果启用强充,必须充值固定金额(ForceRechargeAmount) - **订单支付**:代购订单创建后直接标记为已支付,跳过钱包扣款 ### 测试影响 - **单元测试**:需要为所有新增 Service 方法编写测试 - **集成测试**:需要测试完整的充值流程、强充预检、代购订单流程 - **测试覆盖率**:核心业务逻辑测试覆盖率需保持 ≥ 90% ### 性能考虑 - 预检接口响应时间 < 100ms(涉及数据库查询) - 充值订单创建响应时间 < 200ms - 支付回调处理时间 < 500ms(异步处理佣金计算)