🐛修复了一些bug
This commit is contained in:
parent
eed038bf01
commit
e216725096
@ -166,8 +166,8 @@ func (user) Save(c *gin.Context) {
|
|||||||
Account: p.Account,
|
Account: p.Account,
|
||||||
Email: p.Email,
|
Email: p.Email,
|
||||||
Password: p.Password,
|
Password: p.Password,
|
||||||
IsAdmin: p.IsAdmin,
|
IsAdmin: *p.IsAdmin,
|
||||||
Status: p.Status,
|
Status: *p.Status,
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
utils.GinResponse(c).FailedWithMsg(err.Error())
|
utils.GinResponse(c).FailedWithMsg(err.Error())
|
||||||
return
|
return
|
||||||
@ -225,3 +225,28 @@ func (user) ChangeUserState(c *gin.Context) {
|
|||||||
|
|
||||||
utils.GinResponse(c).OK()
|
utils.GinResponse(c).OK()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeleteUser
|
||||||
|
// @description: 删除用户
|
||||||
|
// @receiver user
|
||||||
|
// @param c
|
||||||
|
func (user) DeleteUser(c *gin.Context) {
|
||||||
|
var id = c.Param("id")
|
||||||
|
if id == "" || id == "undefined" {
|
||||||
|
utils.GinResponse(c).FailedWithMsg("参数错误")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
loginUser, ok := c.Get("user")
|
||||||
|
if !ok {
|
||||||
|
utils.GinResponse(c).FailedWithMsg("获取信息失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := repository.User().DeleteUser(loginUser.(*entity.User), id); err != nil {
|
||||||
|
utils.GinResponse(c).FailedWithErr("操作失败", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
utils.GinResponse(c).OK()
|
||||||
|
}
|
||||||
|
@ -14,14 +14,14 @@ type Login struct {
|
|||||||
// SaveUser
|
// SaveUser
|
||||||
// @description: 新增/编辑用户信息
|
// @description: 新增/编辑用户信息
|
||||||
type SaveUser struct {
|
type SaveUser struct {
|
||||||
ID string `json:"id" form:"id" binding:"omitempty"`
|
ID string `json:"id" form:"id" binding:"omitempty"`
|
||||||
Name string `json:"name" form:"name" binding:"required"` // 用户名
|
Name string `json:"name" form:"name" binding:"required"` // 用户名
|
||||||
Account string `json:"account" form:"account" binding:"required"` // 账号 唯一
|
Account string `json:"account" form:"account" binding:"required"` // 账号 唯一
|
||||||
Avatar string `json:"avatar" form:"avatar" binding:"omitempty"` // 头像
|
Avatar string `json:"avatar" form:"avatar" binding:"omitempty"` // 头像
|
||||||
Email string `json:"email" form:"email" binding:"omitempty"` // 联系邮箱
|
Email string `json:"email" form:"email" binding:"omitempty"` // 联系邮箱
|
||||||
Password string `json:"password" form:"password" binding:"omitempty"` // 密码
|
Password string `json:"password" form:"password" binding:"omitempty"` // 密码
|
||||||
IsAdmin constant.UserType `json:"isAdmin" form:"isAdmin" binding:"omitempty"` // 是否为管理员 0 - 否 | 1 - 是
|
IsAdmin *constant.UserType `json:"isAdmin" form:"isAdmin" binding:"omitempty"` // 是否为管理员 0 - 否 | 1 - 是
|
||||||
Status constant.UserStatus `json:"status" form:"status" binding:"required"` // 用户状态 0 - 禁用 | 1 - 正常
|
Status *constant.UserStatus `json:"status" form:"status" binding:"required"` // 用户状态 0 - 禁用 | 1 - 正常
|
||||||
}
|
}
|
||||||
|
|
||||||
// ChangePassword
|
// ChangePassword
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
package repository
|
package repository
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
"wireguard-dashboard/client"
|
"wireguard-dashboard/client"
|
||||||
|
"wireguard-dashboard/constant"
|
||||||
"wireguard-dashboard/http/param"
|
"wireguard-dashboard/http/param"
|
||||||
"wireguard-dashboard/model/entity"
|
"wireguard-dashboard/model/entity"
|
||||||
"wireguard-dashboard/model/vo"
|
"wireguard-dashboard/model/vo"
|
||||||
@ -28,7 +30,7 @@ func User() user {
|
|||||||
// @return err
|
// @return err
|
||||||
func (r user) List(p param.UserList) (data []vo.User, total int64, err error) {
|
func (r user) List(p param.UserList) (data []vo.User, total int64, err error) {
|
||||||
err = r.Model(&entity.User{}).Scopes(utils.Page(p.Current, p.Size)).
|
err = r.Model(&entity.User{}).Scopes(utils.Page(p.Current, p.Size)).
|
||||||
Select("id", "created_at", "updated_at", "avatar", "name", "account", "is_admin", "status").Order("created_at DESC").
|
Select("id", "created_at", "updated_at", "avatar", "email", "name", "account", "is_admin", "status").Order("created_at DESC").
|
||||||
Find(&data).Offset(-1).Limit(-1).Count(&total).Error
|
Find(&data).Offset(-1).Limit(-1).Count(&total).Error
|
||||||
|
|
||||||
return
|
return
|
||||||
@ -110,3 +112,31 @@ func (r user) ChangePassword(p param.ChangePassword, userId string) (err error)
|
|||||||
func (r user) ChangeUserState(p param.ChangeUserState) (err error) {
|
func (r user) ChangeUserState(p param.ChangeUserState) (err error) {
|
||||||
return r.Model(&entity.User{}).Where("id = ?", p.ID).Update("status", p.Status).Error
|
return r.Model(&entity.User{}).Where("id = ?", p.ID).Update("status", p.Status).Error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeleteUser
|
||||||
|
// @description: 删除管理员
|
||||||
|
// @receiver r
|
||||||
|
// @param id
|
||||||
|
// @return err
|
||||||
|
func (r user) DeleteUser(loginUser *entity.User, id string) (err error) {
|
||||||
|
// 不能删除自身以及超级管理员,超级管理员只有 名为admin的管理员可以删除
|
||||||
|
userInfo, err := r.GetUserById(id)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if userInfo.Id == loginUser.Id {
|
||||||
|
return errors.New("不可删除自己")
|
||||||
|
}
|
||||||
|
|
||||||
|
if userInfo.IsAdmin == constant.SuperAdmin && loginUser.Account != "admin" {
|
||||||
|
return errors.New("非无敌管理员不可清空超管")
|
||||||
|
}
|
||||||
|
|
||||||
|
if userInfo.Account == "admin" {
|
||||||
|
return errors.New("不可删除宇宙第一无敌管理员,删了你就G了!")
|
||||||
|
}
|
||||||
|
|
||||||
|
// 可删除
|
||||||
|
return r.Model(&entity.User{}).Where("id = ?", id).Delete(userInfo).Error
|
||||||
|
}
|
||||||
|
@ -22,5 +22,6 @@ func UserApi(r *gin.RouterGroup) {
|
|||||||
userApi.POST("change-password", api.UserApi().ChangePassword) // 更改密码
|
userApi.POST("change-password", api.UserApi().ChangePassword) // 更改密码
|
||||||
userApi.GET("list", middleware.Permission(), api.UserApi().List) // 用户列表
|
userApi.GET("list", middleware.Permission(), api.UserApi().List) // 用户列表
|
||||||
userApi.PUT("change-status", middleware.Permission(), api.UserApi().ChangeUserState) // 变更状态
|
userApi.PUT("change-status", middleware.Permission(), api.UserApi().ChangeUserState) // 变更状态
|
||||||
|
userApi.DELETE("delete/:id", middleware.Permission(), api.UserApi().DeleteUser) // 删除用户
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -77,7 +77,7 @@ func (s Script) CreateSuperAdmin() error {
|
|||||||
if err = repository.User().Save(&entity.User{
|
if err = repository.User().Save(&entity.User{
|
||||||
Avatar: avatarPath,
|
Avatar: avatarPath,
|
||||||
Name: "超牛管理员",
|
Name: "超牛管理员",
|
||||||
Account: "Admin",
|
Account: "admin",
|
||||||
Email: "",
|
Email: "",
|
||||||
Password: "admin123",
|
Password: "admin123",
|
||||||
IsAdmin: constant.SuperAdmin,
|
IsAdmin: constant.SuperAdmin,
|
||||||
|
@ -22,7 +22,7 @@ func Avatar() avatar {
|
|||||||
func (avatar) GenerateAvatar() (path string, err error) {
|
func (avatar) GenerateAvatar() (path string, err error) {
|
||||||
rand.New(rand.NewSource(time.Now().UnixNano()))
|
rand.New(rand.NewSource(time.Now().UnixNano()))
|
||||||
r := client.HttpClient.R()
|
r := client.HttpClient.R()
|
||||||
result, err := r.Get(fmt.Sprintf("https://api.dicebear.com/7.x/croodles/png?seed=%d&scale=100&size=80&clip=true&randomizeIds=true&beard=variant01,variant02,variant03&"+
|
result, err := r.Get(fmt.Sprintf("https://api.dicebear.com/7.x/croodles/png?seed=%d&scale=120&size=200&clip=true&randomizeIds=true&beard=variant01,variant02,variant03&"+
|
||||||
"eyes=variant01,variant02,variant03,variant04,variant05,variant06,variant07,variant08,variant09,variant10,variant11,variant12&mustache=variant01,variant02,variant03&"+
|
"eyes=variant01,variant02,variant03,variant04,variant05,variant06,variant07,variant08,variant09,variant10,variant11,variant12&mustache=variant01,variant02,variant03&"+
|
||||||
"topColor=000000,0fa958,699bf7", rand.Uint32()))
|
"topColor=000000,0fa958,699bf7", rand.Uint32()))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
Loading…
Reference in New Issue
Block a user