github.com/SupenBysz/gf-admin-community@v0.7.4/sys_controller/sys_user.go (about) 1 package sys_controller 2 3 import ( 4 "context" 5 "github.com/SupenBysz/gf-admin-community/api_v1" 6 "github.com/SupenBysz/gf-admin-community/api_v1/sys_api" 7 "github.com/SupenBysz/gf-admin-community/sys_model" 8 "github.com/SupenBysz/gf-admin-community/sys_model/sys_dao" 9 "github.com/SupenBysz/gf-admin-community/sys_model/sys_entity" 10 "github.com/SupenBysz/gf-admin-community/sys_model/sys_enum" 11 "github.com/SupenBysz/gf-admin-community/sys_service" 12 "github.com/SupenBysz/gf-admin-community/utility/funs" 13 "github.com/gogf/gf/v2/container/garray" 14 "github.com/gogf/gf/v2/frame/g" 15 "github.com/kysion/base-library/utility/base_funs" 16 "github.com/kysion/base-library/utility/kconv" 17 ) 18 19 // SysUser 鉴权 20 var SysUser = cSysUser{} 21 22 type cSysUser struct{} 23 24 // QueryUserList 获取用户|列表 25 func (c *cSysUser) QueryUserList(ctx context.Context, req *sys_api.QueryUserListReq) (*sys_model.SysUserListRes, error) { 26 return funs.CheckPermission(ctx, 27 func() (*sys_model.SysUserListRes, error) { 28 sessionUser := sys_service.SysSession().Get(ctx).JwtClaimsUser 29 return sys_service.SysUser().QueryUserList( 30 c.makeMore(ctx), 31 &req.SearchParams, 32 sessionUser.UnionMainId, 33 false, 34 ) 35 }, 36 sys_enum.User.PermissionType.List, 37 ) 38 } 39 40 // SetUserPermissionIds 设置用户权限 41 func (c *cSysUser) SetUserPermissionIds(ctx context.Context, req *sys_api.SetUserPermissionIdsReq) (api_v1.BoolRes, error) { 42 return funs.CheckPermission(ctx, 43 func() (api_v1.BoolRes, error) { 44 ret, err := sys_service.SysUser().SetUserPermissionIds( 45 ctx, 46 req.Id, 47 req.PermissionIds, 48 ) 49 return ret == true, err 50 }, 51 sys_enum.User.PermissionType.SetPermission, 52 ) 53 } 54 55 // GetUserPermissionIds 获取用户权限Ids 56 func (c *cSysUser) GetUserPermissionIds(ctx context.Context, req *sys_api.GetUserPermissionIdsReq) (api_v1.Int64ArrRes, error) { 57 return funs.CheckPermission(ctx, 58 func() (api_v1.Int64ArrRes, error) { 59 return sys_service.SysPermission().GetPermissionsByResource( 60 ctx, 61 req.Id, 62 ) 63 }, 64 sys_enum.User.PermissionType.SetPermission, 65 ) 66 } 67 68 // GetUserDetail 查看详情 69 func (c *cSysUser) GetUserDetail(ctx context.Context, req *sys_api.GetUserDetailReq) (*sys_api.UserInfoRes, error) { 70 return funs.CheckPermission(ctx, 71 func() (*sys_api.UserInfoRes, error) { 72 ret, err := sys_service.SysUser().GetUserDetail(c.makeMore(ctx), req.Id) 73 return kconv.Struct(ret, &sys_api.UserInfoRes{}), err 74 }, 75 sys_enum.User.PermissionType.ViewMoreDetail, 76 ) 77 } 78 79 // SetUserRoles 设置用户角色 80 func (c *cSysUser) SetUserRoles(ctx context.Context, req *sys_api.SetUserRolesReq) (res api_v1.BoolRes, err error) { 81 return funs.CheckPermission(ctx, 82 func() (api_v1.BoolRes, error) { 83 sessionUser := sys_service.SysSession().Get(ctx).JwtClaimsUser 84 ret, err := sys_service.SysUser().SetUserRoles( 85 ctx, 86 req.UserId, 87 req.RoleIds, 88 sessionUser.UnionMainId, 89 ) 90 return ret == true, err 91 }, 92 sys_enum.Role.PermissionType.SetMember, 93 ) 94 } 95 96 // ResetUserPassword 重置用户密码 97 func (c *cSysUser) ResetUserPassword(ctx context.Context, req *sys_api.ResetUserPasswordReq) (res api_v1.BoolRes, err error) { 98 return funs.CheckPermission(ctx, 99 func() (api_v1.BoolRes, error) { 100 ret, err := sys_service.SysUser().ResetUserPassword( 101 ctx, 102 req.Id, 103 req.Password, 104 req.ConfirmPassword, 105 ) 106 return ret == true, err 107 }, 108 sys_enum.User.PermissionType.ResetPassword, 109 ) 110 } 111 112 // SetUserState 设置用户状态 113 func (c *cSysUser) SetUserState(ctx context.Context, req *sys_api.SetUserStateReq) (res api_v1.BoolRes, err error) { 114 return funs.CheckPermission(ctx, 115 func() (api_v1.BoolRes, error) { 116 ret, err := sys_service.SysUser().SetUserState( 117 ctx, req.Id, sys_enum.User.State.New(req.State, ""), 118 ) 119 return ret == true, err 120 }, 121 sys_enum.User.PermissionType.SetState, 122 ) 123 } 124 125 // makeMore 是否订阅附加数据 126 func (c *cSysUser) makeMore(ctx context.Context) context.Context { 127 128 include := &garray.StrArray{} 129 if ctx.Value("include") == nil { 130 r := g.RequestFromCtx(ctx) 131 array := r.GetForm("include").Array() 132 arr := kconv.Struct(array, &[]string{}) 133 include = garray.NewStrArrayFrom(*arr) 134 } else { 135 array := ctx.Value("include") 136 arr := kconv.Struct(array, &[]string{}) 137 include = garray.NewStrArrayFrom(*arr) 138 } 139 140 if include.Contains("*") { 141 ctx = base_funs.AttrBuilder[sys_model.SysUser, *sys_entity.SysUserDetail](ctx, sys_dao.SysUser.Columns().Id) 142 } 143 144 if include.Contains("detail") { 145 ctx = base_funs.AttrBuilder[sys_model.SysUser, *sys_entity.SysUserDetail](ctx, sys_dao.SysUser.Columns().Id) 146 } 147 148 return ctx 149 }