heritage-api/mysql/user-mysql.go

98 lines
2.0 KiB
Go
Raw Permalink 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 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
}