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

@@ -5,6 +5,7 @@ import (
"assets/consts/stock"
"assets/model/config"
enumDto "assets/model/dto/enum"
entity "assets/model/entity/asset"
"gitea.com/red-future/common/beans"
"github.com/gogf/gf/v2/frame/g"
@@ -15,18 +16,18 @@ import (
type CreateAssetReq struct {
g.Meta `path:"/createAsset" method:"post" tags:"资产管理" summary:"创建资产" dc:"创建新的资产"`
// 基础信息
Name string `json:"name" v:"required" dc:"资产名称"`
Description string `json:"description" dc:"资产描述"`
Type consts.AssetType `json:"type" v:"required" dc:"资产类型physical实物/virtual虚拟/service服务"`
CategoryId int64 `json:"categoryId" v:"required" dc:"分类ID"`
CategoryPath string `json:"categoryPath" dc:"分类路径"`
ImageURL string `json:"imageUrl" dc:"主图URL"`
Images []string `json:"images" dc:"图片列表"`
Status consts.AssetStatusType `json:"status" dc:"状态1/0" d:"1"`
UnlimitedStock bool `json:"unlimitedStock" dc:"是否无库存限制"`
StockMode stock.StockMode `json:"stockMode" dc:"库存管理模式1-明细模式 2-批次模式" d:"2"`
OnlineTime *gtime.Time `json:"onlineTime,omitempty" dc:"上线时间格式2006-01-02 15:04:05"`
OfflineTime *gtime.Time `json:"offlineTime,omitempty" dc:"下线时间格式2006-01-02 15:04:05"`
Name string `json:"name" v:"required" dc:"资产名称"`
Description string `json:"description" dc:"资产描述"`
Type consts.AssetType `json:"type" v:"required" dc:"资产类型physical实物/virtual虚拟/service服务"`
CategoryId int64 `json:"categoryId" v:"required" dc:"分类ID"`
CategoryPath string `json:"categoryPath" dc:"分类路径"`
ImageURL string `json:"imageUrl" dc:"主图URL"`
Images []string `json:"images" dc:"图片列表"`
Status consts.AssetStatus `json:"status" dc:"状态1/0" d:"1"`
UnlimitedStock bool `json:"unlimitedStock" dc:"是否无库存限制"`
StockMode stock.StockMode `json:"stockMode" dc:"库存管理模式1-明细模式 2-批次模式" d:"2"`
OnlineTime *gtime.Time `json:"onlineTime,omitempty" dc:"上线时间格式2006-01-02 15:04:05"`
OfflineTime *gtime.Time `json:"offlineTime,omitempty" dc:"下线时间格式2006-01-02 15:04:05"`
// 类型专用配置 - 实物资产配置
PhysicalAssetConfig *config.PhysicalAssetConfig `json:"physicalAssetConfig"`
// 类型专用配置 - 服务资产配置
@@ -52,7 +53,7 @@ type ListAssetReq struct {
Type consts.AssetType `json:"type" dc:"资产类型"`
CategoryId int64 `json:"categoryId" dc:"分类ID"`
CategoryPath string `json:"categoryPath" dc:"分类路径"`
Status consts.AssetStatusType `json:"status" dc:"状态"`
Status consts.AssetStatus `json:"status" dc:"状态"`
TenantModuleType beans.TenantModuleType `json:"tenantModuleType" dc:"租户模块类型"`
Keyword string `json:"keyword" dc:"关键词搜索"`
}
@@ -64,18 +65,18 @@ type ListAssetRes struct {
}
type AssetItem struct {
Id int64 `json:"id"` // 资产ID
Name string `json:"name"` // 资产名称
Type consts.AssetType `json:"type"` // 资产类型physical实物/virtual虚拟/service服务
TypeName string `json:"typeName"` // 资产类型physical实物/virtual虚拟/service服务
CategoryId int64 `json:"categoryId"` // 分类ID
UnlimitedStock bool `json:"unlimitedStock"` // 是否无库存限制
Status consts.AssetStatusType `json:"status"` // 资产状态active启用/inactive停用
BasePrice int `json:"basePrice"` // 基础价格(分为单位)
OnlineTime *gtime.Time `json:"onlineTime,omitempty"` // 上线时间
OfflineTime *gtime.Time `json:"offlineTime,omitempty"` // 下线时间
CreatedAt *gtime.Time `json:"createdAt" dc:"创建时间"`
UpdatedAt *gtime.Time `json:"updatedAt" dc:"更新时间"`
Id int64 `json:"id,string"` // 资产ID
Name string `json:"name"` // 资产名称
Type consts.AssetType `json:"type"` // 资产类型physical实物/virtual虚拟/service服务
TypeName string `json:"typeName"` // 资产类型physical实物/virtual虚拟/service服务
CategoryId int64 `json:"categoryId,string"` // 分类ID
UnlimitedStock bool `json:"unlimitedStock"` // 是否无库存限制
Status consts.AssetStatus `json:"status"` // 资产状态active启用/inactive停用
BasePrice int `json:"basePrice"` // 基础价格(分为单位)
OnlineTime *gtime.Time `json:"onlineTime,omitempty"` // 上线时间
OfflineTime *gtime.Time `json:"offlineTime,omitempty"` // 下线时间
CreatedAt *gtime.Time `json:"createdAt" dc:"创建时间"`
UpdatedAt *gtime.Time `json:"updatedAt" dc:"更新时间"`
}
// GetAssetReq 获取资产详情请求
@@ -86,7 +87,7 @@ type GetAssetReq struct {
// GetAssetRes 获取资产详情响应
type GetAssetRes struct {
*AssetItem
*entity.Asset
CategoryName string `json:"categoryName" dc:"分类名称"`
ImgAddressPrefix string `json:"imgAddressPrefix"`
}
@@ -99,7 +100,7 @@ type GetAssetAndSkuReq struct {
// GetAssetAndSkuRes 获取资产详情响应
type GetAssetAndSkuRes struct {
*AssetItem
*entity.Asset
Skus []AssetSkuItem `json:"skus" dc:"SKU列表"`
TenantModuleType []enumDto.KeyValue `json:"tenantModuleType" dc:"租户模块类型"`
ImgAddressPrefix string `json:"imgAddressPrefix"`
@@ -108,16 +109,16 @@ type GetAssetAndSkuRes struct {
// UpdateAssetReq 更新资产请求
type UpdateAssetReq struct {
g.Meta `path:"/updateAsset" method:"put" tags:"资产管理" summary:"更新资产" dc:"更新资产信息"`
Id int64 `json:"id" v:"required" dc:"资产ID"`
Name string `json:"name" dc:"资产名称"`
Description string `json:"description" dc:"资产描述"`
Type consts.AssetType `json:"type" dc:"资产类型physical实物/virtual虚拟/service服务"`
CategoryId int64 `json:"categoryId" dc:"分类ID"`
ImageURL string `json:"imageUrl" dc:"主图URL"`
Images []string `json:"images" dc:"图片列表"`
Status consts.AssetStatusType `json:"status,omitempty" dc:"状态1/0"`
OnlineTime *gtime.Time `json:"onlineTime,omitempty" dc:"上线时间格式2006-01-02 15:04:05"`
OfflineTime *gtime.Time `json:"offlineTime,omitempty" dc:"下线时间格式2006-01-02 15:04:05"`
Id int64 `json:"id" v:"required" dc:"资产ID"`
Name string `json:"name" dc:"资产名称"`
Description string `json:"description" dc:"资产描述"`
Type consts.AssetType `json:"type" dc:"资产类型physical实物/virtual虚拟/service服务"`
CategoryId int64 `json:"categoryId" dc:"分类ID"`
ImageURL string `json:"imageUrl" dc:"主图URL"`
Images []string `json:"images" dc:"图片列表"`
Status consts.AssetStatus `json:"status,omitempty" dc:"状态1/0"`
OnlineTime *gtime.Time `json:"onlineTime,omitempty" dc:"上线时间格式2006-01-02 15:04:05"`
OfflineTime *gtime.Time `json:"offlineTime,omitempty" dc:"下线时间格式2006-01-02 15:04:05"`
// 类型专用配置 - 实物资产配置
PhysicalAssetConfig *config.PhysicalAssetConfig `json:"physicalAssetConfig"`
// 类型专用配置 - 服务资产配置
@@ -131,8 +132,8 @@ type UpdateAssetReq struct {
// UpdateAssetStatusReq 更新资产状态请求
type UpdateAssetStatusReq struct {
g.Meta `path:"/updateAssetStatus" method:"put" tags:"资产管理" summary:"更新资产状态" dc:"更新资产状态"`
Id int64 `json:"id" v:"required" dc:"资产ID"`
Status consts.AssetStatusType `json:"status" v:"required|in:1,0" dc:"状态1启用/0停用"`
Id int64 `json:"id" v:"required" dc:"资产ID"`
Status consts.AssetStatus `json:"status" v:"required|in:1,0" dc:"状态1启用/0停用"`
}
// DeleteAssetReq 删除资产请求