heritage-api/mysql/user-mysql.go

98 lines
2.0 KiB
Go
Raw Normal View History

2026-03-12 09:28:19 +00:00
package mysql
import (
"gorm.io/gorm"
"myschools.me/heritage/heritage-api/model"
)
2026-03-19 09:35:11 +00:00
func UserByUserName(userName *string) (*model.User, error) {
2026-03-12 09:28:19 +00:00
db, err := newDB()
if err != nil {
2026-03-19 09:35:11 +00:00
return nil, err
2026-03-12 09:28:19 +00:00
}
var u model.User
if err := db.Where("user_name = ?", *userName).First(&u).Error; err != nil {
2026-03-19 09:35:11 +00:00
if err != gorm.ErrRecordNotFound {
return nil, nil
2026-03-12 09:28:19 +00:00
}
}
2026-03-19 09:35:11 +00:00
return &u, nil
2026-03-12 09:28:19 +00:00
}
2026-03-19 09:35:11 +00:00
// 获取单个用户信息,用户存在与否根据返回结果判断
func UserFirst(userID *string) (*model.User, error) {
2026-03-12 09:28:19 +00:00
db, err := newDB()
if err != nil {
2026-03-19 09:35:11 +00:00
return nil, err
2026-03-12 09:28:19 +00:00
}
var u model.User
if err := db.Where("id = ?", *userID).First(&u).Error; err != nil {
2026-03-19 09:35:11 +00:00
if err != gorm.ErrRecordNotFound {
return nil, err
2026-03-12 09:28:19 +00:00
}
}
2026-03-19 09:35:11 +00:00
return &u, nil
2026-03-12 09:28:19 +00:00
}
2026-03-13 08:35:54 +00:00
func UserCount() (*int64, error) {
db, err := newDB()
if err != nil {
return nil, err
}
2026-03-12 09:28:19 +00:00
2026-03-13 08:35:54 +00:00
var count int64
if err := db.Model(&model.User{}).Count(&count).Error; err != nil {
return nil, err
}
return &count, nil
2026-03-12 09:28:19 +00:00
}
2026-03-13 08:35:54 +00:00
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
2026-03-12 09:28:19 +00:00
}
2026-03-19 09:35:11 +00:00
2026-03-23 07:56:53 +00:00
func UserList(page, pageSize int, username *string) ([]model.User, int64, error) {
2026-03-19 09:35:11 +00:00
db, err := newDB()
if err != nil {
return nil, 0, err
}
2026-03-23 07:56:53 +00:00
if username != nil && *username != "" {
db = db.Where("user_name LIKE ?", "%"+*username+"%")
}
2026-03-19 09:35:11 +00:00
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
}