uniugm/admin/apps/game/service/service_project.go

84 lines
2.4 KiB
Go
Raw Normal View History

2025-04-24 20:39:31 +08:00
package service
2025-04-30 15:46:14 +08:00
import (
"admin/apps/game/api"
"admin/apps/game/domain/entity"
"admin/internal/consts"
2025-05-16 15:17:10 +08:00
"admin/internal/model/dto"
2025-04-30 15:46:14 +08:00
"admin/internal/permission"
2025-05-10 10:18:06 +08:00
"sort"
2025-04-30 15:46:14 +08:00
)
2025-04-27 17:23:19 +08:00
2025-04-30 15:46:14 +08:00
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),
2025-05-12 18:43:41 +08:00
GlobalBtns: v.GlobalBtns,
RowBtns: v.RowBtns,
2025-04-30 15:46:14 +08:00
}
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)
}
2025-05-10 10:18:06 +08:00
2025-04-30 15:46:14 +08:00
return rsp, nil
2025-04-27 17:23:19 +08:00
}
2025-04-30 15:46:14 +08:00
func (svc *Service) GetProjectList() ([]*entity.Project, error) {
_, _, list, err := svc.projectSvc.List()
2025-05-10 10:18:06 +08:00
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
})
2025-04-30 15:46:14 +08:00
return list, err
2025-04-24 20:39:31 +08:00
}
2025-04-30 15:46:14 +08:00
func (svc *Service) GetProjectInvokeApiAddr(projectId int, serverIds []int) ([]string, error) {
2025-04-24 20:39:31 +08:00
return svc.projectSvc.GetProjectInvokeApiAddr(projectId, serverIds)
}
2025-05-04 22:07:13 +08:00
func (svc *Service) GetAllItems(projectId int) ([]*dto.CommonDtoFieldChoice, error) {
return svc.projectSvc.GetAllItems(projectId)
}