You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

65 lines
1.7 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package dao
import (
"context"
"go_fabric/model"
"gorm.io/gorm"
)
type UserDao struct {
*gorm.DB
}
func NewUserDao(ctx context.Context) *UserDao {
return &UserDao{NewDBClient(ctx)}
}
func NewUserDaoDB(db *gorm.DB) *UserDao {
return &UserDao{db}
}
// 是否存在该用户名用户
func (dao *UserDao) ExistOrNotByUserName(userName string) (user *model.User, exist bool, err error) {
var count int64
err = dao.DB.Model(&model.User{}).Where("user_name=?", userName).Find(&user).Count(&count).Error
if count == 0 {
return nil, false, err
}
return user, true, nil
}
// 添加用户
func (dao *UserDao) CreateUser(user *model.User) error {
return dao.DB.Model(&model.User{}).Create(&user).Error
}
// 根据Id寻找用户
func (dao *UserDao) GetUserById(id uint) (user *model.User, err error) {
err = dao.DB.Model(&model.User{}).Where("id=?", id).First(&user).Error
return
}
// 查询所有用户 列表
// offset表示偏移量pageSize表示每页数据量pageNum表示当前查询的页码数
func (dao *UserDao) ListUser(pageNum int, pageSize int) (users []model.User, err error) {
offset := (pageNum - 1) * pageSize
err = dao.DB.Model(&model.User{}).Offset(offset).Limit(pageSize).Find(&users).Error
return
}
// 根据id修改用户信息
func (dao *UserDao) UpdateUserById(uId uint, user *model.User) error {
return dao.DB.Model(&model.User{}).Where("id=?", uId).Updates(&user).Error
}
// 根据用户名删除用户
func (dao *UserDao) DeleteByUserName(user *model.User) error {
return dao.DB.Delete(&user).Error
}
// 封禁用户
func (dao *UserDao) PassiveByUserName(uId uint) error {
return dao.DB.Model(&model.User{}).Where("id=?", uId).Update("status", "passive").Error
}