新增用户修改
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user