package entity import ( "git.sxidc.com/go-framework/baize/framework/core/tag/check" "git.sxidc.com/go-tools/utils/strutils" "github.com/pkg/errors" "time" ) const ( FieldID = "ID" FieldTenantID = "TenantID" FieldCreateUserID = "CreateUserID" FieldLastUpdateUserID = "LastUpdateUserID" FieldCreatedTime = "CreatedTime" FieldLastUpdatedTime = "LastUpdatedTime" ) const ( ColumnID = "id" ColumnTenantID = "tenant_id" ColumnCreateUserID = "create_user_id" ColumnLastUpdateUserID = "last_update_user_id" ColumnCreatedTime = "created_time" ColumnLastUpdatedTime = "last_updated_time" ) type TenantIDField struct { TenantID string `sqlmapping:"column:tenant_id;" sqlresult:"column:tenant_id;" check:"required,len=32"` } type UserIDFields struct { CreateUserID string `sqlmapping:"column:create_user_id;" sqlresult:"column:create_user_id;" check:"required,len=32"` LastUpdateUserID string `sqlmapping:"column:last_update_user_id;" sqlresult:"column:last_update_user_id;" check:"required,len=32"` } type TimeFields struct { CreatedTime time.Time `sqlmapping:"column:created_time;" sqlresult:"column:created_time;"` LastUpdatedTime time.Time `sqlmapping:"column:last_updated_time;" sqlresult:"column:last_updated_time;"` } func CheckFieldID(entity Entity) error { return checkIDTypeField(entity, FieldID, "ID") } func CheckFieldTenantID(entity Entity) error { return checkIDTypeField(entity, FieldTenantID, "租户ID") } func CheckFieldCreateUserID(entity Entity) error { return checkIDTypeField(entity, FieldCreateUserID, "创建用户ID") } func CheckFieldLastUpdateUserID(entity Entity) error { return checkIDTypeField(entity, FieldLastUpdateUserID, "最近更新用户ID") } func CheckFieldIDResult(checkResult check.Result) error { return checkIDTypeResult(checkResult, FieldID, "ID") } func CheckFieldTenantIDResult(checkResult check.Result) error { return checkIDTypeResult(checkResult, FieldTenantID, "租户ID") } func CheckFieldCreateUserIDResult(checkResult check.Result) error { return checkIDTypeResult(checkResult, FieldCreateUserID, "创建用户ID") } func CheckFieldLastUpdateUserIDResult(checkResult check.Result) error { return checkIDTypeResult(checkResult, FieldLastUpdateUserID, "最近更新用户ID") } func checkIDTypeField(entity Entity, fieldName string, fieldCNName string) error { checkResult := check.Struct(entity, map[string]string{ fieldName: entity.DomainCNName() + fieldCNName, }) err := checkResult.CheckFields(fieldName) if err != nil { return errors.New(entity.DomainCNName() + ": " + err.Error()) } return nil } func checkIDTypeResult(checkResult check.Result, domainCNName string, fieldName string) error { err := checkResult.CheckFields(fieldName) if err != nil { return errors.New(domainCNName + ": " + err.Error()) } return nil } const ( idLen = 32 ) func CheckIDTypeValue(domainCNName string, fieldCNName string, id string) error { if strutils.IsStringEmpty(id) { return errors.New(domainCNName + fieldCNName + "为空") } if len(id) != idLen { return errors.New(domainCNName + fieldCNName + "长度不正确") } return nil }