This commit is contained in:
Mrx
2026-03-17 17:18:54 +08:00
parent 6f0a8e0519
commit 12ed1c81e3
16 changed files with 763 additions and 123 deletions

View File

@@ -5,22 +5,24 @@ type CertificationStatus string
const (
// === 主流程状态 ===
StatusPending CertificationStatus = "pending" // 待认证
StatusInfoSubmitted CertificationStatus = "info_submitted" // 已提交企业信息
StatusEnterpriseVerified CertificationStatus = "enterprise_verified" // 已企业认证
StatusContractApplied CertificationStatus = "contract_applied" // 已申请签署合同
StatusContractSigned CertificationStatus = "contract_signed" // 已签署合同
StatusCompleted CertificationStatus = "completed" // 认证完成
StatusPending CertificationStatus = "pending" // 待认证
StatusInfoPendingReview CertificationStatus = "info_pending_review" // 企业信息待人工审核
StatusInfoSubmitted CertificationStatus = "info_submitted" // 已提交企业信息(审核通过)
StatusEnterpriseVerified CertificationStatus = "enterprise_verified" // 已企业认证
StatusContractApplied CertificationStatus = "contract_applied" // 已申请签署合同
StatusContractSigned CertificationStatus = "contract_signed" // 已签署合同
StatusCompleted CertificationStatus = "completed" // 认证完成
// === 失败状态 ===
StatusInfoRejected CertificationStatus = "info_rejected" // 企业信息被拒绝
StatusContractRejected CertificationStatus = "contract_rejected" // 合同被拒签
StatusContractExpired CertificationStatus = "contract_expired" // 合同签署超时
StatusContractExpired CertificationStatus = "contract_expired" // 合同签署超时
)
// AllStatuses 所有有效状态列表
var AllStatuses = []CertificationStatus{
StatusPending,
StatusInfoPendingReview,
StatusInfoSubmitted,
StatusEnterpriseVerified,
StatusContractApplied,
@@ -34,6 +36,7 @@ var AllStatuses = []CertificationStatus{
// MainFlowStatuses 主流程状态列表
var MainFlowStatuses = []CertificationStatus{
StatusPending,
StatusInfoPendingReview,
StatusInfoSubmitted,
StatusEnterpriseVerified,
StatusContractApplied,
@@ -61,6 +64,7 @@ func IsValidStatus(status CertificationStatus) bool {
func GetStatusName(status CertificationStatus) string {
statusNames := map[CertificationStatus]string{
StatusPending: "待认证",
StatusInfoPendingReview: "企业信息待审核",
StatusInfoSubmitted: "已提交企业信息",
StatusEnterpriseVerified: "已企业认证",
StatusContractApplied: "已申请签署合同",
@@ -120,14 +124,15 @@ func GetStatusCategory(status CertificationStatus) string {
func GetStatusPriority(status CertificationStatus) int {
priorities := map[CertificationStatus]int{
StatusPending: 1,
StatusInfoSubmitted: 2,
StatusEnterpriseVerified: 3,
StatusContractApplied: 4,
StatusContractSigned: 5,
StatusCompleted: 6,
StatusInfoRejected: 7,
StatusContractRejected: 8,
StatusContractExpired: 9,
StatusInfoPendingReview: 2,
StatusInfoSubmitted: 3,
StatusEnterpriseVerified: 4,
StatusContractApplied: 5,
StatusContractSigned: 6,
StatusCompleted: 7,
StatusInfoRejected: 8,
StatusContractRejected: 9,
StatusContractExpired: 10,
}
if priority, exists := priorities[status]; exists {
@@ -140,14 +145,15 @@ func GetStatusPriority(status CertificationStatus) int {
func GetProgressPercentage(status CertificationStatus) int {
progressMap := map[CertificationStatus]int{
StatusPending: 0,
StatusInfoSubmitted: 25,
StatusEnterpriseVerified: 50,
StatusContractApplied: 75,
StatusContractSigned: 100,
StatusInfoPendingReview: 15,
StatusInfoSubmitted: 25,
StatusEnterpriseVerified: 50,
StatusContractApplied: 75,
StatusContractSigned: 100,
StatusCompleted: 100,
StatusInfoRejected: 25,
StatusContractRejected: 75,
StatusContractExpired: 75,
StatusInfoRejected: 25,
StatusContractRejected: 75,
StatusContractExpired: 75,
}
if progress, exists := progressMap[status]; exists {
@@ -160,7 +166,8 @@ func GetProgressPercentage(status CertificationStatus) int {
func IsUserActionRequired(status CertificationStatus) bool {
userActionRequired := map[CertificationStatus]bool{
StatusPending: true, // 需要提交企业信息
StatusInfoSubmitted: false, // 等待系统验证
StatusInfoPendingReview: false, // 等待人工审核
StatusInfoSubmitted: false, // 等待完成企业认证
StatusEnterpriseVerified: true, // 需要申请合同
StatusContractApplied: true, // 需要签署合同
StatusContractSigned: false, // 合同已签署,等待系统处理
@@ -180,6 +187,7 @@ func IsUserActionRequired(status CertificationStatus) bool {
func GetUserActionHint(status CertificationStatus) string {
hints := map[CertificationStatus]string{
StatusPending: "请提交企业信息",
StatusInfoPendingReview: "企业信息已提交,请等待管理员审核",
StatusInfoSubmitted: "请完成企业认证",
StatusEnterpriseVerified: "企业认证完成,请申请签署合同",
StatusContractApplied: "请在规定时间内完成合同签署",
@@ -200,8 +208,12 @@ func GetUserActionHint(status CertificationStatus) string {
func GetNextValidStatuses(currentStatus CertificationStatus) []CertificationStatus {
nextStatusMap := map[CertificationStatus][]CertificationStatus{
StatusPending: {
StatusInfoPendingReview, // 用户提交企业信息,进入待审核
StatusCompleted,
},
StatusInfoPendingReview: {
StatusInfoSubmitted,
// 管理员/系统可直接完成认证
StatusInfoRejected,
StatusCompleted,
},
StatusInfoSubmitted: {
@@ -265,8 +277,11 @@ func CanTransitionTo(currentStatus, targetStatus CertificationStatus) bool {
// GetTransitionReason 获取状态转换的原因描述
func GetTransitionReason(from, to CertificationStatus) string {
transitionReasons := map[string]string{
string(StatusPending) + "->" + string(StatusInfoSubmitted): "用户提交企业信息",
string(StatusInfoSubmitted) + "->" + string(StatusEnterpriseVerified): "e签宝企业认证成功",
string(StatusPending) + "->" + string(StatusInfoPendingReview): "用户提交企业信息,等待人工审核",
string(StatusInfoPendingReview) + "->" + string(StatusInfoSubmitted): "管理员审核通过",
string(StatusInfoPendingReview) + "->" + string(StatusInfoRejected): "管理员审核拒绝",
string(StatusPending) + "->" + string(StatusInfoSubmitted): "用户提交企业信息",
string(StatusInfoSubmitted) + "->" + string(StatusEnterpriseVerified): "e签宝企业认证成功",
string(StatusInfoSubmitted) + "->" + string(StatusInfoRejected): "e签宝企业认证失败",
string(StatusEnterpriseVerified) + "->" + string(StatusContractApplied): "用户申请签署合同",
string(StatusContractApplied) + "->" + string(StatusContractSigned): "e签宝合同签署成功",