package dto import ( "time" "tyapi-server/internal/domains/certification/enums" ) // CertificationCreateRequest 创建认证申请请求 type CertificationCreateRequest struct { UserID string `json:"user_id" binding:"required"` } // CertificationCreateResponse 创建认证申请响应 type CertificationCreateResponse struct { ID string `json:"id"` UserID string `json:"user_id"` Status enums.CertificationStatus `json:"status"` } // CertificationStatusResponse 认证状态响应 type CertificationStatusResponse struct { ID string `json:"id"` UserID string `json:"user_id"` Status enums.CertificationStatus `json:"status"` StatusName string `json:"status_name"` Progress int `json:"progress"` IsUserActionRequired bool `json:"is_user_action_required"` IsAdminActionRequired bool `json:"is_admin_action_required"` // 时间节点 InfoSubmittedAt *time.Time `json:"info_submitted_at,omitempty"` FaceVerifiedAt *time.Time `json:"face_verified_at,omitempty"` ContractAppliedAt *time.Time `json:"contract_applied_at,omitempty"` ContractApprovedAt *time.Time `json:"contract_approved_at,omitempty"` ContractSignedAt *time.Time `json:"contract_signed_at,omitempty"` CompletedAt *time.Time `json:"completed_at,omitempty"` // 关联信息 Enterprise *EnterpriseInfoResponse `json:"enterprise,omitempty"` ContractURL string `json:"contract_url,omitempty"` SigningURL string `json:"signing_url,omitempty"` RejectReason string `json:"reject_reason,omitempty"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } // SubmitEnterpriseInfoRequest 提交企业信息请求 type SubmitEnterpriseInfoRequest struct { CompanyName string `json:"company_name" binding:"required"` UnifiedSocialCode string `json:"unified_social_code" binding:"required"` LegalPersonName string `json:"legal_person_name" binding:"required"` LegalPersonID string `json:"legal_person_id" binding:"required"` LicenseUploadRecordID string `json:"license_upload_record_id" binding:"required"` } // SubmitEnterpriseInfoResponse 提交企业信息响应 type SubmitEnterpriseInfoResponse struct { ID string `json:"id"` Status enums.CertificationStatus `json:"status"` Enterprise *EnterpriseInfoResponse `json:"enterprise"` } // FaceVerifyRequest 人脸识别请求 type FaceVerifyRequest struct { RealName string `json:"real_name" binding:"required"` IDCardNumber string `json:"id_card_number" binding:"required"` ReturnURL string `json:"return_url" binding:"required"` } // FaceVerifyResponse 人脸识别响应 type FaceVerifyResponse struct { CertifyID string `json:"certify_id"` VerifyURL string `json:"verify_url"` ExpiresAt time.Time `json:"expires_at"` } // ApplyContractRequest 申请合同请求(无需额外参数) type ApplyContractRequest struct{} // ApplyContractResponse 申请合同响应 type ApplyContractResponse struct { ID string `json:"id"` Status enums.CertificationStatus `json:"status"` ContractAppliedAt time.Time `json:"contract_applied_at"` } // SignContractRequest 签署合同请求 type SignContractRequest struct { SignatureData string `json:"signature_data,omitempty"` } // SignContractResponse 签署合同响应 type SignContractResponse struct { ID string `json:"id"` Status enums.CertificationStatus `json:"status"` ContractSignedAt time.Time `json:"contract_signed_at"` } // CertificationDetailResponse 认证详情响应 type CertificationDetailResponse struct { *CertificationStatusResponse // 详细记录 LicenseUploadRecord *LicenseUploadRecordResponse `json:"license_upload_record,omitempty"` FaceVerifyRecords []FaceVerifyRecordResponse `json:"face_verify_records,omitempty"` ContractRecords []ContractRecordResponse `json:"contract_records,omitempty"` NotificationRecords []NotificationRecordResponse `json:"notification_records,omitempty"` }