177 lines
6.7 KiB
Go
177 lines
6.7 KiB
Go
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) 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
|
|
}
|