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