package repo import ( "assetcenter/conf" "assetcenter/db/model" "errors" "time" "go.mongodb.org/mongo-driver/bson/primitive" ) type AssetEnv3dRepo struct { Conf *conf.AppAsset Model *model.Env3d } func (repo *AssetEnv3dRepo) GetEntity() interface{} { return repo.Model } func (repo *AssetEnv3dRepo) Upload(ctx *RepoSession, userId string) (interface{}, error) { asset := repo.Model if asset.HDR == nil || asset.HDR.Size < 1 || len(asset.HDR.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 = CreateHdrConverterTask(ctx, asset.HDR, assetId, collectionName, userId) if err != nil { //模型转换失败,删除对应的模型 RepoDeleteDoc(ctx, collectionName, assetId) return nil, err } return assetId, err } func (repo *AssetEnv3dRepo) 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 *AssetEnv3dRepo) 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", "config"}, }) if !ok { return nil, errors.New("数据为空!") } return ret, nil }