f
This commit is contained in:
@@ -45,6 +45,9 @@ type CertificationApplicationService interface {
|
||||
// AdminCompleteCertificationWithoutContract 管理员代用户完成认证(暂不关联合同)
|
||||
AdminCompleteCertificationWithoutContract(ctx context.Context, cmd *commands.AdminCompleteCertificationCommand) (*responses.CertificationResponse, error)
|
||||
|
||||
// AdminResetForResignContract 管理员触发重新认证(回退到提交企业信息,保留钱包/API Key/历史合同,不改 is_certified)
|
||||
AdminResetForResignContract(ctx context.Context, cmd *commands.AdminResetForResignContractCommand) (*responses.CertificationResponse, error)
|
||||
|
||||
// AdminListSubmitRecords 管理端分页查询企业信息提交记录
|
||||
AdminListSubmitRecords(ctx context.Context, query *queries.AdminListSubmitRecordsQuery) (*responses.AdminSubmitRecordsListResponse, error)
|
||||
// AdminGetSubmitRecordByID 管理端获取单条提交记录详情
|
||||
|
||||
@@ -1003,6 +1003,48 @@ func (s *CertificationApplicationServiceImpl) AdminCompleteCertificationWithoutC
|
||||
return response, nil
|
||||
}
|
||||
|
||||
// AdminResetForResignContract 管理员触发重新认证(回退到提交企业信息)
|
||||
// 回退到 pending,用户可重新填写企业信息并走完整流程;不改 is_certified,不动钱包/API Key/历史合同
|
||||
func (s *CertificationApplicationServiceImpl) AdminResetForResignContract(
|
||||
ctx context.Context,
|
||||
cmd *commands.AdminResetForResignContractCommand,
|
||||
) (*responses.CertificationResponse, error) {
|
||||
s.logger.Info("管理员触发重新认证",
|
||||
zap.String("admin_id", cmd.AdminID),
|
||||
zap.String("user_id", cmd.UserID),
|
||||
zap.String("reason", cmd.Reason),
|
||||
)
|
||||
|
||||
if strings.TrimSpace(cmd.UserID) == "" {
|
||||
return nil, fmt.Errorf("用户ID不能为空")
|
||||
}
|
||||
if strings.TrimSpace(cmd.Reason) == "" {
|
||||
return nil, fmt.Errorf("请填写操作原因")
|
||||
}
|
||||
|
||||
cert, err := s.aggregateService.LoadCertificationByUserID(ctx, cmd.UserID)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("加载认证信息失败: %s", err.Error())
|
||||
}
|
||||
|
||||
if err := cert.ResetForResignContract(cmd.AdminID, fmt.Sprintf("管理员触发重新认证:%s", cmd.Reason)); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := s.aggregateService.SaveCertification(ctx, cert); err != nil {
|
||||
return nil, fmt.Errorf("保存认证信息失败: %s", err.Error())
|
||||
}
|
||||
|
||||
response := s.convertToResponse(cert)
|
||||
s.logger.Info("管理员触发重新认证成功",
|
||||
zap.String("admin_id", cmd.AdminID),
|
||||
zap.String("user_id", cmd.UserID),
|
||||
zap.String("certification_id", cert.ID),
|
||||
zap.String("status", string(cert.Status)),
|
||||
)
|
||||
return response, nil
|
||||
}
|
||||
|
||||
// AdminListSubmitRecords 管理端分页查询企业信息提交记录
|
||||
func (s *CertificationApplicationServiceImpl) AdminListSubmitRecords(
|
||||
ctx context.Context,
|
||||
|
||||
@@ -85,6 +85,13 @@ type AdminCompleteCertificationCommand struct {
|
||||
// 备注信息,用于记录后台操作原因
|
||||
Reason string `json:"reason" validate:"required"`
|
||||
}
|
||||
|
||||
// AdminResetForResignContractCommand 管理员触发用户重新认证(回退到提交企业信息,保留钱包/API Key/历史记录)
|
||||
type AdminResetForResignContractCommand struct {
|
||||
AdminID string `json:"-"`
|
||||
UserID string `json:"user_id" validate:"required"`
|
||||
Reason string `json:"reason" validate:"required,min=2,max=500"`
|
||||
}
|
||||
// ForceTransitionStatusCommand 强制状态转换命令(管理员)
|
||||
type ForceTransitionStatusCommand struct {
|
||||
CertificationID string `json:"certification_id" validate:"required"`
|
||||
|
||||
Reference in New Issue
Block a user