refactor(utils): 修复密码哈希比较逻辑错误 feat(user): 新增按状态筛选优惠券接口 docs: 添加虚拟发货与任务中心相关文档 fix(wechat): 修正Code2Session上下文传递问题 test: 补充订单折扣与积分转换测试用例 build: 更新配置文件与构建脚本 style: 清理多余的空行与注释
49 lines
3.4 KiB
Markdown
49 lines
3.4 KiB
Markdown
## 问题归因
|
||
- 活动/期号为空:后端仅在存在抽奖日志时填充活动信息,未抽取或刚支付时为0。参考 internal/api/admin/pay_orders_admin.go:167-191。
|
||
- 中奖字段与等级:前端直接展示“是否中奖”,但应改为“中奖等级”并基于 `activity.level`/`reward_id` 显示;未抽取时应显示“待开奖”。
|
||
- 支付信息不全:只显示 `ActualAmount`,未分解“积分抵扣金额/积分数量”;`PayPreorderID` 为0时未做断言处理。
|
||
- 商品价格与金额为0:抽奖订单常无商品明细或价格未赋值;可根据奖励商品填充价格,或以“抽奖价格×次数”为明细。
|
||
|
||
## 后端改造(GetPayOrderDetail)
|
||
- 文件:internal/api/admin/pay_orders_admin.go
|
||
- 变更点:
|
||
1) 无抽奖日志时,解析 `order.Remark` 中 `lottery:activity:<aid>|issue:<iss>|count:<N>` 填充 `activity.activity_id/issue_id`,查询 `issue.issue_number` 与 `activity.activity_name`。
|
||
2) 扩展支付信息:`payment.points_amount`(订单积分抵扣金额,单位分)、`payment.points_used`(抵扣积分数量=points_amount/10)、`payment.total_amount`(订单总额,单位分)。
|
||
3) 返回 `activity.count`(抽次数);若有奖励商品,补充 `activity.product_price`(商品价格,单位分)。
|
||
4) 若订单无 `order_items`,在响应中提供 `computed_items`:基于“抽奖价格×次数”构造一条展示用明细(前端优先显示 `computed_items`)。
|
||
5) `payment.pay_preorder_id` 为0时仍返回,前端据此显示“-”。
|
||
|
||
## 前端改造(订单详情抽屉)
|
||
- 文件:web/admin/src/views/…(订单详情抽屉组件,使用 fetchGetOrderDetail)
|
||
- 变更点:
|
||
1) 活动:显示 `activity.activity_name`;下方附 `issue_number`;不显示 `(ID:0)`。
|
||
2) 状态区:移除“是否中奖”;改为“中奖等级”显示 `activity.level`,若 `reward_id` 为空则显示“待开奖”。
|
||
3) 支付区:
|
||
- “实付”显示:`payment.actual_amount/100` 元
|
||
- 新增“积分抵扣”:`payment.points_used` 积分(约 `points_amount/100` 元)
|
||
- 新增“订单总额”:`payment.total_amount/100` 元
|
||
- “预订单ID”:显示 `payment.pay_preorder_id`,为0则显示“-”
|
||
4) 明细表:
|
||
- 优先显示 `computed_items` 的“单价/金额”,否则显示 `items`;
|
||
- 若有中奖商品,显示 `activity.reward_name` 与 `activity.product_price`。
|
||
|
||
## 路由与API契约
|
||
- 前端调用不变:`GET admin/pay/orders/:order_no`
|
||
- 响应新增字段:
|
||
- `activity.count`、`activity.product_price`
|
||
- `payment.points_amount`、`payment.points_used`、`payment.total_amount`
|
||
- `computed_items: [{name, quantity, unit_price, amount}]`
|
||
|
||
## 实施步骤
|
||
1) 后端:更新 GetPayOrderDetail 填充解析与新增字段;构造 `computed_items`。
|
||
2) 前端:更新详情组件的数据映射与展示逻辑;删改“是否中奖”,补充字段渲染与空值处理。
|
||
3) 验证:
|
||
- 无抽奖日志的订单仍能显示活动名称与期号
|
||
- 积分全额支付场景显示积分抵扣与总额,实付为0,预订单ID为“-”
|
||
- 即时模式支付后,轮询显示中奖等级与商品信息
|
||
- 明细表显示正确单价/金额
|
||
|
||
## 验收标准
|
||
- 所有问题项均有正确数据或合理占位显示
|
||
- 即时/定时、积分/金额支付四种组合下展示正确
|
||
- 架构不破坏现有接口:前端仅增量使用新增字段 |