All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 4m39s
2.7 KiB
2.7 KiB
1. 修复购买时实名状态检查(order/service.go)
- 1.1 在
activateMainPackage的 REALNAME-02 决策块中,扩展卡信息查询:将tx.Select("card_category")改为tx.Select("card_category", "real_name_status"),并从结果读取currentlyRealnamed标志 - 1.2 在 REALNAME-02 决策块中,新增
device载体的实名状态检查:当carrierType == "device"时,通过tb_device_sim_binding(bind_status=1, deleted_at IS NULL)子查询统计绑定卡中real_name_status=1的数量,count > 0则currentlyRealnamed=true - 1.3 修改
expiry_base != "from_purchase"分支的决策逻辑:若currentlyRealnamed=true则保持status=Active(不切换为 pending),记录 Info 日志"购买时载体已实名,直接激活套餐";若currentlyRealnamed=false则保持原有pending_realname_activation=true逻辑 - 1.4 运行
lsp_diagnostics确认internal/service/order/service.go无编译错误
2. 扩展 PollingRealnameHandler(polling_realname_handler.go)
- 2.1 在
PollingRealnameHandler结构体中新增字段deviceSimBindingStore *postgres.DeviceSimBindingStore - 2.2 更新
NewPollingRealnameHandler构造函数签名,在参数列表末尾新增deviceSimBindingStore *postgres.DeviceSimBindingStore,并在函数体中赋值到结构体字段 - 2.3 新增
triggerDeviceRealnameActivation(ctx context.Context, cardID uint)函数:调用h.deviceSimBindingStore.GetActiveBindingByCardID获取设备绑定;若无绑定(ErrRecordNotFound)静默返回;若有绑定则提交carrier_type="device", carrier_id=binding.DeviceID的TaskTypePackageFirstActivationAsynq 任务(与卡级任务相同的 MaxRetry/Timeout/Queue 配置);失败记录 Warn 日志,不中断流程 - 2.4 在
isFirstRealname分支中,在调用triggerFirstRealnameActivation之后追加调用triggerDeviceRealnameActivation(ctx, cardID) - 2.5 运行
lsp_diagnostics确认internal/task/polling_realname_handler.go无编译错误
3. 更新 Worker 构造调用(pkg/queue/handler.go)
- 3.1 在
registerPollingHandlers中,将task.NewPollingRealnameHandler(...)调用末尾追加参数h.workerResult.Stores.DeviceSimBinding - 3.2 运行
lsp_diagnostics确认pkg/queue/handler.go无编译错误
4. 整体编译验证
- 4.1 执行
go build ./...确认整个项目编译通过,零错误零警告 - 4.2 使用 PostgreSQL MCP 执行存量修复 SQL:将
tb_package_usage.id=1的套餐手动激活(status=1, pending_realname_activation=false, activated_at=NOW(), expires_at按套餐配置计算),并验证更新结果