mh_server/model/user.go

130 lines
3.2 KiB
Go
Raw Normal View History

2021-06-30 02:12:05 +00:00
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
}