:toda:
This commit is contained in:
126
service/user.go
Normal file
126
service/user.go
Normal file
@@ -0,0 +1,126 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"gorm.io/gorm"
|
||||
gdb "wireguard-ui/global/client"
|
||||
"wireguard-ui/global/constant"
|
||||
"wireguard-ui/http/param"
|
||||
"wireguard-ui/http/vo"
|
||||
"wireguard-ui/model"
|
||||
"wireguard-ui/utils"
|
||||
)
|
||||
|
||||
type user struct {
|
||||
*gorm.DB
|
||||
}
|
||||
|
||||
func User() user {
|
||||
return user{
|
||||
gdb.DB,
|
||||
}
|
||||
}
|
||||
|
||||
// CreateUser
|
||||
// @description: 创建用户
|
||||
// @receiver s
|
||||
// @param user
|
||||
// @return err
|
||||
func (s user) CreateUser(user *model.User) (err error) {
|
||||
// 更新
|
||||
if user.Id != "" {
|
||||
updates := map[string]any{
|
||||
"nickname": user.Nickname,
|
||||
"avatar": user.Avatar,
|
||||
"contact": user.Contact,
|
||||
"is_admin": user.IsAdmin,
|
||||
"status": user.Status,
|
||||
}
|
||||
|
||||
return s.Model(&model.User{}).Where("id = ?", user.Id).Updates(&updates).Error
|
||||
}
|
||||
|
||||
defaultPassword := utils.Password().GenerateHashPassword("admin123")
|
||||
if user.Password == "" { // 没有密码给一个默认密码
|
||||
user.Password = defaultPassword
|
||||
} else {
|
||||
user.Password = utils.Password().GenerateHashPassword(user.Password)
|
||||
}
|
||||
|
||||
// 没有头像就生成一个头像
|
||||
if user.Avatar == "" {
|
||||
user.Avatar, _ = utils.Avatar().GenerateAvatar(true)
|
||||
}
|
||||
|
||||
// 创建
|
||||
return s.Create(&user).Error
|
||||
}
|
||||
|
||||
// Delete
|
||||
// @description: 删除用户
|
||||
// @receiver s
|
||||
// @param id
|
||||
// @return error
|
||||
func (s user) Delete(id string) error {
|
||||
return s.Model(&model.User{}).Where("id = ?", id).Delete(&model.User{}).Error
|
||||
}
|
||||
|
||||
// List
|
||||
// @description: 用户列表
|
||||
// @receiver s
|
||||
// @param p
|
||||
// @return data
|
||||
// @return count
|
||||
// @return err
|
||||
func (s user) List(p param.Page) (data []vo.UserItem, count int64, err error) {
|
||||
if err = s.Model(&model.User{}).
|
||||
Scopes(Paginate(p.Current, p.Size)).
|
||||
Order("created_at DESC").
|
||||
Find(&data).
|
||||
Offset(-1).Limit(-1).
|
||||
Count(&count).Error; err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// GetUserByAccount
|
||||
// @description: 根据账户获取用户信息
|
||||
// @receiver s
|
||||
// @param id
|
||||
// @return data
|
||||
// @return err
|
||||
func (s user) GetUserByAccount(account string) (data vo.User, err error) {
|
||||
err = s.Model(&model.User{}).Where("account = ?", account).Take(&data).Error
|
||||
return
|
||||
}
|
||||
|
||||
// GetUserById
|
||||
// @description: 根据id获取用户信息
|
||||
// @receiver s
|
||||
// @param id
|
||||
// @return data
|
||||
// @return err
|
||||
func (s user) GetUserById(id string) (data vo.User, err error) {
|
||||
err = s.Model(&model.User{}).Where("id = ?", id).Take(&data).Error
|
||||
return
|
||||
}
|
||||
|
||||
// Status
|
||||
// @description: 修改用户状态
|
||||
// @receiver s
|
||||
// @param id
|
||||
// @return error
|
||||
func (s user) Status(id string, state constant.Status) error {
|
||||
return s.Model(&model.User{}).Where("id = ?", id).Update("status", state).Error
|
||||
}
|
||||
|
||||
// ChangePassword
|
||||
// @description: 修改密码
|
||||
// @receiver s
|
||||
// @param id
|
||||
// @param password
|
||||
// @return error
|
||||
func (s user) ChangePassword(id, password string) error {
|
||||
return s.Model(&model.User{}).Where("id = ?", id).Update("password", utils.Password().GenerateHashPassword(password)).Error
|
||||
}
|
||||
Reference in New Issue
Block a user