From d6560049b68b7ccc4989650ded44058814a0a4e8 Mon Sep 17 00:00:00 2001 From: chenyifan01 Date: Mon, 15 Aug 2022 12:08:59 +0800 Subject: [PATCH] #2624 update --- models/resource_scene.go | 9 +++++++++ models/resource_specification.go | 11 +++++++++++ routers/admin/resources.go | 13 +++++++++++++ routers/routes/routes.go | 1 + .../cloudbrain/resource/resource_specification.go | 9 +++++++++ 5 files changed, 43 insertions(+) diff --git a/models/resource_scene.go b/models/resource_scene.go index 421d8b3c0..61b44a77a 100644 --- a/models/resource_scene.go +++ b/models/resource_scene.go @@ -83,6 +83,15 @@ func (ResourceSceneRes) TableName() string { return "resource_scene" } +type ResourceSceneBriefRes struct { + ID int64 + SceneName string +} + +func (ResourceSceneBriefRes) TableName() string { + return "resource_scene" +} + type ResourceSpecWithSceneId struct { ID int64 SourceSpecId string diff --git a/models/resource_specification.go b/models/resource_specification.go index deeaf3f26..b5141ceb7 100644 --- a/models/resource_specification.go +++ b/models/resource_specification.go @@ -182,6 +182,17 @@ func SearchResourceSpecification(opts SearchResourceSpecificationOptions) (int64 return n, r, nil } +func GetSpecScenes(specId int64) ([]ResourceSceneBriefRes, error) { + r := make([]ResourceSceneBriefRes, 0) + err := x.Where("resource_scene_spec.spec_id = ?", specId). + Join("INNER", "resource_scene_spec", "resource_scene_spec.scene_id = resource_scene.id"). + Find(&r) + if err != nil { + return nil, err + } + return r, nil +} + func ResourceSpecOnShelf(id int64, spec ResourceSpecification) (int64, error) { spec.Status = SpecOnShelf return x.Where("id = ? and status in (?,?)", id, SpecOffShelf, SpecNotVerified).Update(&spec) diff --git a/routers/admin/resources.go b/routers/admin/resources.go index 2286dfff2..41a167b2c 100644 --- a/routers/admin/resources.go +++ b/routers/admin/resources.go @@ -132,6 +132,19 @@ func GetResourceSpecificationList(ctx *context.Context) { ctx.JSON(http.StatusOK, response.SuccessWithData(list)) } +func GetResourceSpecificationScenes(ctx *context.Context) { + specId := ctx.ParamsInt64(":id") + list, err := resource.GetResourceSpecificationScenes(specId) + if err != nil { + log.Error("GetResourceSpecificationScenes error.%v", err) + ctx.JSON(http.StatusOK, response.ServerError(err.Error())) + return + } + r := make(map[string]interface{}) + r["List"] = list + ctx.JSON(http.StatusOK, response.SuccessWithData(r)) +} + func AddResourceSpecification(ctx *context.Context, req models.ResourceSpecificationReq) { req.IsAutomaticSync = false req.CreatorId = ctx.User.ID diff --git a/routers/routes/routes.go b/routers/routes/routes.go index 5e59ccf25..48a635903 100755 --- a/routers/routes/routes.go +++ b/routers/routes/routes.go @@ -619,6 +619,7 @@ func RegisterRoutes(m *macaron.Macaron) { m.Group("/specification", func() { m.Get("", admin.GetSpecificationPage) m.Get("/list", admin.GetResourceSpecificationList) + m.Get("/scenes/:id", admin.GetResourceSpecificationScenes) m.Post("/grampus/sync", admin.SyncGrampusSpecs) m.Post("/add", binding.Bind(models.ResourceSpecificationReq{}), admin.AddResourceSpecification) m.Post("/update/:id", binding.BindIgnErr(models.ResourceSpecificationReq{}), admin.UpdateResourceSpecification) diff --git a/services/cloudbrain/resource/resource_specification.go b/services/cloudbrain/resource/resource_specification.go index e597e2656..d95e58517 100644 --- a/services/cloudbrain/resource/resource_specification.go +++ b/services/cloudbrain/resource/resource_specification.go @@ -125,6 +125,15 @@ func GetResourceSpecificationList(opts models.SearchResourceSpecificationOptions return models.NewResourceSpecAndQueueListRes(n, r), nil } +func GetResourceSpecificationScenes(specId int64) ([]models.ResourceSceneBriefRes, error) { + r, err := models.GetSpecScenes(specId) + if err != nil { + return nil, err + } + + return r, nil +} + func ResourceSpecOnShelf(doerId int64, id int64, req models.ResourceSpecificationReq) *response.BizError { spec, err := models.GetResourceSpecification(&models.ResourceSpecification{ID: id}) if err != nil {