temp
This commit is contained in:
270
internal/domains/certification/enums/failure_reason.go
Normal file
270
internal/domains/certification/enums/failure_reason.go
Normal file
@@ -0,0 +1,270 @@
|
||||
package enums
|
||||
|
||||
// FailureReason 失败原因枚举
|
||||
type FailureReason string
|
||||
|
||||
const (
|
||||
// === 企业信息验证失败原因 ===
|
||||
FailureReasonEnterpriseNotExists FailureReason = "enterprise_not_exists" // 企业不存在
|
||||
FailureReasonEnterpriseInfoMismatch FailureReason = "enterprise_info_mismatch" // 企业信息不匹配
|
||||
FailureReasonEnterpriseStatusAbnormal FailureReason = "enterprise_status_abnormal" // 企业状态异常
|
||||
FailureReasonLegalPersonMismatch FailureReason = "legal_person_mismatch" // 法定代表人信息不匹配
|
||||
FailureReasonEsignVerificationFailed FailureReason = "esign_verification_failed" // e签宝验证失败
|
||||
FailureReasonInvalidDocument FailureReason = "invalid_document" // 证件信息无效
|
||||
|
||||
// === 合同签署失败原因 ===
|
||||
FailureReasonContractRejectedByUser FailureReason = "contract_rejected_by_user" // 用户拒绝签署
|
||||
FailureReasonContractExpired FailureReason = "contract_expired" // 合同签署超时
|
||||
FailureReasonSignProcessFailed FailureReason = "sign_process_failed" // 签署流程失败
|
||||
FailureReasonContractGenFailed FailureReason = "contract_gen_failed" // 合同生成失败
|
||||
FailureReasonEsignFlowError FailureReason = "esign_flow_error" // e签宝流程错误
|
||||
|
||||
// === 系统错误原因 ===
|
||||
FailureReasonSystemError FailureReason = "system_error" // 系统错误
|
||||
FailureReasonNetworkError FailureReason = "network_error" // 网络错误
|
||||
FailureReasonTimeout FailureReason = "timeout" // 操作超时
|
||||
FailureReasonUnknownError FailureReason = "unknown_error" // 未知错误
|
||||
)
|
||||
|
||||
// AllFailureReasons 所有失败原因列表
|
||||
var AllFailureReasons = []FailureReason{
|
||||
// 企业信息验证失败
|
||||
FailureReasonEnterpriseNotExists,
|
||||
FailureReasonEnterpriseInfoMismatch,
|
||||
FailureReasonEnterpriseStatusAbnormal,
|
||||
FailureReasonLegalPersonMismatch,
|
||||
FailureReasonEsignVerificationFailed,
|
||||
FailureReasonInvalidDocument,
|
||||
|
||||
// 合同签署失败
|
||||
FailureReasonContractRejectedByUser,
|
||||
FailureReasonContractExpired,
|
||||
FailureReasonSignProcessFailed,
|
||||
FailureReasonContractGenFailed,
|
||||
FailureReasonEsignFlowError,
|
||||
|
||||
// 系统错误
|
||||
FailureReasonSystemError,
|
||||
FailureReasonNetworkError,
|
||||
FailureReasonTimeout,
|
||||
FailureReasonUnknownError,
|
||||
}
|
||||
|
||||
// EnterpriseVerificationFailureReasons 企业验证失败原因列表
|
||||
var EnterpriseVerificationFailureReasons = []FailureReason{
|
||||
FailureReasonEnterpriseNotExists,
|
||||
FailureReasonEnterpriseInfoMismatch,
|
||||
FailureReasonEnterpriseStatusAbnormal,
|
||||
FailureReasonLegalPersonMismatch,
|
||||
FailureReasonEsignVerificationFailed,
|
||||
FailureReasonInvalidDocument,
|
||||
}
|
||||
|
||||
// ContractSignFailureReasons 合同签署失败原因列表
|
||||
var ContractSignFailureReasons = []FailureReason{
|
||||
FailureReasonContractRejectedByUser,
|
||||
FailureReasonContractExpired,
|
||||
FailureReasonSignProcessFailed,
|
||||
FailureReasonContractGenFailed,
|
||||
FailureReasonEsignFlowError,
|
||||
}
|
||||
|
||||
// SystemErrorReasons 系统错误原因列表
|
||||
var SystemErrorReasons = []FailureReason{
|
||||
FailureReasonSystemError,
|
||||
FailureReasonNetworkError,
|
||||
FailureReasonTimeout,
|
||||
FailureReasonUnknownError,
|
||||
}
|
||||
|
||||
// IsValidFailureReason 检查失败原因是否有效
|
||||
func IsValidFailureReason(reason FailureReason) bool {
|
||||
for _, validReason := range AllFailureReasons {
|
||||
if reason == validReason {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// GetFailureReasonName 获取失败原因的中文名称
|
||||
func GetFailureReasonName(reason FailureReason) string {
|
||||
reasonNames := map[FailureReason]string{
|
||||
// 企业信息验证失败
|
||||
FailureReasonEnterpriseNotExists: "企业不存在",
|
||||
FailureReasonEnterpriseInfoMismatch: "企业信息不匹配",
|
||||
FailureReasonEnterpriseStatusAbnormal: "企业状态异常",
|
||||
FailureReasonLegalPersonMismatch: "法定代表人信息不匹配",
|
||||
FailureReasonEsignVerificationFailed: "e签宝验证失败",
|
||||
FailureReasonInvalidDocument: "证件信息无效",
|
||||
|
||||
// 合同签署失败
|
||||
FailureReasonContractRejectedByUser: "用户拒绝签署",
|
||||
FailureReasonContractExpired: "合同签署超时",
|
||||
FailureReasonSignProcessFailed: "签署流程失败",
|
||||
FailureReasonContractGenFailed: "合同生成失败",
|
||||
FailureReasonEsignFlowError: "e签宝流程错误",
|
||||
|
||||
// 系统错误
|
||||
FailureReasonSystemError: "系统错误",
|
||||
FailureReasonNetworkError: "网络错误",
|
||||
FailureReasonTimeout: "操作超时",
|
||||
FailureReasonUnknownError: "未知错误",
|
||||
}
|
||||
|
||||
if name, exists := reasonNames[reason]; exists {
|
||||
return name
|
||||
}
|
||||
return string(reason)
|
||||
}
|
||||
|
||||
// GetFailureReasonCategory 获取失败原因分类
|
||||
func GetFailureReasonCategory(reason FailureReason) string {
|
||||
categories := map[FailureReason]string{
|
||||
// 企业信息验证失败
|
||||
FailureReasonEnterpriseNotExists: "企业验证",
|
||||
FailureReasonEnterpriseInfoMismatch: "企业验证",
|
||||
FailureReasonEnterpriseStatusAbnormal: "企业验证",
|
||||
FailureReasonLegalPersonMismatch: "企业验证",
|
||||
FailureReasonEsignVerificationFailed: "企业验证",
|
||||
FailureReasonInvalidDocument: "企业验证",
|
||||
|
||||
// 合同签署失败
|
||||
FailureReasonContractRejectedByUser: "合同签署",
|
||||
FailureReasonContractExpired: "合同签署",
|
||||
FailureReasonSignProcessFailed: "合同签署",
|
||||
FailureReasonContractGenFailed: "合同签署",
|
||||
FailureReasonEsignFlowError: "合同签署",
|
||||
|
||||
// 系统错误
|
||||
FailureReasonSystemError: "系统错误",
|
||||
FailureReasonNetworkError: "系统错误",
|
||||
FailureReasonTimeout: "系统错误",
|
||||
FailureReasonUnknownError: "系统错误",
|
||||
}
|
||||
|
||||
if category, exists := categories[reason]; exists {
|
||||
return category
|
||||
}
|
||||
return "未知"
|
||||
}
|
||||
|
||||
// IsEnterpriseVerificationFailure 判断是否为企业验证失败
|
||||
func IsEnterpriseVerificationFailure(reason FailureReason) bool {
|
||||
for _, verifyReason := range EnterpriseVerificationFailureReasons {
|
||||
if reason == verifyReason {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// IsContractSignFailure 判断是否为合同签署失败
|
||||
func IsContractSignFailure(reason FailureReason) bool {
|
||||
for _, signReason := range ContractSignFailureReasons {
|
||||
if reason == signReason {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// IsSystemError 判断是否为系统错误
|
||||
func IsSystemError(reason FailureReason) bool {
|
||||
for _, systemReason := range SystemErrorReasons {
|
||||
if reason == systemReason {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// GetSuggestedAction 获取建议的后续操作
|
||||
func GetSuggestedAction(reason FailureReason) string {
|
||||
actions := map[FailureReason]string{
|
||||
// 企业信息验证失败
|
||||
FailureReasonEnterpriseNotExists: "请检查企业名称和统一社会信用代码是否正确",
|
||||
FailureReasonEnterpriseInfoMismatch: "请核对企业信息是否与工商登记信息一致",
|
||||
FailureReasonEnterpriseStatusAbnormal: "请确认企业状态正常,如有疑问请联系客服",
|
||||
FailureReasonLegalPersonMismatch: "请核对法定代表人信息是否正确",
|
||||
FailureReasonEsignVerificationFailed: "请稍后重试,如持续失败请联系客服",
|
||||
FailureReasonInvalidDocument: "请检查证件信息是否有效",
|
||||
|
||||
// 合同签署失败
|
||||
FailureReasonContractRejectedByUser: "您可以重新申请签署合同",
|
||||
FailureReasonContractExpired: "请重新申请签署合同",
|
||||
FailureReasonSignProcessFailed: "请重新尝试签署,如持续失败请联系客服",
|
||||
FailureReasonContractGenFailed: "系统正在处理,请稍后重试",
|
||||
FailureReasonEsignFlowError: "请稍后重试,如持续失败请联系客服",
|
||||
|
||||
// 系统错误
|
||||
FailureReasonSystemError: "系统暂时不可用,请稍后重试",
|
||||
FailureReasonNetworkError: "网络连接异常,请检查网络后重试",
|
||||
FailureReasonTimeout: "操作超时,请重新尝试",
|
||||
FailureReasonUnknownError: "发生未知错误,请联系客服",
|
||||
}
|
||||
|
||||
if action, exists := actions[reason]; exists {
|
||||
return action
|
||||
}
|
||||
return "请联系客服处理"
|
||||
}
|
||||
|
||||
// IsRetryable 判断是否可以重试
|
||||
func IsRetryable(reason FailureReason) bool {
|
||||
retryableReasons := map[FailureReason]bool{
|
||||
// 企业信息验证失败 - 用户数据问题,可重试
|
||||
FailureReasonEnterpriseNotExists: true,
|
||||
FailureReasonEnterpriseInfoMismatch: true,
|
||||
FailureReasonEnterpriseStatusAbnormal: false, // 企业状态问题,需要外部解决
|
||||
FailureReasonLegalPersonMismatch: true,
|
||||
FailureReasonEsignVerificationFailed: true, // 可能是临时问题
|
||||
FailureReasonInvalidDocument: true,
|
||||
|
||||
// 合同签署失败
|
||||
FailureReasonContractRejectedByUser: true, // 用户可以改变主意
|
||||
FailureReasonContractExpired: true, // 可以重新申请
|
||||
FailureReasonSignProcessFailed: true, // 可能是临时问题
|
||||
FailureReasonContractGenFailed: true, // 可能是临时问题
|
||||
FailureReasonEsignFlowError: true, // 可能是临时问题
|
||||
|
||||
// 系统错误 - 大部分可重试
|
||||
FailureReasonSystemError: true,
|
||||
FailureReasonNetworkError: true,
|
||||
FailureReasonTimeout: true,
|
||||
FailureReasonUnknownError: false, // 未知错误,不建议自动重试
|
||||
}
|
||||
|
||||
if retryable, exists := retryableReasons[reason]; exists {
|
||||
return retryable
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// GetRetrySuggestion 获取重试建议
|
||||
func GetRetrySuggestion(reason FailureReason) string {
|
||||
if !IsRetryable(reason) {
|
||||
return "此问题不建议重试,请联系客服处理"
|
||||
}
|
||||
|
||||
suggestions := map[FailureReason]string{
|
||||
FailureReasonEnterpriseNotExists: "请修正企业信息后重新提交",
|
||||
FailureReasonEnterpriseInfoMismatch: "请核对企业信息后重新提交",
|
||||
FailureReasonLegalPersonMismatch: "请确认法定代表人信息后重新提交",
|
||||
FailureReasonEsignVerificationFailed: "请稍后重新尝试",
|
||||
FailureReasonInvalidDocument: "请检查证件信息后重新提交",
|
||||
FailureReasonContractRejectedByUser: "如需要可重新申请合同",
|
||||
FailureReasonContractExpired: "请重新申请合同签署",
|
||||
FailureReasonSignProcessFailed: "请重新尝试签署",
|
||||
FailureReasonContractGenFailed: "请稍后重新申请",
|
||||
FailureReasonEsignFlowError: "请稍后重新尝试",
|
||||
FailureReasonSystemError: "请稍后重试",
|
||||
FailureReasonNetworkError: "请检查网络连接后重试",
|
||||
FailureReasonTimeout: "请重新尝试操作",
|
||||
}
|
||||
|
||||
if suggestion, exists := suggestions[reason]; exists {
|
||||
return suggestion
|
||||
}
|
||||
return "请重新尝试操作"
|
||||
}
|
||||
Reference in New Issue
Block a user