diff --git a/api/v1/system/sys_user.go b/api/v1/system/sys_user.go index 88ee32c..fa69549 100644 --- a/api/v1/system/sys_user.go +++ b/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 { +} diff --git a/internal/app/system/controller/sys_user.go b/internal/app/system/controller/sys_user.go index 55e8a86..c65270d 100644 --- a/internal/app/system/controller/sys_user.go +++ b/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 +} diff --git a/internal/app/system/service/sys_user.go b/internal/app/system/service/sys_user.go index 15a2bf4..b2b9edc 100644 --- a/internal/app/system/service/sys_user.go +++ b/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 +}