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 ArgsChangeWaybill struct { // Id uint // Source source // 商品来源 // SourceOrderSn string // WaybillCode string // LogisticsName string // LogisticsCode string //} // //// ChangeWaybill @Title 修改运单信息 //func (o *order) ChangeWaybill(ctx context.Context, args ArgsChangeWaybill) (err error) { // xClient, err := client.GetClient(o) // if err != nil { // return // } // reply := 0 // err = xClient.Call(ctx, "ChangeWaybill", args, &reply) // return //} type ArgsOrderDelivered struct { Source source // 商品来源 SourceOrderSn string // 供应商订单号 } // Delivered @Title 订单签收/妥投 func (o *order) Delivered(ctx context.Context, args ArgsOrderDelivered) (err error) { xClient, err := client.GetClient(o) if err != nil { return } reply := 0 err = xClient.Call(ctx, "Delivered", 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:"订单号"` SourceSubSn 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 string `json:"orderSubSn"` // 订单号 SourceOrderSn string `json:"sourceOrderSn"` // 供应商订单号 SourceName string `json:"sourceName"` // 供应商名称 CustomerName string `json:"customerName"` // 客户名称 OrderStatus uint `json:"orderStatus"` // 订单状态 OrderFee decimal.Decimal `json:"orderFee"` // 订单金额 FreightFee decimal.Decimal `json:"freightFee"` // 运费 SupplyOrderFee decimal.Decimal `json:"supplyOrderFee"` // 供应商订单金额 PayTime int64 `json:"payTime"` // 支付时间 FinishAt int64 `json:"finishAt"` // 完成时间 CloseAt int64 `json:"closeAt"` // 关闭时间 StockOutAt int64 `json:"stockOutAt"` // 发货时间 } 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"` SourceOrderSn uint64 `json:"sourceOrderSn"` SourceId uint `json:"sourceId"` SourceName string `json:"sourceName"` 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"` StockOutAt int64 `json:"stockOutAt"` } 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 } type InfoByOrderId struct { Id uint ChannelOrderSn string // 渠道订单编号 OrderSn uint64 // 订单编号 ChannelId uint // 渠道id Type uint // 下单方式 1=api接口下单 2=客户商城下单 Status uint // 状态 OrderFee decimal.Decimal // 订单总金额-不含运费 SupplyOrderFee decimal.Decimal // 供应商订单总金额-不含运费 PayTime int64 // 确认时间 Rate decimal.Decimal // 商品费率 FreightFee decimal.Decimal // 运费 ReceiverName string // 收件人 ReceiverMobile string // 手机号 ReceiverEmail string // 邮箱 ReceiverZipCode string // 邮编 Address string // 配送地址 UserIp string // 用户ip ExpireAt int64 // 订单提单超时时效时间 LadingBillAt int64 // 提单时间 CloseAt int64 // 订单关闭时间 } // InfoByOrderId @Title 根据订单id查询详情 func (o *order) InfoByOrderId(ctx context.Context, orderId uint) (reply InfoByOrderId, err error) { xClient, err := client.GetClient(o) if err != nil { return } err = xClient.Call(ctx, "InfoByOrderId", orderId, &reply) return } type ReplySubmitData struct { OrderSn string `json:"orderSn"` Status int64 `json:"status"` OrderFee decimal.Decimal `json:"orderFee"` SupplyOrderFee decimal.Decimal `json:"supplyOrderFee"` FreightFee decimal.Decimal `json:"freightFee"` LadingBillAt int64 `json:"ladingBillAt"` Skus []ReplySubmitDataSku `json:"skus"` OrderSubs []ReplySubmitDataOrderSub `json:"orderSubs"` } type ReplySubmitDataOrderSub struct { OrderSubSn uint64 `json:"orderSubSn"` SourceId uint `json:"sourceId"` OrderFee decimal.Decimal `json:"orderFee"` SupplyOrderFee decimal.Decimal `json:"supplyOrderFee"` SourceName string `json:"sourceName"` SourceBase string `json:"sourceBase"` SourceOrderName string `json:"sourceOrderName"` } type ReplySubmitDataSku struct { SkuId string `json:"skuId"` Name string `json:"name"` Quantity int64 `json:"quantity"` SupplyPrice decimal.Decimal `json:"supplyPrice"` GuidePrice decimal.Decimal `json:"guidePrice"` Amount decimal.Decimal `json:"amount"` SourceSkuId string `json:"sourceSkuId"` } // SubmitData @Title 订单下单数据 func (o *order) SubmitData(ctx context.Context, orderId int64) (reply ReplySubmitData, err error) { xClient, err := client.GetClient(o) if err != nil { return } err = xClient.Call(ctx, "SubmitData", orderId, &reply) return }