add auto comb cost price

This commit is contained in:
2025-11-13 22:13:05 +08:00
parent 1bfeac0504
commit 604174cce7
3 changed files with 12 additions and 9 deletions

View File

@@ -10,6 +10,7 @@ type PackageItemResponse struct {
ProductName string `json:"product_name" comment:"子产品名称"` ProductName string `json:"product_name" comment:"子产品名称"`
SortOrder int `json:"sort_order" comment:"排序"` SortOrder int `json:"sort_order" comment:"排序"`
Price float64 `json:"price" comment:"子产品价格"` Price float64 `json:"price" comment:"子产品价格"`
CostPrice float64 `json:"cost_price" comment:"子产品成本价"`
} }
// ProductInfoResponse 产品详情响应 // ProductInfoResponse 产品详情响应

View File

@@ -38,8 +38,8 @@ type ProductApplicationService interface {
ReorderPackageItems(ctx context.Context, packageID string, cmd *commands.ReorderPackageItemsCommand) error ReorderPackageItems(ctx context.Context, packageID string, cmd *commands.ReorderPackageItemsCommand) error
UpdatePackageItems(ctx context.Context, packageID string, cmd *commands.UpdatePackageItemsCommand) error UpdatePackageItems(ctx context.Context, packageID string, cmd *commands.UpdatePackageItemsCommand) error
// 可选子产品查询 // 可选子产品查询(管理员端,返回包含成本价的数据)
GetAvailableProducts(ctx context.Context, query *queries.GetAvailableProductsQuery) (*responses.ProductListResponse, error) GetAvailableProducts(ctx context.Context, query *queries.GetAvailableProductsQuery) (*responses.ProductAdminListResponse, error)
// API配置管理 // API配置管理
GetProductApiConfig(ctx context.Context, productID string) (*responses.ProductApiConfigResponse, error) GetProductApiConfig(ctx context.Context, productID string) (*responses.ProductApiConfigResponse, error)

View File

@@ -357,9 +357,9 @@ func (s *ProductApplicationServiceImpl) UpdatePackageItems(ctx context.Context,
return s.productManagementService.UpdatePackageItemsBatch(ctx, packageID, cmd.Items) return s.productManagementService.UpdatePackageItemsBatch(ctx, packageID, cmd.Items)
} }
// GetAvailableProducts 获取可选子产品列表 // GetAvailableProducts 获取可选子产品列表(管理员端,返回包含成本价的数据)
// 业务流程1. 获取启用产品 2. 过滤可订阅产品 3. 构建响应数据 // 业务流程1. 获取启用产品 2. 过滤可订阅产品 3. 构建管理员响应数据
func (s *ProductApplicationServiceImpl) GetAvailableProducts(ctx context.Context, query *appQueries.GetAvailableProductsQuery) (*responses.ProductListResponse, error) { func (s *ProductApplicationServiceImpl) GetAvailableProducts(ctx context.Context, query *appQueries.GetAvailableProductsQuery) (*responses.ProductAdminListResponse, error) {
// 构建筛选条件 // 构建筛选条件
filters := make(map[string]interface{}) filters := make(map[string]interface{})
filters["is_package"] = false // 只获取非组合包产品 filters["is_package"] = false // 只获取非组合包产品
@@ -385,13 +385,13 @@ func (s *ProductApplicationServiceImpl) GetAvailableProducts(ctx context.Context
return nil, err return nil, err
} }
// 转换为响应对象 // 转换为管理员响应对象(包含成本价,用于组合包配置)
items := make([]responses.ProductInfoResponse, len(products)) items := make([]responses.ProductAdminInfoResponse, len(products))
for i := range products { for i := range products {
items[i] = *s.convertToProductInfoResponse(products[i]) items[i] = *s.convertToProductAdminInfoResponse(products[i])
} }
return &responses.ProductListResponse{ return &responses.ProductAdminListResponse{
Total: total, Total: total,
Page: options.Page, Page: options.Page,
Size: options.PageSize, Size: options.PageSize,
@@ -514,6 +514,7 @@ func (s *ProductApplicationServiceImpl) convertToProductInfoResponse(product *en
ProductName: item.Product.Name, ProductName: item.Product.Name,
SortOrder: item.SortOrder, SortOrder: item.SortOrder,
Price: item.Product.Price.InexactFloat64(), Price: item.Product.Price.InexactFloat64(),
CostPrice: item.Product.CostPrice.InexactFloat64(),
} }
} }
} }
@@ -560,6 +561,7 @@ func (s *ProductApplicationServiceImpl) convertToProductAdminInfoResponse(produc
ProductName: item.Product.Name, ProductName: item.Product.Name,
SortOrder: item.SortOrder, SortOrder: item.SortOrder,
Price: item.Product.Price.InexactFloat64(), Price: item.Product.Price.InexactFloat64(),
CostPrice: item.Product.CostPrice.InexactFloat64(),
} }
} }
} }