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.
 
 

66 lines
1.4 KiB

package data
import (
"errors"
"gorm.io/gorm"
"strconv"
)
type AuthUserDao struct {
db *gorm.DB
}
func NewUserDao(db *gorm.DB) *AuthUserDao {
return &AuthUserDao{db: db}
}
func (dao *AuthUserDao) Create(user *User) error {
tx := dao.db.Create(user)
return tx.Error
}
func (dao *AuthUserDao) Updates(user *User) error {
return dao.db.Model(user).Updates(user).Error
}
func (dao *AuthUserDao) FindByAccount(account string) (*User, error) {
user := &User{}
tx := dao.db.Model(user).Where("account=?", account).Take(user)
if tx.Error != nil {
// First、Last、Take 方法找不到记录时,ErrRecordNotFound
if errors.Is(tx.Error, gorm.ErrRecordNotFound) {
return nil, nil
}
return nil, tx.Error
}
return user, nil
}
func (dao *AuthUserDao) FindByUid(uid string) (*User, error) {
user := &User{}
tx := dao.db.Model(user).Where("uid=?", uid).Take(user)
if tx.Error != nil {
// First、Last、Take 方法找不到记录时,ErrRecordNotFound
if errors.Is(tx.Error, gorm.ErrRecordNotFound) {
return nil, nil
}
return nil, tx.Error
}
return user, nil
}
func (dao *AuthUserDao) NextUid() (string, error) {
user := &User{}
tx := dao.db.Model(user).Where("uid=(select MAX(uid) from `t_user`)").Take(user)
if tx.Error != nil {
if errors.Is(tx.Error, gorm.ErrRecordNotFound) {
return "10000", nil
}
return "", tx.Error
}
uid, err := strconv.Atoi(user.Uid)
if err != nil {
return "", err
}
return strconv.Itoa(uid + 1), nil
}