This commit is contained in:
2026-07-21 15:53:29 +08:00
parent 024b6614ba
commit c943f575d5
40 changed files with 5362 additions and 275 deletions

View File

@@ -102,6 +102,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,26 @@ 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 签署任务预览 EUI 链接(约 2 小时/单次),用 iframe 打开,勿当 PDF 直链
PreviewURL string `json:"preview_url"`
// PreviewMode iframe | pdf
PreviewMode string `json:"preview_mode"`
SignFlowID string `json:"sign_flow_id,omitempty"`
Message string `json:"message,omitempty"`
}
// SystemMonitoringResponse 系统监控响应
@@ -119,7 +134,9 @@ type AdminSubmitRecordItem struct {
LegalPersonName string `json:"legal_person_name"`
SubmitAt time.Time `json:"submit_at"`
Status string `json:"status"`
CertificationStatus string `json:"certification_status,omitempty"` // 以状态机为准info_pending_review/info_submitted/info_rejected
ManualReviewStatus string `json:"manual_review_status,omitempty"` // pending/approved/rejected
SignPlatform string `json:"sign_platform,omitempty"` // esign/fadada
CertificationStatus string `json:"certification_status,omitempty"` // 以状态机为准info_pending_review/info_submitted/info_rejected 等
}
// AdminSubmitRecordDetail 管理端提交记录详情(含完整信息与图片 URL
@@ -145,6 +162,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,17 +198,19 @@ 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)
// 法大大嵌入链接约 10 分钟;统一按 10 分钟提示前端刷新
expireAt := time.Now().Add(10 * time.Minute)
response.ExpireAt = &expireAt
return response
@@ -208,6 +230,19 @@ func NewSystemAlert(level, alertType, message, metric string, value, threshold i
}
}
// 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"`
}
// IsHealthy 检查系统是否健康
func (r *SystemMonitoringResponse) IsHealthy() bool {
return r.SystemHealth.Overall == "healthy"