98 lines
2.0 KiB
Go
98 lines
2.0 KiB
Go
package mysql
|
||
|
||
import (
|
||
"gorm.io/gorm"
|
||
"myschools.me/heritage/heritage-api/model"
|
||
)
|
||
|
||
func UserByUserName(userName *string) (*model.User, error) {
|
||
db, err := newDB()
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
var u model.User
|
||
if err := db.Where("user_name = ?", *userName).First(&u).Error; err != nil {
|
||
if err != gorm.ErrRecordNotFound {
|
||
return nil, nil
|
||
}
|
||
}
|
||
return &u, nil
|
||
}
|
||
|
||
// 获取单个用户信息,用户存在与否根据返回结果判断
|
||
func UserFirst(userID *string) (*model.User, error) {
|
||
db, err := newDB()
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
var u model.User
|
||
if err := db.Where("id = ?", *userID).First(&u).Error; err != nil {
|
||
if err != gorm.ErrRecordNotFound {
|
||
return nil, err
|
||
}
|
||
}
|
||
return &u, nil
|
||
}
|
||
|
||
func UserCount() (*int64, error) {
|
||
db, err := newDB()
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
var count int64
|
||
if err := db.Model(&model.User{}).Count(&count).Error; err != nil {
|
||
return nil, err
|
||
}
|
||
return &count, nil
|
||
}
|
||
|
||
func UserCreate(obj *model.User) (*model.User, error) {
|
||
db, err := newDB()
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
if err := db.Create(obj).Error; err != nil {
|
||
return nil, err
|
||
}
|
||
return obj, nil
|
||
}
|
||
|
||
func UserList(page, pageSize int, username *string) ([]model.User, int64, error) {
|
||
db, err := newDB()
|
||
if err != nil {
|
||
return nil, 0, err
|
||
}
|
||
if username != nil && *username != "" {
|
||
db = db.Where("user_name LIKE ?", "%"+*username+"%")
|
||
}
|
||
|
||
var users []model.User
|
||
var total int64
|
||
|
||
// 统计总数
|
||
if err := db.Model(&model.User{}).Count(&total).Error; err != nil {
|
||
return nil, 0, err
|
||
}
|
||
|
||
// 分页查询
|
||
offset := (page - 1) * pageSize
|
||
if err := db.Offset(offset).Limit(pageSize).Find(&users).Error; err != nil {
|
||
return nil, 0, err
|
||
}
|
||
|
||
return users, total, nil
|
||
}
|
||
|
||
// 用户更新,可以更新所有项,不作限制,由service层判断
|
||
func UserUpdate(userID *string, obj map[string]any) error {
|
||
db, err := newDB()
|
||
if err != nil {
|
||
return err
|
||
}
|
||
|
||
return db.Model(&model.User{}).Where("id = ?", *userID).Updates(obj).Error
|
||
}
|