diff --git a/internal/application/certification/certification_application_service_impl.go b/internal/application/certification/certification_application_service_impl.go index fba0f7c..f805399 100644 --- a/internal/application/certification/certification_application_service_impl.go +++ b/internal/application/certification/certification_application_service_impl.go @@ -825,6 +825,31 @@ func (s *CertificationApplicationServiceImpl) AdminApproveSubmitRecord(ctx conte if err != nil { return fmt.Errorf("加载认证信息失败: %w", err) } + + // 兼容线上脏数据:认证已进入「已提交企业信息」或更后续状态,但提交记录仍是 pending, + // 此时无需再走「待审核->通过」的状态机,只需要把提交记录补齐为 approved,避免管理端无法操作。 + // 说明:后续状态(如已企业认证/合同状态/完成)都意味着企业信息审核已经通过。 + switch cert.Status { + case enums.StatusInfoSubmitted, + enums.StatusEnterpriseVerified, + enums.StatusContractApplied, + enums.StatusContractSigned, + enums.StatusCompleted, + enums.StatusContractRejected, + enums.StatusContractExpired: + record.MarkManualApproved(adminID, remark) + if err := s.enterpriseInfoSubmitRecordService.Save(ctx, record); err != nil { + return fmt.Errorf("保存提交记录失败: %w", err) + } + s.logger.Info("已补齐提交记录人工审核为通过(认证已进入后续状态)", + zap.String("record_id", recordID), + zap.String("admin_id", adminID), + zap.String("user_id", record.UserID), + zap.String("certification_status", string(cert.Status)), + ) + return nil + } + // 兼容线上脏数据:提交记录已落库但当时事务失败导致认证仍为「待认证」,先同步为待审核再执行通过 if cert.Status != enums.StatusInfoPendingReview { if err := s.syncCertToPendingReviewIfRecordPending(ctx, cert, record); err != nil {