添加抖音授权登录,国美测试接口,修改运单重复骑手,添加推送骑手信息

This commit is contained in:
邹宗楠
2022-05-13 16:05:19 +08:00
parent 977d11ed9c
commit a91f46207f
49 changed files with 3355 additions and 254 deletions

View File

@@ -94,6 +94,7 @@ func (c *DeliveryHandler) onWaybillMsg(msg *dadaapi.CallbackMsg) (retVal *dadaap
default:
order.Status = model.WaybillStatusUnknown
}
delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID)// 骑手位置更新
return dadaapi.Err2CallbackResponse(partner.CurOrderManager.OnWaybillStatusChanged(order), utils.Int2Str(order.Status))
}

View File

@@ -2,7 +2,6 @@ package delivery
import (
"fmt"
"git.rosy.net.cn/baseapi/platformapi/mtpsapi"
"math"
"time"
@@ -149,73 +148,3 @@ func OnWaybillCreated(waybill *model.Waybill) {
model.VendorChineseNames[waybill.WaybillVendorID], waybill.VendorWaybillID, jxutils.IntPrice2StandardCurrencyString(deliveryFee), jxutils.IntPrice2StandardCurrencyString(alarmFee))
}
}
// 订单骑手信息推送:将获取到的三方配送订单,且订单状态为配送中的订单,将配送人员的信息返回给订单方
// 该方法为定时任务,没五分钟推送一次订单消息,订单状态发生变化时
//配送状态code如下提供配送状态枚举值
//以及各配送状态对应在C端用户端和B端商家PC端后台展示的配送状态信息。
//未同步配送状态时C端商家已接单B端待发配送
//0-配送单发往配送C端商家已接单B端待骑手接单
//1-已创建配送包裹C端商家已接单B端待骑手接单
//5-已分配骑手C端商家已接单B端已分配骑手
//10-骑手已接单C端骑手正在赶往商家B端待骑手取货
//15-骑手已到店C端骑手到店取货中B端骑手已到店
//20-骑手已取货C端商品配送中/骑手正在送货B端骑手已取货
//40-骑手已送达C端商品已送达B端骑手已送达
//100-配送单已取消C端商家已接单B端配送已取消
//注:若同步配送状态为“配送单已取消”,接口仍支持继续同步配送状态。 说明商家如未上传此信息则平台默认值为20现已要求必传
func GetOrderRiderInfoToPlatform(orderId string) {
params := make(map[string]interface{}, 0)
params["brandID"] = 0
params["statuss"] = 20
params["isDateFinish"] = false
params["isIncludeFake"] = true
params["mustInvoice"] = false
params["adjustCount"] = 0
params["waybillVendorIDs"] = `[101,102,103]`
if orderId != "" { // 订单id会忽略其他参数
params["keyword"] = orderId
}
//params["offset"] = 0
//params["pageSize"] = 10000
// 查询三天内一万条数据
orders, _, err := dao.GetOrders(dao.GetDB(), nil, false, true, time.Now().Add(-24*3*time.Hour).Format("2006-01-02"), time.Now().Format("2006-01-02"), false, nil, false, "", params, 0, 10000)
if err != nil {
globals.SugarLogger.Errorf("GetOrder err :%v", err)
return
}
for _, v := range orders {
var riderInfo *mtpsapi.RiderInfo
if handlerInfo := partner.GetDeliveryPlatformFromVendorID(v.WaybillVendorID); handlerInfo != nil {
riderInfo, err = handlerInfo.Handler.GetRiderInfo(v.VendorOrderID, utils.Str2Int64(v.VendorWaybillId2Waybill), v.VendorWaybillID)
if err != nil {
globals.SugarLogger.Errorf("Get Order waybill rider info err :%v", err)
continue
}
}
// 目前只推送美团骑手信息
switch v.VendorID {
case model.VendorIDMTWM: // 美团发单
paramsMap := utils.Struct2Map(riderInfo, "", true)
if handler := partner.GetPurchaseOrderHandlerFromVendorID(v.VendorID); handler != nil {
if err := handler.GetOrderRider(v.VendorOrgCode, v.VendorOrderID, paramsMap); err != nil {
globals.SugarLogger.Errorf("Error pushing meituan rider information :%v", err)
}
}
case model.VendorIDELM: // 饿了么
case model.VendorIDEBAI: // 饿百发单
case model.VendorIDJD: // 京东发单
case model.VendorIDGD: // 美团发单
case model.VendorIDYB: // 银豹发单
case model.VendorIDJDShop: // 京东商城
case model.VendorIDWSC: // 微盟微商城
default:
globals.SugarLogger.Errorf("Order source error, non system order")
return
}
}
return
}

View File

