1
This commit is contained in:
@@ -966,7 +966,7 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf
|
|||||||
canDeliveryVendor := make(map[int64]int, 0)
|
canDeliveryVendor := make(map[int64]int, 0)
|
||||||
canDeliveryKey := make([]int64, 0, 0)
|
canDeliveryKey := make([]int64, 0, 0)
|
||||||
for k, v := range feeList {
|
for k, v := range feeList {
|
||||||
if excludeVendorIDsMap[k] != model.YES && v.DeliveryFee != model.NO {
|
if excludeVendorIDsMap[k] != model.YES && v.DeliveryFee > model.NO && v.DeliveryFee <= 5000 { // 限制配送价格
|
||||||
canDeliveryVendor[v.DeliveryFee] = k
|
canDeliveryVendor[v.DeliveryFee] = k
|
||||||
canDeliveryKey = append(canDeliveryKey, v.DeliveryFee)
|
canDeliveryKey = append(canDeliveryKey, v.DeliveryFee)
|
||||||
}
|
}
|
||||||
@@ -996,37 +996,6 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf
|
|||||||
excludeVendorIDs = []int{model.VendorIDDada, model.VendorIDMTPS, model.VendorIDUUPT, model.VendorIDSFPS}
|
excludeVendorIDs = []int{model.VendorIDDada, model.VendorIDMTPS, model.VendorIDUUPT, model.VendorIDSFPS}
|
||||||
vendorID = model.VendorIDFengNiao
|
vendorID = model.VendorIDFengNiao
|
||||||
}
|
}
|
||||||
//storeCourierList, err := dao.GetStoreCourierList2(dao.GetDB(), []int{jxutils.GetSaleStoreIDFromOrder(order)}, nil, model.StoreStatusOpened, []int{model.StoreAuditStatusOnline, model.StoreAuditStatusUpdated})
|
|
||||||
//for _, v := range storeCourierList {
|
|
||||||
// if excludeVendorIDsMap[v.VendorID] == model.YES {
|
|
||||||
// continue
|
|
||||||
// }
|
|
||||||
// if v.VendorID == model.VendorIDDada {
|
|
||||||
// excludeVendorIDs = []int{model.VendorIDFengNiao, model.VendorIDMTPS, model.VendorIDUUPT, model.VendorIDSFPS}
|
|
||||||
// vendorID = v.VendorID
|
|
||||||
// break
|
|
||||||
// }
|
|
||||||
// if v.VendorID == model.VendorIDFengNiao {
|
|
||||||
// excludeVendorIDs = []int{model.VendorIDDada, model.VendorIDMTPS, model.VendorIDUUPT, model.VendorIDSFPS}
|
|
||||||
// vendorID = v.VendorID
|
|
||||||
// break
|
|
||||||
// }
|
|
||||||
// if v.VendorID == model.VendorIDMTPS {
|
|
||||||
// excludeVendorIDs = []int{model.VendorIDDada, model.VendorIDFengNiao, model.VendorIDUUPT, model.VendorIDSFPS}
|
|
||||||
// vendorID = v.VendorID
|
|
||||||
// break
|
|
||||||
// }
|
|
||||||
// if v.VendorID == model.VendorIDUUPT {
|
|
||||||
// excludeVendorIDs = []int{model.VendorIDDada, model.VendorIDMTPS, model.VendorIDFengNiao, model.VendorIDSFPS}
|
|
||||||
// vendorID = v.VendorID
|
|
||||||
// break
|
|
||||||
// }
|
|
||||||
// if v.VendorID == model.VendorIDSFPS {
|
|
||||||
// excludeVendorIDs = []int{model.VendorIDDada, model.VendorIDMTPS, model.VendorIDUUPT, model.VendorIDFengNiao}
|
|
||||||
// vendorID = v.VendorID
|
|
||||||
// break
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
|
|
||||||
if vendorID != model.NO {
|
if vendorID != model.NO {
|
||||||
if _, err = s.CreateWaybillOnProviders4SavedOrder(jxcontext.AdminCtx, savedOrderInfo, nil, excludeVendorIDs, false, maxDeliveryFee); err == nil {
|
if _, err = s.CreateWaybillOnProviders4SavedOrder(jxcontext.AdminCtx, savedOrderInfo, nil, excludeVendorIDs, false, maxDeliveryFee); err == nil {
|
||||||
|
|||||||
@@ -215,20 +215,107 @@ func (v *VendorSync) SyncReorderCategories(ctx *jxcontext.Context, db *dao.DaoDB
|
|||||||
return SyncReorderCategories(ctx, categoryID, isAsync)
|
return SyncReorderCategories(ctx, categoryID, isAsync)
|
||||||
}
|
}
|
||||||
|
|
||||||
// func (v *VendorSync) oldSyncReorderCategories(ctx *jxcontext.Context, db *dao.DaoDB, categoryID int, isAsync bool, userName string) (hint string, err error) {
|
// SyncStore2Time 此方法只适用于定时任务同步门店
|
||||||
// hint, err = v.LoopMultiStoresVendors(ctx, db, fmt.Sprintf("分类重排序:%d", categoryID), isAsync, false, func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (interface{}, error) {
|
func (v *VendorSync) SyncStore2Time(ctx *jxcontext.Context, db *dao.DaoDB, vendorIDs, storeIDs []int, mustDirty, isAsync bool) (hint string, err error) {
|
||||||
// vendorInfo := batchItemList[0].(*MultiStoreVendorInfo)
|
userName := ctx.GetUserName()
|
||||||
// multiStoresHandler := v.GetMultiStoreHandler(vendorInfo.VendorID)
|
isManageIt := len(storeIDs) == 0 || len(storeIDs) > 5
|
||||||
// err2 := multiStoresHandler.ReorderCategories(db, categoryID, userName)
|
_, hint, err = v.LoopStoresMap2(ctx, nil, db, fmt.Sprintf("同步门店信息:%v", storeIDs), isAsync, isManageIt, vendorIDs, storeIDs, mustDirty, func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (resultList interface{}, err error) {
|
||||||
// if err2 == nil {
|
loopMapInfo := batchItemList[0].(*LoopStoreMapInfo)
|
||||||
// cat := &model.SkuCategory{}
|
var failedList []*partner.StoreSkuInfoWithErr
|
||||||
// _, err2 = dao.UpdateEntityByKV(db, cat, utils.Params2Map(dao.GetSyncStatusStructField(model.VendorNames[multiStoresHandler.GetVendorID()]), 0), utils.Params2Map(model.FieldParentID, categoryID))
|
handler := v.GetStoreHandler(loopMapInfo.VendorID)
|
||||||
// return nil, err2
|
if handler != nil {
|
||||||
// }
|
if len(loopMapInfo.StoreMapList) > 1 {
|
||||||
// return nil, err2
|
loopStoreTask := tasksch.NewParallelTask(fmt.Sprintf("处理平台%s", model.VendorChineseNames[loopMapInfo.VendorID]), tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx,
|
||||||
// })
|
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
// return "", err
|
var resultList []interface{}
|
||||||
// }
|
var vendorStoreID string
|
||||||
|
storeMap := batchItemList[0].(*model.StoreMap)
|
||||||
|
db2 := db
|
||||||
|
if len(loopMapInfo.StoreMapList) > 1 {
|
||||||
|
db2 = dao.GetDB()
|
||||||
|
}
|
||||||
|
if storeMap.Status == model.StoreStatusDisabled {
|
||||||
|
resultList = append(resultList, 1)
|
||||||
|
} else if model.IsSyncStatusNew(storeMap.SyncStatus) {
|
||||||
|
storeDetail, _ := dao.GetStoreDetail(db, storeMap.StoreID, storeMap.VendorID, storeMap.VendorOrgCode)
|
||||||
|
if vendorStoreID, err = handler.CreateStore2(db2, storeMap.StoreID, userName, nil, storeDetail); err == nil {
|
||||||
|
resultList = append(resultList, 1)
|
||||||
|
} else {
|
||||||
|
failedList = putils.GetErrMsg2FailedSingleList(nil, err, storeMap.StoreID, model.VendorChineseNames[storeMap.VendorID], "创建门店")
|
||||||
|
}
|
||||||
|
} else if model.IsSyncStatusDelete(storeMap.SyncStatus) {
|
||||||
|
if err = handler.DeleteStore(db2, storeMap.StoreID, userName); err == nil {
|
||||||
|
resultList = append(resultList, 1)
|
||||||
|
} else {
|
||||||
|
failedList = putils.GetErrMsg2FailedSingleList(nil, err, storeMap.StoreID, model.VendorChineseNames[storeMap.VendorID], "删除门店")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if err = handler.UpdateStore(db2, storeMap.StoreID, userName); err == nil {
|
||||||
|
resultList = append(resultList, 1)
|
||||||
|
} else {
|
||||||
|
failedList = putils.GetErrMsg2FailedSingleList(nil, err, storeMap.StoreID, model.VendorChineseNames[storeMap.VendorID], "更新门店")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if err == nil {
|
||||||
|
if model.IsSyncStatusNew(storeMap.SyncStatus) {
|
||||||
|
storeMap.VendorStoreID = vendorStoreID
|
||||||
|
storeMap.SyncStatus = 0
|
||||||
|
_, err = dao.UpdateEntity(db, storeMap, "VendorStoreID", model.FieldSyncStatus)
|
||||||
|
} else {
|
||||||
|
storeMap.SyncStatus = 0
|
||||||
|
_, err = dao.UpdateEntity(db, storeMap, model.FieldSyncStatus)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return resultList, err
|
||||||
|
}, loopMapInfo.StoreMapList)
|
||||||
|
t.AddChild(loopStoreTask).Run()
|
||||||
|
resultList, err = loopStoreTask.GetResult(0)
|
||||||
|
} else {
|
||||||
|
var resultList []interface{}
|
||||||
|
db2 := db
|
||||||
|
var vendorStoreID string
|
||||||
|
storeMap := loopMapInfo.StoreMapList[0]
|
||||||
|
if model.IsSyncStatusNew(storeMap.SyncStatus) {
|
||||||
|
storeDetail, _ := dao.GetStoreDetail(db, storeMap.StoreID, storeMap.VendorID, storeMap.VendorOrgCode)
|
||||||
|
if vendorStoreID, err = handler.CreateStore2(db2, storeMap.StoreID, userName, nil, storeDetail); err == nil {
|
||||||
|
resultList = append(resultList, 1)
|
||||||
|
} else {
|
||||||
|
failedList = putils.GetErrMsg2FailedSingleList(nil, err, storeMap.StoreID, model.VendorChineseNames[storeMap.VendorID], "创建门店")
|
||||||
|
}
|
||||||
|
} else if model.IsSyncStatusDelete(storeMap.SyncStatus) {
|
||||||
|
if err = handler.DeleteStore(db2, storeMap.StoreID, userName); err == nil {
|
||||||
|
resultList = append(resultList, 1)
|
||||||
|
} else {
|
||||||
|
failedList = putils.GetErrMsg2FailedSingleList(nil, err, storeMap.StoreID, model.VendorChineseNames[storeMap.VendorID], "删除门店")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if err = handler.UpdateStore(db, storeMap.StoreID, userName); err == nil {
|
||||||
|
resultList = append(resultList, 1)
|
||||||
|
} else {
|
||||||
|
failedList = putils.GetErrMsg2FailedSingleList(nil, err, storeMap.StoreID, model.VendorChineseNames[storeMap.VendorID], "更新门店")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if err == nil {
|
||||||
|
resultList = []interface{}{1}
|
||||||
|
if model.IsSyncStatusNew(storeMap.SyncStatus) {
|
||||||
|
storeMap.VendorStoreID = vendorStoreID
|
||||||
|
storeMap.SyncStatus = 0
|
||||||
|
_, err = dao.UpdateEntity(db, storeMap, "VendorStoreID", model.FieldSyncStatus)
|
||||||
|
} else {
|
||||||
|
storeMap.SyncStatus = 0
|
||||||
|
_, err = dao.UpdateEntity(db, storeMap, model.FieldSyncStatus)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
err = partner.AddVendorInfo2Err(err, loopMapInfo.VendorID)
|
||||||
|
}
|
||||||
|
if len(failedList) > 0 {
|
||||||
|
t.AddFailedList(failedList)
|
||||||
|
}
|
||||||
|
return resultList, err
|
||||||
|
}, true)
|
||||||
|
return hint, makeSyncError(err)
|
||||||
|
}
|
||||||
|
|
||||||
func (v *VendorSync) SyncStore2(ctx *jxcontext.Context, db *dao.DaoDB, vendorIDs, storeIDs []int, mustDirty, isAsync bool) (hint string, err error) {
|
func (v *VendorSync) SyncStore2(ctx *jxcontext.Context, db *dao.DaoDB, vendorIDs, storeIDs []int, mustDirty, isAsync bool) (hint string, err error) {
|
||||||
userName := ctx.GetUserName()
|
userName := ctx.GetUserName()
|
||||||
|
|||||||
@@ -424,7 +424,7 @@ func Init() {
|
|||||||
}, dailyWorkTimeList)
|
}, dailyWorkTimeList)
|
||||||
ScheduleTimerFunc("doDailyWork3", func() {
|
ScheduleTimerFunc("doDailyWork3", func() {
|
||||||
dao.SetStoresMapSyncStatus(dao.GetDB(), nil, nil, model.SyncFlagStoreStatus)
|
dao.SetStoresMapSyncStatus(dao.GetDB(), nil, nil, model.SyncFlagStoreStatus)
|
||||||
cms.CurVendorSync.SyncStore2(jxcontext.AdminCtx, dao.GetDB(), []int{model.VendorIDMTWM, model.VendorIDJD, model.VendorIDEBAI, model.VendorIDDD}, nil, true, true)
|
cms.CurVendorSync.SyncStore2Time(jxcontext.AdminCtx, dao.GetDB(), []int{model.VendorIDMTWM, model.VendorIDJD, model.VendorIDEBAI, model.VendorIDDD}, nil, true, true)
|
||||||
|
|
||||||
// 刷新门店平台商品
|
// 刷新门店平台商品
|
||||||
syncStoreSku()
|
syncStoreSku()
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ func (c *DeliveryHandler) onWaybillMsg(msg *dadaapi.CallbackMsg) (retVal *dadaap
|
|||||||
case model.VendorIDDD:
|
case model.VendorIDDD:
|
||||||
Lng, Lat, _ := partner.GetRidderPositionGetter(order.WaybillVendorID).GetRidderPosition(nil, order.VendorOrderID, order.VendorOrderID, order.VendorWaybillID, order.VendorWaybillID2)
|
Lng, Lat, _ := partner.GetRidderPositionGetter(order.WaybillVendorID).GetRidderPosition(nil, order.VendorOrderID, order.VendorOrderID, order.VendorWaybillID, order.VendorWaybillID2)
|
||||||
tiktokStatusPush(order, msg.OrderStatus, utils.Float64ToStr(Lng), utils.Float64ToStr(Lat), goodsOrder.VendorOrgCode)
|
tiktokStatusPush(order, msg.OrderStatus, utils.Float64ToStr(Lng), utils.Float64ToStr(Lat), goodsOrder.VendorOrgCode)
|
||||||
case model.VendorIDMTWM, model.VendorIDTaoVegetable:
|
case model.VendorIDMTWM, model.VendorIDTaoVegetable, model.VendorIDEBAI:
|
||||||
delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID, order.Status) // 骑手位置更新
|
delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID, order.Status) // 骑手位置更新
|
||||||
if goodsOrder.VendorID == model.VendorIDTaoVegetable && msg.OrderStatus == dadaapi.OrderStatusAccepted {
|
if goodsOrder.VendorID == model.VendorIDTaoVegetable && msg.OrderStatus == dadaapi.OrderStatusAccepted {
|
||||||
tao_vegetable.PushDelivererChangeInfo(goodsOrder, order, tao.TaoDeliveryTypeDD)
|
tao_vegetable.PushDelivererChangeInfo(goodsOrder, order, tao.TaoDeliveryTypeDD)
|
||||||
|
|||||||
@@ -323,7 +323,7 @@ func OnWaybillMsg(msg *fnpsapi.OrderStatusNottify, resultParam *fnpsapi.ShortSta
|
|||||||
case model.VendorIDDD:
|
case model.VendorIDDD:
|
||||||
Lng, Lat, _ := partner.GetRidderPositionGetter(order.WaybillVendorID).GetRidderPosition(nil, order.VendorOrderID, order.VendorOrderID, order.VendorWaybillID, order.VendorWaybillID2)
|
Lng, Lat, _ := partner.GetRidderPositionGetter(order.WaybillVendorID).GetRidderPosition(nil, order.VendorOrderID, order.VendorOrderID, order.VendorWaybillID, order.VendorWaybillID2)
|
||||||
tiktokStatusPush(order, orderStatus, utils.Float64ToStr(Lng), utils.Float64ToStr(Lat), good.VendorOrgCode)
|
tiktokStatusPush(order, orderStatus, utils.Float64ToStr(Lng), utils.Float64ToStr(Lat), good.VendorOrgCode)
|
||||||
case model.VendorIDMTWM, model.VendorIDTaoVegetable:
|
case model.VendorIDMTWM, model.VendorIDTaoVegetable, model.VendorIDEBAI:
|
||||||
delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID, order.Status) // 骑手位置更新
|
delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID, order.Status) // 骑手位置更新
|
||||||
if good.VendorID == model.VendorIDTaoVegetable && cc.OrderStatus == fnpsapi.OrderStatusAssigned {
|
if good.VendorID == model.VendorIDTaoVegetable && cc.OrderStatus == fnpsapi.OrderStatusAssigned {
|
||||||
tao_vegetable.PushDelivererChangeInfo(good, order, tao.TaoDeliveryTypeFN)
|
tao_vegetable.PushDelivererChangeInfo(good, order, tao.TaoDeliveryTypeFN)
|
||||||
|
|||||||
@@ -143,7 +143,7 @@ func (c *DeliveryHandler) onWaybillMsg(msg *mtpsapi.CallbackOrderMsg) (retVal *m
|
|||||||
case model.VendorIDDD:
|
case model.VendorIDDD:
|
||||||
Lng, Lat, _ := partner.GetRidderPositionGetter(order.WaybillVendorID).GetRidderPosition(nil, order.VendorOrderID, order.VendorOrderID, order.VendorWaybillID, order.VendorWaybillID2)
|
Lng, Lat, _ := partner.GetRidderPositionGetter(order.WaybillVendorID).GetRidderPosition(nil, order.VendorOrderID, order.VendorOrderID, order.VendorWaybillID, order.VendorWaybillID2)
|
||||||
pushMTPSToTiktok(msg.Status, order, utils.Float64ToStr(Lng), utils.Float64ToStr(Lat), goodsOrder.VendorOrgCode)
|
pushMTPSToTiktok(msg.Status, order, utils.Float64ToStr(Lng), utils.Float64ToStr(Lat), goodsOrder.VendorOrgCode)
|
||||||
case model.VendorIDMTWM, model.VendorIDTaoVegetable:
|
case model.VendorIDMTWM, model.VendorIDTaoVegetable, model.VendorIDEBAI:
|
||||||
delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID, order.Status) // 骑手位置更新
|
delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID, order.Status) // 骑手位置更新
|
||||||
if goodsOrder.VendorID == model.VendorIDTaoVegetable && msg.Status == mtpsapi.OrderStatusAccepted {
|
if goodsOrder.VendorID == model.VendorIDTaoVegetable && msg.Status == mtpsapi.OrderStatusAccepted {
|
||||||
tao_vegetable.PushDelivererChangeInfo(goodsOrder, order, tao.TaoDeliveryTypeMT)
|
tao_vegetable.PushDelivererChangeInfo(goodsOrder, order, tao.TaoDeliveryTypeMT)
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ import (
|
|||||||
"git.rosy.net.cn/baseapi/platformapi/mtwmapi"
|
"git.rosy.net.cn/baseapi/platformapi/mtwmapi"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
|
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/partner/purchase/ebai"
|
||||||
"git.rosy.net.cn/jx-callback/business/partner/purchase/mtwm"
|
"git.rosy.net.cn/jx-callback/business/partner/purchase/mtwm"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/platformapi/tiktok_shop/tiktok_api"
|
"git.rosy.net.cn/baseapi/platformapi/tiktok_shop/tiktok_api"
|
||||||
@@ -97,12 +98,6 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) {
|
|||||||
//3.当同一个订单已经上传了一次配送信息,如再次同步会更新配送信息,以最新的一次为准。
|
//3.当同一个订单已经上传了一次配送信息,如再次同步会更新配送信息,以最新的一次为准。
|
||||||
//4.如订单已完成、已取消等状态发货将失败。
|
//4.如订单已完成、已取消等状态发货将失败。
|
||||||
for _, v := range orders {
|
for _, v := range orders {
|
||||||
//if orderId == "" { // 订单id为空是,是定时轮询操作,不做此状态
|
|
||||||
// waybillList, _ := dao.GetWaybills(db, v.VendorOrderID, nil)
|
|
||||||
// if len(waybillList) > 0 && waybillList[0].Status > model.WaybillStatusEndBegin {
|
|
||||||
// continue
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
if v.Status >= model.OrderStatusEndBegin {
|
if v.Status >= model.OrderStatusEndBegin {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@@ -176,7 +171,7 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) {
|
|||||||
default:
|
default:
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
// 有时候运单状态改变之后但是上面的订单状态还没来得及改变,这里覆盖一下
|
// 有时候运单状态改变之后但是上面的订单状态还没来得及改变,这里覆盖一下(riderInfo.LogisticsStatus 美团状态为准)
|
||||||
if wayBillStatus != model.NO {
|
if wayBillStatus != model.NO {
|
||||||
switch wayBillStatus {
|
switch wayBillStatus {
|
||||||
case 5: // 呼叫骑手
|
case 5: // 呼叫骑手
|
||||||
@@ -238,7 +233,17 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) {
|
|||||||
case model.VendorIDELM: // 饿了么
|
case model.VendorIDELM: // 饿了么
|
||||||
continue
|
continue
|
||||||
case model.VendorIDEBAI: // 饿百发单
|
case model.VendorIDEBAI: // 饿百发单
|
||||||
continue
|
if orderId == "" {
|
||||||
|
if handler := partner.GetPurchaseOrderHandlerFromVendorID(v.VendorID); handler != nil {
|
||||||
|
if err := handler.GetOrderRider(v.VendorOrgCode, v.VendorStoreID, utils.Struct2Map(riderInfo, "", true)); err != nil {
|
||||||
|
globals.SugarLogger.Debugf("Error pushing ebai rider information :%s--%s--%v", v.VendorOrderID, utils.Format4Output(riderInfo, false), err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if err := ebai.OrderStatussync(utils.Struct2Map(riderInfo, "", true)); err != nil {
|
||||||
|
globals.SugarLogger.Debugf("Error pushing ebai OrderStatussync information :%s--%s--%v", v.VendorOrderID, utils.Format4Output(riderInfo, false), err)
|
||||||
|
}
|
||||||
|
}
|
||||||
case model.VendorIDJD: // 京东发单
|
case model.VendorIDJD: // 京东发单
|
||||||
continue
|
continue
|
||||||
case model.VendorIDGD: // 美团发单
|
case model.VendorIDGD: // 美团发单
|
||||||
|
|||||||
@@ -460,7 +460,7 @@ func OnWaybillMsg(urlIndex string, msg interface{}) (resp *sfps2.CallbackRespons
|
|||||||
case model.VendorIDDD:
|
case model.VendorIDDD:
|
||||||
Lng, Lat, _ := partner.GetRidderPositionGetter(order.WaybillVendorID).GetRidderPosition(nil, order.VendorOrderID, order.VendorOrderID, order.VendorWaybillID, order.VendorWaybillID2)
|
Lng, Lat, _ := partner.GetRidderPositionGetter(order.WaybillVendorID).GetRidderPosition(nil, order.VendorOrderID, order.VendorOrderID, order.VendorWaybillID, order.VendorWaybillID2)
|
||||||
tiktokStatusPush(order, orderStatus, utils.Float64ToStr(Lng), utils.Float64ToStr(Lat), goodsOrder.VendorOrgCode)
|
tiktokStatusPush(order, orderStatus, utils.Float64ToStr(Lng), utils.Float64ToStr(Lat), goodsOrder.VendorOrgCode)
|
||||||
case model.VendorIDTaoVegetable, model.VendorIDMTWM:
|
case model.VendorIDTaoVegetable, model.VendorIDMTWM, model.VendorIDEBAI:
|
||||||
delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID, order.Status) // 骑手位置更新
|
delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID, order.Status) // 骑手位置更新
|
||||||
if goodsOrder.VendorID == model.VendorIDTaoVegetable && orderStatus == sfps2.OrderStatusTakeOrder {
|
if goodsOrder.VendorID == model.VendorIDTaoVegetable && orderStatus == sfps2.OrderStatusTakeOrder {
|
||||||
tao_vegetable.PushDelivererChangeInfo(goodsOrder, order, tao.TaoDeliveryTypeSF)
|
tao_vegetable.PushDelivererChangeInfo(goodsOrder, order, tao.TaoDeliveryTypeSF)
|
||||||
|
|||||||
@@ -440,7 +440,7 @@ func OnWaybillMsg(req *uuptapi.WaybillCallbackParam) (resp *uuptapi.CallbackResp
|
|||||||
case model.VendorIDDD:
|
case model.VendorIDDD:
|
||||||
Lng, Lat, _ := partner.GetRidderPositionGetter(param.WaybillVendorID).GetRidderPosition(nil, param.VendorOrderID, param.VendorOrderID, param.VendorWaybillID, param.VendorWaybillID2)
|
Lng, Lat, _ := partner.GetRidderPositionGetter(param.WaybillVendorID).GetRidderPosition(nil, param.VendorOrderID, param.VendorOrderID, param.VendorWaybillID, param.VendorWaybillID2)
|
||||||
tiktokStatusPush(param, req.State, utils.Float64ToStr(Lng), utils.Float64ToStr(Lat), good.VendorOrgCode)
|
tiktokStatusPush(param, req.State, utils.Float64ToStr(Lng), utils.Float64ToStr(Lat), good.VendorOrgCode)
|
||||||
case model.VendorIDMTWM, model.VendorIDTaoVegetable:
|
case model.VendorIDMTWM, model.VendorIDTaoVegetable, model.VendorIDEBAI:
|
||||||
delivery.GetOrderRiderInfoToPlatform(param.VendorOrderID, param.Status) // 骑手位置更新
|
delivery.GetOrderRiderInfoToPlatform(param.VendorOrderID, param.Status) // 骑手位置更新
|
||||||
if good.VendorID == model.VendorIDTaoVegetable && req.State == uuptapi.StateRMGrabsOrder {
|
if good.VendorID == model.VendorIDTaoVegetable && req.State == uuptapi.StateRMGrabsOrder {
|
||||||
tao_vegetable.PushDelivererChangeInfo(good, param, tao.TaoDeliveryTypeOther)
|
tao_vegetable.PushDelivererChangeInfo(good, param, tao.TaoDeliveryTypeOther)
|
||||||
|
|||||||
@@ -564,6 +564,10 @@ func CheckAndReply(req *JXMsg, elmAppID string) (err error) {
|
|||||||
temp := mt
|
temp := mt
|
||||||
//获取自定义回复模板
|
//获取自定义回复模板
|
||||||
if template := GetCustomTemplate(utils.Int2Str(mt.AppID), mt.AppPoiCode); len(template.Template) > 0 {
|
if template := GetCustomTemplate(utils.Int2Str(mt.AppID), mt.AppPoiCode); len(template.Template) > 0 {
|
||||||
|
// 关闭自动回复
|
||||||
|
if template.Template == "3ASOkN9WiU3AUae2tYGChA==" {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
temp.MsgContent = template.Template
|
temp.MsgContent = template.Template
|
||||||
} else {
|
} else {
|
||||||
temp.MsgContent, err = GetDefaultTemplate(utils.Int2Str(mt.AppID), mt.AppPoiCode, VendorIDMT)
|
temp.MsgContent, err = GetDefaultTemplate(utils.Int2Str(mt.AppID), mt.AppPoiCode, VendorIDMT)
|
||||||
@@ -930,7 +934,7 @@ func GetCustomTemplate(appID, vendorStoreID string) (storeTemplate StoreTemplate
|
|||||||
|
|
||||||
// AddCustomReply 增加门店自定义回复模板
|
// AddCustomReply 增加门店自定义回复模板
|
||||||
func AddCustomReply(appID, vendorStoreID, replyTemplate string) (storeTemplate string, err error) {
|
func AddCustomReply(appID, vendorStoreID, replyTemplate string) (storeTemplate string, err error) {
|
||||||
if len(appID) == 0 || len(vendorStoreID) == 0 || len(replyTemplate) == 0 {
|
if len(appID) == 0 || len(vendorStoreID) == 0 {
|
||||||
return "", errors.New("参数错误请检查!")
|
return "", errors.New("参数错误请检查!")
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -942,7 +946,7 @@ func AddCustomReply(appID, vendorStoreID, replyTemplate string) (storeTemplate s
|
|||||||
data, _ := json.Marshal(template)
|
data, _ := json.Marshal(template)
|
||||||
|
|
||||||
err = rdb.Del(key)
|
err = rdb.Del(key)
|
||||||
if err == nil {
|
if err == nil && replyTemplate != "" {
|
||||||
err = rdb.RPush(key, data)
|
err = rdb.RPush(key, data)
|
||||||
//err = rdb.Set(key, replyTemplate, 0)
|
//err = rdb.Set(key, replyTemplate, 0)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,11 +55,18 @@ func GetOrderIDFromMap(orderMap map[string]interface{}) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func GetAfsIDFromMap(orderMap map[string]interface{}) string {
|
func GetAfsIDFromMap(orderMap map[string]interface{}) string {
|
||||||
if orderID := orderMap["refund_order_id"]; orderID != nil {
|
//if orderID := orderMap["refund_order_id"]; orderID != nil {
|
||||||
if tryOrderID, ok := orderID.(string); ok {
|
// if tryOrderID, ok := orderID.(string); ok {
|
||||||
return tryOrderID
|
// return tryOrderID
|
||||||
}
|
// }
|
||||||
return utils.Int64ToStr(utils.MustInterface2Int64(orderID))
|
// return utils.Int64ToStr(utils.MustInterface2Int64(orderID))
|
||||||
|
//}
|
||||||
|
//return ""
|
||||||
|
|
||||||
|
ReverseOderList := orderMap["reverse_order_list"].([]interface{})
|
||||||
|
if len(ReverseOderList) != 0 {
|
||||||
|
afsInfo := ReverseOderList[len(ReverseOderList)-1].(map[string]interface{})
|
||||||
|
return afsInfo["refund_order_id"].(string)
|
||||||
}
|
}
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package ebai
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"sync"
|
"sync"
|
||||||
|
"time"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/platformapi/ebaiapi"
|
"git.rosy.net.cn/baseapi/platformapi/ebaiapi"
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
@@ -158,20 +159,35 @@ func (p *PurchaseHandler) GetVendorCategories(ctx *jxcontext.Context) (vendorCat
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (p *PurchaseHandler) GetOrderRider(vendorOrgCode, vendorStoreID string, param map[string]interface{}) (err error) {
|
func (p *PurchaseHandler) GetOrderRider(vendorOrgCode, vendorStoreID string, param map[string]interface{}) (err error) {
|
||||||
|
riderInfo := &ebaiapi.OrderSelfDeliveryLocationSync{
|
||||||
|
OrderId: param["order_id"].(string),
|
||||||
|
Location: &ebaiapi.RiderLocation{
|
||||||
|
UTC: utils.Int64ToStr(time.Now().Unix()),
|
||||||
|
Altitude: "0",
|
||||||
|
Latitude: param["latitude"].(string),
|
||||||
|
Longitude: param["longitude"].(string),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
return api.EbaiAPI.SelfDeliveryLocationSync(riderInfo)
|
||||||
|
}
|
||||||
|
|
||||||
|
func OrderStatussync(param map[string]interface{}) error {
|
||||||
selfStatus := 0
|
selfStatus := 0
|
||||||
switch param["logistics_status"].(int) {
|
switch param["logistics_status"].(int) {
|
||||||
case 0:
|
case 0, 5:
|
||||||
selfStatus = 2 // 2:配送待分配
|
selfStatus = ebaiapi.OrderDeliveryStatusWaitRider // 2:配送待分配
|
||||||
case 12:
|
case 10:
|
||||||
selfStatus = 3 // 骑士接单
|
selfStatus = ebaiapi.OrderDeliveryStatusReceived // 骑士接单
|
||||||
case 15:
|
case 15:
|
||||||
selfStatus = 8 // 骑士到店
|
selfStatus = ebaiapi.OrderDeliveryStatusToStore // 骑士到店
|
||||||
case 20:
|
case 20:
|
||||||
selfStatus = 20 // 骑手送出
|
selfStatus = ebaiapi.OrderDeliveryStatusSend // 骑手送出
|
||||||
case 40:
|
case 40:
|
||||||
selfStatus = 30 // 配送完成
|
selfStatus = ebaiapi.OrderDeliveryStatusSendOver // 配送完成
|
||||||
|
case 100:
|
||||||
|
selfStatus = ebaiapi.OrderDeliveryStatusCancel // 取消
|
||||||
default:
|
default:
|
||||||
selfStatus = 7 // 配送异常
|
selfStatus = ebaiapi.OrderDeliveryStatusAbnormal // 配送异常
|
||||||
}
|
}
|
||||||
param2 := &ebaiapi.PushRiderInfo{
|
param2 := &ebaiapi.PushRiderInfo{
|
||||||
DistributorId: 201,
|
DistributorId: 201,
|
||||||
|
|||||||
@@ -132,32 +132,35 @@ func (p *PurchaseHandler) AfsOrderDetail2Financial(orderData map[string]interfac
|
|||||||
// 或者换个思路,不考虑变更之前的正向订单,在佣金上入手,退款金额减去佣金减少的部分
|
// 或者换个思路,不考虑变更之前的正向订单,在佣金上入手,退款金额减去佣金减少的部分
|
||||||
orderFinancial, err := partner.CurOrderManager.LoadOrderFinancial(afsOrder.VendorOrderID, model.VendorIDEBAI)
|
orderFinancial, err := partner.CurOrderManager.LoadOrderFinancial(afsOrder.VendorOrderID, model.VendorIDEBAI)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
afsOrder.PmRefundMoney = orderFinancial.PmMoney - utils.MustInterface2Int64(orderData["commission"])
|
afsOrder.PmRefundMoney = orderFinancial.PmMoney - utils.MustInterface2Int64(orderData["commission_amount"])
|
||||||
} else {
|
} else {
|
||||||
// 此处应该报错
|
// 此处应该报错
|
||||||
err = nil
|
err = nil
|
||||||
}
|
}
|
||||||
if orderData["refund_detail"] != nil {
|
if orderData["reverse_order_list"] != nil {
|
||||||
refundDetail := orderData["refund_detail"].([]interface{})
|
refundDetail := orderData["reverse_order_list"].([]interface{})
|
||||||
for _, refundInfo := range refundDetail {
|
refundSkuList := refundDetail[len(refundDetail)-1].(map[string]interface{})["sub_reverse_order_list"].([]interface{})
|
||||||
|
for _, refundInfo := range refundSkuList {
|
||||||
xMap := refundInfo.(map[string]interface{})
|
xMap := refundInfo.(map[string]interface{})
|
||||||
|
if xMap["virtual_type"] == ebaiapi.OrderVirtualType {
|
||||||
orderSkuFinancial := &model.OrderSkuFinancial{
|
orderSkuFinancial := &model.OrderSkuFinancial{
|
||||||
VendorID: model.VendorIDEBAI,
|
VendorID: model.VendorIDEBAI,
|
||||||
AfsOrderID: afsOrder.AfsOrderID,
|
AfsOrderID: afsOrder.AfsOrderID,
|
||||||
VendorOrderID: afsOrder.VendorOrderID,
|
VendorOrderID: afsOrder.VendorOrderID,
|
||||||
VendorSubOrderID: afsOrder.VendorOrderID2,
|
VendorSubOrderID: afsOrder.VendorOrderID2,
|
||||||
// ConfirmTime: getTimeFromInterface(xMap["apply_time"]),
|
// ConfirmTime: getTimeFromInterface(xMap["apply_time"]),
|
||||||
VendorSkuID: utils.Interface2String(xMap["sku_id"]),
|
VendorSkuID: utils.Int64ToStr(utils.MustInterface2Int64(xMap["platform_sku_id"])),
|
||||||
SkuID: int(utils.Str2Int64WithDefault(utils.Interface2String(xMap["custom_sku_id"]), 0)),
|
SkuID: int(utils.Str2Int64WithDefault(utils.Interface2String(xMap["custom_sku_id"]), 0)),
|
||||||
Name: utils.Interface2String(xMap["name"]),
|
Name: utils.Interface2String(xMap["sku_name"]),
|
||||||
UserMoney: utils.MustInterface2Int64(xMap["total_refund"]),
|
UserMoney: utils.MustInterface2Int64(xMap["refund_user_amount"]),
|
||||||
PmSubsidyMoney: utils.MustInterface2Int64(xMap["shop_ele_refund"]),
|
|
||||||
IsAfsOrder: 1,
|
IsAfsOrder: 1,
|
||||||
}
|
}
|
||||||
|
orderSkuFinancial.PmSubsidyMoney = utils.Interface2Int64WithDefault(xMap["discount_detail"].(map[string]interface{})["platform_discount_amount"], 0) + utils.Interface2Int64WithDefault(xMap["discount_detail"].(map[string]interface{})["agent_discount_amount"], 0) + utils.Interface2Int64WithDefault(xMap["discount_detail"].(map[string]interface{})["user_discount_amount"], 0)
|
||||||
afsOrder.Skus = append(afsOrder.Skus, orderSkuFinancial)
|
afsOrder.Skus = append(afsOrder.Skus, orderSkuFinancial)
|
||||||
afsOrder.SkuUserMoney += orderSkuFinancial.UserMoney
|
afsOrder.SkuUserMoney += orderSkuFinancial.UserMoney
|
||||||
afsOrder.PmSubsidyMoney += orderSkuFinancial.PmSubsidyMoney
|
afsOrder.PmSubsidyMoney += orderSkuFinancial.PmSubsidyMoney
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if len(refundDetail) > 0 {
|
if len(refundDetail) > 0 {
|
||||||
afsOrder.AfsCreatedAt = getTimeFromInterface(refundDetail[0].(map[string]interface{})["apply_time"])
|
afsOrder.AfsCreatedAt = getTimeFromInterface(refundDetail[0].(map[string]interface{})["apply_time"])
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -131,12 +131,12 @@ func (p *PurchaseHandler) GetOrder4PartRefund(vendorOrderID string) (order *mode
|
|||||||
if err1 == nil {
|
if err1 == nil {
|
||||||
order = p.Map2Order(result1)
|
order = p.Map2Order(result1)
|
||||||
if err2 == nil {
|
if err2 == nil {
|
||||||
order.Skus = p.partRefund2OrderDetailSkuList(utils.Interface2String(result2["order_id"]), result2["order_detail"])
|
order.Skus = p.partRefund2OrderDetailSkuList(utils.Interface2String(result2["order_id"]), result2["reverse_order_list"])
|
||||||
giftSkus, discountMoney := getZengSkus(vendorOrderID, result1)
|
giftSkus, discountMoney := getZengSkus(vendorOrderID, result1)
|
||||||
order.DiscountMoney = discountMoney
|
order.DiscountMoney = discountMoney
|
||||||
order.Skus = append(order.Skus, giftSkus...)
|
order.Skus = append(order.Skus, giftSkus...)
|
||||||
order.ActualPayPrice = utils.MustInterface2Int64(result2["user_fee"])
|
order.ActualPayPrice = utils.MustInterface2Int64(result2["remain_user_total_amount"])
|
||||||
order.TotalShopMoney = utils.MustInterface2Int64(result2["shop_fee"])
|
order.TotalShopMoney = utils.MustInterface2Int64(result2["merchant_income"])
|
||||||
jxutils.RefreshOrderSkuRelated(order)
|
jxutils.RefreshOrderSkuRelated(order)
|
||||||
} else if err2Ext, ok := err2.(*utils.ErrorWithCode); !ok || err2Ext.IntCode() != ebaiapi.ErrOrderIsNotPartRefund {
|
} else if err2Ext, ok := err2.(*utils.ErrorWithCode); !ok || err2Ext.IntCode() != ebaiapi.ErrOrderIsNotPartRefund {
|
||||||
err = err2
|
err = err2
|
||||||
@@ -170,28 +170,32 @@ func getZengSkus(orderID string, orderMan map[string]interface{}) (skus []*model
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (p *PurchaseHandler) partRefund2OrderDetailSkuList(orderID string, orderDetail2 interface{}) (skuList []*model.OrderSku) {
|
func (p *PurchaseHandler) partRefund2OrderDetailSkuList(orderID string, orderDetail2 interface{}) (skuList []*model.OrderSku) {
|
||||||
orderDetail := orderDetail2.([]interface{})
|
refundDetail := orderDetail2.([]interface{})
|
||||||
for _, product2 := range orderDetail {
|
refundSkuList := refundDetail[len(refundDetail)-1].(map[string]interface{})["sub_reverse_order_list"].([]interface{})
|
||||||
|
for _, product2 := range refundSkuList {
|
||||||
product := product2.(map[string]interface{})
|
product := product2.(map[string]interface{})
|
||||||
skuName := product["name"].(string)
|
if product["virtual_type"] == ebaiapi.OrderVirtualType {
|
||||||
|
skuName := product["sku_name"].(string)
|
||||||
_, _, _, specUnit, _, specQuality := jxutils.SplitSkuName(skuName)
|
_, _, _, specUnit, _, specQuality := jxutils.SplitSkuName(skuName)
|
||||||
number := int(utils.MustInterface2Int64(product["number"]))
|
number := int(utils.MustInterface2Int64(product["apply_quantity"]))
|
||||||
sku := &model.OrderSku{
|
sku := &model.OrderSku{
|
||||||
VendorOrderID: orderID,
|
VendorOrderID: orderID,
|
||||||
VendorID: model.VendorIDEBAI,
|
VendorID: model.VendorIDEBAI,
|
||||||
Count: number,
|
Count: number,
|
||||||
SkuID: int(utils.Str2Int64WithDefault(utils.Interface2String(product[ebaiapi.KeyCustomSkuID]), 0)),
|
SkuID: int(utils.Str2Int64WithDefault(utils.Interface2String(product[ebaiapi.KeyCustomSkuID]), 0)),
|
||||||
VendorSkuID: utils.Interface2String(product[ebaiapi.KeySkuID]),
|
VendorSkuID: utils.Interface2String(product["platform_sku_id"]),
|
||||||
SkuName: skuName,
|
SkuName: skuName,
|
||||||
// Weight: int(utils.Interface2Int64WithDefault(product["total_weight"], 0)) / number, // 退单这里的total_weight有BUG,这里的total_weight还是没有退单时的值
|
Weight: int(utils.Interface2Int64WithDefault(product["refund_weight"], 0)) / number, // 退单这里的total_weight有BUG,这里的total_weight还是没有退单时的值
|
||||||
VendorPrice: utils.MustInterface2Int64(product["product_price"]),
|
VendorPrice: utils.MustInterface2Int64(product["refund_user_amount"]),
|
||||||
}
|
}
|
||||||
sku.SalePrice, _, sku.StoreSubName = getSkuSalePrice(product)
|
//sku.SalePrice, _, sku.StoreSubName = getSkuSalePrice(product)
|
||||||
|
sku.SalePrice = utils.Interface2Int64WithDefault(product["discount_detail"].(map[string]interface{})["total_price"], 0)
|
||||||
if sku.Weight == 0 {
|
if sku.Weight == 0 {
|
||||||
sku.Weight = jxutils.FormatSkuWeight(specQuality, specUnit) // 订单信息里没有重量,只有名字里尝试找
|
sku.Weight = jxutils.FormatSkuWeight(specQuality, specUnit) // 订单信息里没有重量,只有名字里尝试找
|
||||||
}
|
}
|
||||||
skuList = append(skuList, sku)
|
skuList = append(skuList, sku)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return skuList
|
return skuList
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -440,7 +444,30 @@ func (p *PurchaseHandler) trySyncCancelStatus(vendorOrderID string) (err error)
|
|||||||
func (p *PurchaseHandler) Swtich2SelfDelivered(order *model.GoodsOrder, userName string) (err error) {
|
func (p *PurchaseHandler) Swtich2SelfDelivered(order *model.GoodsOrder, userName string) (err error) {
|
||||||
// todo 饿百转商家自送后,没有确认送达的概念,空操作
|
// todo 饿百转商家自送后,没有确认送达的概念,空操作
|
||||||
if globals.EnableEbaiStoreWrite && order.WaybillVendorID > 100 {
|
if globals.EnableEbaiStoreWrite && order.WaybillVendorID > 100 {
|
||||||
err = api.EbaiAPI.OrderComplete(order.VendorOrderID, userName)
|
param2 := &ebaiapi.PushRiderInfo{
|
||||||
|
DistributorId: 201,
|
||||||
|
OrderId: order.VendorOrderID,
|
||||||
|
State: 21,
|
||||||
|
SelfStatus: ebaiapi.OrderDeliveryStatusSendOver,
|
||||||
|
SelfStatusDesc: "自配送送达",
|
||||||
|
DistributorInfoDTO: ebaiapi.DistributorInfoDTO{
|
||||||
|
DistributorTypeId: "99999",
|
||||||
|
DistributorName: "商家自行配送",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
bills, _ := dao.GetWaybills(dao.GetDB(), order.VendorOrderID, nil)
|
||||||
|
for _, v := range bills {
|
||||||
|
if v.Status == model.WaybillStatusDelivered || v.Status == model.WaybillStatusFailed {
|
||||||
|
param2.Knight = ebaiapi.Knight{
|
||||||
|
Id: utils.Str2Int64(order.VendorOrderID),
|
||||||
|
Name: v.CourierName,
|
||||||
|
Phone: v.CourierMobile,
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
err = api.EbaiAPI.OrderselfDeliveryStateSync2(param2)
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -448,7 +475,18 @@ func (p *PurchaseHandler) Swtich2SelfDelivered(order *model.GoodsOrder, userName
|
|||||||
// 完全自送的门店表示开始配送
|
// 完全自送的门店表示开始配送
|
||||||
func (p *PurchaseHandler) SelfDeliverDelivering(order *model.GoodsOrder, userName string) (err error) {
|
func (p *PurchaseHandler) SelfDeliverDelivering(order *model.GoodsOrder, userName string) (err error) {
|
||||||
if globals.EnableEbaiStoreWrite {
|
if globals.EnableEbaiStoreWrite {
|
||||||
err = api.EbaiAPI.OrderselfDeliveryStateSync(order.VendorOrderID, userName)
|
param2 := &ebaiapi.PushRiderInfo{
|
||||||
|
DistributorId: 201,
|
||||||
|
OrderId: order.VendorOrderID,
|
||||||
|
State: 21,
|
||||||
|
SelfStatus: 1,
|
||||||
|
SelfStatusDesc: "生成自配送运单",
|
||||||
|
DistributorInfoDTO: ebaiapi.DistributorInfoDTO{
|
||||||
|
DistributorTypeId: "99999",
|
||||||
|
DistributorName: "商家自行配送",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
err = api.EbaiAPI.OrderselfDeliveryStateSync2(param2)
|
||||||
}
|
}
|
||||||
if err == nil {
|
if err == nil {
|
||||||
// 饿百不会发送配送中,模拟发送
|
// 饿百不会发送配送中,模拟发送
|
||||||
@@ -460,7 +498,30 @@ func (p *PurchaseHandler) SelfDeliverDelivering(order *model.GoodsOrder, userNam
|
|||||||
// 完全自送的门店表示配送完成
|
// 完全自送的门店表示配送完成
|
||||||
func (p *PurchaseHandler) SelfDeliverDelivered(order *model.GoodsOrder, userName string) (err error) {
|
func (p *PurchaseHandler) SelfDeliverDelivered(order *model.GoodsOrder, userName string) (err error) {
|
||||||
if globals.EnableEbaiStoreWrite {
|
if globals.EnableEbaiStoreWrite {
|
||||||
err = api.EbaiAPI.OrderComplete(order.VendorOrderID, userName)
|
param2 := &ebaiapi.PushRiderInfo{
|
||||||
|
DistributorId: 201,
|
||||||
|
OrderId: order.VendorOrderID,
|
||||||
|
State: 21,
|
||||||
|
SelfStatus: ebaiapi.OrderDeliveryStatusSendOver,
|
||||||
|
SelfStatusDesc: "自配送送达",
|
||||||
|
DistributorInfoDTO: ebaiapi.DistributorInfoDTO{
|
||||||
|
DistributorTypeId: "99999",
|
||||||
|
DistributorName: "商家自行配送",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
bills, _ := dao.GetWaybills(dao.GetDB(), order.VendorOrderID, nil)
|
||||||
|
for _, v := range bills {
|
||||||
|
if v.Status == model.WaybillStatusDelivered || v.Status == model.WaybillStatusFailed {
|
||||||
|
param2.Knight = ebaiapi.Knight{
|
||||||
|
Id: utils.Str2Int64(order.VendorOrderID),
|
||||||
|
Name: v.CourierName,
|
||||||
|
Phone: v.CourierMobile,
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
err = api.EbaiAPI.OrderselfDeliveryStateSync2(param2)
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -169,9 +169,9 @@ func (c *PurchaseHandler) onAfsOrderMsg(msg *ebaiapi.CallbackMsg) (retVal *ebaia
|
|||||||
var db = dao.GetDB()
|
var db = dao.GetDB()
|
||||||
if utils.Str2Int(orderStatus.VendorStatus) == ebaiapi.OrderPartRefundSuccess {
|
if utils.Str2Int(orderStatus.VendorStatus) == ebaiapi.OrderPartRefundSuccess {
|
||||||
orderData, err2 := api.EbaiAPI.OrderPartRefundGet(orderStatus.RefVendorOrderID)
|
orderData, err2 := api.EbaiAPI.OrderPartRefundGet(orderStatus.RefVendorOrderID)
|
||||||
if err2 == nil && utils.MustInterface2Int64(orderData["shop_fee"]) != model.NO {
|
if err2 == nil && utils.MustInterface2Int64(orderData["merchant_income"]) != model.NO {
|
||||||
goodsOrder, _ := partner.CurOrderManager.LoadOrder(orderStatus.RefVendorOrderID, model.VendorIDEBAI)
|
goodsOrder, _ := partner.CurOrderManager.LoadOrder(orderStatus.RefVendorOrderID, model.VendorIDEBAI)
|
||||||
goodsOrder.TotalShopMoney = utils.MustInterface2Int64(orderData["shop_fee"])
|
goodsOrder.TotalShopMoney = utils.MustInterface2Int64(orderData["merchant_income"])
|
||||||
// 门店结算小于等于50为扣点
|
// 门店结算小于等于50为扣点
|
||||||
afsSkuList, _ := dao.GetOrderRefundSkuList(db, []string{goodsOrder.VendorOrderID})
|
afsSkuList, _ := dao.GetOrderRefundSkuList(db, []string{goodsOrder.VendorOrderID})
|
||||||
for _, v := range goodsOrder.Skus {
|
for _, v := range goodsOrder.Skus {
|
||||||
|
|||||||
@@ -131,6 +131,9 @@ func (c *OrderController) CreateWaybillOnProviders() {
|
|||||||
c.callCreateWaybillOnProviders(func(params *tOrderCreateWaybillOnProvidersParams) (retVal interface{}, errCode string, err error) {
|
c.callCreateWaybillOnProviders(func(params *tOrderCreateWaybillOnProvidersParams) (retVal interface{}, errCode string, err error) {
|
||||||
var courierVendorIDs []int
|
var courierVendorIDs []int
|
||||||
if err = jxutils.Strings2Objs(params.CourierVendorIDs, &courierVendorIDs); err == nil {
|
if err = jxutils.Strings2Objs(params.CourierVendorIDs, &courierVendorIDs); err == nil {
|
||||||
|
if params.MaxAddFee >= 5000 {
|
||||||
|
return nil, "", errors.New("部分运单金额大于50元,请核对")
|
||||||
|
}
|
||||||
retVal, errCode, err = defsch.FixedScheduler.CreateWaybillOnProvidersEx(params.Ctx, params.VendorOrderID, params.VendorID, courierVendorIDs, params.ForceCreate, int64(params.MaxAddFee))
|
retVal, errCode, err = defsch.FixedScheduler.CreateWaybillOnProvidersEx(params.Ctx, params.VendorOrderID, params.VendorID, courierVendorIDs, params.ForceCreate, int64(params.MaxAddFee))
|
||||||
}
|
}
|
||||||
return retVal, errCode, err
|
return retVal, errCode, err
|
||||||
|
|||||||
Reference in New Issue
Block a user