All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m8s
- client_order: 新增 getOrCreateWallet 兜底,钱包不存在时自动创建 - device_import: 设备导入事务内同步创建设备钱包 - iot_card_import: IoT卡批量导入后批量创建卡钱包 - queue/handler: 传递 AssetWalletStore 给两个导入 handler - migration 000098: 为存量IoT卡和设备补建资产钱包
4.1 KiB
4.1 KiB
任务清单:fix-business-completion
5 项业务逻辑补全。F-1、F-4、J-3 各自独立;J-1 和 J-2 涉及同一文件,建议 J-2 先做。
任务组 1:F-1 佣金链断裂改为零额待审记录
- 1.1 在
pkg/constants/中新增常量CommissionStatusPendingReview = 99,注释"待人工修正(链路断裂,需平台处理)" - 1.2 在
internal/service/commission_calculation/service.go中,找到佣金链断裂处(getCostPrice返回无配置后break的位置),在break前创建零额待审记录:CommissionRecord{OrderID, ShopID, SeriesID, Amount: 0, Status: CommissionStatusPendingReview, Remark: "套餐系列[%d]未分配给该代理,请人工核查"} - 1.3 记录失败不阻断主流程(
_ = store.Create()),同时记录 Warn 日志 - 1.4 确认佣金记录列表查询(
commission_record相关 Store/Service)已支持按 status 筛选(如已有 status 过滤则无需改动) - 1.5 验证:
go build ./...编译通过
任务组 2:F-4 C端订单 Handler 迁移 Service 层
- 2.1 在
internal/service/client_order/service.go中新增ListOrders(ctx context.Context, req *dto.ClientOrderListRequest) (*dto.ClientOrderListResponse, error)方法,将 Handler 中的 DB 查询逻辑迁移过来,使用正常数据权限(不用 SkipPermissionCtx) - 2.2 在
internal/service/client_order/service.go中新增GetOrderDetail(ctx context.Context, orderID uint) (*dto.ClientOrderDetailResponse, error)方法 - 2.3 修改
internal/handler/app/client_order.go,将直接 DB 查询替换为 Service 方法调用,删除h.db字段引用和SkipPermissionCtx用法 - 2.4 如果 Handler struct 中
db字段因此变为未使用,从 struct 和构造函数中移除 - 2.5 验证:
rg "SkipPermissionCtx" internal/handler/app/client_order.go无残留,go build ./...编译通过
任务组 3:J-2 平台钱包代购
- 3.1 在
internal/service/order/service.go:CreateLegacy的钱包支付分支中,新增buyerType == "" && resourceShopID != nil的条件分支 - 3.2 该分支内:
orderBuyerType = model.BuyerTypeAgent,orderBuyerID = *resourceShopID,成本价和钱包都使用*resourceShopID对应的代理 - 3.3 无归属代理时(
resourceShopID == nil)返回errors.New(errors.CodeInvalidParam, "不支持的钱包支付场景") - 3.4 验证:
go build ./...编译通过
任务组 4:J-1 富友支付实现
- 4.1 在
internal/model/dto/中新增(或确认已存在)FuiouPayJSAPIResponseDTO:AppID, TimeStamp, NonceStr, Package, SignType, PaySign - 4.2 修改
internal/service/order/service.go:FuiouPayJSAPI,替换留桩为真实实现:查订单 → 校验状态 → 加载富友配置 → 构造fuiou.Client→ 调用WxPreCreate(JSAPI)→ 返回 JS-SDK 参数 - 4.3 修改
internal/service/order/service.go:FuiouPayMiniApp,与 JSAPI 相同,tradeType改为LETPAY,subAppid改为config.MiniappAppID - 4.4 通过 DBHub 向
tb_wechat_config插入富友支付凭证数据(provider_type='fuiou',凭证见方案文档 J-1 节) - 4.5 验证:
rg "暂未实现" internal/service/order/service.go确认富友相关留桩已全部替换,go build ./...编译通过
任务组 5:J-3 卡/设备 status 3/4 触发
- 5.1 确认
pkg/constants/iot.go中存在IotCardStatusActivated = 3和IotCardStatusDeactivated = 4(或类似常量),不存在则新增 - 5.2 在套餐激活成功后(
activation_service.go或PackageActivationHandler),追加条件更新:UPDATE tb_iot_card SET status = 3 WHERE id = ? AND status < 3 - 5.3 如果是设备套餐,同时更新
tb_device:UPDATE tb_device SET status = 3 WHERE id = ? AND status < 3 - 5.4 在套餐到期处理逻辑中(
OrderExpireHandler或类似),套餐过期后检查该卡/设备是否还有其他 active 套餐,无则更新status = 4 - 5.5 验证:
go build ./...编译通过
收尾验证
- 6.1 执行
go build ./...,确认全量编译通过