This commit is contained in:
2026-07-26 23:14:52 +08:00
parent 750be2a305
commit 7244df5ae1
40 changed files with 4774 additions and 260 deletions

View File

@@ -85,6 +85,14 @@ 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"`
@@ -102,6 +110,12 @@ type AdminTransitionCertificationStatusCommand struct {
Remark string `json:"remark"`
}
// SelectSignPlatformCommand 用户选择签署平台
type SelectSignPlatformCommand struct {
UserID string `json:"-"`
SignPlatform string `json:"sign_platform" binding:"required"`
}
// SubmitEnterpriseInfoCommand 提交企业信息命令
type SubmitEnterpriseInfoCommand struct {
UserID string `json:"-" comment:"用户唯一标识从JWT token获取不在JSON中暴露"`

View File

@@ -9,11 +9,12 @@ import (
// CertificationResponse 认证响应
type CertificationResponse struct {
ID string `json:"id"`
UserID string `json:"user_id"`
Status enums.CertificationStatus `json:"status"`
StatusName string `json:"status_name"`
Progress int `json:"progress"`
ID string `json:"id"`
UserID string `json:"user_id"`
Status enums.CertificationStatus `json:"status"`
StatusName string `json:"status_name"`
SignPlatform string `json:"sign_platform,omitempty"`
Progress int `json:"progress"`
// 企业信息
EnterpriseInfo *value_objects.EnterpriseInfo `json:"enterprise_info,omitempty"`
@@ -73,12 +74,24 @@ type CertificationListResponse struct {
// ContractSignUrlResponse 合同签署URL响应
type ContractSignUrlResponse struct {
CertificationID string `json:"certification_id"`
ContractSignURL string `json:"contract_sign_url"`
ContractURL string `json:"contract_url,omitempty"`
ExpireAt *time.Time `json:"expire_at,omitempty"`
NextAction string `json:"next_action"`
Message string `json:"message"`
CertificationID string `json:"certification_id"`
// ContractSignURL iframe 可用的签署长链(法大大 EmbedURL约 10 分钟/单次)
ContractSignURL string `json:"contract_sign_url"`
// ContractSignShortURL 短链(不可 iframe一年有效
ContractSignShortURL string `json:"contract_sign_short_url,omitempty"`
ContractURL string `json:"contract_url,omitempty"`
ExpireAt *time.Time `json:"expire_at,omitempty"`
NextAction string `json:"next_action"`
Message string `json:"message"`
}
// ContractPreviewUrlResponse 合同预览链接响应(法大大 get-preview-url
type ContractPreviewUrlResponse struct {
CertificationID string `json:"certification_id"`
PreviewURL string `json:"preview_url"`
PreviewMode string `json:"preview_mode"`
SignFlowID string `json:"sign_flow_id,omitempty"`
Message string `json:"message,omitempty"`
}
// SystemMonitoringResponse 系统监控响应
@@ -119,6 +132,8 @@ type AdminSubmitRecordItem struct {
LegalPersonName string `json:"legal_person_name"`
SubmitAt time.Time `json:"submit_at"`
Status string `json:"status"`
ManualReviewStatus string `json:"manual_review_status,omitempty"`
SignPlatform string `json:"sign_platform,omitempty"`
CertificationStatus string `json:"certification_status,omitempty"` // 以状态机为准info_pending_review/info_submitted/info_rejected 等
}
@@ -145,6 +160,9 @@ type AdminSubmitRecordDetail struct {
VerifiedAt *time.Time `json:"verified_at,omitempty"`
FailedAt *time.Time `json:"failed_at,omitempty"`
FailureReason string `json:"failure_reason,omitempty"`
ManualReviewStatus string `json:"manual_review_status,omitempty"`
ManualReviewRemark string `json:"manual_review_remark,omitempty"`
SignPlatform string `json:"sign_platform,omitempty"`
CertificationStatus string `json:"certification_status,omitempty"` // 以状态机为准
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
@@ -178,22 +196,36 @@ func NewCertificationListResponse(items []*CertificationResponse, total int64, p
}
// NewContractSignUrlResponse 创建合同签署URL响应
func NewContractSignUrlResponse(certificationID, signURL, contractURL, nextAction, message string) *ContractSignUrlResponse {
// signURL 为 iframe 长链shortURL 为短链(可选)
func NewContractSignUrlResponse(certificationID, signURL, shortURL, contractURL, nextAction, message string) *ContractSignUrlResponse {
response := &ContractSignUrlResponse{
CertificationID: certificationID,
ContractSignURL: signURL,
ContractURL: contractURL,
NextAction: nextAction,
Message: message,
CertificationID: certificationID,
ContractSignURL: signURL,
ContractSignShortURL: shortURL,
ContractURL: contractURL,
NextAction: nextAction,
Message: message,
}
// 设置过期时间默认24小时
expireAt := time.Now().Add(24 * time.Hour)
expireAt := time.Now().Add(10 * time.Minute)
response.ExpireAt = &expireAt
return response
}
// SignPlatformItem 可选签署平台
type SignPlatformItem struct {
Platform string `json:"platform"`
Name string `json:"name"`
Description string `json:"description"`
Available bool `json:"available"`
}
// SignPlatformsResponse 签署平台列表响应
type SignPlatformsResponse struct {
Platforms []*SignPlatformItem `json:"platforms"`
}
// NewSystemAlert 创建系统警告
func NewSystemAlert(level, alertType, message, metric string, value, threshold interface{}) *SystemAlert {
return &SystemAlert{