package service import ( "admin/apps/game/domain" "admin/apps/game/model/dto" "admin/internal/consts" "context" "gorm.io/gorm" ) type Service struct { db *gorm.DB resourceSvc *domain.CommonResourceService projectSvc *domain.ProjectService } func New(db *gorm.DB) (*Service, error) { svc := &Service{ db: db, resourceSvc: domain.NewCommonResourceService(db), projectSvc: domain.NewProjectService(db), } err := svc.ensureProjectsDBData() if err != nil { return nil, err } return svc, nil } func (svc *Service) CommonList(ctx context.Context, projectId string, resourceName string, params *dto.CommonListReq) (*dto.CommonDtoList, error) { var ( query string args []any ) switch resourceName { case consts.ResourcesName_Project: default: query = "project_id = ?" args = append(args, projectId) } fieldsDescInfo, rows, err := svc.resourceSvc.List(projectId, resourceName, params.PageNo, params.PageLen, query, args) return &dto.CommonDtoList{FieldsDesc: fieldsDescInfo, Rows: rows}, err } func (svc *Service) CommonPost(ctx context.Context, projectId string, resourceName string, params dto.CommonDtoValues) (dto.CommonDtoValues, error) { if resourceName != consts.ResourcesName_Project { params["ProjectId"] = projectId } return svc.resourceSvc.Create(projectId, resourceName, params) } func (svc *Service) CommonPut(ctx context.Context, projectId string, resourceName string, params dto.CommonDtoValues) error { if resourceName != consts.ResourcesName_Project { params["ProjectId"] = projectId } return svc.resourceSvc.Edit(projectId, resourceName, params) } func (svc *Service) CommonDelete(ctx context.Context, projectId string, resourceName string, id int) error { return svc.resourceSvc.Delete(projectId, resourceName, id) } func (svc *Service) GetSupportResourcesList() [][2]string { return svc.resourceSvc.GetSupportResourcesList() }