新增用户修改
This commit is contained in:
parent
98aa3263bb
commit
a7ca868a5f
@ -133,3 +133,40 @@ func (r *User) DeleteUser(c *gin.Context) {
|
||||
}
|
||||
responses.Ok(c)
|
||||
}
|
||||
|
||||
// PutUser 修改用户
|
||||
func (r *User) PutUser(c *gin.Context) {
|
||||
UserRequest := requests.UserRequest{}
|
||||
if err := c.ShouldBind(&UserRequest.PutUser); err != nil {
|
||||
responses.FailWithMessage(err.Error(), c)
|
||||
return
|
||||
}
|
||||
|
||||
// 参数验证
|
||||
if err := global.Validate.Struct(UserRequest.PutUser); err != nil {
|
||||
responses.FailWithMessage(utils.Translate(err), c)
|
||||
return
|
||||
}
|
||||
|
||||
id := c.Param("user_id")
|
||||
if id == "" {
|
||||
responses.FailWithMessage("缺少参数", c)
|
||||
return
|
||||
}
|
||||
|
||||
// 将 id 转换为 int64 类型
|
||||
userId, err := strconv.ParseInt(id, 10, 64)
|
||||
if err != nil {
|
||||
responses.Fail(c)
|
||||
return
|
||||
}
|
||||
|
||||
// 业务处理
|
||||
userService := service.UserService{}
|
||||
_, err = userService.PutUser(c, userId, UserRequest.PutUser)
|
||||
if err != nil {
|
||||
responses.FailWithMessage(err.Error(), c)
|
||||
return
|
||||
}
|
||||
responses.Ok(c)
|
||||
}
|
||||
|
||||
@ -4,6 +4,7 @@ type UserRequest struct {
|
||||
GetUserPage // 获取用户列表-分页
|
||||
AddUser // 新增用户
|
||||
DeleteUser // 删除用户-批量
|
||||
PutUser // 修改用户
|
||||
}
|
||||
|
||||
// GetUserPage 获取用户列表-分页
|
||||
@ -40,3 +41,18 @@ type AddUser struct {
|
||||
type DeleteUser struct {
|
||||
UserIds []string `json:"user_ids" form:"user_ids" validate:"required" label:"用户id"`
|
||||
}
|
||||
|
||||
// PutUser 修改用户
|
||||
type PutUser struct {
|
||||
Access string `json:"access" form:"access" validate:"required" label:"账号"`
|
||||
IsDeleted int `json:"is_deleted" form:"is_deleted" validate:"oneof=0 1" label:"删除状态"` // 是否被删除(0:否 1:是)
|
||||
IsDisabled int `json:"is_disabled" form:"is_disabled" validate:"oneof=0 1" label:"禁用状态"` // 是否被禁用(0:否 1:是)
|
||||
NickName string `json:"nick_name" form:"nick_name" validate:"required" label:"昵称"`
|
||||
Phone string `json:"phone" form:"phone" validate:"required" label:"手机号"`
|
||||
Avatar string `json:"avatar" form:"avatar" label:"头像"`
|
||||
Sex int `json:"sex" form:"sex" validate:"required,oneof=1 2" label:"性别"` // (1:男 2:女)
|
||||
Email string `json:"email" form:"email" label:"邮箱"`
|
||||
RoleID string `json:"role_id" form:"role_id" validate:"required" label:"角色"`
|
||||
DeptID string `json:"dept_id" form:"dept_id" validate:"required" label:"部门"`
|
||||
PostID string `json:"post_id" form:"post_id" validate:"required" label:"岗位"`
|
||||
}
|
||||
|
||||
@ -127,5 +127,8 @@ func privateRouter(r *gin.Engine, api controller.Api) {
|
||||
|
||||
// 删除用户-批量
|
||||
userGroup.DELETE("", api.User.DeleteUser)
|
||||
|
||||
// 修改用户
|
||||
userGroup.PUT("/:user_id", api.User.PutUser)
|
||||
}
|
||||
}
|
||||
|
||||
@ -202,3 +202,137 @@ func (r *UserService) DeleteUser(c *gin.Context, DeleteUserRequest requests.Dele
|
||||
|
||||
return true, nil
|
||||
}
|
||||
|
||||
// PutUser 修改用户
|
||||
func (r *UserService) PutUser(c *gin.Context, requestUserId int64, putUserRequest requests.PutUser) (bool, error) {
|
||||
// 获取当前登陆用户数据
|
||||
loginUserId := c.GetInt64("UserId")
|
||||
if loginUserId == 0 {
|
||||
return false, errors.New("数据错误")
|
||||
}
|
||||
|
||||
adminUserDao := dao.AdminUserDao{}
|
||||
loginAdminUser, err := adminUserDao.GetAdminUserFirstById(loginUserId)
|
||||
if err != nil || loginAdminUser == nil {
|
||||
return false, errors.New("用户数据错误")
|
||||
}
|
||||
|
||||
if loginUserId == requestUserId && putUserRequest.IsDisabled == 1 {
|
||||
return false, errors.New("不可把自己置为禁用")
|
||||
}
|
||||
|
||||
if loginUserId == requestUserId && putUserRequest.IsDeleted == 1 {
|
||||
return false, errors.New("不可把自己置为删除")
|
||||
}
|
||||
|
||||
// 获取需修改用户数据
|
||||
adminUser, err := adminUserDao.GetAdminUserFirstById(requestUserId)
|
||||
if err != nil || adminUser == nil {
|
||||
return false, errors.New("用户数据错误")
|
||||
}
|
||||
|
||||
// 获取当前登陆用户角色数据
|
||||
loginRoleId := c.GetInt64("RoleId")
|
||||
if loginRoleId == 0 {
|
||||
return false, errors.New("数据错误")
|
||||
}
|
||||
|
||||
adminRoleDao := dao.AdminRoleDao{}
|
||||
adminRole, err := adminRoleDao.GetAdminRoleFirstById(loginRoleId)
|
||||
if err != nil || adminRole == nil {
|
||||
return false, errors.New("非法操作")
|
||||
}
|
||||
|
||||
if adminRole.IsAdmin == 0 && loginUserId != requestUserId {
|
||||
return false, errors.New("普通用户只可修改自己的用户数据")
|
||||
}
|
||||
|
||||
if putUserRequest.Access != adminUser.Access {
|
||||
// 检测账号名
|
||||
res, err := adminUserDao.GetAdminUserFirstByAccess(putUserRequest.Access)
|
||||
if res != nil || err != nil {
|
||||
return false, errors.New("账号名重复")
|
||||
}
|
||||
}
|
||||
|
||||
if putUserRequest.Phone != adminUser.Phone {
|
||||
// 检测手机号
|
||||
res, err := adminUserDao.GetAdminUserFirstByPhone(putUserRequest.Phone)
|
||||
if res != nil || err != nil {
|
||||
return false, errors.New("手机号重复")
|
||||
}
|
||||
}
|
||||
|
||||
// 检测角色
|
||||
roleID, err := strconv.ParseInt(putUserRequest.RoleID, 10, 64)
|
||||
if err != nil {
|
||||
return false, errors.New("角色错误")
|
||||
}
|
||||
|
||||
if roleID != adminUser.RoleID {
|
||||
res, err := adminRoleDao.GetAdminRoleFirstById(roleID)
|
||||
if err != nil || res == nil {
|
||||
return false, errors.New("角色错误")
|
||||
}
|
||||
}
|
||||
|
||||
// 检测部门
|
||||
deptID, err := strconv.ParseInt(putUserRequest.DeptID, 10, 64)
|
||||
if err != nil {
|
||||
return false, errors.New("部门错误")
|
||||
}
|
||||
|
||||
if deptID != adminUser.DeptID {
|
||||
adminDeptDao := dao.AdminDeptDao{}
|
||||
res, err := adminDeptDao.GetAdminDeptFirstById(deptID)
|
||||
if err != nil || res == nil {
|
||||
return false, errors.New("部门错误")
|
||||
}
|
||||
}
|
||||
|
||||
// 检测岗位
|
||||
postID, err := strconv.ParseInt(putUserRequest.PostID, 10, 64)
|
||||
if err != nil {
|
||||
return false, errors.New("岗位错误")
|
||||
}
|
||||
|
||||
if postID != adminUser.PostID {
|
||||
adminPostDao := dao.AdminPostDao{}
|
||||
res, err := adminPostDao.GetAdminPostFirstById(postID)
|
||||
if err != nil || res == nil {
|
||||
return false, errors.New("岗位错误")
|
||||
}
|
||||
}
|
||||
|
||||
// 开始事务
|
||||
tx := global.Db.Begin()
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
tx.Rollback()
|
||||
}
|
||||
}()
|
||||
|
||||
// 修改角色
|
||||
data := make(map[string]interface{})
|
||||
data["access"] = putUserRequest.Access
|
||||
data["is_deleted"] = putUserRequest.IsDeleted
|
||||
data["is_disabled"] = putUserRequest.IsDisabled
|
||||
data["nick_name"] = putUserRequest.NickName
|
||||
data["phone"] = putUserRequest.Phone
|
||||
data["avatar"] = putUserRequest.Avatar
|
||||
data["sex"] = putUserRequest.Sex
|
||||
data["email"] = putUserRequest.Email
|
||||
data["role_id"] = roleID
|
||||
data["dept_id"] = deptID
|
||||
data["post_id"] = postID
|
||||
data["update_by"] = loginUserId
|
||||
err = adminUserDao.EditAdminUserById(tx, requestUserId, data)
|
||||
if err != nil {
|
||||
tx.Rollback()
|
||||
return false, errors.New("修改失败")
|
||||
}
|
||||
|
||||
tx.Commit()
|
||||
|
||||
return true, nil
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user