package model type AuditStatus int64 const ( AuditType_preSave AuditStatus = 1 //1= 暂存 AuditType_Pending AuditStatus = 2 //2= 待审核 AuditType_Failed AuditStatus = 3 //3= 审核失败 AuditType_Pass AuditStatus = 4 //4= 审核通过 AuditType_Supplemented AuditStatus = 5 //5= 待补充 ) var auditStatusMaper = map[AuditStatus]string{ AuditType_preSave: "暂存", AuditType_Pending: "待审核", AuditType_Failed: "审核失败", AuditType_Pass: "审核通过", AuditType_Supplemented: "待补充", } func (a AuditStatus) String() string { if a == 0 { return "无" } str, ok := auditStatusMaper[a] if !ok { return "未知" } return str } // 此表作为画家宝中的画作中间表的主表(画作主要数据保存在画作微服务中),请悉知 type ArtworkLockRecord struct { Model ArtistUid string `json:"artistUid" gorm:"column:artist_uid;type:varchar(191);comment:画家uid"` ArtworkUid string `json:"artworkUid" gorm:"column:artwork_uid;type:varchar(191);comment:画作uid"` Status int64 `json:"status" gorm:"column:status;default:1;comment:1=准备/暂存 2=锁定 3=解锁"` //这个锁的目的是配合下面的LockTime 对画作进行历史记录查询时的分组 LockTime string `json:"lockTime" gorm:"column:lock_time;comment:锁定时间"` //用户锁定后(Status=2)才能进入流程. AuditFlowIndex int64 `json:"auditFlowIndex" gorm:"column:audit_flow_index;default:1;comment:当前的审批流程 1:无 2:基本信息审核 3补充信息审核"` // 画作基本信息审批 // -- 画作上传,审核状态为[暂存1] -- 后台锁定用户,所有Status为1的画作设置为[锁定2],并生成锁定时间 ,审核状态为 [待审核3] -- 后台审批不通过,审核状态改为[不通过3] -- 用户修改画作后,状态再次改为[待审核2]直至审批通过 BaseAuditStatus AuditStatus `json:"baseAuditStatus" gorm:"column:base_audit_status;default:1;comment:画作基本信息审核状态 1:暂存 2:待审核 3:审核不通过 4:审核通过"` BaseAuditMark string `json:"baseAuditMark" gorm:"column:base_audit_mark;comment:画作基本信息审核审核备注1"` BaseAuditMark2 string `json:"baseAuditMark2" gorm:"column:base_audit_mark2;comment:画作基本信息审核审核备注2"` // ↓ // 画作基本信息审批通过后,后台点击[生成补充信息按钮] AuditFlowIndex字段变为3 , 进入画作补充信息审批 // ↓ //画作补充信息审批记录 // 后台点击[生成补充信息按钮],审核状态为[待补充5]-- 用户更新补充信息,状态改为[待审核2] -- 后台审批不通过,审核状态改为[不通过3] -- 用户修改画作后,状态再次改为[待审核2]直至审批通过 SupplementAuditStatus AuditStatus `json:"supplementAuditStatus" gorm:"column:supplement_audit_status;default:0;comment:补充信息审核状态 0无 5待补充 2.待审核 3:审核不通过 4:审核通过"` // 注意没有暂存状态 SupplementAuditMark string `json:"supplementAuditMark" gorm:"column:supplement_audit_mark;comment:补充信息审核备注1"` SupplementAuditMark2 string `json:"supplementAuditMark2" gorm:"column:supplement_audit_mark2;comment:补充信息审核备注2"` //UserInfo User `gorm:"foreignKey:ArtistUid;reference:MgmtArtistUid"` } func (a *ArtworkLockRecord) TableName() string { return "artwork_lock_record" } //func (a *ArtworkLockRecord) BeforeUpdate(tx *gorm.DB) (err error) { // var thisData ArtworkLockRecord // tx.Where("artwork_uid = ?", a.ArtworkUid).First(&thisData) // //如果是审核状态不通过的情况下更新画作信息,则自动变为待审核 // if thisData.BaseAuditStatus == 3 && a.BaseAuditStatus == 0 && a.SupplementAuditStatus == 0 { // a.BaseAuditStatus = 2 // } // if thisData.SupplementAuditStatus == 3 && a.BaseAuditStatus == 0 && a.SupplementAuditStatus == 0 { // a.SupplementAuditStatus = 2 // } // return //} // 基本信息是否可编辑 func (a *ArtworkLockRecord) BaseEditable() bool { if a.Status == 1 { return true } if a.Status == 2 && (a.BaseAuditStatus == AuditType_Failed || a.BaseAuditStatus == AuditType_Pending || a.BaseAuditStatus == AuditType_Supplemented) { return true } return false } // 补充信息是否可编辑 func (a *ArtworkLockRecord) SupplementEditable() bool { //&& a.BaseAuditStatus == AuditType_Pass todo 是否要流程通过基本信息 if a.Status == 2 && (a.SupplementAuditStatus == AuditType_Supplemented || a.SupplementAuditStatus == AuditType_Failed || a.SupplementAuditStatus == AuditType_Pending) { return true } return false }