package model import ( "time" "infish.cn/comm" "go.mongodb.org/mongo-driver/bson/primitive" ) const ( AssetTypeMesh = 10 //"mesh" //模型 AssetTypeImage = 20 //"image" //图片 AssetTypeMaterial = 30 //"material" //材质球 AssetTypeMaterialGroup = 31 //"material" //材质球组 AssetTypeEnv3d = 40 //"hdr " //环境球 AssetTypePackage = 50 //"package " //3d资产包 AssetState_Empty = 0 AssetState_Waiting = 100 //等待处理 AssetState_Proccing = 101 //正在处理 AssetState_Failed = 102 //处理失败! AssetState_Succ = 200 //处理成功 ) type DbAsset struct { Id string `bson:"id,omitempty" json:"id"` //资产id Label string `bson:"label,omitempty" json:"label"` Type int `bson:"type,omitempty" json:"type"` //AssetTypeMesh AssetTypeImage ... Collection string `bson:"collection,omitempty" json:"collection"` //数据库存储集合 CreateTime time.Time `bson:"createTime,omitempty" json:"createTime"` CategoryIds []string `bson:"categoryIds,omitempty" json:"categoryIds"` } type AssetDbConf struct { Db *Database AssetConf *DbAsset } type Database struct { Id primitive.ObjectID `bson:"_id,omitempty" json:"_id"` //数据库Id UserId string `bson:"userId,omitempty" json:"userId"` //数据库Id Name string `bson:"name,omitempty" json:"name"` //数据库名字 Label string `bson:"label,omitempty" json:"label"` //前端展示标签 CreateTime time.Time `bson:"createTime,omitempty" json:"createTime"` Categories *comm.DbCategory `bson:"categories,omitempty" json:"categories"` //数据的分类 Assets []*DbAsset `bson:"assets,omitempty" json:"assets"` //资产定义 } func CreateDefaultDbAssets() []*DbAsset { return []*DbAsset{ &DbAsset{ Id: "1", Label: "模型", Type: AssetTypeMesh, Collection: "mesh", CreateTime: time.Now(), }, &DbAsset{ Id: "2", Label: "图片", Type: AssetTypeImage, Collection: "image", CreateTime: time.Now(), }, &DbAsset{ Id: "3", Label: "材质球", Type: AssetTypeMaterial, Collection: "material", CreateTime: time.Now(), }, &DbAsset{ Id: "4", Label: "环境球", Type: AssetTypeEnv3d, Collection: "env3d", CreateTime: time.Now(), }, } } func CreateDefaultDatabase() *Database { return &Database{ Name: "qdb-default", Label: "默认资产库", CreateTime: time.Now(), Assets: CreateDefaultDbAssets(), Categories: &comm.DbCategory{}, } } type Obb struct { Min Vec3Obj `bson:"min,omitempty" json:"min"` Max Vec3Obj `bson:"max,omitempty" json:"max"` } type StaticMesh struct { Id primitive.ObjectID `bson:"_id,omitempty" json:"_id"` OwnerId primitive.ObjectID `bson:"ownerId,omitempty" json:"ownerId,omitempty"` Name string `bson:"name,omitempty" json:"name"` CreateTime time.Time `bson:"createTime,omitempty" json:"createTime"` UpdateTime time.Time `bson:"updateTime,omitempty" json:"updateTime"` State int `bson:"state,omitempty" json:"state"` //created completed published Thumbnail *OssType `bson:"thumbnail,omitempty" json:"thumbnail"` Categories []string `bson:"categories,omitempty" json:"categories,omitempty"` //所属分类Id Components []*MeshMatConf `bson:"components,omitempty" json:"components"` Osgjs *OssType `bson:"osgjs,omitempty" json:"osgjs"` File *OssType `bson:"file,omitempty" json:"file"` //hdr or fbx Shadow *OssType `bson:"shadow,omitempty" json:"shadow,omitempty"` Obb *Obb `bson:"obb,omitempty" json:"obb,omitempty"` } type AssetBase struct { OwnerId primitive.ObjectID `bson:"ownerId,omitempty" json:"ownerId,omitempty"` Name string `bson:"name,omitempty" json:"name"` CreateTime time.Time `bson:"createTime,omitempty" json:"createTime"` UpdateTime time.Time `bson:"updateTime,omitempty" json:"updateTime"` Thumbnail *OssType `bson:"thumbnail,omitempty" json:"thumbnail"` Categories []string `bson:"categories,omitempty" json:"categories"` //所属分类Id TaskId string `bson:"taskId,omitempty" json:"taskId"` //资产处理id AssetState int `bson:"assetState,omitempty" json:"assetState"` Enable *bool `bson:"enable,omitempty" json:"enable"` //是否有效! } type StaticMeshSource struct { Components []*MeshMatConf `bson:"components,omitempty" json:"components"` Osgjs *OssType `bson:"osgjs,omitempty" json:"osgjs"` File *OssType `bson:"file,omitempty" json:"file"` //hdr or fbx Glb *OssType `bson:"glb,omitempty" json:"glb"` //hdr or fbx Shadow *OssType `bson:"shadow,omitempty" json:"shadow,omitempty"` BoundingBox *Obb `bson:"boundingBox,omitempty" json:"boundingBox,omitempty"` } type HdrSource struct { Config *Evn3dHdrConf `bson:"config,omitempty" json:"config"` File *OssType `bson:"file,omitempty" json:"file"` //hdr or fbx Options *Env3dOption `bson:"options,omitempty" json:"options"` ToneMap *ToneMap `bson:"toneMap,omitempty" json:"toneMap"` } type ImageSource struct { File *OssType `bson:"file,omitempty" json:"file"` //hdr or fbx } type AssetUserInfo struct { Name string `bson:"name,omitempty" json:"name"` Thumbnail *OssType `bson:"thumbnail,omitempty" json:"thumbnail"` } type IAsset interface { SetIdEmpty() ResetCreateTime() SetOwner(id string, otype string) SetAssetType(atype string) SetUserInfo(id string, info *comm.AssetUserInfo) } type AssetStaticMesh struct { Id primitive.ObjectID `bson:"_id,omitempty" json:"_id"` UserId primitive.ObjectID `bson:"userId,omitempty" json:"userId,omitempty"` //用户Id UserInfo *comm.AssetUserInfo `bson:"userInfo,omitempty" json:"userInfo,omitempty"` //用户Id OwnerId primitive.ObjectID `bson:"ownerId,omitempty" json:"ownerId,omitempty"` //userId teamId companyId OwnerType string `bson:"ownerType,omitempty" json:"ownerType,omitempty"` //user team company AssetType string `bson:"assetType,omitempty" json:"assetType,omitempty"` //user team company Name string `bson:"name,omitempty" json:"name"` CusNum string `bson:"cusNum,omitempty" json:"cusNum,omitempty"` //型号 CreateTime time.Time `bson:"createTime,omitempty" json:"createTime"` UpdateTime time.Time `bson:"updateTime,omitempty" json:"updateTime"` Thumbnail *OssType `bson:"thumbnail,omitempty" json:"thumbnail"` Categories []string `bson:"categories,omitempty" json:"categories"` //所属分类Id CusCategories []string `bson:"cusCategories,omitempty" json:"cusCategories"` //用户自定义分类 TaskId string `bson:"taskId,omitempty" json:"taskId"` //资产处理id AssetState int `bson:"assetState,omitempty" json:"assetState"` Enable *bool `bson:"enable,omitempty" json:"enable"` //是否有效! Source *StaticMeshSource `bson:"source,omitempty" json:"source,omitempty"` UserData interface{} `bson:"userData,omitempty" json:"userData,omitempty"` //用户数据 } func (s *AssetStaticMesh) SetIdEmpty() { s.Id = primitive.NilObjectID } func (s *AssetStaticMesh) ResetCreateTime() { s.CreateTime = time.Now() s.UpdateTime = time.Now() } func (s *AssetStaticMesh) SetOwner(id string, otype string) { s.OwnerId, _ = primitive.ObjectIDFromHex(id) s.OwnerType = otype } func (s *AssetStaticMesh) SetUserInfo(id string, info *comm.AssetUserInfo) { s.UserId, _ = primitive.ObjectIDFromHex(id) s.UserInfo = info } func (s *AssetStaticMesh) SetAssetType(otype string) { s.AssetType = otype } type AssetEnv3dHdr struct { Id primitive.ObjectID `bson:"_id,omitempty" json:"_id"` UserId primitive.ObjectID `bson:"userId,omitempty" json:"userId,omitempty"` //用户Id UserInfo *comm.AssetUserInfo `bson:"userInfo,omitempty" json:"userInfo,omitempty"` //用户Id OwnerId primitive.ObjectID `bson:"ownerId,omitempty" json:"ownerId,omitempty"` OwnerType string `bson:"ownerType,omitempty" json:"ownerType,omitempty"` AssetType string `bson:"assetType,omitempty" json:"assetType,omitempty"` Name string `bson:"name,omitempty" json:"name"` CreateTime time.Time `bson:"createTime,omitempty" json:"createTime"` UpdateTime time.Time `bson:"updateTime,omitempty" json:"updateTime"` Thumbnail *OssType `bson:"thumbnail,omitempty" json:"thumbnail"` Categories []string `bson:"categories,omitempty" json:"categories"` //所属分类Id TaskId string `bson:"taskId,omitempty" json:"taskId"` //资产处理id AssetState int `bson:"assetState,omitempty" json:"assetState"` Enable *bool `bson:"enable,omitempty" json:"enable"` //是否有效! Source *HdrSource `bson:"source,omitempty" json:"source,omitempty"` UserData interface{} `bson:"userData,omitempty" json:"userData,omitempty"` //用户数据 } func (s *AssetEnv3dHdr) SetIdEmpty() { s.Id = primitive.NilObjectID } func (s *AssetEnv3dHdr) ResetCreateTime() { s.CreateTime = time.Now() s.UpdateTime = time.Now() } func (s *AssetEnv3dHdr) SetOwner(id string, otype string) { s.OwnerId, _ = primitive.ObjectIDFromHex(id) s.OwnerType = otype } func (s *AssetEnv3dHdr) SetAssetType(otype string) { s.AssetType = otype } func (s *AssetEnv3dHdr) SetUserInfo(id string, info *comm.AssetUserInfo) { s.UserId, _ = primitive.ObjectIDFromHex(id) s.UserInfo = info } type AssetMat struct { Id primitive.ObjectID `bson:"_id,omitempty" json:"_id"` UserId primitive.ObjectID `bson:"userId,omitempty" json:"userId,omitempty"` //用户Id UserInfo *comm.AssetUserInfo `bson:"userInfo,omitempty" json:"userInfo,omitempty"` //用户Id OwnerId primitive.ObjectID `bson:"ownerId,omitempty" json:"ownerId,omitempty"` OwnerType string `bson:"ownerType,omitempty" json:"ownerType,omitempty"` //user team company AssetType string `bson:"assetType,omitempty" json:"assetType,omitempty"` //user team company CusNum string `bson:"cusNum,omitempty" json:"cusNum,omitempty"` //型号 Name string `bson:"name,omitempty" json:"name"` CreateTime time.Time `bson:"createTime,omitempty" json:"createTime"` UpdateTime time.Time `bson:"updateTime,omitempty" json:"updateTime"` Thumbnail *OssType `bson:"thumbnail,omitempty" json:"thumbnail"` Categories []string `bson:"categories,omitempty" json:"categories"` //所属分类Id TaskId string `bson:"taskId,omitempty" json:"taskId"` //资产处理id AssetState int `bson:"assetState,omitempty" json:"assetState"` Enable *bool `bson:"enable,omitempty" json:"enable"` //是否有效! Source *MatConfig `bson:"source,omitempty" json:"source,omitempty"` UserData interface{} `bson:"userData,omitempty" json:"userData,omitempty"` //用户数据 } func (s *AssetMat) SetIdEmpty() { s.Id = primitive.NilObjectID } func (s *AssetMat) ResetCreateTime() { s.CreateTime = time.Now() s.UpdateTime = time.Now() } func (s *AssetMat) SetOwner(id string, otype string) { s.OwnerId, _ = primitive.ObjectIDFromHex(id) s.OwnerType = otype } func (s *AssetMat) SetAssetType(otype string) { s.AssetType = otype } func (s *AssetMat) SetUserInfo(id string, info *comm.AssetUserInfo) { s.UserId, _ = primitive.ObjectIDFromHex(id) s.UserInfo = info } type AssetImage struct { Id primitive.ObjectID `bson:"_id,omitempty" json:"_id"` UserId primitive.ObjectID `bson:"userId,omitempty" json:"userId,omitempty"` //用户Id UserInfo *comm.AssetUserInfo `bson:"userInfo,omitempty" json:"userInfo,omitempty"` //用户Id OwnerId primitive.ObjectID `bson:"ownerId,omitempty" json:"ownerId,omitempty"` OwnerType string `bson:"ownerType,omitempty" json:"ownerType,omitempty"` //user team company AssetType string `bson:"assetType,omitempty" json:"assetType,omitempty"` //user team company Name string `bson:"name,omitempty" json:"name"` CreateTime time.Time `bson:"createTime,omitempty" json:"createTime"` UpdateTime time.Time `bson:"updateTime,omitempty" json:"updateTime"` Thumbnail *OssType `bson:"thumbnail,omitempty" json:"thumbnail"` Categories []string `bson:"categories,omitempty" json:"categories"` //所属分类Id TaskId string `bson:"taskId,omitempty" json:"taskId"` //资产处理id AssetState int `bson:"assetState,omitempty" json:"assetState"` Enable *bool `bson:"enable,omitempty" json:"enable"` //是否有效! Source *ImageSource `bson:"source,omitempty" json:"source,omitempty"` } func (s *AssetImage) SetIdEmpty() { s.Id = primitive.NilObjectID } func (s *AssetImage) ResetCreateTime() { s.CreateTime = time.Now() s.UpdateTime = time.Now() } func (s *AssetImage) SetOwner(id string, otype string) { s.OwnerId, _ = primitive.ObjectIDFromHex(id) s.OwnerType = otype } func (s *AssetImage) SetAssetType(otype string) { s.AssetType = otype } func (s *AssetImage) SetUserInfo(id string, info *comm.AssetUserInfo) { s.UserId, _ = primitive.ObjectIDFromHex(id) s.UserInfo = info } type AssetPackage struct { Id primitive.ObjectID `bson:"_id,omitempty" json:"_id"` OwnerId primitive.ObjectID `bson:"ownerId,omitempty" json:"ownerId,omitempty"` //userId teamId companyId OwnerType string `bson:"ownerType,omitempty" json:"ownerType,omitempty"` //user team company UserId primitive.ObjectID `bson:"userId,omitempty" json:"userId,omitempty"` //用户Id UserInfo *comm.AssetUserInfo `bson:"userInfo,omitempty" json:"userInfo,omitempty"` //用户Id AssetType string `bson:"assetType,omitempty" json:"assetType,omitempty"` //业务类型 shoe sole heel decorate Name string `bson:"name,omitempty" json:"name"` CusNum string `bson:"cusNum,omitempty" json:"cusNum,omitempty"` //型号 CreateTime time.Time `bson:"createTime,omitempty" json:"createTime"` UpdateTime time.Time `bson:"updateTime,omitempty" json:"updateTime"` Thumbnail *OssType `bson:"thumbnail,omitempty" json:"thumbnail"` Categories []string `bson:"categories,omitempty" json:"categories"` //所属分类Id CusCategories []string `bson:"cusCategories,omitempty" json:"cusCategories"` //所属分类Id TaskId string `bson:"taskId,omitempty" json:"taskId"` //资产处理id AssetState int `bson:"assetState,omitempty" json:"assetState"` Enable *bool `bson:"enable,omitempty" json:"enable"` //是否有效! Source *comm.Queen3dPackageSource `bson:"source,omitempty" json:"source,omitempty"` UserData interface{} `bson:"userData,omitempty" json:"userData,omitempty"` //用户数据 } func (s *AssetPackage) SetIdEmpty() { s.Id = primitive.NilObjectID } func (s *AssetPackage) ResetCreateTime() { s.CreateTime = time.Now() s.UpdateTime = time.Now() } func (s *AssetPackage) SetOwner(id string, otype string) { s.OwnerId, _ = primitive.ObjectIDFromHex(id) s.OwnerType = otype } func (s *AssetPackage) SetAssetType(otype string) { s.AssetType = otype } func (s *AssetPackage) SetUserInfo(id string, info *comm.AssetUserInfo) { s.UserId, _ = primitive.ObjectIDFromHex(id) s.UserInfo = info }