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  }