refactor: 重构资产实体和DTO结构类型

将gjson.Json类型替换为具体的结构体和map类型,修正DAO层链式调用,启用SKU元数据校验逻辑
This commit is contained in:
2026-03-22 20:08:32 +08:00
parent 34a1ba79b6
commit 829dc07747
36 changed files with 932 additions and 793 deletions

View File

@@ -1,35 +1,59 @@
package entity
import (
"assets/consts/public"
"assets/consts/stock"
"gitea.com/red-future/common/beans"
"github.com/gogf/gf/v2/os/gtime"
"go.mongodb.org/mongo-driver/v2/bson"
)
type stockDetailsCol struct {
beans.SQLBaseCol
AssetId string
AssetSkuId string
Status string
OrderId string
LockExpire string
Metadata string
TokenId string
AssignedChannel string
ChannelSKU string
ChannelMetadata string
AllocatedAt string
CategoryPath string
}
var StockDetailsCol = stockDetailsCol{
SQLBaseCol: beans.DefSQLBaseCol,
AssetId: "asset_id",
AssetSkuId: "asset_sku_id",
Status: "status",
OrderId: "order_id",
LockExpire: "lock_expire",
Metadata: "metadata",
TokenId: "token_id",
AssignedChannel: "assigned_channel",
ChannelSKU: "channel_sku",
ChannelMetadata: "channel_metadata",
AllocatedAt: "allocated_at",
CategoryPath: "category_path",
}
// StockDetails 库存实体每一件商品都有独立ID用于后期做区块链虚拟资产
type StockDetails struct {
beans.MongoBaseDO `bson:",inline"` // 嵌入基础字段Id, Creator, CreatedAt, Updater, UpdatedAt, TenantId, IsDeleted
AssetId int64 `bson:"assetId" json:"assetId"` // 关联资产ID
AssetSkuId int64 `bson:"assetSkuId" json:"assetSkuId"` // 关联资产SKU ID
Status stock.StockStatus `bson:"status" json:"status"` // 库存状态
OrderId *bson.ObjectID `bson:"orderId" json:"orderId"` // 关联订单ID如果有
LockExpire *gtime.Time `bson:"lockExpire" json:"lockExpire"` // 锁定过期时间
Metadata []map[string]interface{} `bson:"metadata" json:"metadata"` // 其他元数据
TokenId string `bson:"tokenId" json:"tokenId"` // 区块链TokenID如果有
beans.SQLBaseDO `orm:",inherit"`
AssetId int64 `orm:"asset_id" json:"assetId"` // 关联资产ID
AssetSkuId int64 `orm:"asset_sku_id" json:"assetSkuId"` // 关联资产SKU ID
Status stock.StockStatus `orm:"status" json:"status"` // 库存状态
OrderId int64 `orm:"order_id" json:"orderId"` // 关联订单ID如果有
LockExpire *gtime.Time `orm:"lock_expire" json:"lockExpire"` // 锁定过期时间
Metadata []map[string]interface{} `orm:"metadata" json:"metadata"` // 其他元数据
TokenId string `orm:"token_id" json:"tokenId"` // 区块链TokenID如果有
// 渠道分配信息
AssignedChannel string `bson:"assignedChannel" json:"assignedChannel"` // 分配的销售渠道
ChannelSKU string `bson:"channelSku" json:"channelSku"` // 渠道商品SKU
ChannelMetadata map[string]interface{} `bson:"channelMetadata" json:"channelMetadata"` // 渠道专属数据
AllocatedAt *gtime.Time `bson:"allocatedAt" json:"allocatedAt"` // 分配时间
CategoryPath string `bson:"categoryPath" json:"categoryPath"` // 分类路径
}
// CollectionName 库存集合名称
func (StockDetails) CollectionName() string {
return public.StockDetailsCollection
AssignedChannel string `orm:"assigned_channel" json:"assignedChannel"` // 分配的销售渠道
ChannelSKU string `orm:"channel_sku" json:"channelSku"` // 渠道商品SKU
ChannelMetadata map[string]interface{} `orm:"channel_metadata" json:"channelMetadata"` // 渠道专属数据
AllocatedAt *gtime.Time `orm:"allocated_at" json:"allocatedAt"` // 分配时间
CategoryPath string `orm:"category_path" json:"categoryPath"` // 分类路径
}