98 lines
2.7 KiB
Go
98 lines
2.7 KiB
Go
package dao
|
||
|
||
import (
|
||
"time"
|
||
|
||
"gorm.io/gorm"
|
||
)
|
||
|
||
type User struct {
|
||
ID int32 `gorm:"primarykey;type:int"`
|
||
CreatedAt time.Time `gorm:"type:datetime(0)"`
|
||
UpdatedAt time.Time `gorm:"type:datetime(0)"`
|
||
DeletedAt gorm.DeletedAt `gorm:"index;type:datetime(0)"`
|
||
Username string `gorm:"type:varchar(64);default null;comment:'用户名称'"`
|
||
OpenId string `gorm:"type:varchar(255);default null;comment:'用户唯一标识'"`
|
||
AvatarId string `gorm:"type:varchar(32);default null;comment:'头像图片uuid'"`
|
||
Tags string `gorm:"type:json;default null;comment:'用户标签,json格式'"`
|
||
Persona string `gorm:"type:json;default null;comment:'用户个性化数据,json格式'"`
|
||
}
|
||
|
||
func (User) TableName() string { return "user" }
|
||
|
||
func User_WX_Insert(data *User) (int32, error) {
|
||
if err := s.db.Create(data).Error; err != nil {
|
||
return 0, err
|
||
}
|
||
return data.ID, nil
|
||
}
|
||
|
||
func User_WX_Query(openId string) (*User, error) {
|
||
var data User
|
||
if err := s.db.Where("open_id = ?", openId).First(&data).Error; err != nil {
|
||
if err == gorm.ErrRecordNotFound {
|
||
return nil, nil
|
||
}
|
||
return nil, err
|
||
}
|
||
return &data, nil
|
||
}
|
||
|
||
func User_Query(userId int32) (*User, error) {
|
||
var data User
|
||
if err := s.db.Where("id = ?", userId).First(&data).Error; err != nil {
|
||
if err == gorm.ErrRecordNotFound {
|
||
return nil, nil
|
||
}
|
||
return nil, err
|
||
}
|
||
return &data, nil
|
||
}
|
||
|
||
// 修改用户名称
|
||
func User_Change_Username(userId int32, username string) error {
|
||
user := &User{ID: userId}
|
||
return s.db.Model(&user).Update("username", username).Error
|
||
}
|
||
|
||
// 修改用户头像
|
||
func User_Change_AvatarId(userId int32, avatarId string) error {
|
||
user := &User{ID: userId}
|
||
return s.db.Model(&user).Update("avatar_id", avatarId).Error
|
||
}
|
||
|
||
// 查询用户信息列表,如果不存在,则设置为nil
|
||
func User_Query_List(userIds []int32) (map[int32]*User, error) {
|
||
var list []*User
|
||
if err := s.db.Where("id in (?)", userIds).Find(&list).Error; err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
reply := make(map[int32]*User)
|
||
for _, data := range list {
|
||
reply[data.ID] = data
|
||
}
|
||
return reply, nil
|
||
}
|
||
|
||
type UserBaseInfo struct {
|
||
ID int32 `gorm:"column:id"`
|
||
Username string `gorm:"column:username"`
|
||
AvatarId string `gorm:"column:avatar_id"`
|
||
}
|
||
|
||
// 批量查询用户的名称和头像信息
|
||
func User_Query_List_BaseInfo(userIds []int32) (map[int32]*UserBaseInfo, error) {
|
||
var list []*UserBaseInfo
|
||
if err := s.db.Model(&User{}).Where("id in (?)", userIds).Select("id, username, avatar_id").Find(&list).Error; err != nil && err != gorm.ErrRecordNotFound {
|
||
return nil, err
|
||
}
|
||
|
||
m := make(map[int32]*UserBaseInfo)
|
||
for _, info := range list {
|
||
m[info.ID] = info
|
||
}
|
||
|
||
return m, nil
|
||
}
|