package repo import ( "errors" "mats/conf" "mats/db/model" "time" "go.mongodb.org/mongo-driver/bson/primitive" ) type AssetDecorateMeshRepo struct { Conf *conf.AppAsset Model *model.AssetDecorateMesh } func (repo *AssetDecorateMeshRepo) GetEntity() interface{} { return repo.Model } func (repo *AssetDecorateMeshRepo) Upload(ctx *RepoSession, userId string) (interface{}, error) { asset := repo.Model if asset.File == nil || asset.File.Size < 1 || len(asset.File.Url) < 1 { return nil, errors.New("模型文件不能为空") } asset.CreateTime = time.Now() asset.UserId, _ = primitive.ObjectIDFromHex(userId) asset.UpdateTime = time.Now() asset.State = model.AssetState_Created collectionName := "asset-" + repo.Conf.Type assetId, err := RepoAddDoc(ctx, collectionName, asset) if err != nil { return nil, err } _, err = CreateMeshConvTask(ctx, asset.File, assetId, collectionName, userId) if err != nil { //模型转换失败,删除对应的模型 RepoDeleteDoc(ctx, collectionName, assetId) return nil, err } // _, err = CreateShadowTask(ctx, asset.File, assetId, collectionName, userId) // if err != nil { // log.Error("CreateShadowTask err ", err) // fmt.Println("CreateShadowTask err ", err) // } return assetId, err } func (repo *AssetDecorateMeshRepo) Update(ctx *RepoSession) (interface{}, error) { asset := repo.Model if len(asset.Id) < 1 { return nil, errors.New("id不能为空!") } id := asset.Id.Hex() asset.Id = primitive.NilObjectID asset.UpdateTime = time.Now() collectionName := "asset-" + repo.Conf.Type return RepoUpdateSetDoc(ctx, collectionName, id, asset) } func (repo *AssetDecorateMeshRepo) Detail(ctx *RepoSession, id string) (interface{}, error) { collectionName := "asset-" + repo.Conf.Type ok, ret := RepoSeachDocMap(ctx, &DocSearchOptions{ CollectName: collectionName, Query: Map{"_id": id}, Project: []string{"name", "createTime", "updateTime", "state", "thumbnail", "categories", "osgjs", "file", "shadow", "components"}, }) if !ok { return nil, errors.New("数据为空!") } return ret, nil }