74 lines
2.1 KiB
Go
74 lines
2.1 KiB
Go
package service
|
|
|
|
import (
|
|
"admin/apps/game/api"
|
|
"admin/apps/game/domain/entity"
|
|
"admin/apps/game/model/dto"
|
|
"admin/internal/consts"
|
|
"admin/internal/permission"
|
|
)
|
|
|
|
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()
|
|
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)
|
|
}
|