This commit is contained in:
2026-07-27 12:37:29 +08:00
parent dc9a98e893
commit 9429e4f6e0
20 changed files with 1066 additions and 61 deletions

View File

@@ -467,7 +467,9 @@ func (s *UserAggregateServiceImpl) CheckUnifiedSocialCodeExists(ctx context.Cont
return exists, nil
}
// CreateOrUpdateEnterpriseInfo 认证域专用:写入/覆盖企业信息
// CreateOrUpdateEnterpriseInfo 认证域专用:按两条链路写入企业信息
// - 新用户:尚无企业信息 → 创建
// - 重新认证:已有企业信息 → 覆盖更新
func (s *UserAggregateServiceImpl) CreateOrUpdateEnterpriseInfo(
ctx context.Context,
userID, companyName, unifiedSocialCode, legalPersonName, legalPersonID, legalPersonPhone, enterpriseAddress string,
@@ -476,19 +478,44 @@ func (s *UserAggregateServiceImpl) CreateOrUpdateEnterpriseInfo(
if err != nil {
return fmt.Errorf("用户不存在: %w", err)
}
if user.EnterpriseInfo == nil {
enterpriseInfo, err := entities.NewEnterpriseInfo(userID, companyName, unifiedSocialCode, legalPersonName, legalPersonID, legalPersonPhone, enterpriseAddress)
if err != nil {
return err
}
user.EnterpriseInfo = enterpriseInfo
} else {
err := user.EnterpriseInfo.UpdateEnterpriseInfo(companyName, unifiedSocialCode, legalPersonName, legalPersonID, legalPersonPhone, enterpriseAddress)
if err != nil {
return err
}
// 统一校验 USCC排除本人新用户创建与重新认证更新均适用
exists, err := s.CheckUnifiedSocialCodeExists(ctx, unifiedSocialCode, userID)
if err != nil {
return fmt.Errorf("检查统一社会信用代码失败: %w", err)
}
return s.SaveUser(ctx, user)
if exists {
return fmt.Errorf("统一社会信用代码已被其他用户使用")
}
if user.HasEnterpriseInfo() {
s.logger.Info("重新认证链路:更新已有企业信息",
zap.String("user_id", userID),
zap.String("unified_social_code", unifiedSocialCode),
zap.String("enterprise_info_id", user.EnterpriseInfo.ID),
)
if err := user.UpdateEnterpriseInfo(companyName, unifiedSocialCode, legalPersonName, legalPersonID, legalPersonPhone, enterpriseAddress); err != nil {
return fmt.Errorf("更新企业信息失败: %w", err)
}
if err := s.SaveUser(ctx, user); err != nil {
return fmt.Errorf("保存企业信息失败: %w", err)
}
s.logger.Info("重新认证链路:企业信息更新成功", zap.String("user_id", userID))
return nil
}
s.logger.Info("新用户认证链路:创建企业信息",
zap.String("user_id", userID),
zap.String("unified_social_code", unifiedSocialCode),
)
if err := user.CreateEnterpriseInfo(companyName, unifiedSocialCode, legalPersonName, legalPersonID, legalPersonPhone, enterpriseAddress); err != nil {
return fmt.Errorf("创建企业信息失败: %w", err)
}
if err := s.SaveUser(ctx, user); err != nil {
return fmt.Errorf("保存企业信息失败: %w", err)
}
s.logger.Info("新用户认证链路:企业信息创建成功", zap.String("user_id", userID))
return nil
}
// CompleteCertification 完成认证