package supply import ( "context" "git.oa00.com/supply-chain/service/client" "git.oa00.com/supply-chain/service/lib/bean" "github.com/shopspring/decimal" ) const ( OrderCancelStatusSuccess = 1 // 取消成功 OrderCancelStatusFail = 2 // 取消失败 OrderCancelStatusReject = 3 // 申请拒收 ) type order struct { } type ArgsOrderSplit struct { Source source // 商品来源 ParentSourceOrderSn string // 上级订单号 OrderSubs []OrderSub // 子订单 } type OrderSub struct { SourceOrderSn string // 供应商订单号 FreightFee decimal.Decimal // 运费 OrderFee decimal.Decimal // 订单金额 Skus []OrderSplitSkuItem // 拆分订单sku } type OrderSplitSkuItem struct { SourceSkuId string Quantity uint SupplyPrice decimal.Decimal } // Split @Title 拆单 func (o *order) Split(ctx context.Context, args ArgsOrderSplit) (err error) { xClient, err := client.GetClient(o) if err != nil { return } reply := 0 err = xClient.Call(ctx, "Split", args, &reply) return } type ArgsOrderCancel struct { Source source // 商品来源 SourceOrderSn string // 供应商订单号 Status uint // 订单取消 } // Cancel @Title 订单取消 func (o *order) Cancel(ctx context.Context, args ArgsOrderCancel) (err error) { xClient, err := client.GetClient(o) if err != nil { return } reply := 0 err = xClient.Call(ctx, "Cancel", args, &reply) return } type ArgsOrderStockOut struct { Source source // 商品来源 SourceOrderSn string // 供应商订单号 Packages []Package // 包裹运单 } type Package struct { LogisticsCode string // 物流编码 LogisticsName string // 物流名称 WaybillCode string // 运单号 } // StockOut @Title 出库发货 func (o *order) StockOut(ctx context.Context, args ArgsOrderStockOut) (err error) { xClient, err := client.GetClient(o) if err != nil { return } reply := 0 err = xClient.Call(ctx, "StockOut", args, &reply) return } type ArgsOrderFinish struct { Source source // 商品来源 SourceOrderSn string // 供应商订单号 } // Finish @Title 订单完成 func (o *order) Finish(ctx context.Context, args ArgsOrderFinish) (err error) { xClient, err := client.GetClient(o) if err != nil { return } reply := 0 err = xClient.Call(ctx, "Finish", args, &reply) return } type ArgsRetailOrderLists struct { Search RetailOrderSearch Page bean.Page } type RetailOrderSearch struct { OrderSubSn uint64 `label:"订单号"` SupplierId uint `label:"供应商"` CustomerId uint `label:"客户"` WaybillCode string `label:"运单号"` Status uint `label:"订单状态"` PayStartDate string `label:"支付开始日期"` PayEndDate string `label:"支付结束日期"` FinishStartDate string `label:"完成开始日期"` FinishEndDate string `label:"完成结束日期"` } type RetailOrderItem struct { Id uint `json:"id"` OrderSubSn uint64 `json:"orderSubSn"` SourceName string `json:"sourceName"` CustomerName string `json:"customerName"` OrderStatus uint `json:"orderStatus"` LogisticsName string `json:"logisticsName"` WaybillCode string `json:"waybillCode"` OrderFee decimal.Decimal `json:"orderFee"` FreightFee decimal.Decimal `json:"freightFee"` SupplyOrderFee decimal.Decimal `json:"supplyOrderFee"` PayTime int64 `json:"payTime"` FinishAt int64 `json:"finishAt"` } type ReplyRetailOrderLists struct { Lists []RetailOrderItem `json:"lists"` Total int64 `json:"total"` } // Lists @Title 订单列表 func (o *order) Lists(ctx context.Context, args ArgsRetailOrderLists) (reply ReplyRetailOrderLists, err error) { xClient, err := client.GetClient(o) if err != nil { return } err = xClient.Call(ctx, "Lists", args, &reply) return } type OrderInfo struct { OrderId uint `json:"orderId"` CustomerId uint `json:"customerId"` OrderSn uint64 `json:"orderSn"` ReceiverName string `json:"receiverName"` ReceiverMobile string `json:"receiverMobile"` Address string `json:"address"` FreightFee decimal.Decimal `json:"freightFee"` OrderFee decimal.Decimal `json:"orderFee"` PayTime int64 `json:"payTime"` FinishAt int64 `json:"finishAt"` Status uint `json:"status"` Skus []OrderSku `json:"skus"` Packages []OrderPackage `json:"packages"` } type OrderSku struct { Id uint `json:"id"` SkuId uint `json:"skuId"` Name string `json:"name"` SupplyPrice decimal.Decimal `json:"supplyPrice"` Rate decimal.Decimal `json:"rate"` Price decimal.Decimal `json:"price"` AdjustPrice decimal.Decimal `json:"adjustPrice"` Amount decimal.Decimal `json:"amount"` ImgUrl string `json:"imgUrl"` Quantity uint `json:"quantity"` } type OrderPackage struct { LogisticsName string `json:"logisticsName"` WaybillCode string `json:"waybillCode"` } // Info @Title 订单详情 func (o *order) Info(ctx context.Context, orderSn string) (reply OrderInfo, err error) { xClient, err := client.GetClient(o) if err != nil { return } err = xClient.Call(ctx, "Info", orderSn, &reply) return }