新增用户修改

This commit is contained in:
2023-06-29 17:54:15 +08:00
parent 98aa3263bb
commit a7ca868a5f
4 changed files with 190 additions and 0 deletions
+134
View File
@@ -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
}