uniugm/admin/apps/game/domain/project.go

90 lines
2.3 KiB
Go
Raw Normal View History

2025-04-18 17:17:23 +08:00
package domain
import (
2025-04-27 17:23:19 +08:00
"admin/apps/game/domain/entity"
2025-05-04 22:07:13 +08:00
"admin/apps/game/domain/projects"
2025-04-18 17:17:23 +08:00
"admin/apps/game/domain/repo"
2025-04-30 15:46:14 +08:00
"admin/apps/game/model/dto"
2025-05-04 22:07:13 +08:00
"admin/internal/errcode"
2025-04-18 17:17:23 +08:00
"gorm.io/gorm"
)
2025-04-24 20:39:31 +08:00
type ProjectService struct {
repo repo.IProjectRepo
2025-04-18 17:17:23 +08:00
}
2025-04-24 20:39:31 +08:00
func NewProjectService(db *gorm.DB) *ProjectService {
2025-04-28 15:56:04 +08:00
repo.ServerRepoInstance = repo.NewServerRepo(db)
2025-04-24 20:39:31 +08:00
return &ProjectService{repo: repo.NewProjectRepo(db)}
}
2025-04-30 15:46:14 +08:00
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
2025-04-27 17:23:19 +08:00
}
2025-04-30 15:46:14 +08:00
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
2025-04-18 17:17:23 +08:00
}
2025-04-30 15:46:14 +08:00
func (svc *ProjectService) Create(dtoObj dto.CommonDtoValues) (dto.CommonDtoValues, error) {
et, err := svc.repo.Create(dtoObj)
2025-04-18 17:17:23 +08:00
if err != nil {
2025-04-24 20:39:31 +08:00
return nil, err
2025-04-18 17:17:23 +08:00
}
2025-04-30 15:46:14 +08:00
return et.ToCommonResource().ToCommonDto(), nil
2025-04-18 17:17:23 +08:00
}
2025-04-30 15:46:14 +08:00
func (svc *ProjectService) Edit(dtoObj dto.CommonDtoValues) error {
err := svc.repo.Edit(dtoObj)
if err != nil {
return err
}
return nil
}
2025-04-18 17:17:23 +08:00
2025-04-30 15:46:14 +08:00
func (svc *ProjectService) Delete(id int) error {
_, find, err := svc.repo.Delete(id)
if find {
2025-04-18 17:17:23 +08:00
2025-04-24 20:39:31 +08:00
}
2025-04-30 15:46:14 +08:00
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
2025-04-18 17:17:23 +08:00
}
2025-05-04 22:07:13 +08:00
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)
}