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

90 lines
2.3 KiB
Go

package domain
import (
"admin/apps/game/domain/entity"
"admin/apps/game/domain/projects"
"admin/apps/game/domain/repo"
"admin/apps/game/model/dto"
"admin/internal/errcode"
"gorm.io/gorm"
)
type ProjectService struct {
repo repo.IProjectRepo
}
func NewProjectService(db *gorm.DB) *ProjectService {
repo.ServerRepoInstance = repo.NewServerRepo(db)
return &ProjectService{repo: repo.NewProjectRepo(db)}
}
func (svc *ProjectService) List() ([]*dto.CommonDtoFieldDesc, []dto.CommonDtoValues, []*entity.Project, error) {
fields, rows, err := svc.repo.List()
if err != nil {
return nil, nil, nil, err
}
commonList := make([]dto.CommonDtoValues, 0, len(rows))
for _, v := range rows {
commonList = append(commonList, v.ToCommonResource().ToCommonDto())
}
return fields, commonList, rows, nil
}
func (svc *ProjectService) GetById(id int) ([]*dto.CommonDtoFieldDesc, dto.CommonDtoValues, *entity.CommonResource, bool, error) {
fields, et, find, err := svc.repo.GetById(id)
if err != nil {
return nil, nil, nil, false, err
}
cr := et.ToCommonResource()
return fields, cr.ToCommonDto(), cr, find, nil
}
func (svc *ProjectService) Create(dtoObj dto.CommonDtoValues) (dto.CommonDtoValues, error) {
et, err := svc.repo.Create(dtoObj)
if err != nil {
return nil, err
}
return et.ToCommonResource().ToCommonDto(), nil
}
func (svc *ProjectService) Edit(dtoObj dto.CommonDtoValues) error {
err := svc.repo.Edit(dtoObj)
if err != nil {
return err
}
return nil
}
func (svc *ProjectService) Delete(id int) error {
_, find, err := svc.repo.Delete(id)
if find {
}
return err
}
func (svc *ProjectService) GetProjectInvokeApiAddr(projectId int, serverIds []int) ([]string, error) {
_, et, _, err := svc.repo.GetById(projectId)
if err != nil {
return nil, err
}
return []string{et.Po.ApiAddr}, nil
}
func (svc *ProjectService) GetAllItems(projectId int) ([]*dto.CommonDtoFieldChoice, error) {
_, projectEt, find, err := svc.repo.GetById(projectId)
if err != nil {
return nil, err
}
if !find {
return nil, errcode.New(errcode.ServerError, "not found project %v db data", projectId)
}
handler := projects.GetProjectValueChoicesGetHook(projectEt.Po.ProjectType)
if handler == nil {
return nil, errcode.New(errcode.ServerError, "not found project %v items handler", projectEt.Po.ProjectType)
}
return handler.GetItems(projectEt)
}