uniugm/admin/apps/game/service/service_project.go
2025-05-04 22:07:13 +08:00

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