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  //}