package service import ( "admin/apps/game/api" "admin/apps/game/domain/entity" "admin/apps/game/model/dto" "admin/internal/consts" "admin/internal/permission" "sort" ) func (svc *Service) GetRoutes(req *api.GetRoutesReq) (*api.GetRoutesRsp, error) { rsp := &api.GetRoutesRsp{} rsp.Projects = make([]*api.ProjectInitInfo, 0) projects, err := svc.GetProjectList() if err != nil { return nil, err } for _, project := range projects { projectDto := &api.ProjectInitInfo{ ProjectId: project.Po.ID, ProjectName: project.Po.Name, } for _, v := range svc.GetSupportResourcesList(req.Permissions) { if v.Resource == consts.ResourcesName_Project { continue } permitV := &api.ResourceInitInfo{ Resource: v.Resource, Desc: v.Desc, ShowMethods: make([]string, 0), MethodsPermissionStr: make([]string, 0), } for _, resourceMethod := range v.ShowMethods { curMethodPermissionStr := permission.GetProjectResourcePermission(project.Po.ID, v.Resource, resourceMethod) v.MethodsPermissionStr = append(v.MethodsPermissionStr, curMethodPermissionStr) findPermit := false for _, hasPermission := range req.Permissions { if curMethodPermissionStr == hasPermission { // 有权限 findPermit = true break } } if req.IsAdmin || findPermit { permitV.ShowMethods = append(permitV.ShowMethods, resourceMethod) permitV.MethodsPermissionStr = append(permitV.MethodsPermissionStr, curMethodPermissionStr) } } projectDto.ResourceList = append(projectDto.ResourceList, permitV) projectDto.ResourceTotalList = append(projectDto.ResourceList, v) } rsp.Projects = append(rsp.Projects, projectDto) } return rsp, nil } func (svc *Service) GetProjectList() ([]*entity.Project, error) { _, _, list, err := svc.projectSvc.List() sort.SliceStable(list, func(i, j int) bool { if list[i].Po.SortWeight == list[j].Po.SortWeight { return list[i].Po.CreatedAt.After(list[j].Po.CreatedAt) } return list[i].Po.SortWeight > list[j].Po.SortWeight }) return list, err } func (svc *Service) GetProjectInvokeApiAddr(projectId int, serverIds []int) ([]string, error) { return svc.projectSvc.GetProjectInvokeApiAddr(projectId, serverIds) } func (svc *Service) GetAllItems(projectId int) ([]*dto.CommonDtoFieldChoice, error) { return svc.projectSvc.GetAllItems(projectId) }