确保运营商实名成功回调能够提交状态事实
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m12s
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m12s
将 PostgreSQL 无类型整数比较改为布尔条件,避免共享实名观测事务在派生激活状态时回滚。 Constraint: 电信、移动、联通实名成功回调共用同一观测写入入口 Rejected: 分别修补三个回调 Handler | 会重复逻辑且遗漏其他调用方 Confidence: high Scope-risk: narrow Directive: 实名状态变化必须继续通过 ApplyCardObservation 原子写入状态与 Outbox Tested: go build ./internal/application/cardobservation Not-tested: 用户明确要求不运行测试
This commit is contained in:
@@ -85,9 +85,10 @@ func (s *Service) ApplyCardObservation(ctx context.Context, observation domain.R
|
||||
updates["last_sync_time"] = observation.Metadata.ObservedAt
|
||||
}
|
||||
if decision.StatusChanged {
|
||||
verified := decision.AfterStatus == constants.RealNameStatusVerified
|
||||
updates["real_name_status"] = decision.AfterStatus
|
||||
updates["activation_status"] = gorm.Expr(`CASE WHEN network_status = ? AND (card_category = ? OR ? = ?) THEN 1 ELSE 0 END`, constants.NetworkStatusOnline, constants.CardCategoryIndustry, decision.AfterStatus, constants.RealNameStatusVerified)
|
||||
updates["activated_at"] = gorm.Expr(`CASE WHEN activated_at IS NULL AND (network_status = ? AND (card_category = ? OR ? = ?)) THEN ? ELSE activated_at END`, constants.NetworkStatusOnline, constants.CardCategoryIndustry, decision.AfterStatus, constants.RealNameStatusVerified, observation.Metadata.ObservedAt)
|
||||
updates["activation_status"] = gorm.Expr(`CASE WHEN network_status = ? AND (card_category = ? OR ?) THEN 1 ELSE 0 END`, constants.NetworkStatusOnline, constants.CardCategoryIndustry, verified)
|
||||
updates["activated_at"] = gorm.Expr(`CASE WHEN activated_at IS NULL AND (network_status = ? AND (card_category = ? OR ?)) THEN ? ELSE activated_at END`, constants.NetworkStatusOnline, constants.CardCategoryIndustry, verified, observation.Metadata.ObservedAt)
|
||||
}
|
||||
if decision.FirstVerified {
|
||||
updates["first_realname_at"] = observation.Metadata.ObservedAt
|
||||
|
||||
Reference in New Issue
Block a user