168 lines
6.8 KiB
Go
168 lines
6.8 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/globals"
|
||
"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) {
|
||
return status, err
|
||
}
|
||
|
||
func (p *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool, userName string) (err error) {
|
||
return err
|
||
}
|
||
func (p *PurchaseHandler) PickupGoods(order *model.GoodsOrder, isSelfDelivery bool, userName string) (err error) {
|
||
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) {
|
||
return err
|
||
}
|
||
func (p *PurchaseHandler) SelfDeliverDelivered(order *model.GoodsOrder, userName string) (err error) {
|
||
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) {
|
||
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) (orders []*model.GoodsOrder, err error) {
|
||
orderResult, err := api.JdShopAPI.AllOrders(&jdshopapi.AllOrdersParam{
|
||
Current: 1,
|
||
PageSize: 10,
|
||
OrderCreateDateRange: []string{orderCreatedStart, orderCreatedEnd},
|
||
})
|
||
orders, err = result2Orders(orderResult)
|
||
return orders, err
|
||
}
|
||
|
||
func result2Orders(result *jdshopapi.AllOrdersResult) (orders []*model.GoodsOrder, err error) {
|
||
for _, jdsOrder := range result.OrderList {
|
||
if jdsOrder.OrderStatus == jdshopapi.JdsOrderStatusWaittingPay {
|
||
continue
|
||
}
|
||
orderDetail, err := api.JdShopAPI.OrderDetail(utils.Int64ToStr(jdsOrder.OrderID))
|
||
if err != nil {
|
||
globals.SugarLogger.Debugf("jds OrderDetail error: %v", err.Error())
|
||
continue
|
||
}
|
||
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)),
|
||
StoreName: jdsOrder.StoreName,
|
||
OrderCreatedAt: utils.Str2Time(jdsOrder.OrderCreateTime + ":00"),
|
||
ConsigneeAddress: orderDetail.ConsigneeAddress,
|
||
ConsigneeMobile: orderDetail.ConsigneeMobile,
|
||
ConsigneeName: orderDetail.ConsigneeName,
|
||
ActualPayPrice: orderDetail.ActualPayPrice,
|
||
// TotalShopMoney: orderDetail.ActualPayPrice * jdshopapi.JdsPayPercentage,
|
||
}
|
||
//如果是暂停,表示是预订单
|
||
if jdsOrder.OrderStatus == jdshopapi.JdsOrderStatusPause {
|
||
order.BusinessType = model.BusinessTypeDingshida
|
||
order.ExpectedDeliveredTime = utils.Str2Time(orderDetail.ExpectedDeliveredTime)
|
||
} else if jdsOrder.OrderStatus == jdshopapi.JdsOrderStatusWaittingExport {
|
||
order.ExpectedDeliveredTime = order.CreatedAt.Add(time.Hour)
|
||
order.BusinessType = model.BusinessTypeImmediate
|
||
} else {
|
||
globals.SugarLogger.Errorf("未知的京东商城订单状态!status : %V", jdsOrder.OrderStatus)
|
||
}
|
||
for _, v := range jdsOrder.OrderItems {
|
||
sku := &model.OrderSku{
|
||
VendorID: model.VendorIDJDShop,
|
||
VendorOrderID: utils.Int64ToStr(jdsOrder.OrderID),
|
||
Count: v.SkuNum,
|
||
VendorSkuID: utils.Int64ToStr(v.SkuID),
|
||
SkuName: v.SkuName,
|
||
VendorPrice: jxutils.StandardPrice2Int(v.JdPrice),
|
||
SalePrice: jxutils.StandardPrice2Int(v.JdPrice),
|
||
}
|
||
_, _, _, specUnit, _, specQuality := jxutils.SplitSkuName(v.SkuName)
|
||
sku.Weight = jxutils.FormatSkuWeight(specQuality, specUnit)
|
||
order.Skus = append(order.Skus, sku)
|
||
}
|
||
orders = append(orders, order)
|
||
}
|
||
return orders, err
|
||
}
|