Merge branch 'jdshop' of https://e.coding.net/rosydev/jx-callback into jdshop
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package ebai
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"math"
|
||||
"strings"
|
||||
@@ -387,23 +388,36 @@ func (p *PurchaseHandler) ConfirmReceiveGoods(ctx *jxcontext.Context, order *mod
|
||||
// 将订单从购物平台配送转为自送
|
||||
func (p *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder, userName string) (err error) {
|
||||
if globals.EnableEbaiStoreWrite {
|
||||
if order.DeliveryType == model.OrderDeliveryTypePlatform {
|
||||
if err = api.EbaiAPI.OrderSwitchselfdelivery(order.VendorOrderID); err != nil {
|
||||
if strings.Contains(err.Error(), "301251") {
|
||||
api.EbaiAPI.OrderCancelDelivery(order.VendorOrderID) // 取消呼叫众包骑手
|
||||
}
|
||||
if utils.IsErrMatch(err, "301251", nil) {
|
||||
if deliveryStatus, err2 := api.EbaiAPI.OrderDeliveryGet(order.VendorOrderID); err2 == nil {
|
||||
deliveryStatus := utils.Int64ToStr(utils.MustInterface2Int64(deliveryStatus["status"]))
|
||||
if deliveryStatus == ebaiapi.WaybillStatusSelfDelivery {
|
||||
err = nil
|
||||
} else if deliveryStatus == ebaiapi.WaybillStatusDeliveryCancled {
|
||||
p.trySyncCancelStatus(order.VendorOrderID)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
deliveryStatusObj, _ := api.EbaiAPI.OrderDeliveryGet(order.VendorOrderID)
|
||||
deliveryStatus := utils.Int64ToStr(utils.MustInterface2Int64(deliveryStatusObj["status"]))
|
||||
switch deliveryStatus {
|
||||
case ebaiapi.WaybillStatusSelfDelivery:
|
||||
err = nil
|
||||
case ebaiapi.WaybillStatusDeliveryCancled:
|
||||
p.trySyncCancelStatus(order.VendorOrderID)
|
||||
case ebaiapi.WaybillStatusNew, ebaiapi.WaybillStatusRequestDelivery, ebaiapi.WaybillStatusWait4Courier:
|
||||
err = api.EbaiAPI.OrderCancelDelivery(order.VendorOrderID) // 取消呼叫众包骑手
|
||||
case ebaiapi.WaybillStatusCourierAccepted:
|
||||
err = errors.New("骑手已接单,无法转自送")
|
||||
}
|
||||
|
||||
//if order.DeliveryType == model.OrderDeliveryTypePlatform {
|
||||
// if err = api.EbaiAPI.OrderSwitchselfdelivery(order.VendorOrderID); err != nil {
|
||||
// if strings.Contains(err.Error(), "301251") {
|
||||
// api.EbaiAPI.OrderCancelDelivery(order.VendorOrderID) // 取消呼叫众包骑手
|
||||
// }
|
||||
// if utils.IsErrMatch(err, "301251", nil) {
|
||||
// if deliveryStatus, err2 := api.EbaiAPI.OrderDeliveryGet(order.VendorOrderID); err2 == nil {
|
||||
// deliveryStatus := utils.Int64ToStr(utils.MustInterface2Int64(deliveryStatus["status"]))
|
||||
// if deliveryStatus == ebaiapi.WaybillStatusSelfDelivery {
|
||||
// err = nil
|
||||
// } else if deliveryStatus == ebaiapi.WaybillStatusDeliveryCancled {
|
||||
// p.trySyncCancelStatus(order.VendorOrderID)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
}
|
||||
if err == nil {
|
||||
// 饿百不会发送配送中,模拟发送
|
||||
|
||||
@@ -6,69 +6,98 @@ import (
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||
"git.rosy.net.cn/jx-callback/globals"
|
||||
"git.rosy.net.cn/jx-callback/globals/api"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
// 同一账号下,菜市消息推送到果园
|
||||
const (
|
||||
CaiShiPushGyTagOrder = "order" // 订单
|
||||
CaiShiPushGyTagToken = "token" // 授权
|
||||
CaiShiPushGyTagDeliveryRegister = "delivery" // 配送注册查询
|
||||
CaiShiPushGyTagDeliveryDetail = "deliveryDetail" // 配送详情
|
||||
CaiShiPushGyTagWayBill = "waybill" // 配送
|
||||
)
|
||||
|
||||
// OnOrderMsg 抖音
|
||||
func OnOrderMsg(msgId string, msg interface{}) (response *tiktokShop.CallbackResponse) {
|
||||
globals.SugarLogger.Debugf("guoyuan %s,%s", msgId, utils.Format4Output(msg, false))
|
||||
if CurPurchaseHandler != nil {
|
||||
orderId, shopId, _ := api.TiktokStore.GetCallbackOrderId(msgId, msg)
|
||||
globals.SugarLogger.Debugf("order_id %s,%s", orderId, shopId)
|
||||
//orderDetail, err := GetTiktokApi(utils.Int64ToStr(shopId), 0, "").GetTiktokOrderDetail(orderId)
|
||||
//if err != nil {
|
||||
// return tiktokShop.Err2CallbackResponse(err, "")
|
||||
//}
|
||||
//vendorStoreID := orderDetail.ShopId
|
||||
//if vendorStoreID != 0 {
|
||||
// storeDetail, err := dao.GetStoreDetailByVendorStoreID(dao.GetDB(), utils.Int64ToStr(vendorStoreID), model.VendorIDDD, "")
|
||||
// if err != nil || storeDetail == nil || storeDetail.Store.ID == 0 {
|
||||
// // 当前订单所属门店不属于菜市时,将消息推送到果园
|
||||
// gyMsg := map[string]interface{}{"tag": msgId, "msg_id": utils.Int64ToStr(time.Now().Unix()) + msgId, "data": msg}
|
||||
// // 通知到果园
|
||||
// gyResult, err := HttpToGuoYuan(gyMsg, "order")
|
||||
// if err != nil {
|
||||
// return tiktokShop.Err2CallbackResponse(err, "")
|
||||
// }
|
||||
// result, _ := ioutil.ReadAll(gyResult.Body)
|
||||
// var guoYuan *tiktokShop.CallbackResponse
|
||||
// if err := json.Unmarshal(result, guoYuan); err != nil {
|
||||
// return tiktokShop.Err2CallbackResponse(err, "")
|
||||
// }
|
||||
// return guoYuan
|
||||
// }
|
||||
//}
|
||||
globals.SugarLogger.Debugf("order_id %s,%d", orderId, shopId)
|
||||
orderDetail, err := GetTiktokApi(utils.Int64ToStr(shopId), 0, "").GetTiktokOrderDetail(orderId)
|
||||
if err != nil {
|
||||
return tiktokShop.Err2CallbackResponse(err, "")
|
||||
}
|
||||
vendorStoreID := orderDetail.SkuOrderList[0].StoreInfo.StoreId
|
||||
|
||||
if vendorStoreID != "" {
|
||||
storeDetail, err := dao.GetStoreDetailByVendorStoreID(dao.GetDB(), vendorStoreID, model.VendorIDDD, "")
|
||||
if err != nil || storeDetail == nil || storeDetail.Store.ID == 0 {
|
||||
// 当前订单所属门店不属于菜市时,将消息推送到果园
|
||||
gyMsg := map[string]interface{}{"tag": msgId, "msg_id": utils.Int64ToStr(time.Now().Unix()) + msgId, "data": msg}
|
||||
// 通知到果园
|
||||
gyResult, err := HttpToGuoYuan(gyMsg, CaiShiPushGyTagOrder)
|
||||
if err != nil {
|
||||
return tiktokShop.Err2CallbackResponse(err, "")
|
||||
}
|
||||
result, _ := ioutil.ReadAll(gyResult.Body)
|
||||
var guoYuan *tiktokShop.CallbackResponse
|
||||
if err2 := json.Unmarshal(result, guoYuan); err2 != nil {
|
||||
return tiktokShop.Err2CallbackResponse(err2, "")
|
||||
}
|
||||
return guoYuan
|
||||
}
|
||||
}
|
||||
jxutils.CallMsgHandler(func() {
|
||||
response = CurPurchaseHandler.onOrderMsg(msgId, orderId, msg)
|
||||
}, jxutils.ComposeUniversalOrderID(orderId, model.VendorIDDD))
|
||||
} else {
|
||||
globals.SugarLogger.Debugf("============2")
|
||||
}
|
||||
return response
|
||||
}
|
||||
|
||||
func HttpToGuoYuan(param map[string]interface{}, requestType string) (*http.Response, error) {
|
||||
globals.SugarLogger.Debugf("=========param %s", utils.Format4Output(param, false))
|
||||
paramData, err := json.Marshal(param)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
var paramData []byte
|
||||
var err error
|
||||
if requestType == "order" {
|
||||
param["data"] = utils.Format4Output(param["data"], false)
|
||||
paramData, err = json.Marshal([]interface{}{param})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
} else {
|
||||
paramData, err = json.Marshal(param)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
body := strings.NewReader(string(paramData))
|
||||
|
||||
url := ""
|
||||
switch requestType {
|
||||
case "order": // 订单相关
|
||||
case CaiShiPushGyTagOrder: // 订单相关
|
||||
url = "http://callback-jxgy.jxc4.com/tiktok/callbackTiktokOrderMsg"
|
||||
case "token": // 授权相关
|
||||
case CaiShiPushGyTagToken: // 授权相关
|
||||
url = "http://callback-jxgy.jxc4.com/tiktokShop/jxcsToGyTiktokToken"
|
||||
case "wayBill": // 运单消息
|
||||
case CaiShiPushGyTagDeliveryRegister: // 配送查询注册
|
||||
url = "http://callback-jxgy.jxc4.com/logistics/logisticsRegister"
|
||||
case CaiShiPushGyTagDeliveryDetail: // 配送查询详情
|
||||
url = "http://callback-jxgy.jxc4.com/logistics/logisticsQuery"
|
||||
case CaiShiPushGyTagWayBill: // 运单消息
|
||||
|
||||
}
|
||||
httpReq, err := http.NewRequest(http.MethodPost, url, body)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
httpReq.Header.Set("Content-Type", "application/json")
|
||||
|
||||
httpRes, err := http.DefaultClient.Do(httpReq)
|
||||
|
||||
@@ -47,7 +47,7 @@ func (c *PurchaseHandler) GetVendorID() int {
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) GetVendorCategories(ctx *jxcontext.Context) (vendorCats []*model.SkuVendorCategory, err error) {
|
||||
cats, err := getAPI("57939570", 0, "").GetShopCategory(0)
|
||||
cats, err := getAPI("68023619", 0, "").GetShopCategory(0)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -722,6 +722,9 @@ func CreateSaleTemp(storeId int64, api *tiktokShop.API) (int64, error) {
|
||||
|
||||
// GetDeliveryTemp 获取运费模板id,运费模板不存在则创建
|
||||
func GetDeliveryTemp(api *tiktokShop.API, vendorStoreID string, storeDetail *dao.StoreDetail) (int64, error) {
|
||||
if vendorStoreID == "" {
|
||||
return 0, errors.New("平台门店id未绑定")
|
||||
}
|
||||
// 没有模板是查询线上模板
|
||||
freightId, _ := api.GetStoreBindTemp(utils.Str2Int64(vendorStoreID))
|
||||
if freightId == 0 {
|
||||
|
||||
Reference in New Issue
Block a user