81 lines
3.0 KiB
Go
81 lines
3.0 KiB
Go
package entity
|
||
|
||
import (
|
||
"assets/consts/stock"
|
||
|
||
"gitea.com/red-future/common/beans"
|
||
"github.com/gogf/gf/v2/os/gtime"
|
||
)
|
||
|
||
type stockBatchCol struct {
|
||
beans.SQLBaseCol
|
||
AssetId string
|
||
AssetSkuId string
|
||
BatchNo string
|
||
BatchQty string
|
||
AvailableQty string
|
||
Metadata string
|
||
Status string
|
||
OrderId string
|
||
AssignedChannel string
|
||
ChannelSKU string
|
||
ChannelMetadata string
|
||
AllocatedAt string
|
||
ProductionDate string
|
||
ExpiryDate string
|
||
ExpiryWarningDate string
|
||
CategoryPath string
|
||
}
|
||
|
||
var StockBatchCol = stockBatchCol{
|
||
SQLBaseCol: beans.DefSQLBaseCol,
|
||
AssetId: "asset_id",
|
||
AssetSkuId: "asset_sku_id",
|
||
BatchNo: "batch_no",
|
||
BatchQty: "batch_qty",
|
||
AvailableQty: "available_qty",
|
||
Metadata: "metadata",
|
||
Status: "status",
|
||
OrderId: "order_id",
|
||
AssignedChannel: "assigned_channel",
|
||
ChannelSKU: "channel_sku",
|
||
ChannelMetadata: "channel_metadata",
|
||
AllocatedAt: "allocated_at",
|
||
ProductionDate: "production_date",
|
||
ExpiryDate: "expiry_date",
|
||
ExpiryWarningDate: "expiry_warning_date",
|
||
CategoryPath: "category_path",
|
||
}
|
||
|
||
// StockBatch 库存批次实体(用于批次管理模式)
|
||
type StockBatch struct {
|
||
beans.SQLBaseDO `orm:",inherit"`
|
||
AssetId int64 `orm:"asset_id" json:"assetId"` // 关联资产ID
|
||
AssetSkuId int64 `orm:"asset_sku_id" json:"assetSkuId"` // 关联资产SKU ID
|
||
BatchNo string `orm:"batch_no" json:"batchNo"` // 批次号
|
||
BatchQty int `orm:"batch_qty" json:"batchQty"` // 批次总数量(入库后不可变)
|
||
AvailableQty int `orm:"available_qty" json:"availableQty"` // 可用数量(实时变化)
|
||
|
||
// 批次元数据
|
||
Metadata []map[string]interface{} `orm:"metadata" json:"metadata"` // 其他元数据
|
||
|
||
// 状态
|
||
Status stock.BatchStatus `orm:"status" json:"status"` // 批次状态
|
||
// 锁定数量 = BatchQty - AvailableQty
|
||
|
||
// 订单关联
|
||
OrderID int64 `orm:"order_id" json:"orderId"` // 关联订单ID(如果有)
|
||
|
||
// 渠道分配信息
|
||
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"` // 分配时间
|
||
|
||
// 临期管理
|
||
ProductionDate *gtime.Time `orm:"production_date" json:"productionDate"` // 生产日期
|
||
ExpiryDate *gtime.Time `orm:"expiry_date" json:"expiryDate"` // 过期日期
|
||
ExpiryWarningDate *gtime.Time `orm:"expiry_warning_date" json:"expiryWarningDate"` // 临期预警时间(有过期日期时建议填写)
|
||
CategoryPath string `orm:"category_path" json:"categoryPath"` // 分类路径
|
||
}
|