@@ -249,6 +249,7 @@ func OnWaybillMsg(msg *fnpsapi.OrderStatusNottify) (resp *fnpsapi.CallbackRespon
globals.SugarLogger.Debugf("FNPS partner.CurOrderManager.OnWaybillStatusChanged fail :[%s]", err)
return fnpsapi.Err2CallbackResponse(err, "")
}
delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID) // 骑手位置更新
return fnpsapi.Err2CallbackResponse(nil, "")
}
@@ -284,7 +285,7 @@ func GetDesiredFee(vendorOrderID string) (desiredFee int64) {
}
// 获取骑手信息
func (c *DeliveryHandler) GetRiderInfo(orderId string, deliveryId int64, mtPeisongId string) (rider *mtpsapi.RiderInfo, err error) {
func (c *DeliveryHandler) GetRiderInfo(orderId string, deliveryId int64, mtPeisongId string) (rider *mtpsapi.RiderInfo, err error) {
// 获取订单状态
order, err := api.FnAPI.QueryOrder(orderId)
if err != nil {

View File

@@ -119,6 +119,7 @@ func (c *DeliveryHandler) onWaybillMsg(msg *mtpsapi.CallbackOrderMsg) (retVal *m
c.pushToGy(msg)
return mtpsapi.SuccessResponse
}
delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID)// 骑手位置更新
// 加入调度器
return mtpsapi.Err2CallbackResponse(partner.CurOrderManager.OnWaybillStatusChanged(order), order.VendorStatus)
}

View File

@@ -0,0 +1,82 @@
package delivery
import (
"git.rosy.net.cn/baseapi/platformapi/mtpsapi"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-callback/business/partner"
"git.rosy.net.cn/jx-callback/globals"
"time"
)
// 订单骑手信息推送:将获取到的三方配送订单,且订单状态为配送中的订单,将配送人员的信息返回给订单方
// 该方法为定时任务,没五分钟推送一次订单消息,订单状态发生变化时
//配送状态code如下提供配送状态枚举值
//以及各配送状态对应在C端用户端和B端商家PC端后台展示的配送状态信息。
//未同步配送状态时C端商家已接单B端待发配送
//0-配送单发往配送C端商家已接单B端待骑手接单
//1-已创建配送包裹C端商家已接单B端待骑手接单
//5-已分配骑手C端商家已接单B端已分配骑手
//10-骑手已接单C端骑手正在赶往商家B端待骑手取货
//15-骑手已到店C端骑手到店取货中B端骑手已到店
//20-骑手已取货C端商品配送中/骑手正在送货B端骑手已取货
//40-骑手已送达C端商品已送达B端骑手已送达
//100-配送单已取消C端商家已接单B端配送已取消
//注:若同步配送状态为“配送单已取消”,接口仍支持继续同步配送状态。 说明商家如未上传此信息则平台默认值为20现已要求必传
func GetOrderRiderInfoToPlatform(orderId string) {
globals.SugarLogger.Debug("==========GetOrderRiderInfoToPlatform", time.Now())
params := make(map[string]interface{}, 0)
params["brandID"] = 0
params["statuss"] = []int{20}
params["isDateFinish"] = false
params["isIncludeFake"] = true
params["mustInvoice"] = false
params["adjustCount"] = 0
params["waybillVendorIDs"] = `[101,102,103]`
if orderId != "" { // 订单id会忽略其他参数
params["keyword"] = orderId
}
// 每五分钟查询当前订单信息待配送状态订单1
orders, _, err := dao.GetOrders(dao.GetDB(), nil, false, true, time.Now().Add(-24*time.Hour).Format("2006-01-02"), time.Now().Format("2006-01-02"), false, nil, false, "", params, 0, 10000)
if err != nil {
globals.SugarLogger.Errorf("GetOrder err :%v", err)
return
}
for _, v := range orders {
globals.SugarLogger.Debug("==========orderId,vendorId,waybillId", v.VendorOrderID, v.VendorID, v.WaybillVendorID)
var riderInfo *mtpsapi.RiderInfo
if handlerInfo := partner.GetDeliveryPlatformFromVendorID(v.WaybillVendorID); handlerInfo != nil {
riderInfo, err = handlerInfo.Handler.GetRiderInfo(v.VendorOrderID, utils.Str2Int64(v.VendorWaybillId2Waybill), v.VendorWaybillID)
if err != nil {
globals.SugarLogger.Errorf("Get Order waybill rider info err :%v", err)
continue
}
}
// 目前只推送美团骑手信息
switch v.VendorID {
case model.VendorIDMTWM: // 美团发单
paramsMap := utils.Struct2Map(riderInfo, "", true)
if handler := partner.GetPurchaseOrderHandlerFromVendorID(v.VendorID); handler != nil {
if err := handler.GetOrderRider(v.VendorOrgCode, v.VendorOrderID, paramsMap); err != nil {
globals.SugarLogger.Errorf("Error pushing meituan rider information :%v", err)
}
}
case model.VendorIDELM: // 饿了么
case model.VendorIDEBAI: // 饿百发单
case model.VendorIDJD: // 京东发单
case model.VendorIDGD: // 美团发单
case model.VendorIDYB: // 银豹发单
case model.VendorIDJDShop: // 京东商城
case model.VendorIDWSC: // 微盟微商城
default:
globals.SugarLogger.Errorf("Order source error, non system order")
return
}
}
return
}