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

This commit is contained in:
richboo111
2022-10-13 10:46:22 +08:00
9 changed files with 121 additions and 73 deletions

View File

@@ -1076,6 +1076,8 @@ func GetOrders(db *DaoDB, ids []int64, isIncludeSku, isIncludeFake bool, fromDat
sqlParams = append(sqlParams, pageSize, offset) sqlParams = append(sqlParams, pageSize, offset)
txDB, _ := Begin(db) txDB, _ := Begin(db)
defer Commit(db, txDB) defer Commit(db, txDB)
globals.SugarLogger.Debugf("===orderEX==sql=%s", sql)
globals.SugarLogger.Debugf("===orderEX==param=%s", utils.Format4Output(sqlParams, false))
if err = GetRowsTx(txDB, &orders, sql, sqlParams...); err == nil { if err = GetRowsTx(txDB, &orders, sql, sqlParams...); err == nil {
totalCount = GetLastTotalRowCount2(db, txDB) totalCount = GetLastTotalRowCount2(db, txDB)
} }

View File

@@ -116,6 +116,13 @@ func GetOrderRiderInfoToPlatform(orderId string) {
case model.VendorIDYB: // 银豹发单 case model.VendorIDYB: // 银豹发单
case model.VendorIDJDShop: // 京东商城 case model.VendorIDJDShop: // 京东商城
case model.VendorIDWSC: // 微盟微商城 case model.VendorIDWSC: // 微盟微商城
case model.VendorIDDD: // 抖店小时达
paramsMap := utils.Struct2Map(riderInfo, "", true)
if handler := partner.GetPurchaseOrderHandlerFromVendorID(v.VendorID); handler != nil {
if err := handler.GetOrderRider(v.VendorOrgCode, v.VendorStoreID, paramsMap); err != nil {
globals.SugarLogger.Errorf("Error pushing tiktok rider information :%s--%s--%v", riderInfo.OrderId, riderInfo.ThirdCarrierOrderId, err)
}
}
default: default:
globals.SugarLogger.Errorf("Order source error, non system order") globals.SugarLogger.Errorf("Order source error, non system order")
return return

View File

@@ -58,7 +58,7 @@ func (c *PurchaseHandler) isAfsMsg(msg *mtwmapi.CallbackMsg) bool {
func (c *PurchaseHandler) OnAfsOrderMsg(msg *mtwmapi.CallbackMsg) (retVal *mtwmapi.CallbackResponse) { func (c *PurchaseHandler) OnAfsOrderMsg(msg *mtwmapi.CallbackMsg) (retVal *mtwmapi.CallbackResponse) {
jxutils.CallMsgHandlerAsync(func() { jxutils.CallMsgHandlerAsync(func() {
retVal = c.onAfsOrderMsg(msg) retVal = c.onAfsOrderMsg(msg)
}, jxutils.ComposeUniversalOrderID(GetOrderIDFromMsg(msg), model.VendorIDEBAI)) }, jxutils.ComposeUniversalOrderID(GetOrderIDFromMsg(msg), model.VendorIDMTWM))
return retVal return retVal
} }

View File

@@ -166,7 +166,7 @@ func (p *PurchaseHandler) OrderDetail2Financial(result *order_orderDetail_respon
VendorStoreID: x.StoreInfo.StoreId, VendorStoreID: x.StoreInfo.StoreId,
StoreID: 0, StoreID: 0,
JxStoreID: jxStoreID, JxStoreID: jxStoreID,
VendorSkuID: utils.Interface2String(x.SkuId), VendorSkuID: utils.Int64ToStr(utils.MustInterface2Int64(x.SkuId)),
SkuID: int(utils.Str2Int64WithDefault(x.OutSkuId, 0)), SkuID: int(utils.Str2Int64WithDefault(x.OutSkuId, 0)),
Name: utils.Interface2String(x.ProductName), Name: utils.Interface2String(x.ProductName),
SalePrice: x.OrderAmount / x.ItemNum, SalePrice: x.OrderAmount / x.ItemNum,

View File

@@ -40,8 +40,8 @@ var (
var ( var (
VendorStatus2StatusMap = map[string]int{ VendorStatus2StatusMap = map[string]int{
utils.Int2Str(tiktokShop.CreateOrderStatusWaitPay): model.OrderStatusWait4Pay, // 1待支付 utils.Int2Str(tiktokShop.CreateOrderStatusWaitPay): model.OrderStatusWait4Pay, // 1待支付
utils.Int2Str(tiktokShop.CreateOrderStatusStockUp): model.OrderStatusAccepted, // 2备货中 utils.Int2Str(tiktokShop.CreateOrderStatusStockUp): model.OrderStatusAccepted, // 2备货中(部分发货)
utils.Int2Str(tiktokShop.CreateOrderStatusDelivery): model.OrderStatusDelivering, // 3发货 utils.Int2Str(tiktokShop.CreateOrderStatusDelivery): model.OrderStatusDelivering, // 3发货(发货完成)
utils.Int2Str(tiktokShop.CreateOrderStatusCancel): model.OrderStatusCanceled, // 4取消 utils.Int2Str(tiktokShop.CreateOrderStatusCancel): model.OrderStatusCanceled, // 4取消
utils.Int2Str(tiktokShop.CreateOrderStatusOver): model.OrderStatusFinished, // 5完成 utils.Int2Str(tiktokShop.CreateOrderStatusOver): model.OrderStatusFinished, // 5完成
utils.Int2Str(tiktokShop.CreateOrderStatusBeginRefund): model.OrderStatusApplyCancel, // 21发货前退款完成 utils.Int2Str(tiktokShop.CreateOrderStatusBeginRefund): model.OrderStatusApplyCancel, // 21发货前退款完成
@@ -75,21 +75,19 @@ func (c *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *mo
func (p *PurchaseHandler) getOrder(vendorOrgCode, vendorOrderID, vendorStoreID string) (order *model.GoodsOrder, orderMap *order_orderDetail_response.ShopOrderDetail, err error) { func (p *PurchaseHandler) getOrder(vendorOrgCode, vendorOrderID, vendorStoreID string) (order *model.GoodsOrder, orderMap *order_orderDetail_response.ShopOrderDetail, err error) {
// 平台获取订单详情 // 平台获取订单详情
result, err := getAPI(vendorOrgCode, 0, vendorStoreID).GetTiktokOrderDetail(vendorOrderID) api := getAPI(vendorOrgCode, 0, vendorStoreID)
result, err := api.GetTiktokOrderDetail(vendorOrderID)
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err
} }
globals.SugarLogger.Debugf("======orderDetail:%s", utils.Format4Output(result, false))
orderMap = result orderMap = result
order = &model.GoodsOrder{ order = &model.GoodsOrder{
VendorOrderID: result.OrderId, VendorOrderID: result.OrderId,
VendorID: model.VendorIDDD, VendorID: model.VendorIDDD,
VendorStoreID: utils.Int64ToStr(result.ShopId), VendorStoreID: "",
StoreID: 0, StoreID: 0,
StoreName: result.ShopName,
ConsigneeName: result.MaskPostReceiver,
ConsigneeMobile: result.MaskPostTel,
ConsigneeAddress: result.MaskPostAddr.Detail,
CoordinateType: model.CoordinateTypeMars, CoordinateType: model.CoordinateTypeMars,
BuyerComment: result.BuyerWords, BuyerComment: result.BuyerWords,
ExpectedDeliveredTime: getTimeFromTimestamp(utils.Interface2Int64WithDefault(result.TargetArrivalTime, 0)), ExpectedDeliveredTime: getTimeFromTimestamp(utils.Interface2Int64WithDefault(result.TargetArrivalTime, 0)),
@@ -99,7 +97,7 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode, vendorOrderID, vendorStoreID s
StatusTime: getTimeFromTimestamp(result.CreateTime), StatusTime: getTimeFromTimestamp(result.CreateTime),
OrderCreatedAt: getTimeFromTimestamp(result.CreateTime), OrderCreatedAt: getTimeFromTimestamp(result.CreateTime),
OriginalData: string(utils.MustMarshal(result)), OriginalData: string(utils.MustMarshal(result)),
ActualPayPrice: jxutils.StandardPrice2Int(utils.MustInterface2Float64(result.PayAmount)), ActualPayPrice: result.PayAmount,
BaseFreightMoney: result.PostAmount, BaseFreightMoney: result.PostAmount,
InvoiceTitle: "", InvoiceTitle: "",
InvoiceTaxerID: "", InvoiceTaxerID: "",
@@ -117,19 +115,18 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode, vendorOrderID, vendorStoreID s
} }
order.DeliveryType = model.OrderDeliveryTypeStoreSelf order.DeliveryType = model.OrderDeliveryTypeStoreSelf
order.Status = p.getStatusFromVendorStatus(result.OrderStatus) order.Status = p.getStatusFromVendorStatus(result.OrderStatus)
if utils.IsTimeZero(order.ExpectedDeliveredTime) {
order.BusinessType = model.BusinessTypeImmediate
} else {
order.BusinessType = model.BusinessTypeDingshida
}
order.VendorUserID = result.UserIdInfo.IdCardNo if result.UserIdInfo != nil {
order.VendorUserID = result.UserIdInfo.IdCardNo
}
originalLng := utils.MustInterface2Float64(result.UserCoordinate.UserCoordinateLongitude) originalLng := utils.MustInterface2Float64(result.UserCoordinate.UserCoordinateLongitude)
originalLat := utils.MustInterface2Float64(result.UserCoordinate.UserCoordinateLatitude) originalLat := utils.MustInterface2Float64(result.UserCoordinate.UserCoordinateLatitude)
order.ConsigneeLng = jxutils.StandardCoordinate2Int(originalLng) order.ConsigneeLng = jxutils.StandardCoordinate2Int(originalLng)
order.ConsigneeLat = jxutils.StandardCoordinate2Int(originalLat) order.ConsigneeLat = jxutils.StandardCoordinate2Int(originalLat)
order.DiscountMoney = result.PromotionAmount order.DiscountMoney = result.PromotionAmount
vendorStoreIdRelly := "" // 门店id
vendorNameRelly := "" // 门店id
// 添加需要赠送的东西(暂时没有赠品套餐直接商品) // 添加需要赠送的东西(暂时没有赠品套餐直接商品)
multiSkuMap := make(map[int]int) multiSkuMap := make(map[int]int)
if len(result.SkuOrderList) > 0 { if len(result.SkuOrderList) > 0 {
@@ -171,8 +168,39 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode, vendorOrderID, vendorStoreID s
} }
multiSkuMap[sku.SkuID]++ multiSkuMap[sku.SkuID]++
order.Skus = append(order.Skus, sku) order.Skus = append(order.Skus, sku)
vendorStoreIdRelly = extra.StoreInfo.StoreId
vendorNameRelly = extra.StoreInfo.StoreName
} }
} }
// 预订单还是快速达
localStore, err := dao.GetStoreDetailByVendorStoreID(dao.GetDB(), vendorStoreIdRelly, model.VendorIDDD, vendorOrgCode)
if err != nil {
return nil, nil, err
}
// 订单不在门店营业时间来的订单,
openTime := localStore.OpenTime1 // 门店开始营业时间
closeTime := localStore.CloseTime1 // 门店结束营业时间
if localStore.CloseTime2 != 0 {
closeTime = localStore.CloseTime2
}
h, m, _ := utils.Timestamp2Time(result.CreateTime).Clock()
if utils.Str2Int16(fmt.Sprintf("%d%d", h, m)) >= openTime && utils.Str2Int16(fmt.Sprintf("%d%d", h, m)) < closeTime {
order.BusinessType = model.BusinessTypeDingshida
} else {
order.BusinessType = model.BusinessTypeImmediate
}
// 用户保密信息脱敏
name, tel, address, _ := api.OrderUserInfoDecrypt(vendorOrderID, result.EncryptPostReceiver, result.EncryptPostTel, result.PostAddr.EncryptDetail)
order.ConsigneeName = name
order.ConsigneeMobile = tel
order.ConsigneeAddress = fmt.Sprintf("%s%s%s%s%s", result.PostAddr.Province.Name, result.PostAddr.City.Name, result.PostAddr.Town.Name, result.PostAddr.Street.Name, address)
order.JxStoreID = localStore.ID
order.StoreID = localStore.ID
order.VendorStoreID = vendorStoreIdRelly // 真实门店id
order.StoreName = vendorNameRelly // 真实门店名称
order.PmSubsidyMoney = result.PromotionAmount // 美团记录订单优惠总金额 order.PmSubsidyMoney = result.PromotionAmount // 美团记录订单优惠总金额
for _, v := range order.Skus { for _, v := range order.Skus {
if multiSkuMap[v.SkuID] > 1 && v.SalePrice == v.VendorPrice { if multiSkuMap[v.SkuID] > 1 && v.SalePrice == v.VendorPrice {
@@ -185,7 +213,7 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode, vendorOrderID, vendorStoreID s
// GetOrderRider 商家自配送同步配送信息 // GetOrderRider 商家自配送同步配送信息
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) {
return nil return getAPI(vendorOrgCode, 0, vendorStoreID).OrderStatusAndPsInfo(param)
} }
func (p *PurchaseHandler) GetOrder(vendorOrgCode, vendorOrderID, vendorStoreID string) (order *model.GoodsOrder, err error) { func (p *PurchaseHandler) GetOrder(vendorOrgCode, vendorOrderID, vendorStoreID string) (order *model.GoodsOrder, err error) {
@@ -222,7 +250,8 @@ func (c *PurchaseHandler) onOrderMsg(msgId, orderId string, msg interface{}) (re
var err error var err error
// 处理售后单 // 处理售后单
if c.isAfsMsg(msgId) { if c.isAfsMsg(msgId) {
return c.OnAfsOrderMsg(msgId, orderId, msg) response = c.OnAfsOrderMsg(msgId, orderId, msg)
return response
} }
// 待支付订单将不做处理/支付订单待处理(抖音风控) // 待支付订单将不做处理/支付订单待处理(抖音风控)
@@ -231,14 +260,14 @@ func (c *PurchaseHandler) onOrderMsg(msgId, orderId string, msg interface{}) (re
} }
// 取消订单:可能未支付取消订单,不做处理 // 取消订单:可能未支付取消订单,不做处理
if msgId == tiktokShop.CallbackCancelOrderMsgTagId { //if msgId == tiktokShop.CallbackCancelOrderMsgTagId {
if _, err := partner.CurOrderManager.LoadOrder(orderId, model.VendorIDDD); err != nil && strings.Contains(err.Error(), "找不到相应订单") { // if _, err := partner.CurOrderManager.LoadOrder(orderId, model.VendorIDDD); err != nil && strings.Contains(err.Error(), "找不到相应订单") {
return tiktokShop.Err2CallbackResponse(nil, "") // return tiktokShop.Err2CallbackResponse(nil, "")
} else { // } else {
globals.SugarLogger.Debugf("Cancel Order Err : %s", err.Error()) // globals.SugarLogger.Debugf("Cancel Order Err : %s", err)
return tiktokShop.Err2CallbackResponse(err, "") // return tiktokShop.Err2CallbackResponse(err, "")
} // }
} //}
// 组装订单状态变化 // 组装订单状态变化
status, appOrgCode := c.callbackMsg2Status(msgId, orderId, msg) status, appOrgCode := c.callbackMsg2Status(msgId, orderId, msg)
@@ -247,15 +276,17 @@ func (c *PurchaseHandler) onOrderMsg(msgId, orderId string, msg interface{}) (re
return tiktokShop.Err2CallbackResponse(nil, "") return tiktokShop.Err2CallbackResponse(nil, "")
} }
// 已经支付的订单,当做新订单创建在平台内部 // 已经支付的订单,当做新订单创建在平台内部 -----------------
if msgId == tiktokShop.CallbackPayOrderMsgTagId { if msgId == tiktokShop.CallbackPayOrderMsgTagId {
order, err := c.GetOrder(utils.Int64ToStr(appOrgCode), orderId, "") // 获取平台订单详情,制作本地订单 order, err := c.GetOrder(utils.Int64ToStr(appOrgCode), orderId, "") // 获取平台订单详情,制作本地订单
if err != nil { if err != nil {
return tiktokShop.Err2CallbackResponse(err, "") return tiktokShop.Err2CallbackResponse(err, "")
} }
globals.SugarLogger.Debugf("回调创建新订单=order==%s", utils.Format4Output(order, false))
globals.SugarLogger.Debugf("回调创建新订单=status==%s", utils.Format4Output(status, false))
status2, _ := c.callbackMsg2Status(msgId, orderId, msg) //status2, _ := c.callbackMsg2Status(msgId, orderId, msg)
if err := partner.CurOrderManager.OnOrderNew(order, status2); err != nil { if err := partner.CurOrderManager.OnOrderNew(order, status); err != nil {
return tiktokShop.Err2CallbackResponse(err, "") return tiktokShop.Err2CallbackResponse(err, "")
} }
@@ -332,23 +363,23 @@ func (c *PurchaseHandler) callbackMsg2Status(msgId, orderId string, msg interfac
orderStatus.Status = vendorStatusToLocalStatus(orderMsg.OrderStatus) orderStatus.Status = vendorStatusToLocalStatus(orderMsg.OrderStatus)
orderStatus.Remark = "101-支付回调" orderStatus.Remark = "101-支付回调"
shopId = orderMsg.ShopId shopId = orderMsg.ShopId
case tiktokShop.CallbackWaitOrderMsgTagId: //case tiktokShop.CallbackWaitOrderMsgTagId:
return nil, 0 // 支付订单风控消息不处理 // return nil, 0 // 支付订单风控消息不处理
//orderMsg := msg.(*tiktokShop.WaitOrderData) //orderMsg := msg.(*tiktokShop.WaitOrderData)
//orderStatus.VendorOrderID = utils.Int64ToStr(orderMsg.PId) //orderStatus.VendorOrderID = utils.Int64ToStr(orderMsg.PId)
//orderStatus.VendorStatus = utils.Int64ToStr(orderMsg.OrderStatus) //orderStatus.VendorStatus = utils.Int64ToStr(orderMsg.OrderStatus)
//orderStatus.StatusTime = utils.Timestamp2Time(orderMsg.PayTime) //orderStatus.StatusTime = utils.Timestamp2Time(orderMsg.PayTime)
//orderStatus.Status = vendorStatusToLocalStatus(orderMsg.OrderStatus) //orderStatus.Status = vendorStatusToLocalStatus(orderMsg.OrderStatus)
//orderStatus.Remark = "110-订单支付待处理:风控" //orderStatus.Remark = "110-订单支付待处理:风控"
case tiktokShop.CallbackPartGoodsMsgTagId: case tiktokShop.CallbackPartGoodsMsgTagId:
orderMsg := tiktokShop.SomeSendOrderData{} orderMsg := tiktokShop.SomeSendOrderData{}
if err := utils.Map2StructByJson(msg, &orderMsg, false); err != nil { if err := utils.Map2StructByJson(msg, &orderMsg, false); err != nil {
return nil, 0 return nil, 0
} }
orderStatus.VendorOrderID = utils.Int64ToStr(orderMsg.PId) orderStatus.VendorOrderID = utils.Int64ToStr(orderMsg.PId)
orderStatus.VendorStatus = utils.Int64ToStr(orderMsg.OrderStatus) orderStatus.VendorStatus = utils.Int64ToStr(orderMsg.OrderStatus) // 2
orderStatus.StatusTime = utils.Timestamp2Time(orderMsg.UpdateTime) orderStatus.StatusTime = utils.Timestamp2Time(orderMsg.UpdateTime)
orderStatus.Status = vendorStatusToLocalStatus(orderMsg.OrderStatus) orderStatus.Status = model.OrderStatusAdjust // vendorStatusToLocalStatus(orderMsg.OrderStatus)
orderStatus.Remark = "108-卖家部分发货" orderStatus.Remark = "108-卖家部分发货"
shopId = orderMsg.ShopId shopId = orderMsg.ShopId
case tiktokShop.CallbackPartAllGoodsMsgTagId: case tiktokShop.CallbackPartAllGoodsMsgTagId:
@@ -357,9 +388,9 @@ func (c *PurchaseHandler) callbackMsg2Status(msgId, orderId string, msg interfac
return nil, 0 return nil, 0
} }
orderStatus.VendorOrderID = utils.Int64ToStr(orderMsg.PId) orderStatus.VendorOrderID = utils.Int64ToStr(orderMsg.PId)
orderStatus.VendorStatus = utils.Int64ToStr(orderMsg.OrderStatus) orderStatus.VendorStatus = utils.Int64ToStr(orderMsg.OrderStatus) // 3
orderStatus.StatusTime = utils.Timestamp2Time(orderMsg.UpdateTime) orderStatus.StatusTime = utils.Timestamp2Time(orderMsg.UpdateTime)
orderStatus.Status = vendorStatusToLocalStatus(orderMsg.OrderStatus) orderStatus.Status = model.OrderStatusAdjust // vendorStatusToLocalStatus(orderMsg.OrderStatus)
orderStatus.Remark = "102-卖家发货完成" orderStatus.Remark = "102-卖家发货完成"
shopId = orderMsg.ShopId shopId = orderMsg.ShopId
case tiktokShop.CallbackCancelOrderMsgTagId: case tiktokShop.CallbackCancelOrderMsgTagId:
@@ -373,7 +404,7 @@ func (c *PurchaseHandler) callbackMsg2Status(msgId, orderId string, msg interfac
orderStatus.Status = vendorStatusToLocalStatus(orderMsg.OrderStatus) orderStatus.Status = vendorStatusToLocalStatus(orderMsg.OrderStatus)
orderStatus.Remark = "106-取消订单" orderStatus.Remark = "106-取消订单"
shopId = orderMsg.ShopId shopId = orderMsg.ShopId
case tiktokShop.CallbackSuccessOrderMsgTagId: case tiktokShop.CallbackSuccessOrderMsgTagId: // 交易完成
orderMsg := tiktokShop.SuccessOrderData{} orderMsg := tiktokShop.SuccessOrderData{}
if err := utils.Map2StructByJson(msg, &orderMsg, false); err != nil { if err := utils.Map2StructByJson(msg, &orderMsg, false); err != nil {
return nil, 0 return nil, 0
@@ -382,7 +413,7 @@ func (c *PurchaseHandler) callbackMsg2Status(msgId, orderId string, msg interfac
orderStatus.VendorStatus = utils.Int64ToStr(orderMsg.OrderStatus) orderStatus.VendorStatus = utils.Int64ToStr(orderMsg.OrderStatus)
orderStatus.StatusTime = utils.Timestamp2Time(orderMsg.CompleteTime) orderStatus.StatusTime = utils.Timestamp2Time(orderMsg.CompleteTime)
orderStatus.Status = vendorStatusToLocalStatus(orderMsg.OrderStatus) orderStatus.Status = vendorStatusToLocalStatus(orderMsg.OrderStatus)
orderStatus.Remark = "103-确认收货" orderStatus.Remark = "103-确认收货/交易完成"
shopId = orderMsg.ShopId shopId = orderMsg.ShopId
case tiktokShop.CallbackWayBillChangeOrderMsgTagId: case tiktokShop.CallbackWayBillChangeOrderMsgTagId:
orderMsg := tiktokShop.WayBillChangeData{} orderMsg := tiktokShop.WayBillChangeData{}
@@ -450,7 +481,7 @@ func (c *PurchaseHandler) callbackMsg2Status(msgId, orderId string, msg interfac
orderStatus.Status = model.OrderStatusUnknown orderStatus.Status = model.OrderStatusUnknown
orderStatus.Remark = "126-预约发货:" orderStatus.Remark = "126-预约发货:"
shopId = orderMsg.ShopId shopId = orderMsg.ShopId
case fakeFinishedPickup: // 应为需要同步京东,美团拣货功能制作的假拣货,抖音不存在拣货 case tiktokShop.CallbackWaitOrderMsgTagId: // 应为需要同步京东,美团拣货功能制作的假拣货,抖音不存在拣货
orderMsg := tiktokShop.FakePickUpGoodsData{} orderMsg := tiktokShop.FakePickUpGoodsData{}
if err := utils.Map2StructByJson(msg, &orderMsg, false); err != nil { if err := utils.Map2StructByJson(msg, &orderMsg, false); err != nil {
return nil, 0 return nil, 0

View File

@@ -4,12 +4,10 @@ import (
"fmt" "fmt"
tiktokShop "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/tiktok_api" 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/jxutils"
"git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model"
"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"
"git.rosy.net.cn/jx-callback/globals/api"
"strings" "strings"
) )
@@ -41,9 +39,10 @@ func (c *PurchaseHandler) isAfsMsg(msg string) bool {
} }
func (c *PurchaseHandler) OnAfsOrderMsg(msgId, orderId string, msg interface{}) (retVal *tiktokShop.CallbackResponse) { func (c *PurchaseHandler) OnAfsOrderMsg(msgId, orderId string, msg interface{}) (retVal *tiktokShop.CallbackResponse) {
jxutils.CallMsgHandlerAsync(func() { //jxutils.CallMsgHandlerAsync(func() {
retVal = c.onAfsOrderMsg(msgId, msg) retVal = c.onAfsOrderMsg(msgId, msg)
}, jxutils.ComposeUniversalOrderID(orderId, model.VendorIDDD)) globals.SugarLogger.Debugf("============%s===", utils.Format4Output(retVal, false))
//}, jxutils.ComposeUniversalOrderID(orderId, model.VendorIDDD))
return retVal return retVal
} }
@@ -79,7 +78,7 @@ func (c *PurchaseHandler) onAfsOrderMsg(msgId string, msg interface{}) (retVal *
VendorID: model.VendorIDDD, VendorID: model.VendorIDDD,
AfsOrderID: orderStatus.VendorOrderID, AfsOrderID: orderStatus.VendorOrderID,
VendorOrderID: orderStatus.RefVendorOrderID, VendorOrderID: orderStatus.RefVendorOrderID,
VendorStoreID: "", VendorStoreID: tiktokAfsOrderDetail.Data.ProcessInfo.AfterSaleInfo.StoreId,
StoreID: 0, StoreID: 0,
AfsCreatedAt: orderStatus.StatusTime, AfsCreatedAt: orderStatus.StatusTime,
@@ -90,7 +89,7 @@ func (c *PurchaseHandler) onAfsOrderMsg(msgId string, msg interface{}) (retVal *
ReasonDesc: tiktokAfsOrderDetail.Data.ProcessInfo.AfterSaleInfo.ReasonRemark, ReasonDesc: tiktokAfsOrderDetail.Data.ProcessInfo.AfterSaleInfo.ReasonRemark,
ReasonImgList: utils.LimitUTF8StringLen(strings.Join(tiktokAfsOrderDetail.Data.ProcessInfo.AfterSaleInfo.Evidence, ","), 1024), ReasonImgList: utils.LimitUTF8StringLen(strings.Join(tiktokAfsOrderDetail.Data.ProcessInfo.AfterSaleInfo.Evidence, ","), 1024),
RefundType: model.AfsTypeUnknown, RefundType: model.AfsTypeUnknown,
VendorOrgCode: api.TiktokStore.GetAppId(), VendorOrgCode: utils.Int2Str(venderOrgCode),
} }
afsOrder.FreightUserMoney = tiktokAfsOrderDetail.Data.ProcessInfo.AfterSaleInfo.RefundPostAmount afsOrder.FreightUserMoney = tiktokAfsOrderDetail.Data.ProcessInfo.AfterSaleInfo.RefundPostAmount
afsOrder.AfsFreightMoney = 0 // 暂时未发现退货取件费用 afsOrder.AfsFreightMoney = 0 // 暂时未发现退货取件费用
@@ -152,6 +151,7 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(msgId string, msg interface{}) (
orderMsg.VendorOrderID = orderMsg.RefVendorOrderID orderMsg.VendorOrderID = orderMsg.RefVendorOrderID
} }
vendorOrgCode = refundOrder.ShopId vendorOrgCode = refundOrder.ShopId
orderStatus = orderMsg
case tiktokShop.CallbackUpdateRefundOrderMsgTagId: // 买家修改售后申请消息 case tiktokShop.CallbackUpdateRefundOrderMsgTagId: // 买家修改售后申请消息
refundOrder := msg.(*tiktokShop.BuyerRefundModifiedData) refundOrder := msg.(*tiktokShop.BuyerRefundModifiedData)
orderMsg := &model.OrderStatus{ orderMsg := &model.OrderStatus{
@@ -175,7 +175,7 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(msgId string, msg interface{}) (
orderMsg.VendorOrderID = orderMsg.RefVendorOrderID orderMsg.VendorOrderID = orderMsg.RefVendorOrderID
} }
vendorOrgCode = refundOrder.ShopId vendorOrgCode = refundOrder.ShopId
orderStatus = orderMsg
case tiktokShop.CallbackRefundOrderSuccessMsgTagId: // 退款成功消息 case tiktokShop.CallbackRefundOrderSuccessMsgTagId: // 退款成功消息
refundOrder := msg.(*tiktokShop.BusinessRefundSuccessData) refundOrder := msg.(*tiktokShop.BusinessRefundSuccessData)
orderMsg := &model.OrderStatus{ orderMsg := &model.OrderStatus{
@@ -198,9 +198,9 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(msgId string, msg interface{}) (
orderMsg.VendorOrderID = orderMsg.RefVendorOrderID orderMsg.VendorOrderID = orderMsg.RefVendorOrderID
} }
vendorOrgCode = refundOrder.ShopId vendorOrgCode = refundOrder.ShopId
orderStatus = orderMsg
case tiktokShop.CallbackRefundOrderRefuseMsgTagId: // 拒绝退款消息 case tiktokShop.CallbackRefundOrderRefuseMsgTagId: // 拒绝退款消息
refundOrder := msg.(*tiktokShop.BusinessRefundSuccessData) refundOrder := msg.(*tiktokShop.BusinessNotRefundRefusedData)
orderMsg := &model.OrderStatus{ orderMsg := &model.OrderStatus{
VendorID: model.VendorIDDD, VendorID: model.VendorIDDD,
OrderType: model.OrderTypeAfsOrder, OrderType: model.OrderTypeAfsOrder,
@@ -208,7 +208,7 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(msgId string, msg interface{}) (
RefVendorID: model.VendorIDDD, RefVendorID: model.VendorIDDD,
VendorStatus: fmt.Sprintf("%s:%s", "order", "refund_money_fail"), VendorStatus: fmt.Sprintf("%s:%s", "order", "refund_money_fail"),
Status: c.GetAfsStatusFromVendorStatus(refundOrder.AftersaleType, tiktokShop.CallbackUpdateRefundOrderMsgTagId), Status: c.GetAfsStatusFromVendorStatus(refundOrder.AftersaleType, tiktokShop.CallbackUpdateRefundOrderMsgTagId),
StatusTime: utils.Timestamp2Time(int64(refundOrder.SuccessTime)), StatusTime: utils.Timestamp2Time(int64(refundOrder.RefuseTime)),
} }
if k, ok := ReasonCodeMap[refundOrder.ReasonCode]; ok { if k, ok := ReasonCodeMap[refundOrder.ReasonCode]; ok {
orderMsg.Remark = k orderMsg.Remark = k
@@ -221,7 +221,7 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(msgId string, msg interface{}) (
orderMsg.VendorOrderID = orderMsg.RefVendorOrderID orderMsg.VendorOrderID = orderMsg.RefVendorOrderID
} }
vendorOrgCode = refundOrder.ShopId vendorOrgCode = refundOrder.ShopId
orderStatus = orderMsg
case tiktokShop.CallbackRefundShopMsgTagId: // 拒绝退货申请消息 case tiktokShop.CallbackRefundShopMsgTagId: // 拒绝退货申请消息
refundOrder := msg.(*tiktokShop.BusinessNotReturnApplyRefusedData) refundOrder := msg.(*tiktokShop.BusinessNotReturnApplyRefusedData)
orderMsg := &model.OrderStatus{ orderMsg := &model.OrderStatus{
@@ -244,9 +244,9 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(msgId string, msg interface{}) (
orderMsg.VendorOrderID = orderMsg.RefVendorOrderID orderMsg.VendorOrderID = orderMsg.RefVendorOrderID
} }
vendorOrgCode = refundOrder.ShopId vendorOrgCode = refundOrder.ShopId
orderStatus = orderMsg
case tiktokShop.CallbackReturnApplyAgreedMsgTagId: // 同意退货申请消息 case tiktokShop.CallbackReturnApplyAgreedMsgTagId: // 同意退货申请消息
refundOrder := msg.(*tiktokShop.BusinessRefundSuccessData) refundOrder := msg.(*tiktokShop.BusinessReturnApplyAgreedData)
orderMsg := &model.OrderStatus{ orderMsg := &model.OrderStatus{
VendorID: model.VendorIDDD, VendorID: model.VendorIDDD,
OrderType: model.OrderTypeAfsOrder, OrderType: model.OrderTypeAfsOrder,
@@ -254,7 +254,7 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(msgId string, msg interface{}) (
RefVendorID: model.VendorIDDD, RefVendorID: model.VendorIDDD,
VendorStatus: fmt.Sprintf("%s:%s", "order", "refund_shop_success"), VendorStatus: fmt.Sprintf("%s:%s", "order", "refund_shop_success"),
Status: c.GetAfsStatusFromVendorStatus(refundOrder.AftersaleType, tiktokShop.CallbackReturnApplyAgreedMsgTagId), Status: c.GetAfsStatusFromVendorStatus(refundOrder.AftersaleType, tiktokShop.CallbackReturnApplyAgreedMsgTagId),
StatusTime: utils.Timestamp2Time(int64(refundOrder.SuccessTime)), StatusTime: utils.Timestamp2Time(int64(refundOrder.AgreeTime)),
} }
if k, ok := ReasonCodeMap[refundOrder.ReasonCode]; ok { if k, ok := ReasonCodeMap[refundOrder.ReasonCode]; ok {
orderMsg.Remark = k orderMsg.Remark = k
@@ -267,9 +267,9 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(msgId string, msg interface{}) (
orderMsg.VendorOrderID = orderMsg.RefVendorOrderID orderMsg.VendorOrderID = orderMsg.RefVendorOrderID
} }
vendorOrgCode = refundOrder.ShopId vendorOrgCode = refundOrder.ShopId
orderStatus = orderMsg
case tiktokShop.CallbackReturnRefundAgreedMsgTagId: // 同意退款消息 case tiktokShop.CallbackReturnRefundAgreedMsgTagId: // 同意退款消息
refundOrder := msg.(*tiktokShop.BusinessRefundSuccessData) refundOrder := msg.(*tiktokShop.BusinessRefundAgreedData)
orderMsg := &model.OrderStatus{ orderMsg := &model.OrderStatus{
VendorID: model.VendorIDDD, VendorID: model.VendorIDDD,
OrderType: model.OrderTypeAfsOrder, OrderType: model.OrderTypeAfsOrder,
@@ -277,7 +277,7 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(msgId string, msg interface{}) (
RefVendorID: model.VendorIDDD, RefVendorID: model.VendorIDDD,
VendorStatus: fmt.Sprintf("%s:%s", "order", "refund_money_success"), VendorStatus: fmt.Sprintf("%s:%s", "order", "refund_money_success"),
Status: c.GetAfsStatusFromVendorStatus(refundOrder.AftersaleType, tiktokShop.CallbackReturnRefundAgreedMsgTagId), Status: c.GetAfsStatusFromVendorStatus(refundOrder.AftersaleType, tiktokShop.CallbackReturnRefundAgreedMsgTagId),
StatusTime: utils.Timestamp2Time(int64(refundOrder.SuccessTime)), StatusTime: utils.Timestamp2Time(int64(refundOrder.AgreeTime)),
} }
if k, ok := ReasonCodeMap[refundOrder.ReasonCode]; ok { if k, ok := ReasonCodeMap[refundOrder.ReasonCode]; ok {
orderMsg.Remark = k orderMsg.Remark = k
@@ -290,7 +290,7 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(msgId string, msg interface{}) (
orderMsg.VendorOrderID = orderMsg.RefVendorOrderID orderMsg.VendorOrderID = orderMsg.RefVendorOrderID
} }
vendorOrgCode = refundOrder.ShopId vendorOrgCode = refundOrder.ShopId
orderStatus = orderMsg
default: default:
return nil, 0 return nil, 0
} }

View File

@@ -283,6 +283,9 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI
PickupMethod: "0", PickupMethod: "0",
OuterProductId: utils.Int2Str(storeSku.SkuID), // 本地skuId为外部商品id OuterProductId: utils.Int2Str(storeSku.SkuID), // 本地skuId为外部商品id
} }
globals.SugarLogger.Debugf("====OuterProductId====%d", storeSku.SkuID)
globals.SugarLogger.Debugf("====OuterProductId====%d", storeSku.ID)
globals.SugarLogger.Debugf("====OuterProductId====%s", utils.Format4Output(storeSku, false))
// param.AccountTemplateId = "" // param.AccountTemplateId = ""
// 获取上传图,商品轮播图 // 获取上传图,商品轮播图
img, err := GetTiktokImgList(utils.Int2Str(storeSku.StoreID), storeDetail.VendorOrgCode, storeSku.ImgOrigin, storeSku.Img2, storeSku.Img3, storeSku.Img4, storeSku.Img5) img, err := GetTiktokImgList(utils.Int2Str(storeSku.StoreID), storeDetail.VendorOrgCode, storeSku.ImgOrigin, storeSku.Img2, storeSku.Img3, storeSku.Img4, storeSku.Img5)
@@ -291,11 +294,15 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI
} }
param.Pic = img param.Pic = img
// 商品详情图 // 商品详情图
img2, err := GetTiktokImgList(utils.Int2Str(storeSku.StoreID), storeDetail.VendorOrgCode, storeSku.DescImg) if storeSku.DescImg == "" {
if err != nil { param.Description = img
return nil, err } else {
img2, err := GetTiktokImgList(utils.Int2Str(storeSku.StoreID), storeDetail.VendorOrgCode, storeSku.DescImg)
if err != nil {
return nil, err
}
param.Description = img2
} }
param.Description = img2
// weight_unit 目前抖音只支持g和kg两种 // weight_unit 目前抖音只支持g和kg两种
switch storeSku.Unit { switch storeSku.Unit {

View File

@@ -124,7 +124,7 @@ func GetSpecPrices(specs, storeId string, mainSkuId int64, localSku *dao.StoreSk
Code: utils.Int2Str(localSku.SkuID), Code: utils.Int2Str(localSku.SkuID),
StepStockNum: 0, StepStockNum: 0,
SupplierID: "", SupplierID: "",
OuterSkuID: utils.Int2Str(localSku.NameID), OuterSkuID: utils.Int2Str(localSku.SkuID),
DeliveryInfos: []*tiktokShop.DeliveryInfos{ DeliveryInfos: []*tiktokShop.DeliveryInfos{
{InfoType: "weight", InfoUnit: localSku.SpecUnit, InfoValue: fmt.Sprintf("%f", localSku.SpecQuality)}, {InfoType: "weight", InfoUnit: localSku.SpecUnit, InfoValue: fmt.Sprintf("%f", localSku.SpecQuality)},
}, },

View File

@@ -28,6 +28,7 @@ func (t *TiktokController) CallbackTiktokOrderMsg() {
} }
// 2.参数解析 // 2.参数解析
globals.SugarLogger.Debug("抖音订单回调数据参数打印===========", string(byteList))
orderStatus, resp := api.TiktokStore.CreateOrderCallback(byteList) orderStatus, resp := api.TiktokStore.CreateOrderCallback(byteList)
globals.SugarLogger.Debug("抖音订单回调数据打印测试===========", orderStatus) globals.SugarLogger.Debug("抖音订单回调数据打印测试===========", orderStatus)
if resp.Code != 0 { if resp.Code != 0 {