package response import ( "encoding/json" "psi/models" ) type ProductListResponse struct { List []ProductItem `json:"list"` // 商品列表 Total int64 `json:"total"` // 商品总数 Page int `json:"page"` // 当前页码 PageSize int `json:"pageSize"` // 每页数量 LocatedCount int64 `json:"located_count"` // 已落位商品数 UnlocatedCount int64 `json:"unlocated_count"` // 未落位商品数 EnabledCount int64 `json:"enabled_count"` // 启用中商品数 DisabledCount int64 `json:"disabled_count"` // 已禁用商品数 } type ProductItem struct { ID int64 `json:"id"` CategoryID int64 `json:"category_id"` CategoryName string `json:"category_name"` StandardProductID int64 `json:"standard_product_id"` Name string `json:"name"` Appearance int64 `json:"appearance"` Barcode string `json:"barcode"` Price int64 `json:"price"` SalePrice int64 `json:"sale_price"` LiveImage []string `json:"live_image"` IsBatchManaged int8 `json:"is_batch_managed"` IsShelfLifeManaged int8 `json:"is_shelf_life_managed"` Status int8 `json:"status"` WarehouseID int64 `json:"warehouse_id"` WarehouseCode string `json:"warehouse_code"` WarehouseName string `json:"warehouse_name"` LocationID int64 `json:"location_id"` LocationCode string `json:"location_code"` Quantity int64 `json:"quantity"` InboundTime string `json:"inbound_time"` CreatedAt int64 `json:"created_at"` UpdatedAt int64 `json:"updated_at"` ShopList []ShopInfo `json:"shop_list"` FirPrice float64 `json:"fir_price"` } type ShopInfo struct { ShopID string `json:"shop_id"` ShopAliasName string `json:"shop_alias_name"` ShopType int8 `json:"shop_type"` ShopTypeName string `json:"shop_type_name"` IsSent bool `json:"is_sent"` OutTaskLogID int64 `json:"out_task_log_id"` OutTaskID int64 `json:"out_task_id"` LogStatus int8 `json:"status"` LogMsg string `json:"msg"` LogCreatedAt int64 `json:"created_at"` } type ProductWithInfo struct { models.Product CategoryName string `gorm:"column:category_name"` WarehouseID int64 `gorm:"column:warehouse_id"` WarehouseCode string `gorm:"column:warehouse_code"` WarehouseName string `gorm:"column:warehouse_name"` LocationID int64 `gorm:"column:location_id"` LocationCode string `gorm:"column:location_code"` Quantity int64 `gorm:"column:quantity"` FirPrice float64 `json:"fir_price"` InboundTime string `json:"inbound_time"` } // ExportProductResponse 导出商品响应 type ExportProductResponse struct { Total int64 `json:"total"` FileName string `json:"file_name,omitempty"` FilePath string `json:"file_path,omitempty"` } func ConvertProductWithInfoToItem(product ProductWithInfo) ProductItem { var liveImage []string if len(product.LiveImage) > 0 { json.Unmarshal(product.LiveImage, &liveImage) } return ProductItem{ ID: product.ID, CategoryID: product.CategoryID, CategoryName: product.CategoryName, StandardProductID: product.StandardProductID, Name: product.Name, Appearance: product.Appearance, Barcode: product.Barcode, Price: product.Price, SalePrice: product.SalePrice, LiveImage: liveImage, IsBatchManaged: product.IsBatchManaged, IsShelfLifeManaged: product.IsShelfLifeManaged, Status: product.Status, WarehouseID: product.WarehouseID, WarehouseCode: product.WarehouseCode, WarehouseName: product.WarehouseName, LocationID: product.LocationID, LocationCode: product.LocationCode, Quantity: product.Quantity, CreatedAt: product.CreatedAt, UpdatedAt: product.UpdatedAt, InboundTime: product.InboundTime, ShopList: []ShopInfo{}, FirPrice: product.FirPrice, } } type ProductLogItem struct { ID int64 `json:"id"` Barcode string `json:"barcode"` Md5Data string `json:"md5_data"` OldName string `json:"old_name"` NewName string `json:"new_name"` OldPublisher string `json:"old_publisher"` NewPublisher string `json:"new_publisher"` OldAuthor string `json:"old_author"` NewAuthor string `json:"new_author"` OldPublicationTime int64 `json:"old_publication_time"` NewPublicationTime int64 `json:"new_publication_time"` OldPrice int64 `json:"old_price"` NewPrice int64 `json:"new_price"` OldBindingLayout string `json:"old_binding_layout"` NewBindingLayout string `json:"new_binding_layout"` OldPageCount int64 `json:"old_page_count"` NewPageCount int64 `json:"new_page_count"` OldWordCount int64 `json:"old_word_count"` NewWordCount int64 `json:"new_word_count"` OldLiveImage []string `json:"old_live_image"` NewLiveImage []string `json:"new_live_image"` OldIsSuit int8 `json:"old_is_suit"` NewIsSuit int8 `json:"new_is_suit"` Status int8 `json:"status"` CreateBy int64 `json:"create_by"` AuditBy int64 `json:"audit_by"` CreatedAt int64 `json:"created_at"` UpdatedAt int64 `json:"updated_at"` } type ProductLogListResponse struct { List []ProductLogItem `json:"list"` Total int64 `json:"total"` Page int `json:"page"` PageSize int `json:"pageSize"` } // ProductInventoryResponse 商品库存响应 type ProductInventoryResponse struct { Quantity int64 `json:"quantity"` // 总库存数量(type=0时使用) Warehouses []ProductInventoryWarehouse `json:"warehouses,omitempty"` // 仓库列表(type=1时使用) } // ShopProductDetailResponse 店铺商品详情响应 type ShopProductDetailResponse struct { ID int64 `json:"id"` // 店铺ID ShopName string `json:"shop_name"` // 店铺名称 ShopAliasName string `json:"shop_alias_name"` // 店铺别名 ShopType int8 `json:"shop_type"` // 店铺类型 ShopTypeName string `json:"shop_type_name"` // 店铺类型名称 CreatedAt int64 `json:"created_at"` // 创建时间 UpdatedAt int64 `json:"updated_at"` // 更新时间 Products []ProductInShop `json:"products"` // 商品列表 Total int64 `json:"total"` // 总数 Page int `json:"page"` // 当前页 PageSize int `json:"page_size"` // 每页条数 SuccessCount int64 `json:"success_count"` // 成功数量 NotSentCount int64 `json:"not_sent_count"` // 任务已创建未发送到店铺数量 FailedCount int64 `json:"failed_count"` // 发送到店铺失败数量 } // PushProductToShopResponse 上架到商铺响应 type PushProductToShopResponse struct { UserID int64 `json:"user_id,string"` // 用户ID WarehouseID int64 `json:"warehouse_id"` // 仓库ID ProductID int64 `json:"product_id"` // 商品ID ISBN string `json:"isbn"` // ISBN } // ProductInShop 店铺中的商品信息 type ProductInShop struct { ID int64 `json:"id"` // 商品ID Name string `json:"name"` // 商品名称 Barcode string `json:"barcode"` // 条码 LiveImage []string `json:"live_image"` // 实拍图 Price int64 `json:"price"` // 价格 SalePrice int64 `json:"sale_price"` // 售价 Quantity int64 `json:"quantity"` // 库存数量 WarehouseName string `json:"warehouse_name"` // 仓库名称 LocationCode string `json:"location_code"` // 库位编码 IsBatchManaged int8 `json:"is_batch_managed"` // 是否批次管理 IsShelfLifeManaged int8 `json:"is_shelf_life_managed"` // 是否效期管理 OutTaskLogID int64 `json:"out_task_log_id"` // 出库任务日志ID StatusInShop int8 `json:"status_in_shop"` // 在店铺中的状态 0未发布 1已发布 Msg string `json:"msg"` // 消息 WaveNo string `json:"wave_no"` // 波次编号 WaveTaskNo string `json:"wave_task_no"` // 波次任务编号 OutTaskNo int64 `json:"out_task_no"` // 出库任务编号 SalesOrderNo string `json:"sales_order_no"` // 销售单编号 ShippingNo string `json:"shipping_no"` // 发货单编号 CreatedAt int64 `json:"created_at"` // 创建时间 UpdatedAt int64 `json:"updated_at"` // 更新时间 } // ProductInventoryWarehouse 商品库存仓库信息 type ProductInventoryWarehouse struct { WarehouseID int64 `json:"warehouse_id"` // 仓库ID WarehouseName string `json:"warehouse_name"` // 仓库名称 WarehouseCode string `json:"warehouse_code"` // 仓库编码 LocationID int64 `json:"location_id"` // 库位ID LocationName string `json:"location_name"` // 库位名称 Logistics *LogisticsResponse `json:"logistics,omitempty"` // 物流模板信息 ProductName string `json:"product_name"` // 商品名称 ISBN string `json:"isbn"` // ISBN/条码 Appearance int64 `json:"appearance"` // 品相 TotalQuantity int64 `json:"total_quantity"` // 该仓库下该商品的总库存 } // ProductFullInfoResponse 商品完整信息响应 type ProductFullInfoResponse struct { ID int64 `json:"id"` // 商品ID CategoryID int64 `json:"category_id"` // 分类ID CategoryName string `json:"category_name"` // 分类名称 StandardProductID int64 `json:"standard_product_id"` // 标准商品ID Name string `json:"name"` // 商品名称 Appearance int64 `json:"appearance"` // 外观/品相 Barcode string `json:"barcode"` // 条码 Price int64 `json:"price"` // 价格(分) SalePrice int64 `json:"sale_price"` // 售价(分) Cost int64 `json:"cost"` // 运费(分) Stock int64 `json:"stock"` // 库存数量 LiveImage []string `json:"live_image"` // 实拍图 IsBatchManaged int8 `json:"is_batch_managed"` // 是否批次管理 IsShelfLifeManaged int8 `json:"is_shelf_life_managed"` // 是否保质期管理 Status int8 `json:"status"` // 状态 CreatedAt int64 `json:"created_at"` // 创建时间 UpdatedAt int64 `json:"updated_at"` // 更新时间 TotalStock int64 `json:"total_stock"` // 总库存数量 Inventories []ProductInventoryDetail `json:"inventories"` // 库存详情列表 ShopList []ShopInfo `json:"shop_list"` // 店铺信息列表 } // ProductInventoryDetail 库存详情 type ProductInventoryDetail struct { WarehouseID int64 `json:"warehouse_id"` // 仓库ID WarehouseName string `json:"warehouse_name"` // 仓库名称 WarehouseCode string `json:"warehouse_code"` // 仓库编码 LocationID int64 `json:"location_id"` // 库位ID LocationCode string `json:"location_code"` // 库位编码 LocationName string `json:"location_name"` // 库位名称 Quantity int64 `json:"quantity"` // 库存数量 InboundTime string `json:"inbound_time"` // 入库时间 }