90 lines
2.3 KiB
Go
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)
|
|
}
|