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
|
|
|
|
|
|
}
|