github.com/SupenBysz/gf-admin-community@v0.7.4/sys_controller/sys_my.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/gogf/gf/v2/frame/g" 13 "github.com/gogf/gf/v2/util/gconv" 14 "github.com/kysion/base-library/base_model" 15 ) 16 17 // SysMy 公共我的模块 18 var SysMy = cSysMy{} 19 20 type cSysMy struct{} 21 22 // SetUsername 设置用户登陆名 23 func (c *cSysMy) SetUsername(ctx context.Context, req *sys_api.SetUsernameByIdReq) (api_v1.BoolRes, error) { 24 userId := sys_service.SysSession().Get(ctx).JwtClaimsUser.Id 25 26 result, err := sys_service.SysUser().SetUsername(ctx, req.NewUsername, userId) 27 return result == true, err 28 } 29 30 // UpdateUserPassword 修改密码 31 func (c *cSysMy) UpdateUserPassword(ctx context.Context, req *sys_api.UpdateUserPasswordReq) (api_v1.BoolRes, error) { 32 // 权限判断 33 if has, err := sys_service.SysPermission().CheckPermission(ctx, sys_enum.User.PermissionType.ChangePassword); has != true { 34 return false, err 35 } 36 37 // 获取到当前登录用户名称 38 user := sys_service.SysSession().Get(ctx).JwtClaimsUser 39 40 _, err := sys_service.SysUser().UpdateUserPassword(ctx, req.UpdateUserPassword, user.Id) 41 42 if err != nil { 43 return false, err 44 } 45 return true, nil 46 } 47 48 // SetUserMobile 设置用户登录手机号 49 func (c *cSysMy) SetUserMobile(ctx context.Context, req *sys_api.SetUserMobileReq) (api_v1.BoolRes, error) { 50 user := sys_service.SysSession().Get(ctx).JwtClaimsUser 51 52 result, err := sys_service.SysUser().SetUserMobile(ctx, req.Mobile, req.Captcha, req.Password, user.Id) 53 return result == true, err 54 } 55 56 // SetUserMail 设置用户登录邮箱 57 func (c *cSysMy) SetUserMail(ctx context.Context, req *sys_api.SetUserMailReq) (api_v1.BoolRes, error) { 58 user := sys_service.SysSession().Get(ctx).JwtClaimsUser 59 60 result, err := sys_service.SysUser().SetUserMail(ctx, req.OldMail, req.NewMail, req.Captcha, req.Password, user.Id) 61 return result == true, err 62 } 63 64 // MyPermission 我的权限 65 func (c *cSysMy) MyPermission(ctx context.Context, _ *sys_api.MyPermissionsReq) (*sys_model.MyPermissionListRes, error) { 66 user := sys_service.SysSession().Get(ctx).JwtClaimsUser 67 68 // 获取用户的权限ids 69 ids, err := sys_service.SysPermission().GetPermissionsByResource(ctx, gconv.String(user.Id)) 70 71 // 获取用户的权限list 72 result, err := sys_service.SysPermission().QueryPermissionList(ctx, base_model.SearchParams{ 73 Filter: append(make([]base_model.FilterInfo, 0), base_model.FilterInfo{ 74 Field: sys_dao.SysPermission.Columns().Id, 75 Where: "in", 76 Value: ids, 77 }), 78 }) 79 ret := sys_model.MyPermissionListRes{} 80 ret = result.Records 81 82 return &ret, err 83 } 84 85 // MyMenu 我的菜单 86 func (c *cSysMy) MyMenu(ctx context.Context, _ *sys_api.MyMenusReq) (sys_model.SysMenuTreeListRes, error) { 87 user := sys_service.SysSession().Get(ctx).JwtClaimsUser 88 // 菜单id = 权限id 89 90 // 获取用户的菜单权限ids 91 if (user.Type & sys_enum.User.Type.SuperAdmin.Code()) == sys_enum.User.Type.SuperAdmin.Code() { 92 tree, _ := sys_service.SysMenu().GetMenuTree(ctx, 0) 93 g.Dump(tree) 94 95 return tree, nil 96 } 97 98 ids, err := sys_service.SysPermission().GetPermissionsByResource(ctx, gconv.String(user.Id)) // ids 7 99 ////pId := sys_service.Casbin().GetAllNamedRoles(gconv.String(user.Id)) 100 //pId, err := sys_service.Casbin().Enforcer().GetRoleManager().GetRoles(gconv.String(user.Id), sys_consts.CasbinDomain) 101 102 // 菜单列表 103 //menuList, err := sys_service.SysMenu().GetMenuList(ctx, 0, true) 104 105 //var pids []int64 106 // 107 //for _, s := range pId { 108 // if gstr.IsNumeric(s) { 109 // pids = append(pids, gconv.Int64(s)) 110 // } 111 // 112 //} 113 //ids = append(ids, pids...) 114 115 // 通过菜单列表构建菜单树 116 menuTree, _ := sys_service.SysMenu().MakeMenuTree(ctx, 0, func(ctx context.Context, cruuentMenu *sys_entity.SysMenu) bool { 117 for _, id := range ids { 118 if id == cruuentMenu.Id { 119 return true 120 } 121 } 122 return false 123 }) 124 125 //var parentMenuList []sys_entity.SysMenu 126 //sys_dao.SysMenu.Ctx(ctx).Where(sys_dao.SysMenu.Columns().ParentId, 0).WhereIn(sys_dao.SysMenu.Columns().Id, ids).Scan(&parentMenuList) 127 // 128 //for _, parentMenu := range parentMenuList { 129 // tree, _ := sys_service.SysMenu().MakeMenuTree(ctx, parentMenu.Id, ids...) 130 // menuTree = append(menuTree, tree...) 131 //} 132 133 return menuTree, err 134 } 135 136 // 最新的权限id 137 138 // 基于现有的菜单List,构建权限树 139 // 1.每一个id的权限树拉出来 (根据标识符排序,升序) 140 // 2.for 递归 141 // 142 //func (c *cSysMy) makeTree(ctx context.Context, list *[]sys_entity.SysPermission, parent *sys_entity.SysPermission, parentTree *sys_model.SysMenuTreeRes, parentTreeList *[]*sys_model.SysMenuTreeRes) []*sys_model.SysMenuTreeRes { // (上下文,随着减少的list权限节点,父级parent,父级菜单) 143 // if list == nil || len(*list) <= 0 { 144 // return nil 145 // } 146 // 147 // currentTree := make([]*sys_model.SysMenuTreeRes, 0) 148 // 149 // for _, permission := range *list { 150 // // 菜单信息 151 // menu, err := sys_service.SysMenu().GetMenuById(ctx, permission.Id) 152 // if err != nil { 153 // continue 154 // } 155 // 156 // // 同级节点 157 // if parent == nil || parent.Identifier == permission.Identifier { 158 // currentTree = append(currentTree, &sys_model.SysMenuTreeRes{ 159 // SysMenu: menu, 160 // Children: nil, 161 // }) 162 // continue 163 // } 164 // 165 // // 情况1:新节点 166 // if !gstr.Contains(parent.Identifier, permission.Identifier) { // 父级标识符是否包含当前的标识符,包含说明是子节点,不包含说明是新节点 167 // *parentTreeList = append(*parentTreeList, &sys_model.SysMenuTreeRes{ 168 // SysMenu: menu, 169 // Children: nil, 170 // }) 171 // } else { 172 // // 情况2:子节点 173 // parentTree.Children = append(parentTree.Children, &sys_model.SysMenuTreeRes{ 174 // SysMenu: menu, 175 // Children: nil, 176 // }) 177 // } 178 // } 179 // 180 //}