package user import ( "git.sxidc.com/go-framework/baize/framework/core/domain" "git.sxidc.com/go-framework/baize/framework/core/domain/entity" "git.sxidc.com/go-framework/baize/framework/core/tag/check" "git.sxidc.com/go-tools/utils/strutils" "github.com/pkg/errors" "time" ) const ( FieldUserName = "UserName" FieldPassword = "Password" FieldLastLoginTime = "LastLoginTime" ) var ( ColumnUserName = domain.ColumnName(FieldUserName) ColumnPassword = domain.ColumnName(FieldPassword) ColumnLastLoginTime = domain.ColumnName(FieldLastLoginTime) ) var fieldMap = map[string]string{ FieldUserName: "用户名", FieldPassword: "密码", FieldLastLoginTime: "最近登录时间", } type Entity struct { entity.Base UserName string `sqlmapping:"column:user_name;notUpdate" sqlresult:"column:user_name" check:"required,lte=256"` Password string `sqlmapping:"column:password;aes:'@MKU^AAOP%H*K¥VJ<%G&j*o#$XZSWQ@L'" sqlresult:"column:password;aes:'@MKU^AAOP%H*K¥VJ<%G&j*o#$XZSWQ@L'" check:"required,lte=256"` LastLoginTime time.Time `sqlmapping:"column:last_login_time;notUpdate" sqlresult:"column:last_login_time" check:"required,timezero"` RoleIDs []string entity.TimeFields } func (e *Entity) DomainCNName() string { return "用户" } func (e *Entity) DomainCamelName() string { return "User" } func (e *Entity) ForCreate() error { checkResult := check.Struct(e, fieldMap) err := entity.CheckFieldIDResult(checkResult) if err != nil { return err } err = domain.CheckField(checkResult, e.DomainCNName(), FieldUserName) if err != nil { return err } err = domain.CheckField(checkResult, e.DomainCNName(), FieldPassword) if err != nil { return err } err = domain.CheckField(checkResult, e.DomainCNName(), FieldLastLoginTime) if err != nil { return err } return nil } func (e *Entity) ForDelete() error { checkResult := check.Struct(e, fieldMap) err := entity.CheckFieldIDResult(checkResult) if err != nil { return err } return nil } func (e *Entity) ForUpdate() error { checkResult := check.Struct(e, fieldMap) err := entity.CheckFieldIDResult(checkResult) if err != nil { return err } return nil } func (e *Entity) checkUpdateFields(checkResult check.Result) error { if strutils.AllBlank(e.Password) && e.LastLoginTime.IsZero() { return errors.New(e.DomainCNName() + "没有传递需要更新的字段") } if strutils.IsStringNotEmpty(e.Password) { err := domain.CheckField(checkResult, e.DomainCNName(), FieldPassword) if err != nil { return err } } return nil }