package backend import ( "context" operationPb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/operation" "gitee.com/xuyiping_admin/pkg/logger/zaplog" "gitee.com/xuyiping_admin/pkg/xerr" "go.uber.org/zap" "kpt-calf-feed/model" "net/http" ) type SystemAllPermissionsList struct { MenuList []*model.SystemMenuPermissions } func (s *StoreEntry) AllPermissionsListToRolePermissions(req *SystemAllPermissionsList) *operationPb.RolePermissionsList { res := &operationPb.RolePermissionsList{ Code: http.StatusOK, Msg: "ok", Data: &operationPb.RolePermissionsData{ MobileList: make([]uint32, 0), MenuList: make([]uint32, 0), PastureList: make([]uint32, 0), }, } for _, v := range req.MenuList { res.Data.MenuList = append(res.Data.MenuList, uint32(v.MenuId)) } return res } // SystemUserMenuPermissionsUnDuplicate 角色权限去重 func (s *SystemAllPermissionsList) SystemUserMenuPermissionsUnDuplicate() { newMenuList := make([]*model.SystemMenuPermissions, 0) seen := make(map[int64]bool) for _, menu := range s.MenuList { if _, ok := seen[menu.MenuId]; !ok { newMenuList = append(newMenuList, menu) } } s.MenuList = newMenuList } // GetSystemAllPermissionsList 获取用户相关权限 func (s *StoreEntry) GetSystemAllPermissionsList(ctx context.Context, roleId int64) *SystemAllPermissionsList { systemAllPermissionsList := &SystemAllPermissionsList{ MenuList: make([]*model.SystemMenuPermissions, 0), } menuList := make([]*model.SystemMenuPermissions, 0) if err := s.DB.Where("role_id = ? and is_show = ?", roleId, operationPb.IsShow_OK).Find(&menuList).Error; err != nil { zaplog.Error("SystemMenuPermissions", zap.Any("Err", err)) } systemAllPermissionsList.MenuList = menuList return systemAllPermissionsList } // GetMenuList 获取****** func (s *StoreEntry) GetMenuList(ctx context.Context, req []*model.SystemMenuPermissions) ([]*model.SystemMenu, error) { ids := make([]int64, 0) for _, v := range req { ids = append(ids, v.MenuId) } menuList := make([]*model.SystemMenu, 0) if len(ids) > 0 { if err := s.DB.Where("is_show = ?", operationPb.IsShow_OK).Find(&menuList, ids).Error; err != nil { return nil, xerr.WithStack(err) } } return menuList, nil }