Merge branch 'jdshop' of e.coding.net:rosydev/jx-callback into jdshop

This commit is contained in:
邹宗楠
2023-02-06 15:59:34 +08:00
6 changed files with 90 additions and 37 deletions

View File

@@ -2,6 +2,7 @@ package model
import ( import (
"fmt" "fmt"
"git.rosy.net.cn/baseapi/platformapi/ebaiapi" "git.rosy.net.cn/baseapi/platformapi/ebaiapi"
"git.rosy.net.cn/baseapi/platformapi/jdapi" "git.rosy.net.cn/baseapi/platformapi/jdapi"
"git.rosy.net.cn/baseapi/platformapi/mtwmapi" "git.rosy.net.cn/baseapi/platformapi/mtwmapi"
@@ -72,19 +73,21 @@ var (
WaybillStatusName = map[int]string{ WaybillStatusName = map[int]string{
WaybillStatusUnknown: "一般事件", WaybillStatusUnknown: "一般事件",
WaybillStatusNew: "新运单", WaybillStatusNew: "新运单",
WaybillStatusPending: "压单", WaybillStatusPending: "压单",
WaybillStatusAcceptCanceled: "取消接受", WaybillStatusAcceptCanceled: "取消接受",
WaybillStatusAccepted: "已接单", WaybillStatusAccepted: "已接单",
WaybillStatusCourierAssigned: "已分配骑手", WaybillStatusCourierAssigned: "已分配骑手",
WaybillStatusCourierArrived: "已到店", WaybillStatusCourierArrived: "已到店",
WaybillStatusApplyFailedGetGoods: "取货失败待审核", WaybillStatusUuPickUp: "骑手已取件",
WaybillStatusAgreeFailedGetGoods: "取货失败", WaybillStatusUuArrivedDestination: "骑手已到达取件人地址处",
WaybillStatusDelivering: "配送中", WaybillStatusApplyFailedGetGoods: "取货失败待审核",
WaybillStatusDeliverFailed: "投递失败", WaybillStatusAgreeFailedGetGoods: "取货失败",
WaybillStatusDelivered: "送达", WaybillStatusDelivering: "配送中",
WaybillStatusCanceled: "取消", WaybillStatusDeliverFailed: "投递失败",
WaybillStatusFailed: "失败", WaybillStatusDelivered: "送达",
WaybillStatusCanceled: "取消",
WaybillStatusFailed: "失败",
} }
OrderTypeName = map[int]string{ OrderTypeName = map[int]string{
OrderTypeOrder: "订单", OrderTypeOrder: "订单",
@@ -336,7 +339,9 @@ const (
WaybillStatusDelivering = 20 // 配送中 WaybillStatusDelivering = 20 // 配送中
WaybillStatusDeliverFailed = 22 // 配送中失败 WaybillStatusDeliverFailed = 22 // 配送中失败
//uu跑腿专用
WaybillStatusUuPickUp = 13 //骑手已取件
WaybillStatusUuArrivedDestination = 26 //骑手到达收件人地址,暂未确定收货
//抖音配送专用 //抖音配送专用
WaybillStatusRejected = 23 //收货人拒收 WaybillStatusRejected = 23 //收货人拒收
WaybillStatusReturning = 24 //返回中 WaybillStatusReturning = 24 //返回中
@@ -350,11 +355,15 @@ const (
) )
const ( const (
RiderGetOrder = "骑手 %s (%s) 已接单" RiderGetOrder = "骑手 %s (%s) 已接单"
RiderToStore = "骑手 %s (%s) 已到店" RiderToStore = "骑手 %s (%s) 已到店"
RiderGetOrderDelivering = "骑手 %s (%s) 配送中" RiderGetOrderDelivering = "骑手 %s (%s) 配送中"
RiderGetOrderDelivered = "骑手 %s (%s) 已送达" RiderGetOrderDelivered = "骑手 %s (%s) 已送达"
RiderGetOrderCanceled = "骑手 %s (%s) 已取消" RiderGetOrderCanceled = "骑手 %s (%s) 已取消"
//uu专用
RiderPickUp = "骑手 %s (%s) 已取件"
RiderArrivedDestination = "骑手 %s (%s) 已到达收件人地址处"
RiderGetOrderDeliverFailed = "骑手配送异常" RiderGetOrderDeliverFailed = "骑手配送异常"
RiderGetOrderDeliverOther = "其他待处理信息" RiderGetOrderDeliverOther = "其他待处理信息"
RiderWaitRider = "待接单,正在分配骑手" RiderWaitRider = "待接单,正在分配骑手"

View File

@@ -3,6 +3,9 @@ package delivery
import ( import (
"crypto/rand" "crypto/rand"
"fmt" "fmt"
"math/big"
"time"
"git.rosy.net.cn/baseapi/platformapi/mtpsapi" "git.rosy.net.cn/baseapi/platformapi/mtpsapi"
"git.rosy.net.cn/baseapi/platformapi/tiktok_shop/tiktok_api" "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/tiktok_api"
"git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/baseapi/utils"
@@ -10,8 +13,6 @@ import (
"git.rosy.net.cn/jx-callback/business/model/dao" "git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/jx-callback/business/partner"
"git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/globals"
"math/big"
"time"
) )
// 订单骑手信息推送:将获取到的三方配送订单,且订单状态为配送中的订单,将配送人员的信息返回给订单方 // 订单骑手信息推送:将获取到的三方配送订单,且订单状态为配送中的订单,将配送人员的信息返回给订单方
@@ -34,7 +35,7 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) {
params["isIncludeFake"] = true params["isIncludeFake"] = true
params["mustInvoice"] = false params["mustInvoice"] = false
params["adjustCount"] = 0 params["adjustCount"] = 0
params["waybillVendorIDs"] = `[101,102,103]` params["waybillVendorIDs"] = `[101,102,103,105]`
if orderId != "" { // 订单id会忽略其他参数 if orderId != "" { // 订单id会忽略其他参数
params["keyword"] = orderId params["keyword"] = orderId
} else { } else {

View File

@@ -2,6 +2,9 @@ package uupt
import ( import (
"fmt" "fmt"
"strings"
"time"
"git.rosy.net.cn/baseapi/platformapi/baidunavi" "git.rosy.net.cn/baseapi/platformapi/baidunavi"
"git.rosy.net.cn/baseapi/platformapi/mtpsapi" "git.rosy.net.cn/baseapi/platformapi/mtpsapi"
"git.rosy.net.cn/baseapi/platformapi/uuptapi" "git.rosy.net.cn/baseapi/platformapi/uuptapi"
@@ -14,8 +17,6 @@ import (
"git.rosy.net.cn/jx-callback/business/partner/delivery" "git.rosy.net.cn/jx-callback/business/partner/delivery"
"git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/globals"
"git.rosy.net.cn/jx-callback/globals/api" "git.rosy.net.cn/jx-callback/globals/api"
"strings"
"time"
) )
const ( const (
@@ -289,6 +290,7 @@ func OnWaybillMsg(req *uuptapi.WaybillCallbackParam) (resp *uuptapi.CallbackResp
sql := `SELECT * FROM goods_order WHERE vendor_order_id = ? ORDER BY order_created_at DESC LIMIT 1 OFFSET 0` sql := `SELECT * FROM goods_order WHERE vendor_order_id = ? ORDER BY order_created_at DESC LIMIT 1 OFFSET 0`
sqlParams := []interface{}{req.OriginID} sqlParams := []interface{}{req.OriginID}
dao.GetRow(dao.GetDB(), &good, sql, sqlParams) dao.GetRow(dao.GetDB(), &good, sql, sqlParams)
globals.SugarLogger.Debugf("uupt OnWaybillMsg good=====%s", utils.Format4Output(good, false))
param.OrderVendorID = good.VendorID param.OrderVendorID = good.VendorID
switch req.State { switch req.State {
case uuptapi.StateConfirmSuccess: case uuptapi.StateConfirmSuccess:
@@ -298,16 +300,14 @@ func OnWaybillMsg(req *uuptapi.WaybillCallbackParam) (resp *uuptapi.CallbackResp
param.Remark = req.DriverName + "," + req.DriverMobile param.Remark = req.DriverName + "," + req.DriverMobile
case uuptapi.StateArrivedStore: case uuptapi.StateArrivedStore:
param.Status = model.WaybillStatusCourierArrived param.Status = model.WaybillStatusCourierArrived
param.Remark = model.RiderToStore case uuptapi.StatePickUp:
case uuptapi.StatePickUp, uuptapi.StateArrivedDestination: param.Status = model.WaybillStatusUuPickUp
param.Status = model.WaybillStatusDelivering case uuptapi.StateArrivedDestination:
param.Remark = model.RiderGetOrderDelivering param.Status = model.WaybillStatusUuArrivedDestination
case uuptapi.StateReceiverGetGoods: case uuptapi.StateReceiverGetGoods:
param.Status = model.WaybillStatusDelivered param.Status = model.WaybillStatusDelivered
param.Remark = model.RiderGetOrderDelivered
case uuptapi.StateOrderCancel: case uuptapi.StateOrderCancel:
param.Status = model.WaybillStatusCanceled param.Status = model.WaybillStatusCanceled
param.Remark = model.RiderGetOrderCanceled
default: default:
globals.SugarLogger.Warnf("onWaybillMsg unknown State:%v", req.State) globals.SugarLogger.Warnf("onWaybillMsg unknown State:%v", req.State)
} }
@@ -315,6 +315,46 @@ func OnWaybillMsg(req *uuptapi.WaybillCallbackParam) (resp *uuptapi.CallbackResp
if err := partner.CurOrderManager.OnWaybillStatusChanged(param); err != nil { if err := partner.CurOrderManager.OnWaybillStatusChanged(param); err != nil {
return uuptapi.Err2CallbackResponse(err) return uuptapi.Err2CallbackResponse(err)
} }
//推送抖音
if param.OrderVendorID == model.VendorIDDD {
result := &mtpsapi.RiderInfo{
OrderId: param.VendorOrderID,
ThirdCarrierOrderId: param.VendorOrderID,
CourierName: param.CourierName,
CourierPhone: param.CourierMobile,
LogisticsProviderCode: "10002",
LogisticsStatus: param.Status,
OpCode: "",
}
switch req.State {
case uuptapi.StateConfirmSuccess: //下单成功
result.LogisticsStatus = model.WaybillStatusNew
result.LogisticsContext = model.RiderWaitRider
case uuptapi.StateRMGrabsOrder: //骑手已接单
result.LogisticsStatus = model.WaybillStatusCourierAssigned // 分配骑手
result.LogisticsContext = model.RiderWaitGetGoods
case uuptapi.StateArrivedStore: //骑手到店
result.LogisticsStatus = model.WaybillStatusCourierArrived
result.LogisticsContext = model.RiderToStore
case uuptapi.StatePickUp: //已取件
result.LogisticsStatus = model.WaybillStatusUuPickUp
result.LogisticsContext = model.RiderPickUp
case uuptapi.StateArrivedDestination: //到达取件人地址处
result.LogisticsStatus = model.WaybillStatusUuArrivedDestination
result.LogisticsContext = model.RiderArrivedDestination
case uuptapi.StateReceiverGetGoods: //取件人收货
result.LogisticsStatus = model.WaybillStatusDelivered
result.LogisticsContext = model.RiderGetOrderDelivered
case uuptapi.StateOrderCancel: //运单取消
result.LogisticsStatus = model.WaybillStatusCanceled
result.LogisticsContext = model.RiderGetOrderCanceled
default:
result.LogisticsStatus = 0
result.LogisticsContext = model.RiderGetOrderDeliverOther
}
delivery.PullTiktokRiderInfo(result)
}
defer delivery.GetOrderRiderInfoToPlatform(param.VendorOrderID, param.Status) // 骑手位置更新
return uuptapi.Err2CallbackResponse(nil) return uuptapi.Err2CallbackResponse(nil)
} }

View File

@@ -47,6 +47,7 @@ func (c *PurchaseHandler) onWaybillMsg(msg *ebaiapi.CallbackMsg) (retVal *ebaiap
} else { } else {
order.CourierName = utils.Interface2String(result["name"]) order.CourierName = utils.Interface2String(result["name"])
order.CourierMobile = utils.Interface2String(result["phone"]) order.CourierMobile = utils.Interface2String(result["phone"])
} }
if order.Status == model.WaybillStatusNew { if order.Status == model.WaybillStatusNew {
order2, _ := partner.CurOrderManager.LoadOrder(order.VendorOrderID, order.WaybillVendorID) order2, _ := partner.CurOrderManager.LoadOrder(order.VendorOrderID, order.WaybillVendorID)
@@ -80,8 +81,7 @@ func (c *PurchaseHandler) callbackMsg2Waybill(msg *ebaiapi.CallbackMsg) (retVal
Status: c.GetWaybillStatusFromVendorStatus(vendorStatus), Status: c.GetWaybillStatusFromVendorStatus(vendorStatus),
VendorStatus: vendorStatus, VendorStatus: vendorStatus,
StatusTime: utils.Timestamp2Time(msg.Timestamp), StatusTime: utils.Timestamp2Time(msg.Timestamp),
VendorOrgCode: msg.Source,
VendorOrgCode: msg.Source,
} }
return retVal return retVal
} }

View File

@@ -3,6 +3,7 @@ package tiktok_store
import ( import (
"errors" "errors"
"fmt" "fmt"
superm_getShipmentInfo_response "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/superm_getShipmentInfo/response" superm_getShipmentInfo_response "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/superm_getShipmentInfo/response"
superm_getStoreAutoCallRiderInfo_response "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/superm_getStoreAutoCallRiderInfo/response" superm_getStoreAutoCallRiderInfo_response "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/superm_getStoreAutoCallRiderInfo/response"
superm_setStoreAutoCallRider_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/superm_setStoreAutoCallRider/request" superm_setStoreAutoCallRider_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/superm_setStoreAutoCallRider/request"
@@ -53,6 +54,10 @@ func (c *PurchaseHandler) onWaybillMsg(tag, orderId string, data interface{}) *t
func (c *PurchaseHandler) callbackMsg2Waybill(tag, orderId string, data interface{}) (retVal *model.Waybill) { func (c *PurchaseHandler) callbackMsg2Waybill(tag, orderId string, data interface{}) (retVal *model.Waybill) {
req := data.(tiktok_api.ShipmentInfoData) req := data.(tiktok_api.ShipmentInfoData)
tempRemark := ""
if req.ShipmentStatus == tiktok_api.ShipmentStatusReceived {
tempRemark = req.RiderName + "," + req.RiderPhone
}
return &model.Waybill{ return &model.Waybill{
VendorOrderID: utils.Int64ToStr(req.ShopOrderID), VendorOrderID: utils.Int64ToStr(req.ShopOrderID),
OrderVendorID: model.VendorIDDD, OrderVendorID: model.VendorIDDD,
@@ -64,7 +69,7 @@ func (c *PurchaseHandler) callbackMsg2Waybill(tag, orderId string, data interfac
Status: c.GetWaybillStatusFromVendorStatus(utils.Int64ToStr(req.ShipmentStatus)), Status: c.GetWaybillStatusFromVendorStatus(utils.Int64ToStr(req.ShipmentStatus)),
StatusTime: utils.Str2Time(req.OccurredTime), StatusTime: utils.Str2Time(req.OccurredTime),
//StatusTime: getTimeFromTimestamp(utils.Str2Int64(req.OccurredTime)), //StatusTime: getTimeFromTimestamp(utils.Str2Int64(req.OccurredTime)),
Remark: "", Remark: tempRemark,
VendorOrgCode: utils.Int64ToStr(req.ShopID), //为抖音账号ID VendorOrgCode: utils.Int64ToStr(req.ShopID), //为抖音账号ID
} }
} }

View File

@@ -1,13 +1,12 @@
package controllers package controllers
import ( import (
"net/http"
"git.rosy.net.cn/baseapi/platformapi/uuptapi" "git.rosy.net.cn/baseapi/platformapi/uuptapi"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/partner/delivery/uupt" "git.rosy.net.cn/jx-callback/business/partner/delivery/uupt"
"git.rosy.net.cn/jx-callback/globals"
"git.rosy.net.cn/jx-callback/globals/api" "git.rosy.net.cn/jx-callback/globals/api"
"github.com/astaxie/beego/server/web" "github.com/astaxie/beego/server/web"
"net/http"
) )
type UuPtController struct { type UuPtController struct {
@@ -18,7 +17,6 @@ type UuPtController struct {
func (c *UuPtController) UuWaybillCallback() { func (c *UuPtController) UuWaybillCallback() {
if c.Ctx.Input.Method() == http.MethodPost { if c.Ctx.Input.Method() == http.MethodPost {
resp, callbackResponse := api.UuAPI.WaybillCallback(c.Ctx.Request) resp, callbackResponse := api.UuAPI.WaybillCallback(c.Ctx.Request)
globals.SugarLogger.Debugf("UuWaybillCallback resp============%s", utils.Format4Output(resp, false))
if callbackResponse.ReturnCode == uuptapi.ReturnFail { if callbackResponse.ReturnCode == uuptapi.ReturnFail {
c.Data["code"] = callbackResponse c.Data["code"] = callbackResponse
c.ServeJSON() c.ServeJSON()