dyps update
This commit is contained in:
@@ -596,6 +596,21 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo
|
|||||||
// s.addWaybill2Map(savedOrderInfo, bill) // updateBillsInfo中会添加
|
// s.addWaybill2Map(savedOrderInfo, bill) // updateBillsInfo中会添加
|
||||||
globals.SugarLogger.Debugf("OnWaybillStatusChanged bill not exist! orderID:%s, bill:%v", bill.VendorOrderID, bill)
|
globals.SugarLogger.Debugf("OnWaybillStatusChanged bill not exist! orderID:%s, bill:%v", bill.VendorOrderID, bill)
|
||||||
}
|
}
|
||||||
|
// 美团订单会存在:用户直接申请退款,不推送取消消息!导致三方配送未取消!
|
||||||
|
if order.Status >= model.OrderStatusCanceled {
|
||||||
|
s.removeWaybillFromMap(savedOrderInfo, bill.WaybillVendorID)
|
||||||
|
if s.isBillCandidate(order, bill) {
|
||||||
|
s.resetTimer(savedOrderInfo, bill, isPending)
|
||||||
|
if !isPending {
|
||||||
|
s.updateOrderByBill(order, nil, true)
|
||||||
|
}
|
||||||
|
} else if model.IsOrderHaveWaybill(order) {
|
||||||
|
s.ProxyCancelWaybill(order, bill, partner.CancelWaybillReasonNotAcceptIntime, partner.CancelWaybillReasonStrNotAcceptIntime)
|
||||||
|
if !isPending {
|
||||||
|
globals.SugarLogger.Warnf("OnWaybillStatusChanged AcceptCanceled orderID:%s got multiple bill:%v, order details:%v", order.VendorOrderID, bill, order)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
switch bill.Status {
|
switch bill.Status {
|
||||||
case model.WaybillStatusAccepted, model.WaybillStatusCourierAssigned, model.WaybillStatusCourierArrived, model.WaybillStatusDelivering:
|
case model.WaybillStatusAccepted, model.WaybillStatusCourierAssigned, model.WaybillStatusCourierArrived, model.WaybillStatusDelivering:
|
||||||
s.resetTimer(savedOrderInfo, bill, isPending)
|
s.resetTimer(savedOrderInfo, bill, isPending)
|
||||||
|
|||||||
@@ -3314,9 +3314,9 @@ func GetSkuNamesNew(ctx *jxcontext.Context, keyword string, skuIDs, skuNameIDs [
|
|||||||
for _, v := range skus {
|
for _, v := range skus {
|
||||||
var things []*model.ThingMap
|
var things []*model.ThingMap
|
||||||
sql := `
|
sql := `
|
||||||
SELECT * FROM thing_map WHERE vendor_org_code = ? AND thing_type = ? AND thing_id = ? AND deleted_at = ?
|
SELECT * FROM thing_map WHERE thing_type = ? AND thing_id = ? AND vendor_thing_id <> "" AND deleted_at = ?
|
||||||
`
|
`
|
||||||
sqlParams := []interface{}{"320406", model.ThingTypeSku, v.ID, utils.DefaultTimeValue}
|
sqlParams := []interface{}{model.ThingTypeSku, v.ID, utils.DefaultTimeValue}
|
||||||
dao.GetRows(db, &things, sql, sqlParams)
|
dao.GetRows(db, &things, sql, sqlParams)
|
||||||
skusVendor := &model.SkuWithVendor{
|
skusVendor := &model.SkuWithVendor{
|
||||||
Sku: v,
|
Sku: v,
|
||||||
|
|||||||
@@ -784,7 +784,6 @@ func GetVendorStore(ctx *jxcontext.Context, vendorID int, vendorOrgCode, vendorS
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if handler := CurVendorSync.GetStoreHandler(vendorID); handler != nil {
|
if handler := CurVendorSync.GetStoreHandler(vendorID); handler != nil {
|
||||||
globals.SugarLogger.Debugf("step1 handler==============%s", handler)
|
|
||||||
result, err2 := handler.ReadStore(ctx, vendorOrgCode, vendorStoreID, "")
|
result, err2 := handler.ReadStore(ctx, vendorOrgCode, vendorStoreID, "")
|
||||||
if err = err2; err == nil {
|
if err = err2; err == nil {
|
||||||
retVal = &StoreExt{
|
retVal = &StoreExt{
|
||||||
@@ -812,7 +811,6 @@ func GetVendorStore(ctx *jxcontext.Context, vendorID int, vendorOrgCode, vendorS
|
|||||||
return nil, err
|
return nil, err
|
||||||
} else {
|
} else {
|
||||||
handler := partner.GetDeliveryPlatformFromVendorID(vendorID).Handler
|
handler := partner.GetDeliveryPlatformFromVendorID(vendorID).Handler
|
||||||
globals.SugarLogger.Debugf("step2 handler==============%s", handler)
|
|
||||||
if store, err := handler.GetStore(ctx, 0, vendorStoreID); err == nil {
|
if store, err := handler.GetStore(ctx, 0, vendorStoreID); err == nil {
|
||||||
retVal = &StoreExt{
|
retVal = &StoreExt{
|
||||||
Store: store.Store,
|
Store: store.Store,
|
||||||
@@ -1706,7 +1704,6 @@ func UpdateStoreVendorMap(ctx *jxcontext.Context, db *dao.DaoDB, storeID, vendor
|
|||||||
if (valid["deliveryFeeDeductionSill"] != nil || valid["deliveryFeeDeductionFee"] != nil || valid["ybStorePrefix"] != nil) && vendorID == model.VendorIDDD {
|
if (valid["deliveryFeeDeductionSill"] != nil || valid["deliveryFeeDeductionFee"] != nil || valid["ybStorePrefix"] != nil) && vendorID == model.VendorIDDD {
|
||||||
DDFlag = true
|
DDFlag = true
|
||||||
} //特殊处理抖店运费模板、打包费
|
} //特殊处理抖店运费模板、打包费
|
||||||
globals.SugarLogger.Debugf("DeliveryFeeDeductionFee=====%d,YbStorePrefix====%s", storeMap.DeliveryFeeDeductionFee, storeMap.YbStorePrefix)
|
|
||||||
if (storeMap.DeliveryFeeDeductionFee > 0 || utils.Str2Int(storeMap.YbStorePrefix) > 0) && vendorID == model.VendorIDDD {
|
if (storeMap.DeliveryFeeDeductionFee > 0 || utils.Str2Int(storeMap.YbStorePrefix) > 0) && vendorID == model.VendorIDDD {
|
||||||
DDFlag = true
|
DDFlag = true
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6614,27 +6614,27 @@ func UpdateMtCatToJd(ctx *jxcontext.Context, mtCatID, jdCatID string) (err error
|
|||||||
}
|
}
|
||||||
|
|
||||||
func SyncTiktokMainIdToLocal(ctx *jxcontext.Context, param *tiktok_store.MainSku) error {
|
func SyncTiktokMainIdToLocal(ctx *jxcontext.Context, param *tiktok_store.MainSku) error {
|
||||||
codes, err := dao.GetVendorOrgCode(dao.GetDB(), model.VendorIDDD, "", "platform")
|
//codes, err := dao.GetVendorOrgCode(dao.GetDB(), model.VendorIDDD, "", "platform")
|
||||||
if err != nil {
|
//if err != nil {
|
||||||
return err
|
// return err
|
||||||
}
|
//}
|
||||||
db := dao.GetDB()
|
//db := dao.GetDB()
|
||||||
for _, code := range codes {
|
//for _, code := range codes {
|
||||||
result, err := tiktok_store.QueryAllMainSkuList(code.VendorOrgCode, param)
|
// result, err := tiktok_store.QueryAllMainSkuList(code.VendorOrgCode, param)
|
||||||
if err != nil {
|
// if err != nil {
|
||||||
continue
|
// continue
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
// 删除当前时间段数据
|
// // 删除当前时间段数据
|
||||||
jxutils.CallMsgHandlerAsync(func() {
|
// jxutils.CallMsgHandlerAsync(func() {
|
||||||
if err := DeleteThingByData(ctx, db, code.VendorOrgCode, utils.Timestamp2Time(param.StartTime), utils.Timestamp2Time(param.EndTime)); err != nil {
|
// if err := DeleteThingByData(ctx, db, code.VendorOrgCode, utils.Timestamp2Time(param.StartTime), utils.Timestamp2Time(param.EndTime)); err != nil {
|
||||||
globals.SugarLogger.Error("删除需要同步的数据 := %s", err.Error())
|
// globals.SugarLogger.Error("删除需要同步的数据 := %s", err.Error())
|
||||||
}
|
// }
|
||||||
if err := OnCreateThing2Tiktok(ctx, db, code.VendorOrgCode, result, model.ThingTypeSku, model.SyncFlagNewMask, false); err != nil {
|
// if err := OnCreateThing2Tiktok(ctx, db, code.VendorOrgCode, result, model.ThingTypeSku, model.SyncFlagNewMask, false); err != nil {
|
||||||
globals.SugarLogger.Error("初始他抖音平台主订单已经子订单id信息错误:= %s", err.Error())
|
// globals.SugarLogger.Error("初始他抖音平台主订单已经子订单id信息错误:= %s", err.Error())
|
||||||
}
|
// }
|
||||||
}, "")
|
// }, "")
|
||||||
}
|
//}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -288,7 +288,6 @@ func (v *VendorSync) SyncStore2(ctx *jxcontext.Context, db *dao.DaoDB, vendorIDs
|
|||||||
var vendorStoreID string
|
var vendorStoreID string
|
||||||
storeMap := loopMapInfo.StoreMapList[0]
|
storeMap := loopMapInfo.StoreMapList[0]
|
||||||
if model.IsSyncStatusNew(storeMap.SyncStatus) {
|
if model.IsSyncStatusNew(storeMap.SyncStatus) {
|
||||||
globals.SugarLogger.Debug("进入handler.CreateStore2")
|
|
||||||
storeDetail, _ := dao.GetStoreDetail(db, storeMap.StoreID, storeMap.VendorID, storeMap.VendorOrgCode)
|
storeDetail, _ := dao.GetStoreDetail(db, storeMap.StoreID, storeMap.VendorID, storeMap.VendorOrgCode)
|
||||||
if vendorStoreID, err = handler.CreateStore2(db2, storeMap.StoreID, userName, nil, storeDetail); err == nil {
|
if vendorStoreID, err = handler.CreateStore2(db2, storeMap.StoreID, userName, nil, storeDetail); err == nil {
|
||||||
resultList = append(resultList, 1)
|
resultList = append(resultList, 1)
|
||||||
|
|||||||
@@ -312,6 +312,19 @@ func formalizeStoreSkuList(inSkuList []*dao.StoreSkuSyncInfo) []*dao.StoreSkuSyn
|
|||||||
//美团的商品名字都要有 ‘约’
|
//美团的商品名字都要有 ‘约’
|
||||||
if skuItem.VendorID == model.VendorIDMTWM {
|
if skuItem.VendorID == model.VendorIDMTWM {
|
||||||
skuItem.SkuName = jxutils.ComposeSkuNameSync2(skuItem.Prefix, skuItem.Name, skuItem.Comment, skuItem.Unit, skuItem.SpecQuality, skuItem.SpecUnit, 0, skuItem.ExPrefix, skuItem.ExPrefixBegin, skuItem.ExPrefixEnd, (skuItem.BrandID == skuItem.ExBrandID && skuItem.ExBrandID != 0) || skuItem.ExBrandID == 0)
|
skuItem.SkuName = jxutils.ComposeSkuNameSync2(skuItem.Prefix, skuItem.Name, skuItem.Comment, skuItem.Unit, skuItem.SpecQuality, skuItem.SpecUnit, 0, skuItem.ExPrefix, skuItem.ExPrefixBegin, skuItem.ExPrefixEnd, (skuItem.BrandID == skuItem.ExBrandID && skuItem.ExBrandID != 0) || skuItem.ExBrandID == 0)
|
||||||
|
} else if skuItem.VendorID == model.VendorIDDD {
|
||||||
|
var endIndex int = 0
|
||||||
|
var skuName string = ""
|
||||||
|
if strings.HasPrefix(skuItem.Name, "[") {
|
||||||
|
endIndex = strings.Index(skuItem.Name, "]")
|
||||||
|
skuName = skuItem.Name[endIndex+1:]
|
||||||
|
} else if strings.HasPrefix(skuItem.Name, "【") {
|
||||||
|
endIndex = strings.Index(skuItem.Name, "】")
|
||||||
|
skuName = skuItem.Name[endIndex+3:]
|
||||||
|
} else {
|
||||||
|
skuName = skuItem.Name
|
||||||
|
}
|
||||||
|
skuItem.SkuName = jxutils.ComposeSkuNameSync("", skuName, skuItem.Comment, skuItem.Unit, skuItem.SpecQuality, skuItem.SpecUnit, 0, skuItem.ExPrefix, skuItem.ExPrefixBegin, skuItem.ExPrefixEnd, (skuItem.BrandID == skuItem.ExBrandID && skuItem.ExBrandID != 0) || skuItem.ExBrandID == 0)
|
||||||
} else {
|
} else {
|
||||||
skuItem.SkuName = jxutils.ComposeSkuNameSync(skuItem.Prefix, skuItem.Name, skuItem.Comment, skuItem.Unit, skuItem.SpecQuality, skuItem.SpecUnit, 0, skuItem.ExPrefix, skuItem.ExPrefixBegin, skuItem.ExPrefixEnd, (skuItem.BrandID == skuItem.ExBrandID && skuItem.ExBrandID != 0) || skuItem.ExBrandID == 0)
|
skuItem.SkuName = jxutils.ComposeSkuNameSync(skuItem.Prefix, skuItem.Name, skuItem.Comment, skuItem.Unit, skuItem.SpecQuality, skuItem.SpecUnit, 0, skuItem.ExPrefix, skuItem.ExPrefixBegin, skuItem.ExPrefixEnd, (skuItem.BrandID == skuItem.ExBrandID && skuItem.ExBrandID != 0) || skuItem.ExBrandID == 0)
|
||||||
}
|
}
|
||||||
@@ -380,6 +393,8 @@ func sku2Update(vendorID int, sku *dao.StoreSkuSyncInfo, syncStatus int8) (item
|
|||||||
if sku.VendorSonSkuID != "" {
|
if sku.VendorSonSkuID != "" {
|
||||||
kvs["VendorSonSkuID"] = sku.VendorSonSkuID
|
kvs["VendorSonSkuID"] = sku.VendorSonSkuID
|
||||||
}
|
}
|
||||||
|
// 抖音在同步时,无法区分修改的是主商品还是子商品,所以先同步主商品,在定时任务同步子商品
|
||||||
|
|
||||||
storeSku := &model.StoreSkuBind{}
|
storeSku := &model.StoreSkuBind{}
|
||||||
storeSku.ID = sku.BindID
|
storeSku.ID = sku.BindID
|
||||||
item = &dao.KVUpdateItem{
|
item = &dao.KVUpdateItem{
|
||||||
@@ -411,8 +426,10 @@ func updateStoreSku(db *dao.DaoDB, vendorID int, storeSkuList []*dao.StoreSkuSyn
|
|||||||
} else {
|
} else {
|
||||||
updateItemList := make([]*dao.KVUpdateItem, len(storeSkuList))
|
updateItemList := make([]*dao.KVUpdateItem, len(storeSkuList))
|
||||||
for k, v := range storeSkuList {
|
for k, v := range storeSkuList {
|
||||||
|
globals.SugarLogger.Debugf("======skusyncStatus %s", utils.Format4Output(v, false))
|
||||||
updateItemList[k] = sku2Update(vendorID, v, syncStatus)
|
updateItemList[k] = sku2Update(vendorID, v, syncStatus)
|
||||||
}
|
}
|
||||||
|
globals.SugarLogger.Debugf("========updateItemList=== %s", utils.Format4Output(updateItemList, false))
|
||||||
num, err = dao.BatchUpdateEntityByKV(db, updateItemList)
|
num, err = dao.BatchUpdateEntityByKV(db, updateItemList)
|
||||||
if vendorID == model.VendorIDYB {
|
if vendorID == model.VendorIDYB {
|
||||||
err = updateYbOhterSku(db, storeSkuList)
|
err = updateYbOhterSku(db, storeSkuList)
|
||||||
@@ -676,12 +693,6 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag
|
|||||||
// api.JdShop2API.SetCookieWithStr(configs[0].Value)
|
// api.JdShop2API.SetCookieWithStr(configs[0].Value)
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
//createList, updateList []*dao.StoreSkuSyncInfo
|
|
||||||
//deleteList, stockList, onlineList, offlineList, priceList []*partner.StoreSkuInfo
|
|
||||||
//updateItems []*dao.KVUpdateItem
|
|
||||||
//reorderSkuMap map[string][]*dao.StoreSkuSyncInfo
|
|
||||||
globals.SugarLogger.Debugf("createList len = %d ", len(createList))
|
|
||||||
globals.SugarLogger.Debugf("====skuList %s", utils.Format4Output(skus, false))
|
|
||||||
task := tasksch.NewParallelTask("syncStoreSkuNew", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError2), ctx,
|
task := tasksch.NewParallelTask("syncStoreSkuNew", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError2), ctx,
|
||||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
step := batchItemList[0].(int)
|
step := batchItemList[0].(int)
|
||||||
@@ -846,7 +857,6 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag
|
|||||||
for vendorCatID := range reorderSkuMap {
|
for vendorCatID := range reorderSkuMap {
|
||||||
vendorCatIDs = append(vendorCatIDs, vendorCatID)
|
vendorCatIDs = append(vendorCatIDs, vendorCatID)
|
||||||
}
|
}
|
||||||
globals.SugarLogger.Debugf("门店商品排序=====")
|
|
||||||
reorderTask := tasksch.NewParallelTask("门店商品排序", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError2), ctx,
|
reorderTask := tasksch.NewParallelTask("门店商品排序", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError2), ctx,
|
||||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
vendorCatID := batchItemList[0].(string)
|
vendorCatID := batchItemList[0].(string)
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import (
|
|||||||
"git.rosy.net.cn/jx-callback/business/bidding"
|
"git.rosy.net.cn/jx-callback/business/bidding"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils/ddmsg"
|
"git.rosy.net.cn/jx-callback/business/jxutils/ddmsg"
|
||||||
"git.rosy.net.cn/jx-callback/business/partner/delivery"
|
"git.rosy.net.cn/jx-callback/business/partner/delivery"
|
||||||
"git.rosy.net.cn/jx-callback/business/partner/purchase/tiktok_store"
|
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@@ -214,19 +213,19 @@ func Init() {
|
|||||||
})
|
})
|
||||||
|
|
||||||
// 定时任务更新昨天的都要商品和本地商品id的映射关系
|
// 定时任务更新昨天的都要商品和本地商品id的映射关系
|
||||||
ScheduleTimerFunc("RefreshStoreOperator", func() {
|
//ScheduleTimerFunc("RefreshStoreOperator", func() {
|
||||||
t := time.Now()
|
// t := time.Now()
|
||||||
cms.SyncTiktokMainIdToLocal(jxcontext.AdminCtx, &tiktok_store.MainSku{
|
// cms.SyncTiktokMainIdToLocal(jxcontext.AdminCtx, &tiktok_store.MainSku{
|
||||||
AppOrgCode: "",
|
// AppOrgCode: "",
|
||||||
CheckStatus: 3,
|
// CheckStatus: 3,
|
||||||
StartTime: time.Date(t.Year(), t.Month(), t.Day()-1, 0, 0, 1, 0, time.Local).Unix(),
|
// StartTime: time.Date(t.Year(), t.Month(), t.Day()-1, 0, 0, 1, 0, time.Local).Unix(),
|
||||||
EndTime: time.Date(t.Year(), t.Month(), t.Day()-1, 23, 59, 59, 0, time.Local).Unix(),
|
// EndTime: time.Date(t.Year(), t.Month(), t.Day()-1, 23, 59, 59, 0, time.Local).Unix(),
|
||||||
Page: 1,
|
// Page: 1,
|
||||||
PageSize: 100,
|
// PageSize: 100,
|
||||||
})
|
// })
|
||||||
}, []string{
|
//}, []string{
|
||||||
"04:30:00",
|
// "04:30:00",
|
||||||
})
|
//})
|
||||||
|
|
||||||
ScheduleTimerFuncByInterval(func() {
|
ScheduleTimerFuncByInterval(func() {
|
||||||
defsch.FixedScheduler.ConfirmSelfTakeOrders(jxcontext.AdminCtx, []int{model.VendorIDJD}, time.Now().Add(-48*time.Hour), time.Now().Add(-30*time.Minute), true, true)
|
defsch.FixedScheduler.ConfirmSelfTakeOrders(jxcontext.AdminCtx, []int{model.VendorIDJD}, time.Now().Add(-48*time.Hour), time.Now().Add(-30*time.Minute), true, true)
|
||||||
@@ -253,9 +252,9 @@ func Init() {
|
|||||||
|
|
||||||
// 抖音更新门店商品
|
// 抖音更新门店商品
|
||||||
if beego.BConfig.RunMode != "jxgy" {
|
if beego.BConfig.RunMode != "jxgy" {
|
||||||
ScheduleTimerFuncByInterval(func() {
|
ScheduleTimerFunc("RefreshSyncSkuList", func() {
|
||||||
syncStoreSkuTiktok()
|
syncStoreSkuTiktok()
|
||||||
}, 60*time.Second, 30*time.Minute)
|
}, []string{"11:30:00"})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 定时任务刷新当前订单的物流信息
|
// 定时任务刷新当前订单的物流信息
|
||||||
@@ -590,7 +589,33 @@ func syncStoreSkuTiktok() {
|
|||||||
if beego.BConfig.RunMode != "jxgy" {
|
if beego.BConfig.RunMode != "jxgy" {
|
||||||
errList.AddErr(cms.DeleteSkuNameExPrefixOverdue(db))
|
errList.AddErr(cms.DeleteSkuNameExPrefixOverdue(db))
|
||||||
errList.AddErr(cms.SetMultiStoreSkuSyncModifyStatus(db, partner.GetMultiStoreVendorIDs()))
|
errList.AddErr(cms.SetMultiStoreSkuSyncModifyStatus(db, partner.GetMultiStoreVendorIDs()))
|
||||||
_, err = cms.CurVendorSync.SyncStoresSkus2(jxcontext.AdminCtx, nil, 0, db, []int{model.VendorIDDD}, []int{668619}, false, nil, nil, syncFlag, true, true)
|
var storeList2GD = []int{
|
||||||
|
102533,
|
||||||
|
668619,
|
||||||
|
100336,
|
||||||
|
102014,
|
||||||
|
103089,
|
||||||
|
667212,
|
||||||
|
667510,
|
||||||
|
100328,
|
||||||
|
100524,
|
||||||
|
102046,
|
||||||
|
103190,
|
||||||
|
667149,
|
||||||
|
100334,
|
||||||
|
101995,
|
||||||
|
102563,
|
||||||
|
102039,
|
||||||
|
100329,
|
||||||
|
102465,
|
||||||
|
102417,
|
||||||
|
100517,
|
||||||
|
102377,
|
||||||
|
666761,
|
||||||
|
102592,
|
||||||
|
102057,
|
||||||
|
}
|
||||||
|
_, err = cms.CurVendorSync.SyncStoresSkus2(jxcontext.AdminCtx, nil, 0, db, []int{model.VendorIDDD}, storeList2GD, false, nil, nil, syncFlag, true, true)
|
||||||
errList.AddErr(err)
|
errList.AddErr(err)
|
||||||
}
|
}
|
||||||
case 1:
|
case 1:
|
||||||
|
|||||||
@@ -79,7 +79,6 @@ func BatchUpdateEntityByKV(db *DaoDB, items []*KVUpdateItem) (num int64, err err
|
|||||||
if r := recover(); r != nil {
|
if r := recover(); r != nil {
|
||||||
if item != nil {
|
if item != nil {
|
||||||
var bindID int64
|
var bindID int64
|
||||||
globals.SugarLogger.Debugf("========item.item %s", utils.Format4Output(item.Item, false))
|
|
||||||
value := refutil.CheckAndGetStructValue(item.Item).FieldByName(model.FieldID)
|
value := refutil.CheckAndGetStructValue(item.Item).FieldByName(model.FieldID)
|
||||||
if value.IsValid() {
|
if value.IsValid() {
|
||||||
bindID = value.Int()
|
bindID = value.Int()
|
||||||
|
|||||||
@@ -1037,7 +1037,6 @@ func GetOrders(db *DaoDB, ids []int64, isIncludeSku, isIncludeFake bool, fromDat
|
|||||||
if len(vendorIDs) > 0 {
|
if len(vendorIDs) > 0 {
|
||||||
sqlWhere += " AND t1.vendor_id IN (" + GenQuestionMarks(len(vendorIDs)) + ")"
|
sqlWhere += " AND t1.vendor_id IN (" + GenQuestionMarks(len(vendorIDs)) + ")"
|
||||||
sqlParams = append(sqlParams, vendorIDs)
|
sqlParams = append(sqlParams, vendorIDs)
|
||||||
//globals.SugarLogger.Debugf("sqlParams vendorIDs================%d", vendorIDs)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if userID != "" {
|
if userID != "" {
|
||||||
|
|||||||
@@ -45,8 +45,21 @@ func CreateThingMap(thingId int64, vendorThingID, appOrgCode, err string, thingT
|
|||||||
return CreateEntity(GetDB(), thingMap)
|
return CreateEntity(GetDB(), thingMap)
|
||||||
}
|
}
|
||||||
|
|
||||||
func UpdateThingMap(thingMap *model.ThingMap) error {
|
func UpdateThingMap(db *DaoDB, syncStatus int8, vendorThingId string, thingId int, vendorId int, vendorOrgCode string) error {
|
||||||
_, err := UpdateEntity(GetDB(), thingMap, "ID")
|
sql := `
|
||||||
|
UPDATE thing_map t1
|
||||||
|
SET t1.sync_status = ?,t1.vendor_thing_id = ?
|
||||||
|
WHERE t1.deleted_at = ? AND t1.thing_id = ? AND t1.vendor_id = ? AND t1.vendor_org_code = ?
|
||||||
|
`
|
||||||
|
sqlParams := []interface{}{
|
||||||
|
syncStatus,
|
||||||
|
vendorThingId,
|
||||||
|
utils.DefaultTimeValue,
|
||||||
|
thingId,
|
||||||
|
vendorId,
|
||||||
|
vendorOrgCode,
|
||||||
|
}
|
||||||
|
_, err := ExecuteSQL(db, sql, sqlParams...)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,12 @@ const (
|
|||||||
ThingTypeOrder = 6 // 同步订单
|
ThingTypeOrder = 6 // 同步订单
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
ThingTypeSyncSuccess = 0 // 主商品创建成功
|
||||||
|
ThingTypeSyncFail = 2 // 主商品创建失败
|
||||||
|
ThingTypeSyncing = 3 // 主商品创建中
|
||||||
|
)
|
||||||
|
|
||||||
type ThingMap struct {
|
type ThingMap struct {
|
||||||
ModelIDCULD
|
ModelIDCULD
|
||||||
|
|
||||||
|
|||||||
@@ -62,8 +62,12 @@ func (c *DeliveryHandler) GetStore(ctx *jxcontext.Context, storeID int, vendorSt
|
|||||||
VendorStoreID: utils.Int64ToStr(storeInfo.StoreDetail.Store.StoreId),
|
VendorStoreID: utils.Int64ToStr(storeInfo.StoreDetail.Store.StoreId),
|
||||||
CourierStatus: int(storeInfo.StoreDetail.Store.State),
|
CourierStatus: int(storeInfo.StoreDetail.Store.State),
|
||||||
}
|
}
|
||||||
|
<<<<<<< HEAD
|
||||||
|
=======
|
||||||
|
} else {
|
||||||
|
globals.SugarLogger.Debugf("GetStoreDetail err %s", err)
|
||||||
|
>>>>>>> 68b5033815cd812e1d9516b5f64acfab2665ee94
|
||||||
}
|
}
|
||||||
globals.SugarLogger.Debugf("DYPS GetStore storeDetail====%s", utils.Format4Output(storeDetail, false))
|
|
||||||
return storeDetail, err
|
return storeDetail, err
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -114,7 +118,6 @@ func (c *DeliveryHandler) CancelWaybill(bill *model.Waybill, cancelReasonID int,
|
|||||||
bill.Remark = cancelReason
|
bill.Remark = cancelReason
|
||||||
partner.CurOrderManager.OnWaybillStatusChanged(bill)
|
partner.CurOrderManager.OnWaybillStatusChanged(bill)
|
||||||
}
|
}
|
||||||
globals.SugarLogger.Debugf("DYPS CancelWaybill bill.Status=%d err=%v", bill.Status, err)
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -127,7 +130,6 @@ func (c *DeliveryHandler) GetWaybillFee(order *model.GoodsOrder) (deliveryFeeInf
|
|||||||
deliveryFeeInfo = &partner.WaybillFeeInfo{}
|
deliveryFeeInfo = &partner.WaybillFeeInfo{}
|
||||||
deliveryFeeInfo.DeliveryFee = dispatcherFee
|
deliveryFeeInfo.DeliveryFee = dispatcherFee
|
||||||
}
|
}
|
||||||
globals.SugarLogger.Debugf("DYPS GetWaybillFee deliveryFeeInfo======%s", utils.Format4Output(deliveryFeeInfo, false))
|
|
||||||
return deliveryFeeInfo, err
|
return deliveryFeeInfo, err
|
||||||
}
|
}
|
||||||
func getDispatcherFee(storeID int64, vendorOrderID string, dispatcherType int32) int64 {
|
func getDispatcherFee(storeID int64, vendorOrderID string, dispatcherType int32) int64 {
|
||||||
|
|||||||
@@ -218,7 +218,6 @@ func (p *PurchaseHandler) CreateSku2(ctx *jxcontext.Context, sku *dao.StoreSkuSy
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (p *PurchaseHandler) UpdateSku2(ctx *jxcontext.Context, sku *dao.StoreSkuSyncInfo) (err error) {
|
func (p *PurchaseHandler) UpdateSku2(ctx *jxcontext.Context, sku *dao.StoreSkuSyncInfo) (err error) {
|
||||||
globals.SugarLogger.Debugf("是不是正儿八经的京东商城%s", "UpdateSku2")
|
|
||||||
param := skuInfo2Param(ctx, sku)
|
param := skuInfo2Param(ctx, sku)
|
||||||
if globals.EnableJdStoreWrite {
|
if globals.EnableJdStoreWrite {
|
||||||
_, err = getAPI(sku.VendorOrgCode).UpdateSku2(param)
|
_, err = getAPI(sku.VendorOrgCode).UpdateSku2(param)
|
||||||
|
|||||||
@@ -343,7 +343,6 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
globals.SugarLogger.Debugf("foodDataList=======mtwm %s", utils.Format4Output(foodDataList, false))
|
|
||||||
if globals.EnableMtwmStoreWrite {
|
if globals.EnableMtwmStoreWrite {
|
||||||
if len(foodDataList) == 1 {
|
if len(foodDataList) == 1 {
|
||||||
foodDataList[0]["skus"] = string(utils.MustMarshal(foodDataList[0]["skus"]))
|
foodDataList[0]["skus"] = string(utils.MustMarshal(foodDataList[0]["skus"]))
|
||||||
|
|||||||
@@ -40,7 +40,6 @@ func OnOrderMsg(msgId string, msg interface{}) (response *tiktokShop.CallbackRes
|
|||||||
//}
|
//}
|
||||||
jxutils.CallMsgHandler(func() {
|
jxutils.CallMsgHandler(func() {
|
||||||
response = CurPurchaseHandler.onOrderMsg(msgId, orderId, msg)
|
response = CurPurchaseHandler.onOrderMsg(msgId, orderId, msg)
|
||||||
globals.SugarLogger.Debugf("OnOrderMsg response====%s", utils.Format4Output(response, false))
|
|
||||||
}, jxutils.ComposeUniversalOrderID(orderId, model.VendorIDDD))
|
}, jxutils.ComposeUniversalOrderID(orderId, model.VendorIDDD))
|
||||||
}
|
}
|
||||||
return response
|
return response
|
||||||
|
|||||||
@@ -130,17 +130,15 @@ func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, vendorOr
|
|||||||
if status == model.SkuStatusNormal { // 下架
|
if status == model.SkuStatusNormal { // 下架
|
||||||
for _, v := range storeSkuList {
|
for _, v := range storeSkuList {
|
||||||
// 子品商品id获取skuId
|
// 子品商品id获取skuId
|
||||||
childrenSkuId, failedList := getProductSkuId4UpdateStock(api, v, storeID)
|
//childrenSkuId, failedList := getProductSkuId4UpdateStock(api, v, storeID)
|
||||||
if len(failedList) > 0 {
|
//if len(failedList) > 0 {
|
||||||
continue
|
// continue
|
||||||
}
|
//}
|
||||||
param := &sku_syncStock_request.SkuSyncStockParam{
|
param := &sku_syncStock_request.SkuSyncStockParam{
|
||||||
SkuId: childrenSkuId,
|
ProductId: utils.Str2Int64(v.VendorSkuID),
|
||||||
ProductId: utils.Str2Int64(v.VendorSkuID),
|
Incremental: false,
|
||||||
Incremental: false,
|
StockNum: 99999,
|
||||||
IdempotentId: "",
|
OutSkuId: int64(v.SkuID),
|
||||||
StockNum: 99999,
|
|
||||||
OutWarehouseId: vendorStoreID,
|
|
||||||
}
|
}
|
||||||
if err := api.UpdateSkuStock(param); err != nil {
|
if err := api.UpdateSkuStock(param); err != nil {
|
||||||
failedList = append(failedList, putils.GetErrMsg2FailedSingleList(v, err, storeID, model.VendorChineseNames[model.VendorIDDD], fmt.Sprintf("上架商品,库存值最大化.%s", utils.Format4Output(param, false)))...)
|
failedList = append(failedList, putils.GetErrMsg2FailedSingleList(v, err, storeID, model.VendorChineseNames[model.VendorIDDD], fmt.Sprintf("上架商品,库存值最大化.%s", utils.Format4Output(param, false)))...)
|
||||||
@@ -149,18 +147,16 @@ func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, vendorOr
|
|||||||
} else { // 上架
|
} else { // 上架
|
||||||
for _, v := range storeSkuList {
|
for _, v := range storeSkuList {
|
||||||
// 子品商品id获取skuId
|
// 子品商品id获取skuId
|
||||||
childrenSkuId, failedList := getProductSkuId4UpdateStock(api, v, storeID)
|
//childrenSkuId, failedList := getProductSkuId4UpdateStock(api, v, storeID)
|
||||||
if len(failedList) > 0 {
|
//if len(failedList) > 0 {
|
||||||
continue
|
// continue
|
||||||
}
|
//}
|
||||||
|
|
||||||
param := &sku_syncStock_request.SkuSyncStockParam{
|
param := &sku_syncStock_request.SkuSyncStockParam{
|
||||||
SkuId: childrenSkuId,
|
ProductId: utils.Str2Int64(v.VendorSkuID),
|
||||||
ProductId: utils.Str2Int64(v.VendorSkuID),
|
Incremental: false,
|
||||||
Incremental: false,
|
StockNum: 0,
|
||||||
IdempotentId: "",
|
OutSkuId: int64(v.SkuID),
|
||||||
StockNum: 0,
|
|
||||||
OutWarehouseId: vendorStoreID,
|
|
||||||
}
|
}
|
||||||
if err := api.UpdateSkuStock(param); err != nil {
|
if err := api.UpdateSkuStock(param); err != nil {
|
||||||
failedList = append(failedList, putils.GetErrMsg2FailedSingleList(v, err, storeID, model.VendorChineseNames[model.VendorIDDD], fmt.Sprintf("下架商品,库存值为0失败.%s", utils.Format4Output(param, false)))...)
|
failedList = append(failedList, putils.GetErrMsg2FailedSingleList(v, err, storeID, model.VendorChineseNames[model.VendorIDDD], fmt.Sprintf("下架商品,库存值为0失败.%s", utils.Format4Output(param, false)))...)
|
||||||
@@ -174,14 +170,11 @@ func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, vendorOr
|
|||||||
// UpdateStoreSkusPrice 更新商品价格
|
// UpdateStoreSkusPrice 更新商品价格
|
||||||
func (p *PurchaseHandler) UpdateStoreSkusPrice(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) {
|
func (p *PurchaseHandler) UpdateStoreSkusPrice(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) {
|
||||||
api := getAPI(vendorOrgCode, storeID, vendorStoreID)
|
api := getAPI(vendorOrgCode, storeID, vendorStoreID)
|
||||||
globals.SugarLogger.Debugf("看看走这儿了没,是不是更新 storeSkuList %s", utils.Format4Output(storeSkuList, false))
|
|
||||||
for _, v := range storeSkuList {
|
for _, v := range storeSkuList {
|
||||||
tiktokSkuId, failedList := getProductSkuId4UpdateStock(api, v, storeID)
|
tiktokSkuId, failedList := getProductSkuId4UpdateStock(api, v, storeID)
|
||||||
if len(failedList) > 0 {
|
if len(failedList) > 0 {
|
||||||
globals.SugarLogger.Debugf("看看走这儿了没,是不是更新 参数failedList1 %s", utils.Format4Output(failedList, false))
|
|
||||||
return failedList, err
|
return failedList, err
|
||||||
}
|
}
|
||||||
globals.SugarLogger.Debugf("====SkuId:= %d,ProductId := %d ", tiktokSkuId, utils.Str2Int64(v.VendorMainId))
|
|
||||||
price := &sku_editPrice_request.SkuEditPriceParam{
|
price := &sku_editPrice_request.SkuEditPriceParam{
|
||||||
Price: v.VendorPrice,
|
Price: v.VendorPrice,
|
||||||
SkuId: tiktokSkuId,
|
SkuId: tiktokSkuId,
|
||||||
@@ -191,9 +184,6 @@ func (p *PurchaseHandler) UpdateStoreSkusPrice(ctx *jxcontext.Context, vendorOrg
|
|||||||
if err = api.EditPrice(price); err != nil {
|
if err = api.EditPrice(price); err != nil {
|
||||||
failedList = append(failedList, putils.GetErrMsg2FailedSingleList(v, err, storeID, model.VendorChineseNames[model.VendorIDDD], "更新价格异常")...)
|
failedList = append(failedList, putils.GetErrMsg2FailedSingleList(v, err, storeID, model.VendorChineseNames[model.VendorIDDD], "更新价格异常")...)
|
||||||
}
|
}
|
||||||
globals.SugarLogger.Debugf("看看走这儿了没,是不是更新 参数 %s", utils.Format4Output(price, false))
|
|
||||||
globals.SugarLogger.Debugf("看看走这儿了没,是不是更新 返回值 %s", utils.Format4Output(failedList, false))
|
|
||||||
globals.SugarLogger.Debugf("看看走这儿了没,是不是更新 结构体 %s", utils.Format4Output(v, false))
|
|
||||||
}
|
}
|
||||||
return failedList, err
|
return failedList, err
|
||||||
}
|
}
|
||||||
@@ -203,18 +193,16 @@ func (p *PurchaseHandler) UpdateStoreSkusStock(ctx *jxcontext.Context, vendorOrg
|
|||||||
tiktokApi := getAPI(storeSkuList[0].VendorOrgCode, storeID, vendorStoreID)
|
tiktokApi := getAPI(storeSkuList[0].VendorOrgCode, storeID, vendorStoreID)
|
||||||
for _, v := range storeSkuList {
|
for _, v := range storeSkuList {
|
||||||
// 子品商品id获取skuId
|
// 子品商品id获取skuId
|
||||||
childrenSkuId, failedList := getProductSkuId4UpdateStock(tiktokApi, v, storeID)
|
//childrenSkuId, failedList := getProductSkuId4UpdateStock(tiktokApi, v, storeID)
|
||||||
if len(failedList) > 0 {
|
//if len(failedList) > 0 {
|
||||||
continue
|
// continue
|
||||||
}
|
//}
|
||||||
|
|
||||||
stockNum := &sku_syncStock_request.SkuSyncStockParam{
|
stockNum := &sku_syncStock_request.SkuSyncStockParam{
|
||||||
SkuId: childrenSkuId,
|
ProductId: utils.Str2Int64(v.VendorSkuID),
|
||||||
ProductId: utils.Str2Int64(v.VendorSkuID),
|
Incremental: false,
|
||||||
Incremental: false,
|
StockNum: int64(v.Stock),
|
||||||
IdempotentId: "",
|
OutSkuId: int64(v.SkuID),
|
||||||
StockNum: int64(v.Stock),
|
|
||||||
OutWarehouseId: vendorStoreID,
|
|
||||||
}
|
}
|
||||||
if stockNum.StockNum == 0 {
|
if stockNum.StockNum == 0 {
|
||||||
stockNum.StockNum = 99999
|
stockNum.StockNum = 99999
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ import (
|
|||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
"unicode"
|
"unicode"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -136,80 +137,6 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI
|
|||||||
if storeSku.StoreSkuStatus != 1 { // 未可售的商品不参与修改
|
if storeSku.StoreSkuStatus != 1 { // 未可售的商品不参与修改
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
param := &product_addV2_request.ProductAddV2Param{
|
|
||||||
Name: utils.LimitUTF8StringLen(storeSku.SkuName, 90),
|
|
||||||
PayType: tiktokShop.TiktokPayType1,
|
|
||||||
ReduceType: tiktokShop.SkuReduceTypePayMakeOrder,
|
|
||||||
Weight: utils.Int2Float64(storeSku.Weight),
|
|
||||||
DeliveryDelayDay: tiktokShop.DeliveryDelayDayToDay,
|
|
||||||
PresellType: tiktokShop.SendGoodsTypeNow,
|
|
||||||
Supply7dayReturn: 0, // 是否支持7天无理由,0不支持,1支持,2支持(拆封后不支持)
|
|
||||||
Mobile: storeDetail.Tel1,
|
|
||||||
Commit: true,
|
|
||||||
Specs: "重量|" + utils.Float64ToStr(float64(storeSku.SpecQuality)) + storeSku.SpecUnit,
|
|
||||||
NeedRechargeMode: false,
|
|
||||||
SellChannel: []int64{0},
|
|
||||||
StartSaleType: 0,
|
|
||||||
PickupMethod: "0",
|
|
||||||
OuterProductId: utils.Int2Str(storeSku.SkuID), // 本地skuId为外部商品id
|
|
||||||
}
|
|
||||||
param.Name = checkNameLenght(param.Name)
|
|
||||||
|
|
||||||
// 获取上传图,商品轮播图
|
|
||||||
img, detailImg, err := GetTiktokImgList(api, utils.Int2Str(storeSku.StoreID), storeDetail.VendorOrgCode, storeSku.DescImg, storeSku.ImgOrigin, storeSku.Img2, storeSku.Img3, storeSku.Img4, storeSku.Img5)
|
|
||||||
if err != nil {
|
|
||||||
failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
param.Pic = img
|
|
||||||
param.Description = detailImg
|
|
||||||
|
|
||||||
// 部分商品没有所属的分类,直接跳过!
|
|
||||||
if storeSku.SkuVendorMapCatID != "" {
|
|
||||||
param.CategoryLeafId = utils.Str2Int64(storeSku.SkuVendorMapCatID)
|
|
||||||
} else if len(param.Pic) != 0 { // 自动推导分类id
|
|
||||||
param.CategoryLeafId, err = api.GetRecommendCategory(strings.Split(img, "|"))
|
|
||||||
if param.CategoryLeafId == 0 || err != nil {
|
|
||||||
failedList = putils.GetErrMsg2FailedSingleList(storeSku, errors.New("当前商品本地未设置抖音分类/抖音推荐分类查询错误:"+err.Error()), storeID, model.VendorChineseNames[model.VendorIDDD], syncType)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 这个情况是原有商品不存在和推荐查询不到类目id是,使用京西类目和抖音类目的绑定关系
|
|
||||||
// 但是不太实用,导致商品类目错误被暂停营业等
|
|
||||||
//if storeSku.VendorVendorCatID != 0 && param.CategoryLeafId == 0 {
|
|
||||||
// param.CategoryLeafId = storeSku.VendorVendorCatID
|
|
||||||
//}
|
|
||||||
|
|
||||||
// 是否支持七天无理由
|
|
||||||
if api.GetProductUpdateRule(param.CategoryLeafId) {
|
|
||||||
param.Supply7dayReturn = 1
|
|
||||||
} else {
|
|
||||||
param.Supply7dayReturn = 0
|
|
||||||
}
|
|
||||||
|
|
||||||
// weight_unit 目前抖音只支持g和kg两种
|
|
||||||
param.WeightUnit = tiktokShop.WeightUint_G
|
|
||||||
|
|
||||||
// spec_prices
|
|
||||||
param.SpecPrices = GetSpecPrices(param.Specs, vendorStoreID, 0, storeSku)
|
|
||||||
// 获取商品的属性
|
|
||||||
if storeSku.TiktokAttribute != "" && storeSku.TiktokAttribute != "{}" {
|
|
||||||
param.ProductFormatNew = storeSku.TiktokAttribute
|
|
||||||
} else if storeSku.VendorSkuAttrId != "" && storeSku.VendorSkuAttrId != "{}" {
|
|
||||||
param.ProductFormatNew = storeSku.TiktokAttribute
|
|
||||||
} else {
|
|
||||||
param.ProductFormatNew, err = MakeProductFormatNew(api, int64(storeSku.NameID), param.CategoryLeafId)
|
|
||||||
if err != nil {
|
|
||||||
failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
}
|
|
||||||
param.StandardBrandId = 789194134 // 默认品牌京西菜市 596120136
|
|
||||||
param.FreightId, param.SaleLimitId, err = getFreightIdAndSaleLimitId(api, db, storeDetail, vendorStoreID)
|
|
||||||
if err != nil {
|
|
||||||
failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
// 根据本地商品id获取线上商品是否存在,存在则只创建子商品
|
// 根据本地商品id获取线上商品是否存在,存在则只创建子商品
|
||||||
// 获取本地存储映射关系,获取本地主商品id是否存在
|
// 获取本地存储映射关系,获取本地主商品id是否存在
|
||||||
@@ -218,115 +145,133 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI
|
|||||||
localThing, _ := dao.GetThingToTiktokMapList(db, model.VendorIDDD, int64(storeSku.SkuID), storeDetail.VendorOrgCode)
|
localThing, _ := dao.GetThingToTiktokMapList(db, model.VendorIDDD, int64(storeSku.SkuID), storeDetail.VendorOrgCode)
|
||||||
if len(localThing) != 0 {
|
if len(localThing) != 0 {
|
||||||
mainProductId = utils.Str2Int64(localThing[0].VendorThingID)
|
mainProductId = utils.Str2Int64(localThing[0].VendorThingID)
|
||||||
} else {
|
|
||||||
mainOrderDetail = loadMainProductId(api, storeSku)
|
|
||||||
mainProductId = mainOrderDetail.MainProductId
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(localThing) == 0 {
|
if len(localThing) == 0 {
|
||||||
if mainProductId == 0 {
|
if err := dao.CreateThingMap(int64(storeSku.SkuID), utils.Int64ToStr(time.Now().Unix()), storeDetail.VendorOrgCode, "本地不存在,线上也不存在", model.ThingTypeSku, model.ThingTypeSyncing); err != nil {
|
||||||
tiktokResult, err := api.CreateStoreCommodity(param) // 创建主商品,同步主商品
|
failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType)
|
||||||
if err != nil {
|
continue
|
||||||
failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType)
|
}
|
||||||
continue
|
param, failedList2 := makeMainProductSku(db, api, storeSku, storeDetail, storeID, vendorStoreID, syncType)
|
||||||
}
|
if len(failedList2) != 0 {
|
||||||
dao.CreateThingMap(int64(storeSku.SkuID), utils.Int64ToStr(tiktokResult.ProductId), storeDetail.VendorOrgCode, "本地不存在,线上也不存在", model.ThingTypeSku, 0)
|
failedList = append(failedList, failedList2...)
|
||||||
var attrId []string
|
continue
|
||||||
for _, v := range tiktokResult.Sku {
|
}
|
||||||
attrId = append(attrId, utils.Int64ToStr(v.SkuId))
|
tiktokResult, err := api.CreateStoreCommodity(param) // 创建主商品,同步主商品
|
||||||
}
|
if err != nil {
|
||||||
|
dao.UpdateThingMap(db, model.ThingTypeSyncFail, utils.Int64ToStr(time.Now().Unix()), storeSku.SkuID, model.VendorIDDD, storeDetail.VendorOrgCode)
|
||||||
mainProductId = tiktokResult.ProductId
|
|
||||||
storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID)
|
|
||||||
storeSku.SkuSyncStatus = model.SyncFlagNewMask // 只创建主品,子品都没做
|
|
||||||
storeSku.VendorMainId = utils.Int64ToStr(tiktokResult.ProductId)
|
|
||||||
storeSku.VendorSkuAttrId = strings.Join(attrId, ",") // 属性id skuID
|
|
||||||
storeSku.VendorSonSkuID = utils.Int2Str(storeSku.SkuID) // 还没同步子商品
|
|
||||||
failedList = putils.GetErrMsg2FailedSingleList(storeSku, errors.New("只创建了主商品,没创建子商品"), storeID, model.VendorChineseNames[model.VendorIDDD], syncType)
|
|
||||||
} else {
|
|
||||||
// 本地不存在,线上存在.直接创建子商品保存本地同步记录
|
|
||||||
var childrenProductId int64 = 0
|
|
||||||
dao.CreateThingMap(int64(storeSku.SkuID), utils.Int64ToStr(mainProductId), storeDetail.VendorOrgCode, "线上存在本地不存在", model.ThingTypeSku, 0)
|
|
||||||
|
|
||||||
childrenProductId, err = api.CreateSubProduct(mainProductId, utils.Str2Int64(vendorStoreID))
|
|
||||||
if err != nil {
|
|
||||||
failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
storeSku.VendorMainId = utils.Int64ToStr(mainProductId)
|
|
||||||
var attrId []string
|
|
||||||
for _, v := range mainOrderDetail.SpecPrices {
|
|
||||||
attrId = append(attrId, utils.Int64ToStr(v.SkuId))
|
|
||||||
}
|
|
||||||
storeSku.VendorSkuAttrId = strings.Join(attrId, ",") // 属性id skuID
|
|
||||||
if childrenProductId > 0 {
|
|
||||||
storeSku.VendorSonSkuID = utils.Int64ToStr(childrenProductId) // (属性id skuID方案一)(自商品的商品id方案二)
|
|
||||||
storeSku.SkuSyncStatus = 0
|
|
||||||
storeSku.VendorSkuID = utils.Int64ToStr(childrenProductId) // 子商品主id
|
|
||||||
failedList = upDateChildrenPriceStockLaunch(api, storeSku, childrenProductId, vendorStoreID, syncType)
|
|
||||||
} else {
|
|
||||||
storeSku.VendorSonSkuID = utils.Int2Str(storeSku.SkuID) // (属性id skuID方案一)(自商品的商品id方案二)
|
|
||||||
storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID) // 子商品主id
|
|
||||||
storeSku.SkuSyncStatus = model.SyncFlagNewMask
|
|
||||||
failedList = putils.GetErrMsg2FailedSingleList(storeSku, errors.New("主商品创建了,子商品为创建"), storeID, model.VendorChineseNames[model.VendorIDDD], syncType)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// 线上本地都存在,但是线上审核不成功,就去更新主商品
|
|
||||||
//if mainOrderDetail.CheckStatus == tiktokShop.SkuCheckStatusProhibit || mainOrderDetail.CheckStatus == tiktokShop.SkuCheckStatusNotPass {
|
|
||||||
// // 更新主商品,在同步到子门店,考虑审核时间
|
|
||||||
// updateParam := &product_editV2_request.ProductEditV2Param{
|
|
||||||
// PayType: tiktokShop.TiktokPayType1,
|
|
||||||
// ReduceType: tiktokShop.SkuReduceTypePayMakeOrder,
|
|
||||||
// Weight: utils.Int2Float64(storeSku.Weight),
|
|
||||||
// DeliveryDelayDay: tiktokShop.DeliveryDelayDayToDay,
|
|
||||||
// PresellType: tiktokShop.SendGoodsTypeNow,
|
|
||||||
// Supply7dayReturn: 0,
|
|
||||||
// Mobile: storeDetail.Tel1,
|
|
||||||
// Commit: true,
|
|
||||||
// Specs: "重量|" + utils.Float64ToStr(float64(storeSku.SpecQuality)) + storeSku.SpecUnit,
|
|
||||||
// NeedRechargeMode: false,
|
|
||||||
// SellChannel: []int64{0},
|
|
||||||
// StartSaleType: 0,
|
|
||||||
// PickupMethod: "0",
|
|
||||||
// CategoryLeafId: param.CategoryLeafId,
|
|
||||||
// Name: param.Name,
|
|
||||||
// ProductFormatNew: param.ProductFormatNew,
|
|
||||||
// }
|
|
||||||
// updateParam.Pic = img
|
|
||||||
// updateParam.Description = detailImg
|
|
||||||
// updateParam.WeightUnit = tiktokShop.WeightUint_G
|
|
||||||
// updateParam.StandardBrandId = param.StandardBrandId // 默认品牌京西菜市
|
|
||||||
// updateParam.ProductId = mainOrderDetail.ProductId
|
|
||||||
// updateParam.MainProductId = mainProductId
|
|
||||||
// updateParam.SpecPrices = param.SpecPrices
|
|
||||||
// //updateParam.StoreId = utils.Str2Int64(vendorStoreID)
|
|
||||||
// if err := api.EditStoreCommodity(updateParam); err != nil {
|
|
||||||
// failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType)
|
|
||||||
// storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID)
|
|
||||||
// } else {
|
|
||||||
// localThing[0].UpdatedAt = time.Now()
|
|
||||||
// localThing[0].SyncStatus = 0
|
|
||||||
// localThing[0].ThingType = model.ThingTypeSku
|
|
||||||
// dao.UpdateThingMap(localThing[0])
|
|
||||||
// }
|
|
||||||
// continue
|
|
||||||
//}
|
|
||||||
|
|
||||||
// 主商品存在,直接同步子商品
|
|
||||||
childrenProductId, err := api.CreateSubProduct(utils.Str2Int64(localThing[0].VendorThingID), utils.Str2Int64(vendorStoreID))
|
|
||||||
if err != nil || childrenProductId == 0 {
|
|
||||||
failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType)
|
failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType)
|
||||||
storeSku.SkuSyncStatus = model.SyncFlagStoreSkuModifiedMask
|
|
||||||
storeSku.VendorSonSkuID = utils.Int64ToStr(childrenProductId) // (属性id skuID方案一)(自商品的商品id方案二)
|
|
||||||
storeSku.VendorSkuID = utils.Int64ToStr(childrenProductId) // 子商品主id
|
|
||||||
storeSku.VendorMainId = localThing[0].VendorThingID // 商品主id
|
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if err := dao.UpdateThingMap(db, model.ThingTypeSyncSuccess, utils.Int64ToStr(tiktokResult.ProductId), storeSku.SkuID, model.VendorIDDD, storeDetail.VendorOrgCode); err != nil {
|
||||||
|
failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
var attrId []string
|
||||||
|
for _, v := range tiktokResult.Sku {
|
||||||
|
attrId = append(attrId, utils.Int64ToStr(v.SkuId))
|
||||||
|
}
|
||||||
|
|
||||||
|
mainProductId = tiktokResult.ProductId
|
||||||
|
storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID)
|
||||||
|
storeSku.SkuSyncStatus = model.SyncFlagNewMask // 只创建主品,子品都没做
|
||||||
|
storeSku.VendorMainId = utils.Int64ToStr(tiktokResult.ProductId)
|
||||||
|
storeSku.VendorSkuAttrId = strings.Join(attrId, ",") // 属性id skuID
|
||||||
|
storeSku.VendorSonSkuID = utils.Int2Str(storeSku.SkuID) // 还没同步子商品
|
||||||
|
failedList = putils.GetErrMsg2FailedSingleList(storeSku, errors.New("只创建了主商品,没创建子商品"), storeID, model.VendorChineseNames[model.VendorIDDD], syncType)
|
||||||
|
} else if localThing[0].SyncStatus == model.ThingTypeSyncFail { // 同步失败在重新创建
|
||||||
|
param, failedList2 := makeMainProductSku(db, api, storeSku, storeDetail, storeID, vendorStoreID, syncType)
|
||||||
|
if len(failedList2) != 0 {
|
||||||
|
failedList = append(failedList, failedList2...)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
tiktokResult, err := api.CreateStoreCommodity(param) // 创建主商品,同步主商品
|
||||||
|
if err != nil {
|
||||||
|
dao.UpdateThingMap(db, model.ThingTypeSyncFail, utils.Int64ToStr(time.Now().Unix()), storeSku.SkuID, model.VendorIDDD, storeDetail.VendorOrgCode)
|
||||||
|
failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := dao.UpdateThingMap(db, model.ThingTypeSyncSuccess, utils.Int64ToStr(tiktokResult.ProductId), storeSku.SkuID, model.VendorIDDD, storeDetail.VendorOrgCode); err != nil {
|
||||||
|
failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
var attrId []string
|
||||||
|
for _, v := range tiktokResult.Sku {
|
||||||
|
attrId = append(attrId, utils.Int64ToStr(v.SkuId))
|
||||||
|
}
|
||||||
|
mainProductId = tiktokResult.ProductId
|
||||||
|
storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID)
|
||||||
|
storeSku.SkuSyncStatus = model.SyncFlagNewMask // 只创建主品,子品都没做
|
||||||
|
storeSku.VendorMainId = utils.Int64ToStr(tiktokResult.ProductId)
|
||||||
|
storeSku.VendorSkuAttrId = strings.Join(attrId, ",") // 属性id skuID
|
||||||
|
storeSku.VendorSonSkuID = utils.Int2Str(storeSku.SkuID) // 还没同步子商品
|
||||||
|
failedList = putils.GetErrMsg2FailedSingleList(storeSku, errors.New("只创建了主商品,没创建子商品"), storeID, model.VendorChineseNames[model.VendorIDDD], syncType)
|
||||||
|
} else if localThing[0].SyncStatus == model.ThingTypeSyncing {
|
||||||
|
continue
|
||||||
|
} else if localThing[0].SyncStatus == model.ThingTypeSyncSuccess {
|
||||||
|
// 主商品存在,直接同步子商品
|
||||||
|
childrenProductId, err := api.CreateSubProduct(utils.Str2Int64(localThing[0].VendorThingID), utils.Str2Int64(vendorStoreID))
|
||||||
|
if err != nil && strings.Contains(err.Error(), "2010004") { // 2010004:主商品非在线审核通过状态,不允许绑定子商品
|
||||||
|
// 线上本地都存在,但是线上审核不成功,就去更新主商品
|
||||||
|
mainOrderDetail = loadMainProductId(api, storeSku, localThing[0].VendorThingID)
|
||||||
|
if mainOrderDetail.CheckStatus == tiktokShop.SkuCheckStatusProhibit || mainOrderDetail.CheckStatus == tiktokShop.SkuCheckStatusNotPass {
|
||||||
|
// 更新主商品,在同步到子门店,考虑审核时间
|
||||||
|
param, failedList2 := makeMainProductSku(db, api, storeSku, storeDetail, storeID, vendorStoreID, syncType)
|
||||||
|
if len(failedList2) != 0 {
|
||||||
|
failedList = append(failedList, failedList2...)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
updateParam := &product_editV2_request.ProductEditV2Param{
|
||||||
|
PayType: tiktokShop.TiktokPayType1,
|
||||||
|
ReduceType: tiktokShop.SkuReduceTypePayMakeOrder,
|
||||||
|
Weight: utils.Int2Float64(storeSku.Weight),
|
||||||
|
DeliveryDelayDay: tiktokShop.DeliveryDelayDayToDay,
|
||||||
|
PresellType: tiktokShop.SendGoodsTypeNow,
|
||||||
|
Supply7dayReturn: 0,
|
||||||
|
Mobile: storeDetail.Tel1,
|
||||||
|
Commit: true,
|
||||||
|
Specs: "重量|" + utils.Float64ToStr(float64(storeSku.SpecQuality)) + storeSku.SpecUnit,
|
||||||
|
NeedRechargeMode: false,
|
||||||
|
SellChannel: []int64{0},
|
||||||
|
StartSaleType: 0,
|
||||||
|
PickupMethod: "0",
|
||||||
|
CategoryLeafId: param.CategoryLeafId,
|
||||||
|
Name: param.Name,
|
||||||
|
ProductFormatNew: param.ProductFormatNew,
|
||||||
|
}
|
||||||
|
updateParam.Pic = param.Pic
|
||||||
|
updateParam.Description = param.Description
|
||||||
|
updateParam.WeightUnit = tiktokShop.WeightUint_G
|
||||||
|
updateParam.StandardBrandId = param.StandardBrandId // 默认品牌京西菜市
|
||||||
|
updateParam.ProductId = mainOrderDetail.ProductId
|
||||||
|
updateParam.MainProductId = mainProductId
|
||||||
|
updateParam.SpecPrices = param.SpecPrices
|
||||||
|
if err := api.EditStoreCommodity(updateParam); err != nil {
|
||||||
|
failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType)
|
||||||
|
storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID)
|
||||||
|
}
|
||||||
|
failedList = putils.GetErrMsg2FailedSingleList(storeSku, errors.New("修改主品,主品审核中/失败,子商品未创建"), storeID, model.VendorChineseNames[model.VendorIDDD], syncType)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (err != nil || childrenProductId == 0) && !strings.Contains(err.Error(), "2010001") { // 2010001:重复创建渠道商品,就去更新
|
||||||
|
continue
|
||||||
|
//param := &superm_product_batchRedistributeStoreProduct_request.TaskParams{
|
||||||
|
// MainProductId: utils.Str2Int64(localThing[0].VendorThingID),
|
||||||
|
// AddStoreIds: []int64{utils.Str2Int64(vendorStoreID)},
|
||||||
|
// DelStoreIds: []int64{utils.Str2Int64(vendorStoreID)},
|
||||||
|
//}
|
||||||
|
//if _, err := api.BatchRedistributeStoreProduct(param); err != nil {
|
||||||
|
// failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType)
|
||||||
|
// continue
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
|
||||||
// 同步价格,库存,上架
|
// 同步价格,库存,上架
|
||||||
failedList = upDateChildrenPriceStockLaunch(api, storeSku, childrenProductId, vendorStoreID, syncType)
|
upDateChildrenPriceStockLaunch(api, storeSku, childrenProductId, vendorStoreID, syncType)
|
||||||
storeSku.VendorSonSkuID = utils.Int64ToStr(childrenProductId) // (属性id skuID方案一)(自商品的商品id方案二)
|
storeSku.VendorSonSkuID = utils.Int64ToStr(childrenProductId) // (属性id skuID方案一)(自商品的商品id方案二)
|
||||||
storeSku.VendorSkuID = utils.Int64ToStr(childrenProductId) // 子商品主id
|
storeSku.VendorSkuID = utils.Int64ToStr(childrenProductId) // 子商品主id
|
||||||
storeSku.VendorMainId = localThing[0].VendorThingID // 商品主id
|
storeSku.VendorMainId = localThing[0].VendorThingID // 商品主id
|
||||||
@@ -356,11 +301,6 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI
|
|||||||
StartSaleType: 0,
|
StartSaleType: 0,
|
||||||
PickupMethod: "0",
|
PickupMethod: "0",
|
||||||
}
|
}
|
||||||
if storeSku.SkuVendorMapCatID != "" {
|
|
||||||
param.CategoryLeafId = utils.Str2Int64(storeSku.SkuVendorMapCatID)
|
|
||||||
} else {
|
|
||||||
param.CategoryLeafId = storeSku.VendorVendorCatID
|
|
||||||
}
|
|
||||||
param.Name = checkNameLenght(param.Name)
|
param.Name = checkNameLenght(param.Name)
|
||||||
|
|
||||||
// 获取上传图,商品轮播图
|
// 获取上传图,商品轮播图
|
||||||
@@ -373,6 +313,43 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI
|
|||||||
param.Description = detailImg
|
param.Description = detailImg
|
||||||
param.WeightUnit = tiktokShop.WeightUint_G
|
param.WeightUnit = tiktokShop.WeightUint_G
|
||||||
|
|
||||||
|
// 部分商品没有所属的分类,直接跳过!
|
||||||
|
if storeSku.SkuVendorMapCatID != "" {
|
||||||
|
param.CategoryLeafId = utils.Str2Int64(storeSku.SkuVendorMapCatID)
|
||||||
|
} else if len(param.Pic) != 0 { // 自动推导分类id
|
||||||
|
param.CategoryLeafId, err = api.GetRecommendCategory(strings.Split(img, "|"))
|
||||||
|
if param.CategoryLeafId == 0 || err != nil {
|
||||||
|
failedList = putils.GetErrMsg2FailedSingleList(storeSku, errors.New("当前商品本地未设置抖音分类/抖音推荐分类查询错误:"+err.Error()), storeID, model.VendorChineseNames[model.VendorIDDD], syncType)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取主商品id
|
||||||
|
var mainIdInt int64
|
||||||
|
if storeSku.VendorMainId == "" {
|
||||||
|
localThing, _ := dao.GetThingToTiktokMapList(db, model.VendorIDDD, int64(storeSku.SkuID), storeDetail.VendorOrgCode)
|
||||||
|
if len(localThing) == 0 || localThing == nil {
|
||||||
|
failedList = putils.GetErrMsg2FailedSingleList(storeSku, errors.New(fmt.Sprintf("更新主品失败,请创建主品skuId[storeId:%d,skuId:%s]", storeID, storeSku.SkuID)), storeID, model.VendorChineseNames[model.VendorIDDD], syncType)
|
||||||
|
continue
|
||||||
|
} else {
|
||||||
|
storeSku.VendorMainId = localThing[0].VendorThingID
|
||||||
|
mainIdInt = utils.Str2Int64(localThing[0].VendorThingID)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
mainIdInt = utils.Str2Int64(storeSku.VendorMainId)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新商品,主品如果名字和类目没变化,则更新子品价格!
|
||||||
|
mainProductDetail, err := api.GetSkuDetail(utils.Int64ToStr(mainIdInt), "")
|
||||||
|
if err != nil || mainProductDetail == nil {
|
||||||
|
failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
//if mainProductDetail.Name == param.Name && (mainProductDetail.CategoryDetail.ThirdCid == param.CategoryLeafId || mainProductDetail.CategoryDetail.FourthCid == param.CategoryLeafId) {
|
||||||
|
// upDateChildrenPriceStockLaunch(api, storeSku, utils.Str2Int64(storeSku.VendorSkuID), vendorStoreID, syncType)
|
||||||
|
// continue
|
||||||
|
//}
|
||||||
|
|
||||||
// 获取商品的属性
|
// 获取商品的属性
|
||||||
if storeSku.TiktokAttribute == "" || storeSku.TiktokAttribute == "{}" {
|
if storeSku.TiktokAttribute == "" || storeSku.TiktokAttribute == "{}" {
|
||||||
param.ProductFormatNew, err = MakeProductFormatNew(api, int64(storeSku.NameID), param.CategoryLeafId)
|
param.ProductFormatNew, err = MakeProductFormatNew(api, int64(storeSku.NameID), param.CategoryLeafId)
|
||||||
@@ -385,73 +362,111 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI
|
|||||||
}
|
}
|
||||||
// 获取品牌
|
// 获取品牌
|
||||||
param.StandardBrandId = 789194134 // 默认品牌京西菜市
|
param.StandardBrandId = 789194134 // 默认品牌京西菜市
|
||||||
var mainIdInt int64
|
|
||||||
if storeSku.VendorMainId == "" {
|
|
||||||
localThing, _ := dao.GetThingToTiktokMapList(db, model.VendorIDDD, int64(storeSku.SkuID), storeDetail.VendorOrgCode)
|
|
||||||
if len(localThing) == 0 || localThing == nil {
|
|
||||||
mainOrderDetail := loadMainProductId(api, storeSku)
|
|
||||||
if mainOrderDetail.MainProductId == 0 {
|
|
||||||
failedList = putils.GetErrMsg2FailedSingleList(storeSku, errors.New("主商品获取失败"), storeID, model.VendorChineseNames[model.VendorIDDD], syncType)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
mainIdInt = mainOrderDetail.MainProductId
|
|
||||||
storeSku.VendorMainId = utils.Int64ToStr(mainIdInt)
|
|
||||||
dao.CreateThingMap(int64(storeSku.SkuID), utils.Int64ToStr(mainIdInt), storeDetail.VendorOrgCode, "更新发现不存在", model.ThingTypeSku, 0)
|
|
||||||
} else {
|
|
||||||
storeSku.VendorMainId = localThing[0].VendorThingID
|
|
||||||
mainIdInt = utils.Str2Int64(localThing[0].VendorThingID)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
mainIdInt = utils.Str2Int64(storeSku.VendorMainId)
|
|
||||||
}
|
|
||||||
|
|
||||||
// 修改商品
|
// 修改商品
|
||||||
param.ProductId = mainIdInt
|
param.ProductId = mainIdInt
|
||||||
param.MainProductId = mainIdInt
|
param.MainProductId = mainIdInt
|
||||||
//param.StoreId = utils.Str2Int64(vendorStoreID)
|
|
||||||
param.SpecPrices = GetSpecPrices(param.Specs, vendorStoreID, param.MainProductId, storeSku)
|
param.SpecPrices = GetSpecPrices(param.Specs, vendorStoreID, param.MainProductId, storeSku)
|
||||||
if err := api.EditStoreCommodity(param); err != nil {
|
if err := api.EditStoreCommodity(param); err != nil {
|
||||||
|
globals.SugarLogger.Debugf("====EditStoreCommodity===== %s", err.Error())
|
||||||
failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType)
|
failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType)
|
||||||
storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID)
|
storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID)
|
||||||
continue
|
|
||||||
}
|
}
|
||||||
// todo 更主品的同间考虑更新子品,子品的更新只能重新分配子品,在更新价格
|
|
||||||
//if storeSku.VendorSkuID != "" && len(storeSku.VendorSkuID) > 19 {
|
storeSku.SkuSyncStatus = 57 // 品库修改 售卖状态待同步 价格待同步
|
||||||
// failedList = upDateChildrenPriceStockLaunch(api, storeSku, utils.Str2Int64(storeSku.VendorSkuID), vendorStoreID, syncType)
|
|
||||||
//}
|
|
||||||
storeSku.StoreSkuStatus = 57 // 品库修改 售卖状态待同步 价格待同步
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
return failedList, err
|
return failedList, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func loadMainProductId(api *tiktokShop.API, storeSku *dao.StoreSkuSyncInfo) *product_detail_response.ProductDetailData {
|
func makeMainProductSku(db *dao.DaoDB, api *tiktokShop.API, storeSku *dao.StoreSkuSyncInfo, storeDetail *dao.StoreDetail, storeID int, vendorStoreID, syncType string) (param *product_addV2_request.ProductAddV2Param, failedList []*partner.StoreSkuInfoWithErr) {
|
||||||
// 这有可能获取的值主商品也有可能是子商品,我们需要的是主商品id和状态
|
param = &product_addV2_request.ProductAddV2Param{
|
||||||
var mainOrderDetail = &product_detail_response.ProductDetailData{}
|
Name: utils.LimitUTF8StringLen(storeSku.SkuName, 90),
|
||||||
mainOrderDetailSkuId, err := api.GetSkuDetailLocalID("", utils.Int2Str(storeSku.SkuID))
|
PayType: tiktokShop.TiktokPayType1,
|
||||||
if err != nil || mainOrderDetailSkuId == nil {
|
ReduceType: tiktokShop.SkuReduceTypePayMakeOrder,
|
||||||
mainOrderDetail.MainProductId = 0
|
Weight: utils.Int2Float64(storeSku.Weight),
|
||||||
return mainOrderDetail
|
DeliveryDelayDay: tiktokShop.DeliveryDelayDayToDay,
|
||||||
|
PresellType: tiktokShop.SendGoodsTypeNow,
|
||||||
|
Supply7dayReturn: 0, // 是否支持7天无理由,0不支持,1支持,2支持(拆封后不支持)
|
||||||
|
Mobile: storeDetail.Tel1,
|
||||||
|
Commit: true,
|
||||||
|
Specs: "重量|" + utils.Float64ToStr(float64(storeSku.SpecQuality)) + storeSku.SpecUnit,
|
||||||
|
NeedRechargeMode: false,
|
||||||
|
SellChannel: []int64{0},
|
||||||
|
StartSaleType: 0,
|
||||||
|
PickupMethod: "0",
|
||||||
|
OuterProductId: utils.Int2Str(storeSku.SkuID), // 本地skuId为外部商品id
|
||||||
}
|
}
|
||||||
if mainOrderDetailSkuId.MainProductId != 0 { // 查询出来是子商品
|
param.Name = checkNameLenght(param.Name)
|
||||||
mainOrderDetail.MainProductId = mainOrderDetailSkuId.MainProductId
|
|
||||||
} else { // 查询出来是主商品
|
// 获取上传图,商品轮播图
|
||||||
mainOrderDetail.MainProductId = mainOrderDetailSkuId.ProductId
|
img, detailImg, err := GetTiktokImgList(api, utils.Int2Str(storeSku.StoreID), storeDetail.VendorOrgCode, storeSku.DescImg, storeSku.ImgOrigin, storeSku.Img2, storeSku.Img3, storeSku.Img4, storeSku.Img5)
|
||||||
return mainOrderDetail
|
if err != nil {
|
||||||
|
failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
param.Pic = img
|
||||||
|
param.Description = detailImg
|
||||||
|
|
||||||
|
// 部分商品没有所属的分类,直接跳过!
|
||||||
|
if storeSku.SkuVendorMapCatID != "" {
|
||||||
|
param.CategoryLeafId = utils.Str2Int64(storeSku.SkuVendorMapCatID)
|
||||||
|
} else if len(param.Pic) != 0 { // 自动推导分类id
|
||||||
|
param.CategoryLeafId, err = api.GetRecommendCategory(strings.Split(img, "|"))
|
||||||
|
if param.CategoryLeafId == 0 || err != nil {
|
||||||
|
failedList = putils.GetErrMsg2FailedSingleList(storeSku, errors.New("当前商品本地未设置抖音分类/抖音推荐分类查询错误:"+err.Error()), storeID, model.VendorChineseNames[model.VendorIDDD], syncType)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 这个情况是原有商品不存在和推荐查询不到类目id是,使用京西类目和抖音类目的绑定关系
|
||||||
|
// 但是不太实用,导致商品类目错误被暂停营业等
|
||||||
|
//if storeSku.VendorVendorCatID != 0 && param.CategoryLeafId == 0 {
|
||||||
|
// param.CategoryLeafId = storeSku.VendorVendorCatID
|
||||||
|
//}
|
||||||
|
|
||||||
|
// 是否支持七天无理由
|
||||||
|
if api.GetProductUpdateRule(param.CategoryLeafId) {
|
||||||
|
param.Supply7dayReturn = 1
|
||||||
|
} else {
|
||||||
|
param.Supply7dayReturn = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
if mainOrderDetail.MainProductId != 0 { // 子商品时,获取主商品id和状态
|
// weight_unit 目前抖音只支持g和kg两种
|
||||||
mainOrderDetailProductId, err := api.GetSkuDetail(utils.Int64ToStr(mainOrderDetail.MainProductId), "")
|
param.WeightUnit = tiktokShop.WeightUint_G
|
||||||
if err != nil || mainOrderDetailProductId == nil {
|
|
||||||
mainOrderDetail.MainProductId = 0
|
// spec_prices
|
||||||
return mainOrderDetail
|
param.SpecPrices = GetSpecPrices(param.Specs, vendorStoreID, 0, storeSku)
|
||||||
}
|
// 获取商品的属性
|
||||||
mainOrderDetail.MainProductId = mainOrderDetailProductId.ProductId
|
if storeSku.TiktokAttribute != "" && storeSku.TiktokAttribute != "{}" {
|
||||||
|
param.ProductFormatNew = storeSku.TiktokAttribute
|
||||||
|
} else if storeSku.VendorSkuAttrId != "" && storeSku.VendorSkuAttrId != "{}" {
|
||||||
|
param.ProductFormatNew = storeSku.TiktokAttribute
|
||||||
} else {
|
} else {
|
||||||
mainOrderDetail.MainProductId = mainOrderDetail.ProductId // 主商品
|
param.ProductFormatNew, err = MakeProductFormatNew(api, int64(storeSku.NameID), param.CategoryLeafId)
|
||||||
|
if err != nil {
|
||||||
|
failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType)
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return mainOrderDetail
|
param.StandardBrandId = 789194134 // 默认品牌京西菜市 596120136
|
||||||
|
param.FreightId, param.SaleLimitId, err = getFreightIdAndSaleLimitId(api, db, storeDetail, vendorStoreID)
|
||||||
|
if err != nil {
|
||||||
|
failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func loadMainProductId(api *tiktokShop.API, storeSku *dao.StoreSkuSyncInfo, mainProductId string) *product_detail_response.ProductDetailData {
|
||||||
|
// 这有可能获取的值主商品也有可能是子商品,我们需要的是主商品id和状态
|
||||||
|
mainOrderDetailProductId, err := api.GetSkuDetail(mainProductId, "")
|
||||||
|
if err != nil || mainOrderDetailProductId == nil {
|
||||||
|
mainOrderDetailProductId.MainProductId = 0
|
||||||
|
mainOrderDetailProductId.CheckStatus = 4
|
||||||
|
return mainOrderDetailProductId
|
||||||
|
}
|
||||||
|
return mainOrderDetailProductId
|
||||||
}
|
}
|
||||||
|
|
||||||
func checkNameLenght(name string) string {
|
func checkNameLenght(name string) string {
|
||||||
@@ -516,14 +531,13 @@ func upDateChildrenPriceStockLaunch(api *tiktokShop.API, storeSku *dao.StoreSkuS
|
|||||||
}); err != nil {
|
}); err != nil {
|
||||||
failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeSku.StoreID, model.VendorChineseNames[model.VendorIDDD], syncType)
|
failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeSku.StoreID, model.VendorChineseNames[model.VendorIDDD], syncType)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 同步库存
|
// 同步库存
|
||||||
paramStock := &sku_syncStock_request.SkuSyncStockParam{
|
paramStock := &sku_syncStock_request.SkuSyncStockParam{
|
||||||
SkuId: skuId,
|
ProductId: childrenProductId,
|
||||||
ProductId: childrenProductId,
|
Incremental: false,
|
||||||
Incremental: false,
|
StockNum: int64(storeSku.Stock),
|
||||||
IdempotentId: "",
|
OutSkuId: int64(storeSku.SkuID),
|
||||||
StockNum: int64(storeSku.Stock),
|
|
||||||
OutWarehouseId: vendorStoreID,
|
|
||||||
}
|
}
|
||||||
if paramStock.StockNum == 0 {
|
if paramStock.StockNum == 0 {
|
||||||
paramStock.StockNum = 99999
|
paramStock.StockNum = 99999
|
||||||
@@ -531,6 +545,7 @@ func upDateChildrenPriceStockLaunch(api *tiktokShop.API, storeSku *dao.StoreSkuS
|
|||||||
if err := api.UpdateSkuStock(paramStock); err != nil {
|
if err := api.UpdateSkuStock(paramStock); err != nil {
|
||||||
failedList = append(failedList, putils.GetErrMsg2FailedSingleList(storeSku, err, storeSku.StoreID, model.VendorChineseNames[model.VendorIDDD], fmt.Sprintf("子商品添加固定库存.%s", err.Error()))...)
|
failedList = append(failedList, putils.GetErrMsg2FailedSingleList(storeSku, err, storeSku.StoreID, model.VendorChineseNames[model.VendorIDDD], fmt.Sprintf("子商品添加固定库存.%s", err.Error()))...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 上架
|
// 上架
|
||||||
if err := api.LaunchProduct(childrenProductId); err != nil {
|
if err := api.LaunchProduct(childrenProductId); err != nil {
|
||||||
failedList = append(failedList, putils.GetErrMsg2FailedSingleList(storeSku, err, storeSku.StoreID, model.VendorChineseNames[model.VendorIDDD], fmt.Sprintf("上架子商品异常.%s", err.Error()))...)
|
failedList = append(failedList, putils.GetErrMsg2FailedSingleList(storeSku, err, storeSku.StoreID, model.VendorChineseNames[model.VendorIDDD], fmt.Sprintf("上架子商品异常.%s", err.Error()))...)
|
||||||
@@ -551,6 +566,7 @@ func getProductSkuID(api *tiktokShop.API, storeSku *dao.StoreSkuSyncInfo, syncTy
|
|||||||
childrenDetail, err := api.GetSkuDetail(utils.Int64ToStr(productId), "")
|
childrenDetail, err := api.GetSkuDetail(utils.Int64ToStr(productId), "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeSku.StoreID, model.VendorChineseNames[model.VendorIDDD], syncType)
|
failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeSku.StoreID, model.VendorChineseNames[model.VendorIDDD], syncType)
|
||||||
|
return 0, failedList
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, v := range childrenDetail.SpecPrices {
|
for _, v := range childrenDetail.SpecPrices {
|
||||||
@@ -582,7 +598,6 @@ func getProductSkuId4UpdateStock(api *tiktokShop.API, skuInfo *partner.StoreSkuI
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
globals.SugarLogger.Debugf("=GetSkuDetail By childrenSku %s", utils.Format4Output(childrenSku, false))
|
|
||||||
for _, v := range childrenSku.SpecPrices {
|
for _, v := range childrenSku.SpecPrices {
|
||||||
tiktokSkuId = v.SkuId
|
tiktokSkuId = v.SkuId
|
||||||
skuInfo.VendorSonSkuID = utils.Int64ToStr(v.SkuId)
|
skuInfo.VendorSonSkuID = utils.Int64ToStr(v.SkuId)
|
||||||
@@ -750,7 +765,6 @@ func GetDeliveryTemp(api *tiktokShop.API, vendorStoreID string, storeDetail *dao
|
|||||||
StoreId: utils.Str2Int64(vendorStoreID),
|
StoreId: utils.Str2Int64(vendorStoreID),
|
||||||
FreightId: temp.TemplateId,
|
FreightId: temp.TemplateId,
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
globals.SugarLogger.Debugf("BindFreightTemplate =err %s", err)
|
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
freightId = temp.TemplateId
|
freightId = temp.TemplateId
|
||||||
|
|||||||
@@ -270,11 +270,9 @@ func SpecialTreat(vendorOrgCode string, vendorStoreID, storeID, deliveryFeeDeduc
|
|||||||
}
|
}
|
||||||
if bindFreightIDs == 0 { //(1)未查询到绑定信息,不算错误
|
if bindFreightIDs == 0 { //(1)未查询到绑定信息,不算错误
|
||||||
if freightTemplateID, err := CreateFreightTemplate(int(storeID)); err != nil || freightTemplateID == 0 || utils.IsNil(freightTemplateID) {
|
if freightTemplateID, err := CreateFreightTemplate(int(storeID)); err != nil || freightTemplateID == 0 || utils.IsNil(freightTemplateID) {
|
||||||
globals.SugarLogger.Debug("创建运费模板失败:", err)
|
|
||||||
errList.AddErr(fmt.Errorf("创建运费模板失败:%v", err))
|
errList.AddErr(fmt.Errorf("创建运费模板失败:%v", err))
|
||||||
} else { //绑定
|
} else { //绑定
|
||||||
if err = ShopBindStoreFreight(vendorOrgCode, vendorStoreID, freightTemplateID); err != nil {
|
if err = ShopBindStoreFreight(vendorOrgCode, vendorStoreID, freightTemplateID); err != nil {
|
||||||
globals.SugarLogger.Debugf("京西菜市门店:%d 平台门店:%d 绑定运费模板:%d 失败:%v", storeID, vendorStoreID, freightTemplateID, err)
|
|
||||||
errList.AddErr(fmt.Errorf("京西菜市门店:%d 平台门店:%d 绑定运费模板:%d 失败:%v", storeID, vendorStoreID, freightTemplateID, err))
|
errList.AddErr(fmt.Errorf("京西菜市门店:%d 平台门店:%d 绑定运费模板:%d 失败:%v", storeID, vendorStoreID, freightTemplateID, err))
|
||||||
} else {
|
} else {
|
||||||
FreightTemplate.TemplateID = freightTemplateID
|
FreightTemplate.TemplateID = freightTemplateID
|
||||||
@@ -319,7 +317,6 @@ func SpecialTreat(vendorOrgCode string, vendorStoreID, storeID, deliveryFeeDeduc
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
endErr := errList.GetErrListAsOne()
|
endErr := errList.GetErrListAsOne()
|
||||||
globals.SugarLogger.Debugf("SpecialTreat wrong information endErr: %s", endErr)
|
|
||||||
return endErr
|
return endErr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -886,21 +886,21 @@ func (c *SkuController) UpdateTiktokCategory() {
|
|||||||
item.VendorCategoryID = data2[v.DdId]
|
item.VendorCategoryID = data2[v.DdId]
|
||||||
skuVendorCategoryMap := &model.SkuVendorCategoryMap{}
|
skuVendorCategoryMap := &model.SkuVendorCategoryMap{}
|
||||||
if err := dao.GetRow(db, skuVendorCategoryMap, `SELECT * FROM sku_vendor_category_map WHERE name_id = ? AND vendor_id = ? AND deleted_at = ?`, []interface{}{v.NameId, model.VendorIDDD, utils.DefaultTimeValue}); err != nil {
|
if err := dao.GetRow(db, skuVendorCategoryMap, `SELECT * FROM sku_vendor_category_map WHERE name_id = ? AND vendor_id = ? AND deleted_at = ?`, []interface{}{v.NameId, model.VendorIDDD, utils.DefaultTimeValue}); err != nil {
|
||||||
globals.SugarLogger.Debugf("====================err3 %s", err)
|
globals.SugarLogger.Errorf("get row err : %v", err)
|
||||||
}
|
}
|
||||||
if skuVendorCategoryMap != nil && skuVendorCategoryMap.ID > 0 {
|
if skuVendorCategoryMap != nil && skuVendorCategoryMap.ID > 0 {
|
||||||
if _, err := dao.UpdateEntity(db, skuVendorCategoryMap, "VendorCategoryID"); err != nil {
|
if _, err := dao.UpdateEntity(db, skuVendorCategoryMap, "VendorCategoryID"); err != nil {
|
||||||
globals.SugarLogger.Debugf("====================err4 %s", err)
|
globals.SugarLogger.Errorf("update err : %v", err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if err := dao.CreateEntity(db, item); err != nil {
|
if err := dao.CreateEntity(db, item); err != nil {
|
||||||
globals.SugarLogger.Debugf("====================err5 %s", err)
|
globals.SugarLogger.Errorf("create err : %v", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
go func() {
|
go func() {
|
||||||
time.Sleep(500 * time.Millisecond)
|
time.Sleep(500 * time.Millisecond)
|
||||||
hit, err := cms.CurVendorSync.SyncStoresSkus(params.Ctx, nil, 0, db, []int{14}, []int{v.StoreId}, []int{v.Id}, true, false, true)
|
hit, err := cms.CurVendorSync.SyncStoresSkus(params.Ctx, nil, 0, db, []int{14}, []int{v.StoreId}, []int{v.Id}, true, false, true)
|
||||||
globals.SugarLogger.Debugf("===============hit:%s err: %s", hit, err)
|
globals.SugarLogger.Debugf("hit:%s err: %v", hit, err)
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
if page*pageSize < total {
|
if page*pageSize < total {
|
||||||
|
|||||||
@@ -157,7 +157,6 @@ func (c *LogisticsController) LogisticsQuery() {
|
|||||||
// 查询订单的运单是否存在
|
// 查询订单的运单是否存在
|
||||||
data, err := dao.GetWayBillsByWayBillId(dao.GetDB(), param.TrackNo)
|
data, err := dao.GetWayBillsByWayBillId(dao.GetDB(), param.TrackNo)
|
||||||
if err != nil || len(data) == 0 {
|
if err != nil || len(data) == 0 {
|
||||||
globals.SugarLogger.Debugf("根据单号查询运单数据错误:%s,运单号 :%s", err.Error(), param.TrackNo)
|
|
||||||
c.Data["json"] = LogisticsQueryRest{
|
c.Data["json"] = LogisticsQueryRest{
|
||||||
Result: false,
|
Result: false,
|
||||||
ReturnCode: "1002",
|
ReturnCode: "1002",
|
||||||
|
|||||||
@@ -2,9 +2,7 @@ package controllers
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"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/jx-callback/business/partner/purchase/tiktok_store"
|
"git.rosy.net.cn/jx-callback/business/partner/purchase/tiktok_store"
|
||||||
"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"
|
||||||
"strings"
|
"strings"
|
||||||
@@ -31,7 +29,6 @@ func (t *TiktokController) CallbackTiktokOrderMsg() {
|
|||||||
|
|
||||||
// 2.参数解析
|
// 2.参数解析
|
||||||
orderStatus, resp := api.TiktokStore.CreateOrderCallback(byteList)
|
orderStatus, resp := api.TiktokStore.CreateOrderCallback(byteList)
|
||||||
globals.SugarLogger.Debugf("CallbackTiktokOrderMsg orderStatus====%s resp====%s ", utils.Format4Output(orderStatus, false), utils.Format4Output(resp, false))
|
|
||||||
if resp.Code != 0 {
|
if resp.Code != 0 {
|
||||||
t.Data["json"] = resp
|
t.Data["json"] = resp
|
||||||
t.ServeJSON()
|
t.ServeJSON()
|
||||||
@@ -40,7 +37,6 @@ func (t *TiktokController) CallbackTiktokOrderMsg() {
|
|||||||
|
|
||||||
for k, v := range orderStatus {
|
for k, v := range orderStatus {
|
||||||
for _, callback := range v {
|
for _, callback := range v {
|
||||||
globals.SugarLogger.Debugf("CallbackTiktokOrderMsg v======%s", utils.Format4Output(v, false))
|
|
||||||
resp2 := tiktok_store.OnOrderMsg(k, callback)
|
resp2 := tiktok_store.OnOrderMsg(k, callback)
|
||||||
if resp2.Code != 0 {
|
if resp2.Code != 0 {
|
||||||
t.Data["json"] = resp2
|
t.Data["json"] = resp2
|
||||||
|
|||||||
Reference in New Issue
Block a user