新增用户修改

This commit is contained in:
wucongxing 2023-06-29 17:54:15 +08:00
parent 98aa3263bb
commit a7ca868a5f
4 changed files with 190 additions and 0 deletions

View File

@ -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)
}

View File

@ -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:"岗位"`
}

View File

@ -127,5 +127,8 @@ func privateRouter(r *gin.Engine, api controller.Api) {
// 删除用户-批量
userGroup.DELETE("", api.User.DeleteUser)
// 修改用户
userGroup.PUT("/:user_id", api.User.PutUser)
}
}

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
}