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,9 +1,28 @@
package consts
import "github.com/gogf/gf/v2/util/gconv"
// AssetSkuStatus SKU状态枚举
type AssetSkuStatusType *int
var (
AssetSkuStatusDisable = newAssetSkuStatus(gconv.PtrInt8(0), "disable")
AssetSkuStatusEnable = newAssetSkuStatus(gconv.PtrInt8(1), "enable")
)
type AssetSkuStatus struct {
Status AssetSkuStatusType
type AssetSkuStatus *int8
type assetSkuStatus struct {
code AssetSkuStatus
desc string
}
func (s assetSkuStatus) Code() AssetSkuStatus {
return s.code
}
func (s assetSkuStatus) Desc() string {
return s.desc
}
func newAssetSkuStatus(code AssetSkuStatus, desc string) assetSkuStatus {
return assetSkuStatus{code: code, desc: desc}
}

View File

@@ -1,9 +1,28 @@
package consts
import "github.com/gogf/gf/v2/util/gconv"
// AssetStatus 资产状态枚举
type AssetStatusType *int
var (
AssetStatusDisable = newAssetStatus(gconv.PtrInt8(0), "disable")
AssetStatusEnable = newAssetStatus(gconv.PtrInt8(1), "enable")
)
type AssetStatus struct {
Status AssetStatusType
type AssetStatus *int8
type assetStatus struct {
code AssetStatus
desc string
}
func (s assetStatus) Code() AssetStatus {
return s.code
}
func (s assetStatus) Desc() string {
return s.desc
}
func newAssetStatus(code AssetStatus, desc string) assetStatus {
return assetStatus{code: code, desc: desc}
}

View File

@@ -1,14 +1,28 @@
package consts
import "github.com/gogf/gf/v2/util/gconv"
// CategoryStatus 分类状态枚举
type CategoryStatusType *int
var (
CategoryStatusDisable = newCategoryStatus(gconv.PtrInt8(0), "disable")
CategoryStatusEnable = newCategoryStatus(gconv.PtrInt8(1), "enable")
)
type CategoryStatus struct {
Status CategoryStatusType
type CategoryStatus *int8
type categoryStatus struct {
code CategoryStatus
desc string
}
//var CategoryStatusVal = CategoryStatus{
// CategoryStatusActive: gconv.PtrInt(1),
// CategoryStatusInactive: gconv.PtrInt(0),
//}
func (s categoryStatus) Code() CategoryStatus {
return s.code
}
func (s categoryStatus) Desc() string {
return s.desc
}
func newCategoryStatus(code CategoryStatus, desc string) categoryStatus {
return categoryStatus{code: code, desc: desc}
}

View File

@@ -2,16 +2,16 @@ package public
// MongoDB集合名称常量
const (
AssetCollection = "assets_asset" // 资产集合
CategoryCollection = "assets_category" // 分类集合
AssetCollection = "assets_asset" // 资产集合
AssetSkuCollection = "assets_asset_sku" // SKU集合
StockDetailsCollection = "assets_stock_details" // 库存明细集合
StockBatchCollection = "assets_stock_batch" // 库存批次集合
PrivateCategoryCollection = "private_category" // 私域分类集合
StockDetailsCollection = "stock_details" // 库存明细集合
StockBatchCollection = "stock_batch" // 库存批次集合
PrivateStockCollection = "private_stock" // 私域库存批次集合
PurchaseOrderCollection = "purchase_order" // 采购订单主表集合(统一模式)
PurchaseOrderItemCollection = "purchase_order_item" // 采购订单明细集合
PurchaseBidCollection = "purchase_bid" // 采购投标单集合(供应商抢单参与记录)
AssetSkuCollection = "asset_sku" // SKU集合
PrivateSkuCollection = "private_sku" // 私域sku集合
SupplierCollection = "supplier" // 供应商集合
ExpiryMessageCollection = "expiry_message" // 临期消息集合(兼容旧数据)

View File

@@ -1,13 +1,12 @@
package public
const StockDetailLockKey = "stock:lock:skuId-%s"
const StockDetailLockKey = "stock:lock:skuId-%v"
// 消费者配置(从 Redis Stream 消费请求)
const StockDetailQueueName = "assets:stock:detail:request:stream" // 请求 Stream 键名与发消息的key一致
const StockDetailGroupName = "assets:stock:detail:consumer:group" // 消费者
const StockDetailConsumerName = "message-consumer-1" // 消费者名称(唯一标识
const StockDetailPrefetchCount = 1 // 批处理大小每次读取1条
const StockDetailAutoAck = false // ACK是否自动确认true自动确认false不确认
const StockDetailQueueName = "assets:stock:stream" // 请求 Stream 键名与发消息的key一致
const StockDetailConsumerName = "assets-stock-consumer" // 消费者名称(唯一标识)
const StockDetailPrefetchCount = 1 // 批处理大小每次读取1条
const StockDetailAutoAck = false // ACK是否自动确认true自动确认false不确认
// 业务自增序列号前缀 Redis Key
const (

View File

@@ -1,21 +1,30 @@
package stock
// BatchStatus 批次状态枚举
type BatchStatus int
import "github.com/gogf/gf/v2/util/gconv"
const (
BatchStatusActive BatchStatus = 1 // 活跃
BatchStatusExpiring BatchStatus = 2 // 临期
BatchStatusExpired BatchStatus = 3 // 过期
BatchStatusSoldOut BatchStatus = 4 // 售罄
// BatchStatus 批次状态枚举
var (
BatchStatusActive = newBatchStatus(gconv.PtrInt8(1), "活跃")
BatchStatusExpiring = newBatchStatus(gconv.PtrInt8(2), "临期")
BatchStatusExpired = newBatchStatus(gconv.PtrInt8(3), "过期")
BatchStatusSoldOut = newBatchStatus(gconv.PtrInt8(4), "售罄")
)
// GetAllBatchStatuses 获取所有批次状态
func GetAllBatchStatuses() []BatchStatus {
return []BatchStatus{
BatchStatusActive,
BatchStatusExpiring,
BatchStatusExpired,
BatchStatusSoldOut,
}
type BatchStatus *int8
type batchStatus struct {
code BatchStatus
desc string
}
func (s batchStatus) Code() BatchStatus {
return s.code
}
func (s batchStatus) Desc() string {
return s.desc
}
func newBatchStatus(code BatchStatus, desc string) batchStatus {
return batchStatus{code: code, desc: desc}
}

View File

@@ -1,21 +1,30 @@
package stock
// StockStatus 库存状态枚举
type StockStatus int
import "github.com/gogf/gf/v2/util/gconv"
const (
StockStatusAvailable StockStatus = 1 // 可用,未分配渠道
StockStatusSold StockStatus = 2 // 已售出
StockStatusReserved StockStatus = 3 // 预留
StockStatusLocked StockStatus = 4 // 锁定
// StockStatus 库存状态枚举
var (
StockStatusAvailable = newStockStatus(gconv.PtrInt8(1), "可用,未分配渠道")
StockStatusSold = newStockStatus(gconv.PtrInt8(2), "已售出")
StockStatusReserved = newStockStatus(gconv.PtrInt8(3), "预留")
StockStatusLocked = newStockStatus(gconv.PtrInt8(4), "锁定")
)
// GetAllStockStatuses 获取所有库存状态
func GetAllStockStatuses() []StockStatus {
return []StockStatus{
StockStatusAvailable,
StockStatusSold,
StockStatusReserved,
StockStatusLocked,
}
type StockStatus *int8
type stockStatus struct {
code StockStatus
desc string
}
func (s stockStatus) Code() StockStatus {
return s.code
}
func (s stockStatus) Desc() string {
return s.desc
}
func newStockStatus(code StockStatus, desc string) stockStatus {
return stockStatus{code: code, desc: desc}
}