74 lines
3.9 KiB
Go
74 lines
3.9 KiB
Go
package usecase
|
|
|
|
import (
|
|
"context"
|
|
|
|
"code.30cm.net/digimon/app-cloudep-product-service/pkg/domain/product"
|
|
)
|
|
|
|
type ProductItemUseCase interface {
|
|
// Create 新增單筆商品
|
|
Create(ctx context.Context, productItem *ProductItems) error
|
|
// Get 根據 ID 查詢單筆商品
|
|
Get(ctx context.Context, id string) (*ProductItems, error)
|
|
// Update 更新商品資訊
|
|
Update(ctx context.Context, id string, productItem *UpdateProductItems) error
|
|
// UpdateStatus 更新商品資訊
|
|
UpdateStatus(ctx context.Context, id string, status product.ItemStatus) error
|
|
// IncSalesCount 更新商品資訊
|
|
IncSalesCount(ctx context.Context, id string, saleCount uint64) error
|
|
// DecSalesCount 更新商品資訊
|
|
DecSalesCount(ctx context.Context, id string, saleCount uint64) error
|
|
// Delete ID 刪除商品
|
|
Delete(ctx context.Context, ids []string) error
|
|
// List 列出符合條件的商品,可根據需求加入分頁或其他條件參數
|
|
List(ctx context.Context, filter QueryProductItemParam) ([]*ProductItems, int64, error)
|
|
// DeleteByReferenceID 刪除某Project 下所有
|
|
DeleteByReferenceID(ctx context.Context, id string) error
|
|
}
|
|
|
|
type ProductItems struct {
|
|
ID string `json:"_id,omitempty"` // 專案 ID
|
|
ReferenceID string `json:"reference_id"` // 對應的專案 ID
|
|
Name string `json:"name"` // 名稱
|
|
Description string `json:"description"` // 描述
|
|
ShortDescription string `json:"short_description"` // 封面簡短描述
|
|
IsUnLimit bool `json:"is_un_limit"` // 是否沒有數量上限
|
|
IsFree bool `json:"is_free"` // 是否為免費品項(贈品) -> 開啟就是自訂金額
|
|
Stock uint64 `json:"stock"` // 庫存總數
|
|
Price string `json:"price"` // 價格
|
|
SKU string `json:"sku"` // 型號:對應顯示 Item 的 FK
|
|
TimeSeries product.TimeSeries `json:"time_series"` // 時段種類
|
|
Media []Media `json:"media,omitempty"` // 專案動態內容(圖片或者影片)
|
|
Status product.ItemStatus `json:"status"` // 商品狀態
|
|
Freight []CustomFields `json:"freight,omitempty"` // 運費
|
|
CustomFields []CustomFields `json:"custom_fields,omitempty"` // 自定義屬性
|
|
SalesCount uint64 `json:"sales_count" ` // 已賣出數量(相反,減到零就不能在賣)
|
|
UpdatedAt int64 `json:"updated_at"` // 更新時間
|
|
CreatedAt int64 `json:"created_at"` // 創建時間
|
|
}
|
|
|
|
type UpdateProductItems struct {
|
|
Name *string // 名稱
|
|
Description *string // 描述
|
|
ShortDescription *string // 封面簡短描述
|
|
IsUnLimit *bool // 是否沒有數量上限
|
|
IsFree *bool // 是否為免費品項(贈品) -> 開啟就是自訂金額
|
|
Stock *uint64 // 庫存總數
|
|
Price *string // 價格
|
|
SKU *string // 型號:對應顯示 Item 的 FK
|
|
TimeSeries *product.TimeSeries // 時段種類
|
|
Media []Media // 專案動態內容(圖片或者影片)
|
|
Freight []CustomFields // 運費
|
|
CustomFields []CustomFields // 自定義屬性
|
|
}
|
|
|
|
type QueryProductItemParam struct {
|
|
PageSize int64
|
|
PageIndex int64
|
|
ReferenceID *string // 對應的專案 ID
|
|
IsUnLimit *bool // 是否沒有數量上限
|
|
IsFree *bool // 是否為免費品項(贈品) -> 開啟就是自訂金額
|
|
Status *product.ItemStatus // 商品狀態
|
|
}
|