diff --git a/types.go b/types.go new file mode 100644 index 0000000..18a06ce --- /dev/null +++ b/types.go @@ -0,0 +1,519 @@ +package sdk_LinkedMall + +import "encoding/json" + +// CommonResponse 是所有接口统一返回的外层结构体。 +// +// 注意:HTTP 200 不代表业务成功,必须判断 Success 字段是否为 true。 +// Code 为 SUCCESS 表示业务调用成功;否则看 SubCode、SubMessage 定位失败原因。 +// Data 为业务数据,不同接口 Data 内部结构不同,可配合各接口的响应数据类型使用, +// 或调用 DataAs 方法解码到目标结构体。 +type CommonResponse struct { + RequestId string `json:"RequestId"` + Success bool `json:"Success"` + Code string `json:"Code"` + Message string `json:"Message"` + SubCode string `json:"SubCode"` + SubMessage string `json:"SubMessage"` + Data interface{} `json:"Data"` +} + +// DataAs 将 Data 字段解码到目标结构体 out 中。 +func (r *CommonResponse) DataAs(out interface{}) error { + if r == nil || r.Data == nil { + return nil + } + b, err := json.Marshal(r.Data) + if err != nil { + return err + } + return json.Unmarshal(b, out) +} + +// rawResponse 用于内部解析响应,Data 使用 json.RawMessage 以支持按接口类型解码。 +type rawResponse struct { + RequestId string `json:"RequestId"` + Success bool `json:"Success"` + Code string `json:"Code"` + Message string `json:"Message"` + SubCode string `json:"SubCode"` + SubMessage string `json:"SubMessage"` + Data json.RawMessage `json:"Data"` +} + +// ---------- 采购方店铺 ---------- + +// ListPurchaserShopsRequest 分页获取采购方店铺列表请求。 +type ListPurchaserShopsRequest struct { + PageNum int `json:"PageNum"` + PageSize int `json:"PageSize"` +} + +// ListPurchaserShopsRespData 分页获取采购方店铺列表响应数据。 +type ListPurchaserShopsRespData struct { + Total int64 `json:"Total"` + PageNum int `json:"PageNum"` + PageSize int `json:"PageSize"` + ShopList []PurchaserShopItem `json:"ShopList"` +} + +// PurchaserShopItem 采购方店铺项。 +type PurchaserShopItem struct { + ShopId string `json:"ShopId"` + PurchaserId string `json:"PurchaserId"` + ShopName string `json:"ShopName"` + ShopStatus string `json:"ShopStatus"` +} + +// GetPurchaserShopRequest 获取单个采购店铺详情请求。 +type GetPurchaserShopRequest struct { + ShopId string `json:"-"` +} + +// GetPurchaserShopRespData 获取单个采购店铺详情响应数据。 +type GetPurchaserShopRespData struct { + ShopId string `json:"ShopId"` + PurchaserId string `json:"PurchaserId"` + ShopName string `json:"ShopName"` + ShopStatus string `json:"ShopStatus"` + ContactInfo string `json:"ContactInfo"` +} + +// ---------- 选品池商品 ---------- + +// ListSelectionProductsRequest 分页查询选品池商品列表请求。 +type ListSelectionProductsRequest struct { + PageNum int `json:"PageNum"` + PageSize int `json:"PageSize"` + PurchaserId string `json:"PurchaserId"` +} + +// ListSelectionProductsRespData 分页查询选品池商品列表响应数据。 +type ListSelectionProductsRespData struct { + Total int64 `json:"Total"` + PageNum int `json:"PageNum"` + PageSize int `json:"PageSize"` + ProductList []SelectionProductItem `json:"ProductList"` +} + +// SelectionProductItem 选品池商品项。 +type SelectionProductItem struct { + ProductId string `json:"ProductId"` + Title string `json:"Title"` + MainImage string `json:"MainImage"` + BrandName string `json:"BrandName"` + CategoryId string `json:"CategoryId"` +} + +// GetSelectionProductRequest 查询选品池商品详情请求。 +type GetSelectionProductRequest struct { + ProductId string `json:"-"` + PurchaserId string `json:"PurchaserId"` + DivisionCode string `json:"DivisionCode"` +} + +// GetSelectionProductRespData 查询选品池商品详情响应数据。 +type GetSelectionProductRespData struct { + ProductId string `json:"ProductId"` + Title string `json:"Title"` + MainImage string `json:"MainImage"` + Images []string `json:"Images"` + BrandName string `json:"BrandName"` + CategoryId string `json:"CategoryId"` + Desc string `json:"Desc"` + SkuList []SelectionSkuItem `json:"SkuList"` + CanSale bool `json:"CanSale"` + StockQuantity int64 `json:"StockQuantity"` +} + +// SelectionSkuItem 选品池商品 SKU 项。金额单位均为分。 +type SelectionSkuItem struct { + SkuId string `json:"SkuId"` + SkuSpec string `json:"SkuSpec"` + SalePrice int64 `json:"SalePrice"` + MarketPrice int64 `json:"MarketPrice"` + StockQuantity int64 `json:"StockQuantity"` +} + +// ---------- 类目 ---------- + +// ListCategoriesRequest 查询类目列表请求。 +type ListCategoriesRequest struct { + PurchaserId string `json:"PurchaserId"` + ParentCategoryId string `json:"ParentCategoryId"` +} + +// ListCategoriesRespData 查询类目列表响应数据。 +type ListCategoriesRespData struct { + CategoryList []CategoryItem `json:"CategoryList"` +} + +// CategoryItem 类目项。 +type CategoryItem struct { + CategoryId string `json:"CategoryId"` + CategoryName string `json:"CategoryName"` + ParentId string `json:"ParentId"` + Level int `json:"Level"` + Leaf bool `json:"Leaf"` +} + +// ---------- 搜索 ---------- + +// SearchProductsRequest 搜索选品池商品请求。 +type SearchProductsRequest struct { + Keyword string `json:"Keyword"` + CategoryId string `json:"CategoryId"` + PageNum int `json:"PageNum"` + PageSize int `json:"PageSize"` + PurchaserId string `json:"PurchaserId"` +} + +// SearchProductsRespData 搜索选品池商品响应数据。 +type SearchProductsRespData struct { + Total int64 `json:"Total"` + PageNum int `json:"PageNum"` + PageSize int `json:"PageSize"` + ProductList []SelectionProductItem `json:"ProductList"` +} + +// ---------- 选品池入库/出库 ---------- + +// SelectionGroupAddProductRequest 选品池商品入库请求。 +type SelectionGroupAddProductRequest struct { + PurchaserId string `json:"PurchaserId"` + ShopId string `json:"ShopId"` + ProductIdList []string `json:"ProductIdList"` +} + +// SelectionGroupRemoveProductRequest 选品池商品出库请求。 +type SelectionGroupRemoveProductRequest struct { + PurchaserId string `json:"PurchaserId"` + ShopId string `json:"ShopId"` + ProductIdList []string `json:"ProductIdList"` +} + +// SelectionGroupChangeProductRespData 选品池商品入库/出库响应数据。 +type SelectionGroupChangeProductRespData struct { + SuccessCount int `json:"SuccessCount"` +} + +// ---------- 采购单渲染 ---------- + +// RenderPurchaseOrderReq 采购单渲染(下单预校验)请求。 +// SplitPurchaseOrder 请求体结构与之一致。 +type RenderPurchaseOrderReq struct { + PurchaserId string `json:"PurchaserId"` + ShopId string `json:"ShopId"` + DivisionCode string `json:"DivisionCode"` + ItemList []RenderOrderItem `json:"ItemList"` + ReceiverInfo ReceiverInfo `json:"ReceiverInfo"` +} + +// RenderOrderItem 渲染请求中的商品项。 +type RenderOrderItem struct { + SkuId string `json:"SkuId"` + Quantity int64 `json:"Quantity"` +} + +// ReceiverInfo 收货人信息。DivisionCode 必须使用五级(乡镇街道)编码。 +type ReceiverInfo struct { + ReceiverName string `json:"ReceiverName"` + ReceiverPhone string `json:"ReceiverPhone"` + ProvinceCode string `json:"ProvinceCode"` + CityCode string `json:"CityCode"` + DistrictCode string `json:"DistrictCode"` + TownCode string `json:"TownCode"` + DetailAddress string `json:"DetailAddress"` +} + +// RenderPurchaseOrderRespData 采购单渲染响应数据。 +type RenderPurchaseOrderRespData struct { + CanSale bool `json:"CanSale"` + UnSaleReason string `json:"UnSaleReason"` + TotalAmount int64 `json:"TotalAmount"` + FreightAmount int64 `json:"FreightAmount"` + ItemList []RenderResultItem `json:"ItemList"` +} + +// RenderResultItem 渲染结果中的商品明细。 +type RenderResultItem struct { + SkuId string `json:"SkuId"` + ProductId string `json:"ProductId"` + Quantity int64 `json:"Quantity"` + SalePrice int64 `json:"SalePrice"` + CanSale bool `json:"CanSale"` + UnSaleReason string `json:"UnSaleReason"` +} + +// ---------- 拆单 ---------- + +// SplitPurchaseOrderRespData 采购单渲染并拆单响应数据。 +type SplitPurchaseOrderRespData struct { + SubOrderList []SplitSubOrderItem `json:"SubOrderList"` +} + +// SplitSubOrderItem 拆单后的子单商品项。 +type SplitSubOrderItem struct { + ShopId string `json:"ShopId"` + SkuId string `json:"SkuId"` + Quantity int64 `json:"Quantity"` + SalePrice int64 `json:"SalePrice"` +} + +// ---------- 创建采购单 ---------- + +// CreatePurchaseOrderReq 创建采购单请求。 +type CreatePurchaseOrderReq struct { + PurchaserId string `json:"PurchaserId"` + ShopId string `json:"ShopId"` + OuterPurchaseOrderId string `json:"OuterPurchaseOrderId"` + DivisionCode string `json:"DivisionCode"` + ReceiverInfo ReceiverInfo `json:"ReceiverInfo"` + SubOrderList []CreateSubOrderItem `json:"SubOrderList"` +} + +// CreateSubOrderItem 创建采购单子单商品项。 +type CreateSubOrderItem struct { + SkuId string `json:"SkuId"` + Quantity int64 `json:"Quantity"` +} + +// CreatePurchaseOrderRespData 创建采购单响应数据。 +type CreatePurchaseOrderRespData struct { + PurchaseOrderId string `json:"PurchaseOrderId"` +} + +// 采购单状态枚举。 +const ( + PurchaseOrderStatusInit = "INIT" + PurchaseOrderStatusProcess = "PROCESS" + PurchaseOrderStatusSuccess = "SUCCESS" + PurchaseOrderStatusFail = "FAIL" + PurchaseOrderStatusClosed = "CLOSED" +) + +// GetPurchaseOrderStatusRequest 获取采购单状态请求。 +type GetPurchaseOrderStatusRequest struct { + PurchaseOrderId string `json:"-"` + PurchaserId string `json:"PurchaserId"` +} + +// GetPurchaseOrderStatusRespData 获取采购单状态响应数据。 +type GetPurchaseOrderStatusRespData struct { + PurchaseOrderId string `json:"PurchaseOrderId"` + Status string `json:"Status"` + OrderIdList []string `json:"OrderIdList"` +} + +// ---------- 订单 ---------- + +// GetOrderRequest 获取订单详情请求。 +type GetOrderRequest struct { + OrderId string `json:"-"` + PurchaserId string `json:"PurchaserId"` +} + +// GetOrderRespData 获取订单详情响应数据。 +type GetOrderRespData struct { + OrderId string `json:"OrderId"` + PurchaseOrderId string `json:"PurchaseOrderId"` + Status string `json:"Status"` + TotalAmount int64 `json:"TotalAmount"` + PayAmount int64 `json:"PayAmount"` + FreightAmount int64 `json:"FreightAmount"` + CreateTime string `json:"CreateTime"` + ItemList []OrderItem `json:"ItemList"` + ReceiverInfo OrderReceiverInfo `json:"ReceiverInfo"` +} + +// OrderItem 订单商品明细。 +type OrderItem struct { + OrderItemId string `json:"OrderItemId"` + ProductId string `json:"ProductId"` + SkuId string `json:"SkuId"` + SkuSpec string `json:"SkuSpec"` + Title string `json:"Title"` + Quantity int64 `json:"Quantity"` + PayAmount int64 `json:"PayAmount"` +} + +// OrderReceiverInfo 订单收货信息。 +type OrderReceiverInfo struct { + ReceiverName string `json:"ReceiverName"` + ReceiverPhone string `json:"ReceiverPhone"` + ProvinceCode string `json:"ProvinceCode"` + CityCode string `json:"CityCode"` + DistrictCode string `json:"DistrictCode"` + TownCode string `json:"TownCode"` + DetailAddress string `json:"DetailAddress"` +} + +// QueryOrdersRequest 查询订单列表请求。 +type QueryOrdersRequest struct { + PurchaserId string `json:"PurchaserId"` + PurchaseOrderId string `json:"PurchaseOrderId"` + PageNum int `json:"PageNum"` + PageSize int `json:"PageSize"` + StartTime string `json:"StartTime"` + EndTime string `json:"EndTime"` +} + +// QueryOrdersRespData 查询订单列表响应数据。 +type QueryOrdersRespData struct { + Total int64 `json:"Total"` + PageNum int `json:"PageNum"` + PageSize int `json:"PageSize"` + OrderList []OrderSummary `json:"OrderList"` +} + +// OrderSummary 订单列表项。 +type OrderSummary struct { + OrderId string `json:"OrderId"` + Status string `json:"Status"` + PayAmount int64 `json:"PayAmount"` + CreateTime string `json:"CreateTime"` +} + +// ---------- 物流 ---------- + +// ListLogisticsOrdersRequest 查询订单物流信息请求。 +type ListLogisticsOrdersRequest struct { + OrderId string `json:"-"` + PurchaserId string `json:"PurchaserId"` +} + +// ListLogisticsOrdersRespData 查询订单物流信息响应数据。 +type ListLogisticsOrdersRespData struct { + LogisticsList []LogisticsInfo `json:"LogisticsList"` +} + +// LogisticsInfo 物流信息。 +type LogisticsInfo struct { + TrackingNumber string `json:"TrackingNumber"` + CompanyName string `json:"CompanyName"` + Traces []LogisticsTrace `json:"Traces"` +} + +// LogisticsTrace 物流轨迹节点。 +type LogisticsTrace struct { + Time string `json:"Time"` + Location string `json:"Location"` + Description string `json:"Description"` +} + +// ---------- 确认收货 ---------- + +// ConfirmDisburseRequest 确认收货请求。 +type ConfirmDisburseRequest struct { + OrderId string `json:"-"` + PurchaserId string `json:"PurchaserId"` +} + +// ---------- 售后 ---------- + +// RenderRefundOrderReq 售后渲染预校验请求。 +type RenderRefundOrderReq struct { + PurchaserId string `json:"PurchaserId"` + OrderId string `json:"OrderId"` + OrderItemId string `json:"OrderItemId"` + RefundQuantity int64 `json:"RefundQuantity"` + RefundType string `json:"RefundType"` +} + +// RenderRefundOrderRespData 售后渲染预校验响应数据。 +type RenderRefundOrderRespData struct { + CanRefund bool `json:"CanRefund"` + RefundAmount int64 `json:"RefundAmount"` + MaxRefundQuantity int64 `json:"MaxRefundQuantity"` + UnRefundReason string `json:"UnRefundReason"` +} + +// CreateRefundOrderReq 创建售后单请求。 +type CreateRefundOrderReq struct { + PurchaserId string `json:"PurchaserId"` + OrderId string `json:"OrderId"` + OrderItemId string `json:"OrderItemId"` + RefundQuantity int64 `json:"RefundQuantity"` + RefundAmount int64 `json:"RefundAmount"` + RefundType string `json:"RefundType"` + RefundReason string `json:"RefundReason"` + OuterRefundNo string `json:"OuterRefundNo"` +} + +// CreateRefundOrderRespData 创建售后单响应数据。 +type CreateRefundOrderRespData struct { + RefundOrderId string `json:"RefundOrderId"` +} + +// CancelRefundOrderRequest 取消售后单请求。 +type CancelRefundOrderRequest struct { + RefundOrderId string `json:"-"` + PurchaserId string `json:"PurchaserId"` +} + +// GetRefundOrderRequest 获取售后单详情请求。 +type GetRefundOrderRequest struct { + RefundOrderId string `json:"-"` + PurchaserId string `json:"PurchaserId"` +} + +// GetRefundOrderRespData 获取售后单详情响应数据。 +type GetRefundOrderRespData struct { + RefundOrderId string `json:"RefundOrderId"` + OrderId string `json:"OrderId"` + OrderItemId string `json:"OrderItemId"` + Status string `json:"Status"` + RefundQuantity int64 `json:"RefundQuantity"` + RefundAmount int64 `json:"RefundAmount"` + RefundType string `json:"RefundType"` + RefundReason string `json:"RefundReason"` +} + +// CreateGoodsShippingNoticeReq 回填退货物流运单请求。 +type CreateGoodsShippingNoticeReq struct { + PurchaserId string `json:"PurchaserId"` + LogisticsCompany string `json:"LogisticsCompany"` + TrackingNumber string `json:"TrackingNumber"` +} + +// ---------- 区域 ---------- + +// QueryChildDivisionCodeRequest 查询子区域编码请求。 +type QueryChildDivisionCodeRequest struct { + ParentDivisionCode string `json:"ParentDivisionCode"` +} + +// QueryChildDivisionCodeRespData 查询子区域编码响应数据。 +type QueryChildDivisionCodeRespData struct { + DivisionList []DivisionItem `json:"DivisionList"` +} + +// DivisionItem 区域编码项。 +type DivisionItem struct { + DivisionCode string `json:"DivisionCode"` + DivisionName string `json:"DivisionName"` + Level int `json:"Level"` + ParentCode string `json:"ParentCode"` +} + +// ---------- 回调通知 ---------- + +// CallbackEvent 阿里云消息回调事件。 +// 业务侧消费成功后需返回 {"success":true},否则阿里云会重试推送。 +type CallbackEvent struct { + EventCode string `json:"EventCode"` + PurchaseOrderId string `json:"PurchaseOrderId"` + OrderIdList []string `json:"OrderIdList"` + Status string `json:"Status"` + RequestId string `json:"RequestId"` +} + +// 回调事件编码枚举。 +const ( + EventCodePurchaseOrderChange = "PURCHASE_ORDER_CHANGE" + EventCodeOrderStatusChange = "ORDER_STATUS_CHANGE" + EventCodeRefundOrderChange = "REFUND_ORDER_CHANGE" +) +``` + +```go \ No newline at end of file