wx-server/internal/dao/user.go

98 lines
2.7 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}