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