Feat: edit/add users
This commit is contained in:
parent
38161250e8
commit
19c70f8cfc
3 changed files with 91 additions and 0 deletions
|
@ -282,3 +282,25 @@ func AdminListUser(c *gin.Context) {
|
|||
c.JSON(200, ErrorResponse(err))
|
||||
}
|
||||
}
|
||||
|
||||
// AdminAddUser 新建用户组
|
||||
func AdminAddUser(c *gin.Context) {
|
||||
var service admin.AddUserService
|
||||
if err := c.ShouldBindJSON(&service); err == nil {
|
||||
res := service.Add()
|
||||
c.JSON(200, res)
|
||||
} else {
|
||||
c.JSON(200, ErrorResponse(err))
|
||||
}
|
||||
}
|
||||
|
||||
// AdminGetUser 获取用户详情
|
||||
func AdminGetUser(c *gin.Context) {
|
||||
var service admin.UserService
|
||||
if err := c.ShouldBindUri(&service); err == nil {
|
||||
res := service.Get()
|
||||
c.JSON(200, res)
|
||||
} else {
|
||||
c.JSON(200, ErrorResponse(err))
|
||||
}
|
||||
}
|
||||
|
|
|
@ -369,6 +369,10 @@ func InitMasterRouter() *gin.Engine {
|
|||
{
|
||||
// 列出用户
|
||||
user.POST("list", controllers.AdminListUser)
|
||||
// 获取用户
|
||||
user.GET(":id", controllers.AdminGetUser)
|
||||
// 创建/保存用户
|
||||
user.POST("", controllers.AdminAddUser)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -3,8 +3,64 @@ package admin
|
|||
import (
|
||||
model "github.com/HFO4/cloudreve/models"
|
||||
"github.com/HFO4/cloudreve/pkg/serializer"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// AddUserService 用户添加服务
|
||||
type AddUserService struct {
|
||||
User model.User `json:"User" binding:"required"`
|
||||
Password string `json:"password"`
|
||||
}
|
||||
|
||||
// UserService 用户ID服务
|
||||
type UserService struct {
|
||||
ID uint `uri:"id" json:"id" binding:"required"`
|
||||
}
|
||||
|
||||
// Get 获取用户详情
|
||||
func (service *UserService) Get() serializer.Response {
|
||||
group, err := model.GetUserByID(service.ID)
|
||||
if err != nil {
|
||||
return serializer.Err(serializer.CodeNotFound, "用户不存在", err)
|
||||
}
|
||||
|
||||
return serializer.Response{Data: group}
|
||||
}
|
||||
|
||||
// Add 添加用户
|
||||
func (service *AddUserService) Add() serializer.Response {
|
||||
if service.User.ID > 0 {
|
||||
|
||||
user, _ := model.GetUserByID(service.User.ID)
|
||||
if service.Password != "" {
|
||||
user.SetPassword(service.Password)
|
||||
}
|
||||
|
||||
// 只更新必要字段
|
||||
user.Nick = service.User.Nick
|
||||
user.Email = service.User.Email
|
||||
user.GroupID = service.User.GroupID
|
||||
user.Status = service.User.Status
|
||||
user.Score = service.User.Score
|
||||
|
||||
// 检查愚蠢操作
|
||||
if user.ID == 1 && user.GroupID != 1 {
|
||||
return serializer.ParamErr("无法更改初始用户的用户组", nil)
|
||||
}
|
||||
|
||||
if err := model.DB.Save(&user).Error; err != nil {
|
||||
return serializer.ParamErr("用户保存失败", err)
|
||||
}
|
||||
} else {
|
||||
service.User.SetPassword(service.Password)
|
||||
if err := model.DB.Create(&service.User).Error; err != nil {
|
||||
return serializer.ParamErr("用户组添加失败", err)
|
||||
}
|
||||
}
|
||||
|
||||
return serializer.Response{Data: service.User.ID}
|
||||
}
|
||||
|
||||
// Users 列出用户
|
||||
func (service *AdminListService) Users() serializer.Response {
|
||||
var res []model.User
|
||||
|
@ -19,6 +75,15 @@ func (service *AdminListService) Users() serializer.Response {
|
|||
tx = tx.Where(k+" = ?", v)
|
||||
}
|
||||
|
||||
if len(service.Searches) > 0 {
|
||||
search := ""
|
||||
for k, v := range service.Searches {
|
||||
search += (k + " like '%" + v + "%' OR ")
|
||||
}
|
||||
search = strings.TrimSuffix(search, " OR ")
|
||||
tx = tx.Where(search)
|
||||
}
|
||||
|
||||
// 计算总数用于分页
|
||||
tx.Count(&total)
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue