1
This commit is contained in:
@@ -2,6 +2,7 @@ package basesch
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
tiktokShop "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/tiktok_api"
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxcallback/orderman"
|
"git.rosy.net.cn/jx-callback/business/jxcallback/orderman"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxcallback/scheduler"
|
"git.rosy.net.cn/jx-callback/business/jxcallback/scheduler"
|
||||||
@@ -106,10 +107,6 @@ func (c *BaseScheduler) SelfDeliverDelivering(order *model.GoodsOrder, userName
|
|||||||
if c.IsReallyCallPlatformAPI {
|
if c.IsReallyCallPlatformAPI {
|
||||||
err = utils.CallFuncLogError(func() error {
|
err = utils.CallFuncLogError(func() error {
|
||||||
// 下面这个写法暂存,可能会有问题
|
// 下面这个写法暂存,可能会有问题
|
||||||
if err := partner.GetPurchaseOrderHandlerFromVendorID(order.VendorID).SelfDeliverDelivering(order, userName); err != nil && (err != scheduler.ErrOrderStatusAlreadySatisfyCurOperation) {
|
|
||||||
partner.CurOrderManager.OnOrderMsg(order, "SelfDeliverDelivering 调用[SelfDeliverDelivering]转自送", err.Error())
|
|
||||||
}
|
|
||||||
|
|
||||||
if order.VendorID == model.VendorIDMTWM {
|
if order.VendorID == model.VendorIDMTWM {
|
||||||
// 转自送同时取消平台订单(美团才做这个操作)
|
// 转自送同时取消平台订单(美团才做这个操作)
|
||||||
if _, err := partner.GetPurchasePlatformFromVendorID(order.VendorID).GetCancelDeliveryReason(order); err != nil {
|
if _, err := partner.GetPurchasePlatformFromVendorID(order.VendorID).GetCancelDeliveryReason(order); err != nil {
|
||||||
@@ -134,13 +131,29 @@ func (c *BaseScheduler) SelfDeliverDelivering(order *model.GoodsOrder, userName
|
|||||||
partner.CurOrderManager.OnOrderMsg(order, "美团外卖运单无法取消,", err.Error())
|
partner.CurOrderManager.OnOrderMsg(order, "美团外卖运单无法取消,", err.Error())
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
} else if order.VendorID == model.VendorIDDD { //抖音配送
|
||||||
//抖音配送
|
|
||||||
if order.VendorID == model.VendorIDDD {
|
|
||||||
//取消抖音配送转自送
|
|
||||||
localBill, _ := partner.CurOrderManager.LoadWaybill(order.VendorWaybillID, order.WaybillVendorID)
|
localBill, _ := partner.CurOrderManager.LoadWaybill(order.VendorWaybillID, order.WaybillVendorID)
|
||||||
err = c.CancelWaybill(localBill, partner.CancelWaybillReasonDYPSCancel, partner.CancelWaybillReasonStrDYPSCancel)
|
// 获取抖音配送状态
|
||||||
partner.CurOrderManager.OnOrderMsg(order, "取消抖音配送,转用门店自配送/三方配送", err.Error())
|
tiktokWayBillStatus, _ := partner.GetPurchasePlatformFromVendorID(order.VendorID).OrderLogisticsStatus(utils.Str2Int64(order.VendorOrderID))
|
||||||
|
if tiktokWayBillStatus >= tiktokShop.ShipmentStatusReceived {
|
||||||
|
//取消抖音配送转自送
|
||||||
|
err = c.CancelWaybill(localBill, partner.CancelWaybillReasonDYPSCancel, partner.CancelWaybillReasonStrDYPSCancel)
|
||||||
|
partner.CurOrderManager.OnOrderMsg(order, "取消抖音配送,转用门店自配送/三方配送", "抖音骑手已经接单,无法取消")
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// 先转自送,自送不成功取消平台配送.
|
||||||
|
if err = partner.GetPurchasePlatformFromVendorID(order.VendorID).CancelLogisticsByWmOrderId(order, "", "", order.VendorStoreID, order.VendorOrderID); err != nil {
|
||||||
|
err = c.CancelWaybill(localBill, partner.CancelWaybillReasonDYPSCancel, partner.CancelWaybillReasonStrDYPSCancel)
|
||||||
|
partner.CurOrderManager.OnOrderMsg(order, "取消抖音平台运单错误,无法转自送", err.Error())
|
||||||
|
return err
|
||||||
|
} else {
|
||||||
|
partner.GetPurchasePlatformFromVendorID(order.VendorID).SelfDeliverDelivering(order, "")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if err := partner.GetPurchaseOrderHandlerFromVendorID(order.VendorID).SelfDeliverDelivering(order, userName); err != nil && (err != scheduler.ErrOrderStatusAlreadySatisfyCurOperation) {
|
||||||
|
partner.CurOrderManager.OnOrderMsg(order, "SelfDeliverDelivering 调用[SelfDeliverDelivering]转自送", err.Error())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}, "SelfDeliverDelivering orderID:%s", order.VendorOrderID)
|
}, "SelfDeliverDelivering orderID:%s", order.VendorOrderID)
|
||||||
|
|||||||
@@ -69,51 +69,51 @@ func (s *DefScheduler) SelfDeliveringAndUpdateStatus(ctx *jxcontext.Context, ven
|
|||||||
}
|
}
|
||||||
err = scheduler.ErrCanNotFindOrder
|
err = scheduler.ErrCanNotFindOrder
|
||||||
}
|
}
|
||||||
globals.SugarLogger.Debugf("SelfDeliveringAndUpdateStatus=============err %v", err)
|
vendorStatus := fmt.Sprintf("%s转商户自送成功", ctx.GetUserName())
|
||||||
|
remark := ""
|
||||||
|
if err != nil {
|
||||||
|
vendorStatus = fmt.Sprintf("%s转商户自送失败", ctx.GetUserName())
|
||||||
|
remark = err.Error()
|
||||||
|
partner.CurOrderManager.OnOrderMsg(order, vendorStatus, remark)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// 上面是真的转自送,支持美团,饿百,京东,如果时抖店,抖店暂时全部是自送的!但是有骑手信息时,就是一个白嫖单子!
|
||||||
|
if order.VendorID == model.VendorIDDD && courierName != "" && courierMobile != "" {
|
||||||
|
timeNow := time.Now()
|
||||||
|
rand.Seed(timeNow.UnixNano())
|
||||||
|
randNumber := rand.Int63n(640)
|
||||||
|
if randNumber < 60 {
|
||||||
|
randNumber += 60
|
||||||
|
}
|
||||||
|
randTime := time.Duration(randNumber) * time.Second
|
||||||
|
bill := &model.Waybill{
|
||||||
|
VendorWaybillID: order.VendorOrderID,
|
||||||
|
VendorWaybillID2: "",
|
||||||
|
WaybillVendorID: model.VendorJXFakeWL,
|
||||||
|
VendorOrderID: order.VendorOrderID,
|
||||||
|
OrderVendorID: model.VendorIDDD,
|
||||||
|
CourierName: courierName,
|
||||||
|
CourierMobile: courierMobile,
|
||||||
|
Status: model.OrderStatusNew,
|
||||||
|
VendorStatus: utils.Int2Str(model.OrderStatusNew),
|
||||||
|
ActualFee: 500,
|
||||||
|
DesiredFee: order.ActualPayPrice,
|
||||||
|
TipFee: 0,
|
||||||
|
DuplicatedCount: 0,
|
||||||
|
DeliveryFlag: 0,
|
||||||
|
WaybillCreatedAt: timeNow,
|
||||||
|
WaybillFinishedAt: utils.DefaultTimeValue,
|
||||||
|
StatusTime: timeNow.Add(randTime), // 下一状态时间
|
||||||
|
OriginalData: "",
|
||||||
|
Remark: "自定义物流单",
|
||||||
|
VendorOrgCode: order.VendorOrgCode,
|
||||||
|
}
|
||||||
|
err = dao.CreateEntity(dao.GetDB(), bill)
|
||||||
|
}
|
||||||
return err
|
return err
|
||||||
}()
|
}()
|
||||||
globals.SugarLogger.Debugf("SelfDeliveringAndUpdateStatus2=============err %v", err)
|
|
||||||
}, jxutils.ComposeUniversalOrderID(vendorOrderID, vendorID))
|
}, jxutils.ComposeUniversalOrderID(vendorOrderID, vendorID))
|
||||||
vendorStatus := fmt.Sprintf("%s转商户自送成功", ctx.GetUserName())
|
|
||||||
remark := ""
|
|
||||||
if err != nil {
|
|
||||||
vendorStatus = fmt.Sprintf("%s转商户自送失败", ctx.GetUserName())
|
|
||||||
remark = err.Error()
|
|
||||||
}
|
|
||||||
partner.CurOrderManager.OnOrderMsg(order, vendorStatus, remark)
|
|
||||||
// 上面是真的转自送,支持美团,饿百,京东,如果时抖店,抖店暂时全部是自送的!但是有骑手信息时,就是一个白嫖单子!
|
|
||||||
if order.VendorID == model.VendorIDDD && courierName != "" && courierMobile != "" {
|
|
||||||
timeNow := time.Now()
|
|
||||||
rand.Seed(timeNow.UnixNano())
|
|
||||||
randNumber := rand.Int63n(640)
|
|
||||||
if randNumber < 60 {
|
|
||||||
randNumber += 60
|
|
||||||
}
|
|
||||||
randTime := time.Duration(randNumber) * time.Second
|
|
||||||
bill := &model.Waybill{
|
|
||||||
VendorWaybillID: order.VendorOrderID,
|
|
||||||
VendorWaybillID2: "",
|
|
||||||
WaybillVendorID: model.VendorJXFakeWL,
|
|
||||||
VendorOrderID: order.VendorOrderID,
|
|
||||||
OrderVendorID: model.VendorIDDD,
|
|
||||||
CourierName: courierName,
|
|
||||||
CourierMobile: courierMobile,
|
|
||||||
Status: model.OrderStatusNew,
|
|
||||||
VendorStatus: utils.Int2Str(model.OrderStatusNew),
|
|
||||||
ActualFee: 500,
|
|
||||||
DesiredFee: order.ActualPayPrice,
|
|
||||||
TipFee: 0,
|
|
||||||
DuplicatedCount: 0,
|
|
||||||
DeliveryFlag: 0,
|
|
||||||
WaybillCreatedAt: timeNow,
|
|
||||||
WaybillFinishedAt: utils.DefaultTimeValue,
|
|
||||||
StatusTime: timeNow.Add(randTime), // 下一状态时间
|
|
||||||
OriginalData: "",
|
|
||||||
Remark: "自定义物流单",
|
|
||||||
VendorOrgCode: order.VendorOrgCode,
|
|
||||||
}
|
|
||||||
err = dao.CreateEntity(dao.GetDB(), bill)
|
|
||||||
}
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -583,46 +583,31 @@ func (c *PurchaseHandler) CanSwitch2SelfDeliver(order *model.GoodsOrder) (isCan
|
|||||||
// Swtich2SelfDeliver 抖音转自送的时候就是通知抖音发货了
|
// Swtich2SelfDeliver 抖音转自送的时候就是通知抖音发货了
|
||||||
func (c *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder, userName string) (err error) {
|
func (c *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder, userName string) (err error) {
|
||||||
api := getAPI(order.VendorOrgCode, 0, "")
|
api := getAPI(order.VendorOrgCode, 0, "")
|
||||||
if time.Now().Sub(order.CreatedAt) <= tiktokShop.AutoCallDelayTime15*60 { //自动运力呼叫期间不可取消
|
remoteWaybill, err2 := c.GetDYPSRiderInfo(order.VendorOrderID)
|
||||||
return errors.New("抖音配送自动呼叫运力期间不可转门店自配送/三方配送,请下单成功15分钟后重试")
|
if err2 != nil {
|
||||||
|
return err2
|
||||||
}
|
}
|
||||||
if remoteWaybill, err2 := c.GetDYPSRiderInfo(order.VendorOrderID); err2 == nil {
|
|
||||||
//remoteWaybill := &superm_getShipmentInfo_response.ShipmentInfo{ //测试数据
|
if remoteWaybill.ShipmentStatus >= tiktokShop.ShipmentStatusArrived { //骑手取货后不可取消
|
||||||
// AfterSaleID: 0,
|
return errors.New("抖音配送骑手已取货,不可转门店自配送/三方配送")
|
||||||
// OccurredTime: "2022-12-28 15:55:51",
|
|
||||||
// RiderLatitude: "30.693528",
|
|
||||||
// RiderLongitude: "104.045337",
|
|
||||||
// RiderName: "赵乐均",
|
|
||||||
// RiderPhone: "15108474706",
|
|
||||||
// ShipmentError: 0,
|
|
||||||
// ShipmentStatus: 2,
|
|
||||||
// ShopID: 57939570,
|
|
||||||
// ShopOrderID: 5016940182798690015,
|
|
||||||
// TrackNo: "DYA36452999870015",
|
|
||||||
//}
|
|
||||||
if remoteWaybill.ShipmentStatus >= tiktokShop.ShipmentStatusArrived { //骑手取货后不可取消
|
|
||||||
return errors.New("抖音配送骑手已取货,不可转门店自配送/三方配送")
|
|
||||||
} else {
|
|
||||||
if localWaybill, err1 := dao.GetWaybills(dao.GetDB(), order.VendorOrderID); err1 == nil && len(localWaybill) > 0 {
|
|
||||||
if err = c.CancelWaybill(localWaybill[0], partner.CancelWaybillReasonDYPSCancel, partner.CancelWaybillReasonStrDYPSCancel); err != nil {
|
|
||||||
return fmt.Errorf("%s,不可转门店自配送/三方配送", err)
|
|
||||||
} else {
|
|
||||||
//转门店自送通知抖音发货
|
|
||||||
err = api.OrderDelivering(&order_logisticsAdd_request.OrderLogisticsAddParam{
|
|
||||||
OrderId: order.VendorOrderID,
|
|
||||||
Company: "",
|
|
||||||
CompanyCode: "chengdouruoxi",
|
|
||||||
LogisticsCode: order.VendorOrderID,
|
|
||||||
IsRefundReject: false,
|
|
||||||
IsRejectRefund: false,
|
|
||||||
SerialNumberList: nil,
|
|
||||||
AddressId: 0,
|
|
||||||
StoreId: utils.Str2Int64(order.VendorStoreID),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if err := getAPI(order.VendorOrgCode, 0, "").ShopOrderDispatcher(utils.Str2Int64(order.VendorStoreID), order.VendorOrderID, tiktokShop.DispatcherFeeTypeCancel); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
//转门店自送通知抖音发货
|
||||||
|
err = api.OrderDelivering(&order_logisticsAdd_request.OrderLogisticsAddParam{
|
||||||
|
OrderId: order.VendorOrderID,
|
||||||
|
Company: "",
|
||||||
|
CompanyCode: "chengdouruoxi",
|
||||||
|
LogisticsCode: order.VendorOrderID,
|
||||||
|
IsRefundReject: false,
|
||||||
|
IsRejectRefund: false,
|
||||||
|
SerialNumberList: nil,
|
||||||
|
AddressId: 0,
|
||||||
|
StoreId: utils.Str2Int64(order.VendorStoreID),
|
||||||
|
})
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -998,15 +983,24 @@ func (c *PurchaseHandler) GetCancelDeliveryReason(order *model.GoodsOrder) (stri
|
|||||||
return "", nil
|
return "", nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// CancelLogisticsByWmOrderId 取消美团外卖理由转使用三方配送
|
// CancelLogisticsByWmOrderId 取消平台配送,使用现有的三方配送
|
||||||
func (c *PurchaseHandler) CancelLogisticsByWmOrderId(order *model.GoodsOrder, reasonCode, detailContent, appPoiCode, orderId string) error {
|
func (c *PurchaseHandler) CancelLogisticsByWmOrderId(order *model.GoodsOrder, reasonCode, detailContent, appPoiCode, orderId string) error {
|
||||||
//return getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "").CancelLogisticsByWmOrderId(reasonCode, detailContent, appPoiCode, orderId)
|
return getAPI(order.VendorOrgCode, 0, "").ShopOrderDispatcher(utils.Str2Int64(order.VendorStoreID), order.VendorOrderID, tiktokShop.DispatcherFeeTypeCancel)
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// OrderLogisticsStatus 获取订单配送状态
|
// OrderLogisticsStatus 获取订单配送状态
|
||||||
func (c *PurchaseHandler) OrderLogisticsStatus(orderId int64) (int64, error) {
|
func (c *PurchaseHandler) OrderLogisticsStatus(orderId int64) (int64, error) {
|
||||||
return 0, nil
|
orderInfo, err := dao.GetSimpleOrder(dao.GetDB(), utils.Int64ToStr(orderId))
|
||||||
|
if err != nil {
|
||||||
|
return 0, errors.New("获取本地门店账号信息失败,请重试")
|
||||||
|
}
|
||||||
|
|
||||||
|
waybill, err := getAPI(orderInfo.VendorOrgCode, 0, "").GetShipmentInfo(utils.Str2Int64(orderInfo.VendorOrderID), 0, tiktokShop.ShipmentTypeInvoice)
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return waybill.ShipmentStatus, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetOrderTotalShopMoney 获取门店结算信息
|
// GetOrderTotalShopMoney 获取门店结算信息
|
||||||
|
|||||||
Reference in New Issue
Block a user