Kaynağa Gözat

用户状态设置、删除

yxh 4 yıl önce
ebeveyn
işleme
988d03bccf

+ 18 - 0
api/v1/system/sys_user.go

@@ -117,3 +117,21 @@ type UserResetPwdReq struct {
 
 type UserResetPwdRes struct {
 }
+
+// UserStatusReq 设置用户状态参数
+type UserStatusReq struct {
+	g.Meta     `path:"/user/setStatus" tags:"用户管理" method:"put" summary:"设置用户状态"`
+	Id         uint64 `p:"userId" v:"required#用户id不能为空"`
+	UserStatus uint   `p:"status" v:"required#用户状态不能为空"`
+}
+
+type UserStatusRes struct {
+}
+
+type UserDeleteReq struct {
+	g.Meta `path:"/user/delete" tags:"用户管理" method:"delete" summary:"删除用户"`
+	Ids    []int `p:"ids"`
+}
+
+type UserDeleteRes struct {
+}

+ 14 - 0
internal/app/system/controller/sys_user.go

@@ -143,12 +143,26 @@ func (c *userController) GetEditUser(ctx context.Context, req *system.UserGetEdi
 	return
 }
 
+// Edit 修改用户
 func (c *userController) Edit(ctx context.Context, req *system.UserEditReq) (res *system.UserEditRes, err error) {
 	err = service.User().Edit(ctx, req)
 	return
 }
 
+// ResetPwd 重置密码
 func (c *userController) ResetPwd(ctx context.Context, req *system.UserResetPwdReq) (res *system.UserResetPwdRes, err error) {
 	err = service.User().ResetUserPwd(ctx, req)
 	return
 }
+
+// SetStatus 修改用户状态
+func (c *userController) SetStatus(ctx context.Context, req *system.UserStatusReq) (res *system.UserStatusRes, err error) {
+	err = service.User().ChangeUserStatus(ctx, req)
+	return
+}
+
+// Delete 删除用户
+func (c *userController) Delete(ctx context.Context, req *system.UserDeleteReq) (res *system.UserDeleteRes, err error) {
+	err = service.User().Delete(ctx, req.Ids)
+	return
+}

+ 31 - 0
internal/app/system/service/sys_user.go

@@ -42,6 +42,8 @@ type IUser interface {
 	GetEditUser(ctx context.Context, id uint64) (res *system.UserGetEditRes, err error)
 	Edit(ctx context.Context, req *system.UserEditReq) (err error)
 	ResetUserPwd(ctx context.Context, req *system.UserResetPwdReq) (err error)
+	ChangeUserStatus(ctx context.Context, req *system.UserStatusReq) (err error)
+	Delete(ctx context.Context, ids []int) (err error)
 }
 
 type userImpl struct{}
@@ -593,3 +595,32 @@ func (s *userImpl) ResetUserPwd(ctx context.Context, req *system.UserResetPwdReq
 	})
 	return
 }
+
+func (s *userImpl) ChangeUserStatus(ctx context.Context, req *system.UserStatusReq) (err error) {
+	err = g.Try(func() {
+		_, err = dao.SysUser.Ctx(ctx).WherePri(req.Id).Update(do.SysUser{UserStatus: req.UserStatus})
+		liberr.ErrIsNil(ctx, err, "设置用户状态失败")
+	})
+	return
+}
+
+// Delete 删除用户
+func (s *userImpl) Delete(ctx context.Context, ids []int) (err error) {
+	err = g.DB().Transaction(ctx, func(ctx context.Context, tx *gdb.TX) error {
+		err = g.Try(func() {
+			_, err = dao.SysUser.Ctx(ctx).TX(tx).Where(dao.SysUser.Columns().Id+" in(?)", ids).Delete()
+			liberr.ErrIsNil(ctx, err, "删除用户失败")
+			//删除对应权限
+			enforcer, e := commonService.CasbinEnforcer(ctx)
+			liberr.ErrIsNil(ctx, e)
+			for _, v := range ids {
+				enforcer.RemoveFilteredGroupingPolicy(0, gconv.String(v))
+			}
+			//删除用户对应的岗位
+			_, err = dao.SysUserPost.Ctx(ctx).TX(tx).Delete(dao.SysUserPost.Columns().UserId+" in (?)", ids)
+			liberr.ErrIsNil(ctx, err, "删除用户的岗位失败")
+		})
+		return err
+	})
+	return
+}