package model import ( "errors" "github.com/codinl/go-logger" "time" ) //go:generate goqueryset -in user.go // gen:qs type User struct { Model Uid uint32 `json:"uid" gorm:"column:uid;unique_index"` MemberLevel uint32 `json:"member_level"` // 会员等级 1-用户 2-会员 MemberExpire time.Time `json:"member_expire"` // 会员到期时间 Bond uint32 `json:"bond"` // 保证金 WxName string `json:"wx_name"` // 昵称 WxAvatar string `json:"wx_avatar"` // 头像 WxOpenID string `json:"-" json:"wx_open_id"` AppOpenID string `json:"-" json:"app_open_id"` WxUnionID string `json:"-" json:"wx_union_id"` Tel string `json:"tel"` // 电话 Gender uint8 `json:"gender"` // 性别 City string `json:"city"` // 城市 Province string `json:"province"` // 省 Country string `json:"country"` // 市 LastLoginAt time.Time `json:"last_login_at"` // 最近登录时间 IP string `json:"-" gorm:"type:varchar(60)"` // ip InBlack bool `json:"in_black"` // 是否在黑名单 Version uint32 `json:"-"` } func (o *User) TableName() string { return "user" } func GetUserByUid(uid uint32) *User { user := new(User) if err := NewUserQuerySet(DB).UidEq(uid).One(user); err != nil { logger.Error(err, uid) return nil } return user } func UserUpdate(user *User) error { if user.Uid == 0 { return errors.New("uid is null") } fields := make([]UserDBSchemaField, 0) if user.WxName != "" { fields = append(fields, UserDBSchema.WxName) } if user.WxAvatar != "" { fields = append(fields, UserDBSchema.WxAvatar) } if user.Tel != "" { fields = append(fields, UserDBSchema.Tel) } if user.MemberLevel != 0 { fields = append(fields, UserDBSchema.MemberLevel) fields = append(fields, UserDBSchema.MemberExpire) } if len(fields) > 0 { err := user.Update(DB.Where(&User{Uid: user.Uid}), fields...) if err != nil { logger.Error("err:", err) return err } } return nil } // gen:qs type UserOpenMemberRecord struct { Model Uid uint32 `json:"uid"` OpenNo string `json:"open_no" gorm:"index"` } func (o *UserOpenMemberRecord) TableName() string { return "user_open_member_record" } func (m UserOpenMemberRecord) Insert() error { err := m.Create(DB) if err != nil { logger.Error("err:", err) return err } return nil } func (m *UserOpenMemberRecord) GetByOpenNo() error { err := NewUserOpenMemberRecordQuerySet(DB).OpenNoEq(m.OpenNo).One(m) if err != nil && err != RecordNotFound { logger.Error("err:", err) return err } return nil } // gen:qs type CommonProblem struct { Model Question string `json:"question"` Answer string `json:"answer" gorm:"type:text"` Sort uint32 `json:"sort" gorm:"index"` } func (*CommonProblem) TableName() string { return "common_problem" } func (*CommonProblem) List() ([]CommonProblem, error) { commons := make([]CommonProblem, 0) err := NewCommonProblemQuerySet(DB).OrderDescBySort().All(&commons) if err != nil && err != RecordNotFound { logger.Error("err:", err) return commons, err } return commons, err }