123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- package api
- import (
- "mats/db/model"
- "mats/db/repo"
- "time"
- "github.com/gin-gonic/gin"
- "go.mongodb.org/mongo-driver/bson/primitive"
- )
- // 注册设计相关接口
- func CreateDatabaseDesignSceneRouter(router *GinRouter) {
- //项目场景列表管理
- CreateArrayCRUD(router, "/design/scene", &ArrayCRUDOption{
- Collection: repo.CollectionDesigns,
- NeedsUpdate: true,
- NeedsRemove: true,
- NewModel: func(c *gin.Context, apictx *ApiSession) (interface{}, error) {
- prod := model.ProductHeader{}
- c.ShouldBindJSON(&prod)
- sceneProd := &model.SceneProduct{
- Id: prod.Id,
- // Name: prod.Name,
- // Type: "product",
- Locked: false,
- Visible: true,
- Transform: &model.Transform{
- Pos: model.Vect3{0, 0, 0},
- Scale: model.Vect3{1, 1, 1},
- Rot: model.Vect3{0, 0, 0},
- },
- }
- scene := &model.DesignScene{
- Id: primitive.NewObjectID().Hex(),
- Name: prod.Name,
- Thumbnail: prod.Thumbnail,
- CreateTime: time.Now(),
- Product: []*model.SceneProduct{sceneProd},
- }
- return scene, nil
- },
- EmtyModel: func(c *gin.Context, apictx *ApiSession) interface{} {
- return &model.DesignScene{}
- },
- ArrayFieldPath: "scenes",
- SearchProject: []string{"name", "id", "thumbnail", "createTime"},
- })
- router.POSTJWT("/design/create/scene/:id", func(c *gin.Context, apictx *ApiSession) (interface{}, error) {
- projId := c.Param("id")
- scene := &model.DesignScene{}
- c.ShouldBindJSON(scene)
- if len(scene.Name) < 1 {
- return nil, NewError("场景名称不能为空!")
- }
- scene.Id = primitive.NewObjectID().Hex()
- scene.CreateTime = time.Now()
- scene.Product = []*model.SceneProduct{}
- ret, _ := repo.RepoDocArrayAppend(apictx.CreateRepoCtx(), repo.CollectionDesigns, projId, "scenes", scene)
- if ret.ModifiedCount == 1 {
- return scene, nil
- }
- return nil, NewError("创建失败!")
- })
- }
|