触发:阿仁 WIP-303 关账,分销/福钥任务后端端点全部就绪并在 main 注册(main.py include)。
本文件证明 a端 2 页 + b端 2 页已从「诚实骨架」升级为真实 CRUD 接真,字段/包结构/方法逐点对齐后端。
前缀 /api/admin/distribution(需平台 admin;响应包 { code:0, data })
| 前端动作 | 方法 + 路径 | 后端处理函数 | 关键字段对齐 |
|---|---|---|---|
| 分销员列表 | GET /distributors?status&limit | admin_list_distributors | id/nickname/phone/merchantName/status/referralCode/createdAt |
| 审核通过 | POST /distributors/{id}/approve | admin_approve_distributor | pending→active,后端生成 KL+8 分享码 |
| 冻结 | POST /distributors/{id}/freeze | admin_freeze_distributor | active→paused(409 透传) |
| 解冻 | POST /distributors/{id}/unfreeze | admin_unfreeze_distributor | paused→active |
| 分佣单查询 | GET /records?distributorId&status&limit | admin_list_records | orderNo/distributorName/commissionFen/status/settledAt |
| 提现列表 | GET /withdrawals?status&limit | admin_list_withdrawals | nickname/amountFen/status/rejectReason/paidAt |
| 提现通过 | POST /withdrawals/{id}/approve | admin_approve_withdrawal | pending→approved |
| 提现拒绝 | POST /withdrawals/{id}/reject | admin_reject_withdrawal | body {reason}(前端必填) |
| 打款登记 | POST /withdrawals/{id}/paid | admin_mark_withdrawal_paid | 涉钱:前端禁用,待运营口径 |
| 佣金作废 | POST /records/{id}/void?reason | admin_void_commission_record | 资金干预:前端禁用 |
| 佣金结算 | POST /records/{id}/settle?settleRef | admin_settle_commission_record | 资金干预:前端禁用 |
| 客人解绑 | POST /guest-bindings/{id}/release?reason | admin_release_guest_binding | reason ∈ refund/fraud/staff_exit/inactive_90d(前端下拉限定) |
| 读配置 | GET /settings | admin_get_distribution_settings | data 为 {key:{value,description}} |
| 存配置 | PUT /settings | admin_put_distribution_settings | body {settings:{k:v}},白名单 + 整数后端校验 |
key_task_deduct_max_ratio / key_distribution_anchor_min_deposit_fen / key_distribution_per_order_incentive_cap_fen);其余福钥项(兑换价值/有效期/可转让/赠送比例/监控)无端点,保留「待开放」只读,零假值。| 前端动作 | 方法 + 路径 | 响应包 | 对齐点 | |
|---|---|---|---|---|
| 任务列表 | GET /api/miniapp/workbench/key-tasks | {ok:true,data} | 解包 res.data.data | |
| 创建草稿 | POST 同上 | {ok:true,data} | spend_min → conditionParam.minAmountFen=元×100 | |
| 任务详情 | GET /{id} | {ok:true,data} | in_progress/completed 统计 | |
| 编辑 | PUT /{id} | {ok:true,data} | 仅 draft/paused,409 透传 | |
| 上架/下架 | POST /{id}/publish · /pause | {ok:true,data} | 状态机 | |
| 分销员列表 | GET /api/miniapp/workbench/distributors | {code:0,data:{items}} | items[].monthConfirmedCommission(元) | |
| 绑定 | POST 同前缀 | {code:0,...} | body {phone},前端 /^1\d{10}$/ 预校验,404/409 message 透传 | |
| 暂停/恢复 | POST /{id}/status | {code:0,...} | body `{status:active\ | paused}` |
env.data(数组/对象),前端 request<{code:number;data:T}> 后取 env.data。res.data?.data(Taro Network 返回体的 data 再一层)。res.data?.data?.items。后端存 fen(commissionFen/amountFen/minAmountFen),前端 fen2yuan = fen/100 两位小数展示;提交 spend_min 金额时 Math.round(元*100)。
tsc --noEmit = 0;a端 npm run build = 0(见 typecheck-realdata.log / 构建输出)。git apply --check/apply 均 OK,apply 后 tsc=0。