package jdshop import ( "time" "git.rosy.net.cn/baseapi/platformapi/jdshopapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/jx-callback/globals/api" ) func (p *PurchaseHandler) AcceptOrRefuseFailedGetOrder(ctx *jxcontext.Context, order *model.GoodsOrder, isAcceptIt bool) (err error) { return err } func (p *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *model.GoodsOrder) { result := &jdshopapi.AllOrdersResult{} utils.Map2StructByJson(orderData, &result, false) jdsOrder := result.OrderList[0] order = &model.GoodsOrder{ VendorOrderID: utils.Int64ToStr(jdsOrder.OrderID), VendorID: model.VendorIDJDShop, BaseFreightMoney: jxutils.StandardPrice2Int(jdsOrder.Freight), VendorStatus: utils.Int2Str(jdsOrder.OrderStatus), VendorUserID: jdsOrder.UserPin, BuyerComment: jdsOrder.UserRemark, PickDeadline: utils.DefaultTimeValue, OriginalData: string(utils.MustMarshal(jdsOrder)), } return order } func (p *PurchaseHandler) GetOrder(vendorOrgCode, vendorOrderID string) (order *model.GoodsOrder, err error) { resultOrders, err := api.JdShopAPI.AllOrders(&jdshopapi.AllOrdersParam{ OrderID: vendorOrderID, Current: 1, PageSize: 1, }) return p.Map2Order(utils.Struct2FlatMap(resultOrders)), err } func (p *PurchaseHandler) GetOrderStatus(vendorOrgCode, vendorOrderID string) (status int, err error) { orderResult, err := api.JdShopAPI.AllOrders(&jdshopapi.AllOrdersParam{ OrderID: vendorOrderID, Current: 1, PageSize: 1, }) if err != nil { return 0, err } return status2Jxstatus(orderResult.OrderList[0].OrderStatus), err } func (p *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool, userName string) (err error) { var status int if isAcceptIt { status = model.OrderStatusAccepted } else { status = model.OrderStatusCanceled } return ChangeOrderStatus(order.VendorOrderID, status, "") } func (p *PurchaseHandler) PickupGoods(order *model.GoodsOrder, isSelfDelivery bool, userName string) (err error) { status, err := p.GetOrderStatus("", order.VendorOrderID2) //说明此时该订单在平台上已经取消了 if status == model.OrderStatusApplyCancel { err = ChangeOrderStatus(order.VendorOrderID, model.OrderStatusCanceled, "订单状态发生了改变") } else { err = ChangeOrderStatus(order.VendorOrderID, model.OrderStatusFinishedPickup, "自动拣货完成") } return err } func (p *PurchaseHandler) CallCourier(ctx *jxcontext.Context, order *model.GoodsOrder) (err error) { return err } // 取货失败后再次招唤平台配送 func (p *PurchaseHandler) ConfirmReceiveGoods(ctx *jxcontext.Context, order *model.GoodsOrder) (err error) { return err } // 投递失败后确认收到退货 func (p *PurchaseHandler) CanSwitch2SelfDeliver(order *model.GoodsOrder) (isCan bool, err error) { return isCan, err } func (p *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder, userName string) (err error) { return err } func (p *PurchaseHandler) Swtich2SelfDelivered(order *model.GoodsOrder, userName string) (err error) { return err } func (p *PurchaseHandler) SelfDeliverDelivering(order *model.GoodsOrder, userName string) (err error) { ChangeOrderStatus(order.VendorOrderID, model.OrderStatusDelivering, "") return err } func (p *PurchaseHandler) SelfDeliverDelivered(order *model.GoodsOrder, userName string) (err error) { ChangeOrderStatus(order.VendorOrderID, model.OrderStatusFinished, "") return err } func (p *PurchaseHandler) GetOrderRealMobile(ctx *jxcontext.Context, order *model.GoodsOrder) (mobile string, err error) { return mobile, err } func (p *PurchaseHandler) ReplyOrderComment(ctx *jxcontext.Context, vendorOrgCode string, orderComment *model.OrderComment, replyComment string) (err error) { return err } func (p *PurchaseHandler) AgreeOrRefuseCancel(ctx *jxcontext.Context, order *model.GoodsOrder, isAgree bool, reason string) (err error) { return err } func (p *PurchaseHandler) CancelOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (err error) { ChangeOrderStatus(order.VendorOrderID, model.OrderStatusCanceled, reason) if order.EclpOutID != "" { _, err = api.JdEclpAPI.CancelOrder(order.EclpOutID) } return err } func (p *PurchaseHandler) AdjustOrder(ctx *jxcontext.Context, order *model.GoodsOrder, removedSkuList []*model.OrderSku, reason string) (err error) { return err } func (p *PurchaseHandler) RefundOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (err error) { return err } func (p *PurchaseHandler) PartRefundOrder(ctx *jxcontext.Context, order *model.GoodsOrder, refundSkuList []*model.OrderSku, reason string) (err error) { return err } func (p *PurchaseHandler) AgreeOrRefuseRefund(ctx *jxcontext.Context, order *model.AfsOrder, approveType int, reason string) (err error) { return err } func (p *PurchaseHandler) ConfirmReceivedReturnGoods(ctx *jxcontext.Context, order *model.AfsOrder) (err error) { return err } func (p *PurchaseHandler) GetJdsOrders(ctx *jxcontext.Context, orderCreatedStart, orderCreatedEnd string, current, pageSize int) (orderResult *jdshopapi.AllOrdersResult, err error) { orderResult, err = api.JdShopAPI.AllOrders(&jdshopapi.AllOrdersParam{ Current: current, PageSize: pageSize, OrderCreateDateRange: []string{orderCreatedStart, orderCreatedEnd}, }) return orderResult, err } func ChangeOrderStatus(vendorOrderID string, status int, remark string) (err error) { orderStatus := &model.OrderStatus{ VendorOrderID: vendorOrderID, VendorID: model.VendorIDJDShop, OrderType: model.OrderTypeOrder, RefVendorOrderID: vendorOrderID, RefVendorID: model.VendorIDJDShop, VendorStatus: utils.Int2Str(status), Status: status, StatusTime: time.Now(), Remark: remark, } jxutils.CallMsgHandlerAsync(func() { err = partner.CurOrderManager.OnOrderStatusChanged("", orderStatus) }, jxutils.ComposeUniversalOrderID(vendorOrderID, model.VendorIDJDShop)) return err } func (p *PurchaseHandler) OrderExport(ctx *jxcontext.Context, vendorOrderID, vendorWaybillID string, isAuto bool) (err error) { companyID := jdshopapi.JdsDeliveryCompany3rd //表示是门店手动发京东 if !isAuto { companyID = jdshopapi.JdsDeliveryCompanyJD } err = api.JdShopAPI.OrderShipment(utils.Str2Int64(vendorOrderID[:12]), companyID, vendorWaybillID) return err } func (p *PurchaseHandler) OrderTransfer(ctx *jxcontext.Context, vendorOrderID, vendorWaybillID string, isAuto bool) (err error) { companyID := jdshopapi.JdsDeliveryCompany3rd //表示是门店手动发京东 if !isAuto { companyID = jdshopapi.JdsDeliveryCompanyJD } err = api.JdShopAPI.UpdateWaybill(vendorOrderID[:12], companyID, vendorOrderID) return err } func status2Jxstatus(status int) (statusJx int) { if status == jdshopapi.JdsOrderStatusWaittingPay { statusJx = model.OrderStatusWait4Pay } else if status == jdshopapi.JdsOrderStatusWaittingPayDel { statusJx = model.OrderStatusApplyCancel } else if status == jdshopapi.JdsOrderStatusWaittingExport { statusJx = model.OrderStatusAccepted } else if status == jdshopapi.JdsOrderStatusPause { statusJx = model.OrderStatusNew } return statusJx }