From 51f81b374f15ada05d877231647adcc67a058dba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Mon, 12 Dec 2022 18:57:45 +0800 Subject: [PATCH 01/78] 1' --- business/partner/delivery/mtps/waybill.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/business/partner/delivery/mtps/waybill.go b/business/partner/delivery/mtps/waybill.go index 3eb3906fc..c94a033f7 100644 --- a/business/partner/delivery/mtps/waybill.go +++ b/business/partner/delivery/mtps/waybill.go @@ -362,6 +362,9 @@ func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee // 通知美团订单,获取返回订单配送费 result, err := api.MtpsAPI.CreateOrderByShop2(billParams) + globals.SugarLogger.Debugf("=========resutl %s", utils.Format4Output(result, false)) + globals.SugarLogger.Debugf("=========errr %s", utils.Format4Output(err, false)) + globals.SugarLogger.Debugf("=========order %s", utils.Format4Output(order, false)) if err != nil { return nil, err } From 8b26b22ddb0fa9cf0ba3bb460dee115389c91abb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Mon, 12 Dec 2022 19:11:57 +0800 Subject: [PATCH 02/78] 1 --- business/jxcallback/scheduler/basesch/basesch.go | 1 + business/partner/delivery/mtps/waybill.go | 3 --- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/business/jxcallback/scheduler/basesch/basesch.go b/business/jxcallback/scheduler/basesch/basesch.go index 863c9a35c..f8b54cf24 100644 --- a/business/jxcallback/scheduler/basesch/basesch.go +++ b/business/jxcallback/scheduler/basesch/basesch.go @@ -223,6 +223,7 @@ func (c *BaseScheduler) CreateWaybill(platformVendorID int, order *model.GoodsOr if c.IsReallyCallPlatformAPI { // 美团配送订单生成,配送费计算 bill, err = handlerInfo.Handler.CreateWaybill(order, maxDeliveryFee) + globals.SugarLogger.Debugf("====================bill %s", utils.Format4Output(bill, false)) if err != nil { globals.SugarLogger.Infof("CreateWaybill failed orderID:%s vendorID:%d with error:%v", order.VendorOrderID, platformVendorID, err) } else { diff --git a/business/partner/delivery/mtps/waybill.go b/business/partner/delivery/mtps/waybill.go index c94a033f7..3eb3906fc 100644 --- a/business/partner/delivery/mtps/waybill.go +++ b/business/partner/delivery/mtps/waybill.go @@ -362,9 +362,6 @@ func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee // 通知美团订单,获取返回订单配送费 result, err := api.MtpsAPI.CreateOrderByShop2(billParams) - globals.SugarLogger.Debugf("=========resutl %s", utils.Format4Output(result, false)) - globals.SugarLogger.Debugf("=========errr %s", utils.Format4Output(err, false)) - globals.SugarLogger.Debugf("=========order %s", utils.Format4Output(order, false)) if err != nil { return nil, err } From b2340c55b9a6455fa851b75a37e6329f04ece89c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Mon, 12 Dec 2022 19:22:58 +0800 Subject: [PATCH 03/78] 1 --- business/jxcallback/scheduler/basesch/basesch_ext.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/business/jxcallback/scheduler/basesch/basesch_ext.go b/business/jxcallback/scheduler/basesch/basesch_ext.go index 68f8391f8..15f06a20d 100644 --- a/business/jxcallback/scheduler/basesch/basesch_ext.go +++ b/business/jxcallback/scheduler/basesch/basesch_ext.go @@ -53,6 +53,8 @@ func (c *BaseScheduler) CreateWaybillOnProviders(ctx *jxcontext.Context, order * } } } + globals.SugarLogger.Debugf("===========bills 11 %s ", utils.Format4Output(bills, false)) + globals.SugarLogger.Debugf("===========bills 11 %s ", utils.Format4Output(errList.GetErrListAsOne(), false)) if len(bills) > 0 { err = errList.GetErrListAsOne() if err != nil { From 2ee9e6a3c65a0dd1278ed863ff538d47e8f2e9e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Tue, 13 Dec 2022 10:06:14 +0800 Subject: [PATCH 04/78] 1 --- business/partner/delivery/mtps/waybill.go | 13 +++++++------ business/partner/printer/feie/feie_test.go | 8 ++++++++ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/business/partner/delivery/mtps/waybill.go b/business/partner/delivery/mtps/waybill.go index 3eb3906fc..163650ef0 100644 --- a/business/partner/delivery/mtps/waybill.go +++ b/business/partner/delivery/mtps/waybill.go @@ -85,12 +85,6 @@ func (c *DeliveryHandler) OnWaybillExcept(msg *mtpsapi.CallbackOrderExceptionMsg func (c *DeliveryHandler) onWaybillMsg(msg *mtpsapi.CallbackOrderMsg) (retVal *mtpsapi.CallbackResponse) { order := c.callbackMsg2Waybill(msg) - if msg.Status == mtpsapi.OrderStatusPickedUp { - order.Status = model.WaybillStatusCourierArrived - mtpsapi.Err2CallbackResponse(partner.CurOrderManager.OnWaybillStatusChanged(order), order.VendorStatus) - defer delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID, order.Status) // 骑手位置更新 - msg.Status = mtpsapi.OrderStatusPickedUp - } switch msg.Status { case mtpsapi.OrderStatusWaitingForSchedule: data, err := api.MtpsAPI.QueryOrderStatus(msg.DeliveryID, msg.MtPeisongID) @@ -123,6 +117,13 @@ func (c *DeliveryHandler) onWaybillMsg(msg *mtpsapi.CallbackOrderMsg) (retVal *m c.pushToGy(msg) return mtpsapi.SuccessResponse } + + //if msg.Status == mtpsapi.OrderStatusPickedUp { + // order.Status = model.WaybillStatusCourierArrived + // mtpsapi.Err2CallbackResponse(partner.CurOrderManager.OnWaybillStatusChanged(order), order.VendorStatus) + // delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID, order.Status) // 骑手位置更新 + // msg.Status = mtpsapi.OrderStatusPickedUp + //} // 加入调度器 err := mtpsapi.Err2CallbackResponse(partner.CurOrderManager.OnWaybillStatusChanged(order), order.VendorStatus) defer delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID, order.Status) // 骑手位置更新 diff --git a/business/partner/printer/feie/feie_test.go b/business/partner/printer/feie/feie_test.go index 886029ebc..fa28347b7 100644 --- a/business/partner/printer/feie/feie_test.go +++ b/business/partner/printer/feie/feie_test.go @@ -42,3 +42,11 @@ func TestRegisterPrinter(t *testing.T) { t.Fatal(err) } } + +func TestGetPrinterStatus(t *testing.T) { + sn, err := CurPrinterHandler.GetPrinterStatus(nil, "922591501", "fczh8zwv") + t.Log(sn) + if err != nil { + t.Fatal(err) + } +} From 36320e4b839130f381aff07747cba4d5fa879e96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Tue, 13 Dec 2022 10:16:23 +0800 Subject: [PATCH 05/78] 1 --- business/partner/delivery/mtps/waybill.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/business/partner/delivery/mtps/waybill.go b/business/partner/delivery/mtps/waybill.go index 163650ef0..7e63ba2ac 100644 --- a/business/partner/delivery/mtps/waybill.go +++ b/business/partner/delivery/mtps/waybill.go @@ -85,6 +85,9 @@ func (c *DeliveryHandler) OnWaybillExcept(msg *mtpsapi.CallbackOrderExceptionMsg func (c *DeliveryHandler) onWaybillMsg(msg *mtpsapi.CallbackOrderMsg) (retVal *mtpsapi.CallbackResponse) { order := c.callbackMsg2Waybill(msg) + globals.SugarLogger.Debugf("============msg1 %s", utils.Format4Output(msg, false)) + globals.SugarLogger.Debugf("============order %s", utils.Format4Output(order, false)) + switch msg.Status { case mtpsapi.OrderStatusWaitingForSchedule: data, err := api.MtpsAPI.QueryOrderStatus(msg.DeliveryID, msg.MtPeisongID) @@ -113,7 +116,9 @@ func (c *DeliveryHandler) onWaybillMsg(msg *mtpsapi.CallbackOrderMsg) (retVal *m order2, _ := partner.CurOrderManager.LoadOrder(order.VendorOrderID, order.OrderVendorID) // order2, _ := dao.GetSimpleOrder(dao.GetDB(), order.VendorOrderID) //查不到订单可能就是果园的订单 + globals.SugarLogger.Debugf("============order2 %s", utils.Format4Output(order2, false)) if order2 == nil { + globals.SugarLogger.Debugf("============msg %s", utils.Format4Output(msg, false)) c.pushToGy(msg) return mtpsapi.SuccessResponse } @@ -194,6 +199,7 @@ func (c *DeliveryHandler) pushToGy(msg *mtpsapi.CallbackOrderMsg) { return } request.Header.Set("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8") + globals.SugarLogger.Debugf("============request %s", utils.Format4Output(request, false)) cl.Do(request) } From 01987ae556a73cb38baa8b776171d3f1ac152a5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Tue, 13 Dec 2022 10:25:25 +0800 Subject: [PATCH 06/78] 1 --- business/partner/delivery/mtps/waybill.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/business/partner/delivery/mtps/waybill.go b/business/partner/delivery/mtps/waybill.go index 7e63ba2ac..8469356c6 100644 --- a/business/partner/delivery/mtps/waybill.go +++ b/business/partner/delivery/mtps/waybill.go @@ -85,9 +85,7 @@ func (c *DeliveryHandler) OnWaybillExcept(msg *mtpsapi.CallbackOrderExceptionMsg func (c *DeliveryHandler) onWaybillMsg(msg *mtpsapi.CallbackOrderMsg) (retVal *mtpsapi.CallbackResponse) { order := c.callbackMsg2Waybill(msg) - globals.SugarLogger.Debugf("============msg1 %s", utils.Format4Output(msg, false)) - globals.SugarLogger.Debugf("============order %s", utils.Format4Output(order, false)) - + globals.SugarLogger.Debugf("===========order 1 %s", utils.Format4Output(order, false)) switch msg.Status { case mtpsapi.OrderStatusWaitingForSchedule: data, err := api.MtpsAPI.QueryOrderStatus(msg.DeliveryID, msg.MtPeisongID) @@ -116,9 +114,8 @@ func (c *DeliveryHandler) onWaybillMsg(msg *mtpsapi.CallbackOrderMsg) (retVal *m order2, _ := partner.CurOrderManager.LoadOrder(order.VendorOrderID, order.OrderVendorID) // order2, _ := dao.GetSimpleOrder(dao.GetDB(), order.VendorOrderID) //查不到订单可能就是果园的订单 - globals.SugarLogger.Debugf("============order2 %s", utils.Format4Output(order2, false)) if order2 == nil { - globals.SugarLogger.Debugf("============msg %s", utils.Format4Output(msg, false)) + globals.SugarLogger.Debugf("===========order 1 %s", utils.Format4Output(msg, false)) c.pushToGy(msg) return mtpsapi.SuccessResponse } @@ -239,8 +236,11 @@ func (c *DeliveryHandler) callbackMsg2Waybill(msg *mtpsapi.CallbackOrderMsg) (re var good *model.GoodsOrder sql := `SELECT * FROM goods_order WHERE vendor_order_id = ? ORDER BY order_created_at DESC LIMIT 1 OFFSET 0` sqlParams := []interface{}{msg.OrderID} - dao.GetRow(dao.GetDB(), &good, sql, sqlParams) - retVal.OrderVendorID = good.VendorID + if err := dao.GetRow(dao.GetDB(), &good, sql, sqlParams); err != nil || good == nil || good.VendorOrderID == "" { + retVal.OrderVendorID = 0 + } else { + retVal.OrderVendorID = good.VendorID + } return retVal } From 57c2a9778ab67c0d2a6a88f025bcd939a88577a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Tue, 13 Dec 2022 11:52:13 +0800 Subject: [PATCH 07/78] 1 --- business/bidding/logistics_Loading.go | 32 ++++++++++--------- business/partner/delivery/mtps/waybill.go | 4 --- .../partner/purchase/tiktok_store/callback.go | 3 ++ 3 files changed, 20 insertions(+), 19 deletions(-) diff --git a/business/bidding/logistics_Loading.go b/business/bidding/logistics_Loading.go index 8c6bbd418..5f9f7fbd0 100644 --- a/business/bidding/logistics_Loading.go +++ b/business/bidding/logistics_Loading.go @@ -42,7 +42,7 @@ func LoadingLogistics(paramLogistic []*model.UpdateMaterialLogistic) []error { goodsOrderStatus := 0 for _, v := range logisticsList.Info[0].LogisticsTraceDetailList { orderStatusToLocal := &model.OrderStatus{ - VendorOrderID: logisticsList.OrderNo, + VendorOrderID: logisticsList.Info[0].MailNo, VendorID: model.VendorIDTotalWl, OrderType: model.OrderTypeWaybill, RefVendorOrderID: logistics.OrderId, @@ -108,20 +108,21 @@ func LoadingLogistics(paramLogistic []*model.UpdateMaterialLogistic) []error { statusTime := orderStatus[len(orderStatus)-1].StatusTime if len(wayBill) == 0 || wayBill == nil { wayBillObj := &model.Waybill{ - VendorWaybillID: logistics.LogisticId, - WaybillVendorID: model.VendorIDTotalWl, - VendorOrderID: logistics.OrderId, - OrderVendorID: model.VendorIDJX, - CourierName: logisticsList.Info[0].Courier, - CourierMobile: logisticsList.Info[0].CourierPhone, - Status: status, - VendorStatus: vendorStatus, - ActualFee: logistics.LogisticFee, - DesiredFee: logistics.LogisticFee, - DeliveryFlag: model.OrderDeliveryFlagMaskScheduleDisabled, - WaybillCreatedAt: time.Now(), - StatusTime: statusTime, - ModelTimeInfo: model.ModelTimeInfo{CreatedAt: time.Now(), UpdatedAt: time.Now()}, + VendorWaybillID: logistics.LogisticId, + WaybillVendorID: model.VendorIDTotalWl, + VendorOrderID: logistics.OrderId, + OrderVendorID: model.VendorIDJX, + CourierName: logisticsList.Info[0].Courier, + CourierMobile: logisticsList.Info[0].CourierPhone, + Status: status, + VendorStatus: vendorStatus, + ActualFee: logistics.LogisticFee, + DesiredFee: logistics.LogisticFee, + DeliveryFlag: model.OrderDeliveryFlagMaskScheduleDisabled, + WaybillCreatedAt: time.Now(), + StatusTime: statusTime, + ModelTimeInfo: model.ModelTimeInfo{CreatedAt: time.Now(), UpdatedAt: time.Now()}, + WaybillFinishedAt: time.Now(), } if err := dao.CreateEntity(db, wayBillObj); err != nil { errList = append(errList, err) @@ -132,6 +133,7 @@ func LoadingLogistics(paramLogistic []*model.UpdateMaterialLogistic) []error { wayBill[0].Status = status wayBill[0].VendorStatus = vendorStatus wayBill[0].StatusTime = statusTime + wayBill[0].WaybillFinishedAt = time.Now() if _, err := dao.UpdateEntity(db, wayBill[0], "Status", "UpdatedAt", "VendorStatus", "StatusTime"); err != nil { errList = append(errList, err) continue diff --git a/business/partner/delivery/mtps/waybill.go b/business/partner/delivery/mtps/waybill.go index 8469356c6..6c45aefed 100644 --- a/business/partner/delivery/mtps/waybill.go +++ b/business/partner/delivery/mtps/waybill.go @@ -85,7 +85,6 @@ func (c *DeliveryHandler) OnWaybillExcept(msg *mtpsapi.CallbackOrderExceptionMsg func (c *DeliveryHandler) onWaybillMsg(msg *mtpsapi.CallbackOrderMsg) (retVal *mtpsapi.CallbackResponse) { order := c.callbackMsg2Waybill(msg) - globals.SugarLogger.Debugf("===========order 1 %s", utils.Format4Output(order, false)) switch msg.Status { case mtpsapi.OrderStatusWaitingForSchedule: data, err := api.MtpsAPI.QueryOrderStatus(msg.DeliveryID, msg.MtPeisongID) @@ -115,7 +114,6 @@ func (c *DeliveryHandler) onWaybillMsg(msg *mtpsapi.CallbackOrderMsg) (retVal *m // order2, _ := dao.GetSimpleOrder(dao.GetDB(), order.VendorOrderID) //查不到订单可能就是果园的订单 if order2 == nil { - globals.SugarLogger.Debugf("===========order 1 %s", utils.Format4Output(msg, false)) c.pushToGy(msg) return mtpsapi.SuccessResponse } @@ -166,7 +164,6 @@ func pushMTPSToTiktok(msgStatus int, order *model.Waybill) { result.LogisticsStatus = 0 result.LogisticsContext = model.RiderGetOrderDeliverOther } - globals.SugarLogger.Debugf("===========================mtps:%s", utils.Format4Output(result, false)) delivery.PullTiktokRiderInfo(result) if result.LogisticsStatus == model.WaybillStatusCourierArrived { result.LogisticsStatus = model.WaybillStatusDelivering @@ -196,7 +193,6 @@ func (c *DeliveryHandler) pushToGy(msg *mtpsapi.CallbackOrderMsg) { return } request.Header.Set("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8") - globals.SugarLogger.Debugf("============request %s", utils.Format4Output(request, false)) cl.Do(request) } diff --git a/business/partner/purchase/tiktok_store/callback.go b/business/partner/purchase/tiktok_store/callback.go index ed4444eb3..af12c860e 100644 --- a/business/partner/purchase/tiktok_store/callback.go +++ b/business/partner/purchase/tiktok_store/callback.go @@ -3,8 +3,10 @@ package tiktok_store import ( "encoding/json" tiktokShop "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/tiktok_api" + "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/globals" "git.rosy.net.cn/jx-callback/globals/api" "net/http" "strings" @@ -12,6 +14,7 @@ import ( // OnOrderMsg 抖音 func OnOrderMsg(msgId string, msg interface{}) (response *tiktokShop.CallbackResponse) { + globals.SugarLogger.Debugf("GetCallbackOrderId tiktok msg %s", utils.Format4Output(msg, false)) if CurPurchaseHandler != nil { orderId, shopId, _ := api.TiktokStore.GetCallbackOrderId(msgId, msg) if shopId != 0 { From b9c4970c6f591debce47d03bc6dd002eaf957033 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Tue, 13 Dec 2022 14:48:55 +0800 Subject: [PATCH 08/78] 1 --- business/partner/purchase/tiktok_store/store_sku2_utils.go | 1 + 1 file changed, 1 insertion(+) diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index 5a89b4957..d1f24261d 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -305,6 +305,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI storeSku.VendorSkuAttrId = localThing[0].Remark // 属性id skuID tiktokResultProductId = utils.Str2Int64(localThing[0].VendorThingID) } + param.MainProductId = tiktokResultProductId // 上面说明要么已经创建了主商品,要么已经重新创建了主商品,将该商品同步到子门店就可以了. childrenProductId, err := api.CreateSubProduct(param.MainProductId, utils.Str2Int64(vendorStoreID)) From b466aaaf122190250285d1053744bef5759ffe38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 14 Dec 2022 10:37:48 +0800 Subject: [PATCH 09/78] 1 --- business/bidding/logistics_Loading.go | 5 + business/model/dao/thing_map.go | 6 +- business/model/sync_map.go | 12 +- business/partner/purchase/jdshop/store_sku.go | 1 + .../purchase/tiktok_store/store_sku2_utils.go | 251 ++++++++---------- 5 files changed, 132 insertions(+), 143 deletions(-) diff --git a/business/bidding/logistics_Loading.go b/business/bidding/logistics_Loading.go index 5f9f7fbd0..86378b1d6 100644 --- a/business/bidding/logistics_Loading.go +++ b/business/bidding/logistics_Loading.go @@ -1,6 +1,7 @@ package bidding import ( + "errors" "git.rosy.net.cn/baseapi/platformapi/ali_logistics_query" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxcallback/orderman" @@ -38,6 +39,10 @@ func LoadingLogistics(paramLogistic []*model.UpdateMaterialLogistic) []error { } // 新订单,本地暂无物流信息,全部更新远端物流信息到本地 + if len(logisticsList.Info[0].LogisticsTraceDetailList) == model.NO { + errList = append(errList, errors.New("运单号[%s]:已经过期/新订单暂无物流推送信息")) + continue + } var orderStatus = make([]*model.OrderStatus, 0, 0) goodsOrderStatus := 0 for _, v := range logisticsList.Info[0].LogisticsTraceDetailList { diff --git a/business/model/dao/thing_map.go b/business/model/dao/thing_map.go index 16e4f193c..24176ed83 100644 --- a/business/model/dao/thing_map.go +++ b/business/model/dao/thing_map.go @@ -27,15 +27,15 @@ func GetThingMapList(db *DaoDB, thingType int, vendorIDs, thingIDs []int, vendor return cats, err } -func CreateThingMap(thingId int64, vendorThingID, appOrgCode, skuAttrId string) error { +func CreateThingMap(thingId int64, vendorThingID, appOrgCode, skuAttrId string, thingType, syncStatus int8) error { thingMap := &model.ThingMap{ ThingID: thingId, - ThingType: model.ThingTypeSku, + ThingType: thingType, VendorID: model.VendorIDDD, VendorOrgCode: appOrgCode, VendorThingID: vendorThingID, Remark: skuAttrId, - SyncStatus: 0, + SyncStatus: syncStatus, } // 正常来说这个skuAttrId 不应该为空 if skuAttrId == "" { diff --git a/business/model/sync_map.go b/business/model/sync_map.go index 955e8c4c8..c8c5ef010 100644 --- a/business/model/sync_map.go +++ b/business/model/sync_map.go @@ -1,12 +1,12 @@ package model const ( - ThingTypeCategory = 1 - ThingTypeSkuName = 2 - ThingTypeSku = 3 - ThingTypeStore = 4 - ThingTypeUser = 5 - ThingTypeOrder = 6 + ThingTypeCategory = 1 // 同步分类 + ThingTypeSkuName = 2 // 同步商品名称 + ThingTypeSku = 3 // 同步商品 + ThingTypeStore = 4 // 同步门店 + ThingTypeUser = 5 // 同步用户信息 + ThingTypeOrder = 6 // 同步订单 ) type ThingMap struct { diff --git a/business/partner/purchase/jdshop/store_sku.go b/business/partner/purchase/jdshop/store_sku.go index acbe1879e..4aa6cc6dd 100644 --- a/business/partner/purchase/jdshop/store_sku.go +++ b/business/partner/purchase/jdshop/store_sku.go @@ -33,6 +33,7 @@ var ( ) func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*dao.StoreSkuSyncInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) { + globals.SugarLogger.Debugf("是不是正儿八经的京东商城%s", "1111111111111111111111111") if globals.EnableJdShopWrite { if vendorStoreID == model.JdShopMainVendorStoreID { for _, v := range storeSkuList { diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index d1f24261d..c0bbfff7e 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -151,28 +151,20 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI PickupMethod: "0", OuterProductId: utils.Int2Str(storeSku.SkuID), // 本地skuId为外部商品id } - globals.SugarLogger.Debugf("=======================1") - globals.SugarLogger.Debugf("=======================param %s", utils.Format4Output(param, false)) if len(param.Name) < 23 { // 中文字符一个汉字三个长度符号/数字/字母两个长度,商品名称不能大于 - param.Name += utils.Float64ToStr(float64(storeSku.SpecQuality)) + "/" + storeSku.SpecUnit - if len(param.Name) < 23 { - param.Name += "【惊喜到家】" - } + param.Name += "【惊喜到家】" } else if len(param.Name) > 90 { // 抖音最大60个字符,三十个汉字 param.Name = param.Name[0:90] } // 获取上传图,商品轮播图 img, detailImg, err := GetTiktokImgList(api, utils.Int2Str(storeSku.StoreID), storeDetail.VendorOrgCode, storeSku.DescImg, storeSku.ImgOrigin, storeSku.Img2, storeSku.Img3, storeSku.Img4, storeSku.Img5) - globals.SugarLogger.Debugf("=======================img %s", img) - globals.SugarLogger.Debugf("=======================detailImg %s", detailImg) if err != nil { failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) continue } param.Pic = img param.Description = detailImg - globals.SugarLogger.Debugf("=======================2") // 部分商品没有所属的分类,直接跳过! if storeSku.SkuVendorMapCatID != "" { @@ -180,7 +172,6 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI } else if len(param.Pic) != 0 { // 自动推导分类id param.CategoryLeafId = api.GetRecommendCategory(strings.Split(img, "|")) } - globals.SugarLogger.Debugf("=======================3") // 这个情况是原有商品不存在和推荐查询不到类目id是,使用京西类目和抖音类目的绑定关系 // 但是不太实用,导致商品类目错误被暂停营业等 //if storeSku.VendorVendorCatID != 0 && param.CategoryLeafId == 0 { @@ -196,7 +187,6 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI } else { param.Supply7dayReturn = 0 } - globals.SugarLogger.Debugf("=======================4") // weight_unit 目前抖音只支持g和kg两种 param.WeightUnit = tiktokShop.WeightUint_G @@ -215,138 +205,92 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI continue } } - param.StandardBrandId = 789194134 // 默认品牌京西菜市 596120136 - globals.SugarLogger.Debugf("=======================5") - - temp, err := dao.QueryStoreBindInfo(storeDetail.Store.ID) - if err != nil || temp == nil || temp.ID == 0 { - // 运费模板 - param.FreightId, err = GetDeliveryTemp(api, vendorStoreID, storeDetail) - if err != nil { - return nil, err - } - // 获取门店限售模板 - param.SaleLimitId, err = CreateSaleTemp(utils.Str2Int64(vendorStoreID), api) - if err != nil { - return nil, err - } - // 保存数据库 - freightTemplate := &model.FreightTemplate{ - StoreID: storeSku.StoreID, - VendorStoreID: storeDetail.VendorStoreID, - TemplateID: param.FreightId, - WarehouseID: 0, - FenceID: "", - TradeLimitID: param.SaleLimitId, - } - err = dao.CreateEntity(db, freightTemplate) - } else { - if temp.TemplateID != 0 { - param.FreightId = temp.TemplateID - } else { - // 运费模板 - param.FreightId, err = GetDeliveryTemp(api, vendorStoreID, storeDetail) - if err != nil { - return nil, err - } - temp.TemplateID = param.FreightId - _, err = dao.UpdateEntity(db, temp, "TemplateID") - dao.FreightTemplateMap[temp.StoreID] = temp - } - if temp.TradeLimitID != 0 { - param.SaleLimitId = temp.TradeLimitID - } else { - // 获取门店限售模板 - param.SaleLimitId, err = CreateSaleTemp(utils.Str2Int64(vendorStoreID), api) - if err != nil { - return nil, err - } - temp.TradeLimitID = param.SaleLimitId - _, err = dao.UpdateEntity(db, temp, "TradeLimitID") - dao.FreightTemplateMap[temp.StoreID] = temp - } + param.FreightId, param.SaleLimitId, err = getFreightIdAndSaleLimitId(api, db, storeDetail, vendorStoreID) + if err != nil { + failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) + continue } - globals.SugarLogger.Debugf("=======================6") // 根据本地商品id获取线上商品是否存在,存在则只创建子商品 - var tiktokResultProductId int64 = 0 // 获取本地存储映射关系,获取本地主商品id是否存在 localThing, err := dao.GetThingToTiktokMapList(db, model.VendorIDDD, int64(storeSku.SkuID)) if len(localThing) == 0 { - // 看看本地保存了没,没有的话可能该商品没创建主商品!查查线上有没有 mainOrderDetail, err := api.GetSkuDetailLocalID("", utils.Int2Str(storeSku.SkuID)) if err != nil || mainOrderDetail == nil || mainOrderDetail.ProductIdStr == "" { - tiktokResult, err := api.CreateStoreCommodity(param) // 创建主商品 + tiktokResult, err := api.CreateStoreCommodity(param) // 创建主商品,同步主商品 if err != nil { + if err := dao.CreateThingMap(int64(storeSku.SkuID), utils.Int64ToStr(tiktokResult.ProductId), storeDetail.VendorOrgCode, storeSku.VendorSkuAttrId, model.ThingTypeSku, model.SyncFlagNewMask); err != nil { + 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) continue } - tiktokResultProductId = tiktokResult.ProductId var attrId []string for _, v := range tiktokResult.Sku { attrId = append(attrId, utils.Int64ToStr(v.SkuId)) } - storeSku.VendorSkuAttrId = strings.Join(attrId, ",") // 属性id skuID - err = dao.CreateThingMap(int64(storeSku.SkuID), utils.Int64ToStr(tiktokResult.ProductId), storeDetail.VendorOrgCode, storeSku.VendorSkuAttrId) + storeSku.VendorMainId = mainOrderDetail.ProductIdStr + storeSku.VendorSkuAttrId = strings.Join(attrId, ",") // 属性id skuID + storeSku.VendorSonSkuID = utils.Int2Str(storeSku.SkuID) // 还没同步子商品 } else { + // 本地不存在,线上存在.直接创建子商品保存本地同步记录 + var childrenProductId int64 = 0 + var syncStatus int8 = 0 + if mainOrderDetail.CheckStatus == 3 { + childrenProductId, err = api.CreateSubProduct(mainOrderDetail.MainProductId, utils.Str2Int64(vendorStoreID)) + if err != nil { + syncStatus = model.SyncFlagNewMask + failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) + if storeSku.VendorSkuID == "" { + storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID) + } + } + } + + if err := dao.CreateThingMap(int64(storeSku.SkuID), mainOrderDetail.ProductIdStr, storeDetail.VendorOrgCode+"|"+vendorStoreID, storeSku.VendorSkuAttrId, model.ThingTypeSku, syncStatus); err != nil { + failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) + if storeSku.VendorSkuID == "" { + storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID) + } + } storeSku.VendorMainId = mainOrderDetail.ProductIdStr var attrId []string for _, v := range mainOrderDetail.SpecPrices { attrId = append(attrId, utils.Int64ToStr(v.SkuId)) } - storeSku.VendorSkuAttrId = strings.Join(attrId, ",") // 属性id skuID - tiktokResultProductId = mainOrderDetail.ProductId + storeSku.VendorSkuAttrId = strings.Join(attrId, ",") // 属性id skuID + storeSku.VendorSonSkuID = utils.Int64ToStr(childrenProductId) // (属性id skuID方案一)(自商品的商品id方案二) + storeSku.VendorSkuID = utils.Int64ToStr(childrenProductId) // 子商品主id } } else { - storeSku.VendorMainId = localThing[0].VendorThingID - storeSku.VendorSkuAttrId = localThing[0].Remark // 属性id skuID - tiktokResultProductId = utils.Str2Int64(localThing[0].VendorThingID) - } - param.MainProductId = tiktokResultProductId + if localThing[0].SyncStatus != model.NO { - // 上面说明要么已经创建了主商品,要么已经重新创建了主商品,将该商品同步到子门店就可以了. - childrenProductId, err := api.CreateSubProduct(param.MainProductId, utils.Str2Int64(vendorStoreID)) - if err != nil { - failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) - if storeSku.VendorSkuID == "" { - storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID) } - continue + // 主商品存在,直接同步子商品 + childrenProductId, err := api.CreateSubProduct(utils.Str2Int64(localThing[0].VendorThingID), utils.Str2Int64(vendorStoreID)) + if err != nil { + failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) + if storeSku.VendorSkuID == "" { + storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID) + } + continue + } + storeSku.VendorSonSkuID = utils.Int64ToStr(childrenProductId) // (属性id skuID方案一)(自商品的商品id方案二) + storeSku.VendorSkuID = utils.Int64ToStr(childrenProductId) // 子商品主id + storeSku.VendorMainId = localThing[0].VendorThingID // 商品主id } - storeSku.VendorSonSkuID = utils.Int64ToStr(childrenProductId) // 属性id skuID(自商品的商品id) - storeSku.VendorSkuID = utils.Int64ToStr(childrenProductId) // 子商品主id - storeSku.VendorMainId = utils.Int64ToStr(tiktokResultProductId) // 商品主id - //param.MainProductId = tiktokResultProductId - //param.SpecPrices = GetSpecPrices(param.Specs, vendorStoreID, tiktokResultProductId, storeSku) - // - //param.StoreId = utils.Str2Int64(vendorStoreID) - //// 抖店创建子商品 - //tiktokResultChildren, err := api.CreateStoreCommodity(param) - //if err != nil { - // failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) - // if storeSku.VendorSkuID == "" { - // storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID) - // } - // continue - //} - //var attrId2 []string - //for _, v := range tiktokResultChildren.Sku { - // attrId2 = append(attrId2, utils.Int64ToStr(v.SkuId)) - //} - //storeSku.VendorSonSkuID = strings.Join(attrId2, ",") // 属性id skuID(子商品的属性id) - //storeSku.VendorSkuID = utils.Int64ToStr(tiktokResultChildren.ProductId) // 子商品主id - //storeSku.VendorMainId = utils.Int64ToStr(tiktokResultProductId) // 商品主id } } else { syncType = "更新商品" for _, storeSku := range storeSkuList { - if storeSku.StoreSkuStatus != 1 { // 未可售的商品不参与修改 + if storeSku.StoreSkuStatus != model.YES { // 未可售的商品不参与修改 continue } - // 更新商品(目前只更新子商品,主商品暂不支持) + + // 更新主商品,在同步到子门店,考虑审核时间 param := &product_editV2_request.ProductEditV2Param{ Name: utils.LimitUTF8StringLen(storeSku.SkuName, 90), PayType: tiktokShop.TiktokPayType1, @@ -370,10 +314,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI } if len(param.Name) < 23 { // 中文字符一个汉字三个长度符号/数字/字母两个长度,商品名称不能大于 - param.Name += utils.Float64ToStr(float64(storeSku.SpecQuality)) + "/" + storeSku.SpecUnit - if len(param.Name) < 23 { - param.Name += "【惊喜到家】" - } + param.Name += "【惊喜到家】" } else if len(param.Name) > 90 { // 抖音最大60个字符,三十个汉字 param.Name = param.Name[0:90] } @@ -386,16 +327,8 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI } param.Pic = img param.Description = detailImg - - // weight_unit 目前抖音只支持g和kg两种 - //switch storeSku.Unit { - //case "g", "ml", "G", "ML": param.WeightUnit = tiktokShop.WeightUint_G - //case "kg", "l", "L", "KG": - // param.WeightUnit = tiktokShop.WeightUint_G - //} - //param.SpecPrices = GetSpecPrices(param.Specs, vendorStoreID, 0, storeSku) // 获取商品的属性 if storeSku.TiktokAttribute == "" || storeSku.TiktokAttribute == "{}" { param.ProductFormatNew, err = MakeProductFormatNew(api, int64(storeSku.NameID), param.CategoryLeafId) @@ -406,19 +339,10 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI } else { param.ProductFormatNew = storeSku.TiktokAttribute } - // 获取品牌 param.StandardBrandId = 789194134 // 默认品牌京西菜市 - //tiktokResult, err := api.EditStoreCommodity(param) // 创建主商品 - //if err != nil { - // failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) - // storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID) - // continue - //} - // 修改商品 - //param.FreightId = freightId param.ProductId = utils.Str2Int64(storeSku.VendorMainId) param.MainProductId = utils.Str2Int64(storeSku.VendorMainId) param.SpecPrices = GetSpecPrices(param.Specs, vendorStoreID, param.MainProductId, storeSku) @@ -441,6 +365,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI continue } + // 主商品修改之后需要审核,审核通过之后在分配 if _, err := api.BatchRedistributeStoreProduct(&superm_product_batchRedistributeStoreProduct_request.TaskParams{ MainProductId: param.MainProductId, AddStoreIds: []int64{param.StoreId}, @@ -448,13 +373,13 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI }); err != nil { failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID) - continue + if err := dao.CreateThingMap(int64(storeSku.SkuID), storeSku.VendorMainId, storeDetail.VendorOrgCode+"|"+vendorStoreID, storeSku.VendorSkuAttrId, model.ThingTypeSku, model.SyncFlagNewMask); err != nil { + failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) + if storeSku.VendorSkuID == "" { + storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID) + } + } } - //if err := api.EditStoreCommodity(param); err != nil { - // failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) - // storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID) - // continue - //} } return @@ -466,6 +391,64 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI return failedList, err } +func createChildrenProduct() { + +} + +func getFreightIdAndSaleLimitId(api *tiktokShop.API, db *dao.DaoDB, storeDetail *dao.StoreDetail, vendorStoreID string) (freightId, saleLimitId int64, err error) { + temp, err := dao.QueryStoreBindInfo(storeDetail.Store.ID) + if err != nil || temp == nil || temp.ID == 0 { + // 运费模板 + freightId, err = GetDeliveryTemp(api, vendorStoreID, storeDetail) + if err != nil { + return 0, 0, err + } + // 获取门店限售模板 + saleLimitId, err = CreateSaleTemp(utils.Str2Int64(vendorStoreID), api) + if err != nil { + return 0, 0, err + } + // 保存数据库 + freightTemplate := &model.FreightTemplate{ + StoreID: storeDetail.Store.ID, + VendorStoreID: storeDetail.VendorStoreID, + TemplateID: freightId, + WarehouseID: 0, + FenceID: "", + TradeLimitID: saleLimitId, + } + err = dao.CreateEntity(db, freightTemplate) + } else { + if temp.TemplateID != 0 { + freightId = temp.TemplateID + } else { + // 运费模板 + freightId, err = GetDeliveryTemp(api, vendorStoreID, storeDetail) + if err != nil { + return 0, 0, err + } + temp.TemplateID = freightId + _, err = dao.UpdateEntity(db, temp, "TemplateID") + dao.FreightTemplateMap[temp.StoreID] = temp + } + + if temp.TradeLimitID != 0 { + saleLimitId = temp.TradeLimitID + } else { + // 获取门店限售模板 + saleLimitId, err = CreateSaleTemp(utils.Str2Int64(vendorStoreID), api) + if err != nil { + return 0, 0, err + } + temp.TradeLimitID = saleLimitId + _, err = dao.UpdateEntity(db, temp, "TradeLimitID") + dao.FreightTemplateMap[temp.StoreID] = temp + } + } + + return freightId, saleLimitId, nil +} + // CreateSaleTemp 创建限售模板 func CreateSaleTemp(storeId int64, api *tiktokShop.API) (int64, error) { // 获取限售模板 From 231b009dfbca2193c0277608b178b11d2b4b5444 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 14 Dec 2022 10:41:07 +0800 Subject: [PATCH 10/78] 1 --- business/partner/purchase/jd/sku2.go | 4 +++- business/partner/purchase/jdshop/store_sku.go | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/business/partner/purchase/jd/sku2.go b/business/partner/purchase/jd/sku2.go index 06754975a..74dc5436c 100644 --- a/business/partner/purchase/jd/sku2.go +++ b/business/partner/purchase/jd/sku2.go @@ -193,6 +193,7 @@ func skuInfo2Param(ctx *jxcontext.Context, sku *dao.StoreSkuSyncInfo) (param *jd } func (p *PurchaseHandler) CreateSku2(ctx *jxcontext.Context, sku *dao.StoreSkuSyncInfo) (err error) { + globals.SugarLogger.Debugf("是不是正儿八经的京东商城%s", "CreateSku2") param := skuInfo2Param(ctx, sku) if globals.EnableJdStoreWrite { sku.VendorSkuID, err = getAPI(sku.VendorOrgCode).AddSku2(param) @@ -218,6 +219,7 @@ func (p *PurchaseHandler) CreateSku2(ctx *jxcontext.Context, sku *dao.StoreSkuSy } func (p *PurchaseHandler) UpdateSku2(ctx *jxcontext.Context, sku *dao.StoreSkuSyncInfo) (err error) { + globals.SugarLogger.Debugf("是不是正儿八经的京东商城%s", "UpdateSku2") param := skuInfo2Param(ctx, sku) if globals.EnableJdStoreWrite { _, err = getAPI(sku.VendorOrgCode).UpdateSku2(param) @@ -226,7 +228,7 @@ func (p *PurchaseHandler) UpdateSku2(ctx *jxcontext.Context, sku *dao.StoreSkuSy } func (p *PurchaseHandler) DeleteSku2(ctx *jxcontext.Context, vendorOrgCode string, sku *partner.StoreSkuInfo) (err error) { - + globals.SugarLogger.Debugf("是不是正儿八经的京东商城%s", "DeleteSku2") // 京东到家只能通过商家ID删除SKU,如果没有的话,先绑定,再删除 if sku.SkuID == 0 { skuPairList := []*jdapi.SkuIDPair{ diff --git a/business/partner/purchase/jdshop/store_sku.go b/business/partner/purchase/jdshop/store_sku.go index 4aa6cc6dd..16e3adf13 100644 --- a/business/partner/purchase/jdshop/store_sku.go +++ b/business/partner/purchase/jdshop/store_sku.go @@ -33,7 +33,7 @@ var ( ) func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*dao.StoreSkuSyncInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) { - globals.SugarLogger.Debugf("是不是正儿八经的京东商城%s", "1111111111111111111111111") + globals.SugarLogger.Debugf("是不是正儿八经的京东商城%s", "CreateStoreSkus") if globals.EnableJdShopWrite { if vendorStoreID == model.JdShopMainVendorStoreID { for _, v := range storeSkuList { @@ -300,6 +300,7 @@ func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, v } func (p *PurchaseHandler) UpdateStoreSkus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*dao.StoreSkuSyncInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) { + globals.SugarLogger.Debugf("是不是正儿八经的京东商城%s", "UpdateStoreSkus") if globals.EnableJdShopWrite && vendorStoreID == model.JdShopMainVendorStoreID { if vendorStoreID == model.JdShopMainVendorStoreID { for _, v := range storeSkuList { @@ -462,6 +463,7 @@ func (p *PurchaseHandler) UpdateStoreSkus(ctx *jxcontext.Context, storeID int, v } func (p *PurchaseHandler) DeleteStoreSkus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) { + globals.SugarLogger.Debugf("是不是正儿八经的京东商城%s", "DeleteStoreSkus") if globals.EnableJdShopWrite && vendorStoreID == model.JdShopMainVendorStoreID { for _, v := range storeSkuList { if v.IsDeletedBySku { From 4d12de8c0403d2fdc106b71f3542d044155571b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 14 Dec 2022 10:55:33 +0800 Subject: [PATCH 11/78] 1 --- business/jxstore/cms/sync_store_sku.go | 1 + 1 file changed, 1 insertion(+) diff --git a/business/jxstore/cms/sync_store_sku.go b/business/jxstore/cms/sync_store_sku.go index 565c86484..07282eda7 100644 --- a/business/jxstore/cms/sync_store_sku.go +++ b/business/jxstore/cms/sync_store_sku.go @@ -438,6 +438,7 @@ func isSkuLockTimeValid(sku *dao.StoreSkuSyncInfo) bool { } func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag int, isFull bool, vendorID, storeID int, vendorOrgCode string, nameIDs, skuIDs, excludeSkuIDs []int, useVendorPriceDirectly, isContinueWhenError bool) (err error) { + globals.SugarLogger.Debugf("=是不是正儿八经的京东商城 %d,%d,%s,%s", vendorID, storeID, vendorOrgCode, utils.Format4Output(skuIDs, false)) db := dao.GetDB() storeDetail, err := dao.GetStoreDetail(db, storeID, vendorID, vendorOrgCode) if err != nil { From cf51a536164dfd87a3862b669f26b974e56a53a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 14 Dec 2022 11:28:06 +0800 Subject: [PATCH 12/78] 1 --- business/jxstore/cms/sync_store_sku.go | 1 - business/partner/purchase/tiktok_store/store_sku2_utils.go | 7 +------ 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/business/jxstore/cms/sync_store_sku.go b/business/jxstore/cms/sync_store_sku.go index 07282eda7..565c86484 100644 --- a/business/jxstore/cms/sync_store_sku.go +++ b/business/jxstore/cms/sync_store_sku.go @@ -438,7 +438,6 @@ func isSkuLockTimeValid(sku *dao.StoreSkuSyncInfo) bool { } func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag int, isFull bool, vendorID, storeID int, vendorOrgCode string, nameIDs, skuIDs, excludeSkuIDs []int, useVendorPriceDirectly, isContinueWhenError bool) (err error) { - globals.SugarLogger.Debugf("=是不是正儿八经的京东商城 %d,%d,%s,%s", vendorID, storeID, vendorOrgCode, utils.Format4Output(skuIDs, false)) db := dao.GetDB() storeDetail, err := dao.GetStoreDetail(db, storeID, vendorID, vendorOrgCode) if err != nil { diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index c0bbfff7e..7da7003b8 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -238,19 +238,16 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI } else { // 本地不存在,线上存在.直接创建子商品保存本地同步记录 var childrenProductId int64 = 0 - var syncStatus int8 = 0 if mainOrderDetail.CheckStatus == 3 { childrenProductId, err = api.CreateSubProduct(mainOrderDetail.MainProductId, utils.Str2Int64(vendorStoreID)) if err != nil { - syncStatus = model.SyncFlagNewMask failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) if storeSku.VendorSkuID == "" { storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID) } } } - - if err := dao.CreateThingMap(int64(storeSku.SkuID), mainOrderDetail.ProductIdStr, storeDetail.VendorOrgCode+"|"+vendorStoreID, storeSku.VendorSkuAttrId, model.ThingTypeSku, syncStatus); err != nil { + if err := dao.CreateThingMap(int64(storeSku.SkuID), mainOrderDetail.ProductIdStr, storeDetail.VendorOrgCode, storeSku.VendorSkuAttrId, model.ThingTypeSku, 0); err != nil { failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) if storeSku.VendorSkuID == "" { storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID) @@ -266,9 +263,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI storeSku.VendorSkuID = utils.Int64ToStr(childrenProductId) // 子商品主id } } else { - if localThing[0].SyncStatus != model.NO { - } // 主商品存在,直接同步子商品 childrenProductId, err := api.CreateSubProduct(utils.Str2Int64(localThing[0].VendorThingID), utils.Str2Int64(vendorStoreID)) if err != nil { From 0c2026f4fd429c1ede563c17b34310ceb43e4ba6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 14 Dec 2022 11:30:32 +0800 Subject: [PATCH 13/78] 1 --- business/jxcallback/scheduler/basesch/basesch.go | 1 - business/jxcallback/scheduler/basesch/basesch_ext.go | 2 -- business/jxstore/cms/sync.go | 1 - business/partner/delivery/rider.go | 1 - business/partner/purchase/jdshop/store_sku.go | 4 ---- business/partner/purchase/mtwm/store_sku2.go | 1 - 6 files changed, 10 deletions(-) diff --git a/business/jxcallback/scheduler/basesch/basesch.go b/business/jxcallback/scheduler/basesch/basesch.go index f8b54cf24..863c9a35c 100644 --- a/business/jxcallback/scheduler/basesch/basesch.go +++ b/business/jxcallback/scheduler/basesch/basesch.go @@ -223,7 +223,6 @@ func (c *BaseScheduler) CreateWaybill(platformVendorID int, order *model.GoodsOr if c.IsReallyCallPlatformAPI { // 美团配送订单生成,配送费计算 bill, err = handlerInfo.Handler.CreateWaybill(order, maxDeliveryFee) - globals.SugarLogger.Debugf("====================bill %s", utils.Format4Output(bill, false)) if err != nil { globals.SugarLogger.Infof("CreateWaybill failed orderID:%s vendorID:%d with error:%v", order.VendorOrderID, platformVendorID, err) } else { diff --git a/business/jxcallback/scheduler/basesch/basesch_ext.go b/business/jxcallback/scheduler/basesch/basesch_ext.go index 15f06a20d..68f8391f8 100644 --- a/business/jxcallback/scheduler/basesch/basesch_ext.go +++ b/business/jxcallback/scheduler/basesch/basesch_ext.go @@ -53,8 +53,6 @@ func (c *BaseScheduler) CreateWaybillOnProviders(ctx *jxcontext.Context, order * } } } - globals.SugarLogger.Debugf("===========bills 11 %s ", utils.Format4Output(bills, false)) - globals.SugarLogger.Debugf("===========bills 11 %s ", utils.Format4Output(errList.GetErrListAsOne(), false)) if len(bills) > 0 { err = errList.GetErrListAsOne() if err != nil { diff --git a/business/jxstore/cms/sync.go b/business/jxstore/cms/sync.go index edb3d227b..1c1948e6e 100644 --- a/business/jxstore/cms/sync.go +++ b/business/jxstore/cms/sync.go @@ -262,7 +262,6 @@ func (v *VendorSync) SyncStore2(ctx *jxcontext.Context, db *dao.DaoDB, vendorIDs failedList = putils.GetErrMsg2FailedSingleList(nil, err, storeMap.StoreID, model.VendorChineseNames[storeMap.VendorID], "删除门店") } } else { - globals.SugarLogger.Debugf("3.UpdateStore") if err = handler.UpdateStore(db2, storeMap.StoreID, userName); err == nil { resultList = append(resultList, 1) } else { diff --git a/business/partner/delivery/rider.go b/business/partner/delivery/rider.go index 48f927eab..cc44f1e9c 100644 --- a/business/partner/delivery/rider.go +++ b/business/partner/delivery/rider.go @@ -151,7 +151,6 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) { } func PullTiktokRiderInfo(riderInfo *mtpsapi.RiderInfo) { - globals.SugarLogger.Debugf("==================riderInfo:%s", utils.Format4Output(riderInfo, false)) switch riderInfo.LogisticsStatus { case 5: // 呼叫骑手 riderInfo.LogisticsStatus = 0 diff --git a/business/partner/purchase/jdshop/store_sku.go b/business/partner/purchase/jdshop/store_sku.go index 16e3adf13..2a756c3a0 100644 --- a/business/partner/purchase/jdshop/store_sku.go +++ b/business/partner/purchase/jdshop/store_sku.go @@ -33,7 +33,6 @@ var ( ) func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*dao.StoreSkuSyncInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) { - globals.SugarLogger.Debugf("是不是正儿八经的京东商城%s", "CreateStoreSkus") if globals.EnableJdShopWrite { if vendorStoreID == model.JdShopMainVendorStoreID { for _, v := range storeSkuList { @@ -44,8 +43,6 @@ func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, v //flag2 := false //var wareStatusUpdateWareID string result, err := getAPI(v.VendorOrgCode).SearchWare4Valid(name, 1, 100) // 搜索有效商品 - globals.SugarLogger.Debugf("========result %s", utils.Format4Output(result, false)) - globals.SugarLogger.Debugf("========result %s", err) if err != nil { failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品") return failedList, err @@ -463,7 +460,6 @@ func (p *PurchaseHandler) UpdateStoreSkus(ctx *jxcontext.Context, storeID int, v } func (p *PurchaseHandler) DeleteStoreSkus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) { - globals.SugarLogger.Debugf("是不是正儿八经的京东商城%s", "DeleteStoreSkus") if globals.EnableJdShopWrite && vendorStoreID == model.JdShopMainVendorStoreID { for _, v := range storeSkuList { if v.IsDeletedBySku { diff --git a/business/partner/purchase/mtwm/store_sku2.go b/business/partner/purchase/mtwm/store_sku2.go index e72edbb67..f846cb18f 100644 --- a/business/partner/purchase/mtwm/store_sku2.go +++ b/business/partner/purchase/mtwm/store_sku2.go @@ -197,7 +197,6 @@ func (p *PurchaseHandler) DeleteStoreCategory(ctx *jxcontext.Context, storeID in //批量更新商品进货价 func BatchSetRestockingPrice(ctx *jxcontext.Context, storeID int, vendorStoreID string, param []*mtwmapi.SpuData) error { - globals.SugarLogger.Debugf("test getStoreVendorOrgCode(storeID)==========%s", getStoreVendorOrgCode(storeID)) if err := getAPI(getStoreVendorOrgCode(storeID), storeID, "").BatchSetRestockingPrice(ctx.GetTrackInfo(), vendorStoreID, param); err != nil { return err } From dabbd8a5b1df6a725fe6609bdef0ef37110856a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 14 Dec 2022 13:42:36 +0800 Subject: [PATCH 14/78] 1 --- business/model/dao/thing_map.go | 8 ++--- .../purchase/tiktok_store/store_sku2_utils.go | 30 ++++++++++++------- 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/business/model/dao/thing_map.go b/business/model/dao/thing_map.go index 24176ed83..bc51fa0b8 100644 --- a/business/model/dao/thing_map.go +++ b/business/model/dao/thing_map.go @@ -27,20 +27,16 @@ func GetThingMapList(db *DaoDB, thingType int, vendorIDs, thingIDs []int, vendor return cats, err } -func CreateThingMap(thingId int64, vendorThingID, appOrgCode, skuAttrId string, thingType, syncStatus int8) error { +func CreateThingMap(thingId int64, vendorThingID, appOrgCode, err string, thingType, syncStatus int8) error { thingMap := &model.ThingMap{ ThingID: thingId, ThingType: thingType, VendorID: model.VendorIDDD, VendorOrgCode: appOrgCode, VendorThingID: vendorThingID, - Remark: skuAttrId, + Remark: err, SyncStatus: syncStatus, } - // 正常来说这个skuAttrId 不应该为空 - if skuAttrId == "" { - thingMap.Remark = "这个值不应该为空才对" - } WrapAddIDCULDEntity(thingMap, "jxadmin") return CreateEntity(GetDB(), thingMap) diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index 7da7003b8..ca333d5ed 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -152,7 +152,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI OuterProductId: utils.Int2Str(storeSku.SkuID), // 本地skuId为外部商品id } if len(param.Name) < 23 { // 中文字符一个汉字三个长度符号/数字/字母两个长度,商品名称不能大于 - param.Name += "【惊喜到家】" + param.Name += "【同城配送】" } else if len(param.Name) > 90 { // 抖音最大60个字符,三十个汉字 param.Name = param.Name[0:90] } @@ -218,11 +218,15 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI if len(localThing) == 0 { mainOrderDetail, err := api.GetSkuDetailLocalID("", utils.Int2Str(storeSku.SkuID)) if err != nil || mainOrderDetail == nil || mainOrderDetail.ProductIdStr == "" { + globals.SugarLogger.Debugf("========result %s", "本地不存在,线上也不存在") tiktokResult, err := api.CreateStoreCommodity(param) // 创建主商品,同步主商品 + globals.SugarLogger.Debugf("========result %s", utils.Format4Output(tiktokResult, false)) + globals.SugarLogger.Debugf("========err %s", utils.Format4Output(err, false)) if err != nil { - if err := dao.CreateThingMap(int64(storeSku.SkuID), utils.Int64ToStr(tiktokResult.ProductId), storeDetail.VendorOrgCode, storeSku.VendorSkuAttrId, model.ThingTypeSku, model.SyncFlagNewMask); err != nil { + if err := dao.CreateThingMap(int64(storeSku.SkuID), utils.Int64ToStr(tiktokResult.ProductId), storeDetail.VendorOrgCode, err.Error(), model.ThingTypeSku, model.SyncFlagNewMask); err != nil { failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) } + } else { failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID) continue @@ -236,15 +240,19 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI storeSku.VendorSkuAttrId = strings.Join(attrId, ",") // 属性id skuID storeSku.VendorSonSkuID = utils.Int2Str(storeSku.SkuID) // 还没同步子商品 } else { + globals.SugarLogger.Debugf("========result %s", "本地不存在,线上存在,创建本地主品,分配子商品") // 本地不存在,线上存在.直接创建子商品保存本地同步记录 var childrenProductId int64 = 0 - if mainOrderDetail.CheckStatus == 3 { - childrenProductId, err = api.CreateSubProduct(mainOrderDetail.MainProductId, utils.Str2Int64(vendorStoreID)) - if err != nil { - failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) - if storeSku.VendorSkuID == "" { - storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID) - } + if mainOrderDetail.CheckStatus != tiktokShop.SkuCheckStatusPass && mainOrderDetail.CheckStatus != tiktokShop.SkuCheckStatusPassNotPutOn { + failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, fmt.Errorf("主商品审核中或审核失败:[%d]", storeSku.SkuID), storeID, model.VendorChineseNames[model.VendorIDDD], syncType) + continue + } + + childrenProductId, err = api.CreateSubProduct(mainOrderDetail.MainProductId, utils.Str2Int64(vendorStoreID)) + if err != nil { + failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) + if storeSku.VendorSkuID == "" { + storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID) } } if err := dao.CreateThingMap(int64(storeSku.SkuID), mainOrderDetail.ProductIdStr, storeDetail.VendorOrgCode, storeSku.VendorSkuAttrId, model.ThingTypeSku, 0); err != nil { @@ -263,7 +271,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI storeSku.VendorSkuID = utils.Int64ToStr(childrenProductId) // 子商品主id } } else { - + globals.SugarLogger.Debugf("========result %s", "本地存在,直接创建子商品") // 主商品存在,直接同步子商品 childrenProductId, err := api.CreateSubProduct(utils.Str2Int64(localThing[0].VendorThingID), utils.Str2Int64(vendorStoreID)) if err != nil { @@ -309,7 +317,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI } if len(param.Name) < 23 { // 中文字符一个汉字三个长度符号/数字/字母两个长度,商品名称不能大于 - param.Name += "【惊喜到家】" + param.Name += "【同城配送】" } else if len(param.Name) > 90 { // 抖音最大60个字符,三十个汉字 param.Name = param.Name[0:90] } From aa83c27f219ff5f39bfc40f92e5b196c68eb0de5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 14 Dec 2022 14:28:48 +0800 Subject: [PATCH 15/78] 1 --- business/model/dao/dao_bz.go | 1 + business/partner/purchase/tiktok_store/store_sku2_utils.go | 7 +++---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/business/model/dao/dao_bz.go b/business/model/dao/dao_bz.go index 3c6fc8fd2..b33750322 100644 --- a/business/model/dao/dao_bz.go +++ b/business/model/dao/dao_bz.go @@ -79,6 +79,7 @@ func BatchUpdateEntityByKV(db *DaoDB, items []*KVUpdateItem) (num int64, err err if r := recover(); r != nil { if item != nil { var bindID int64 + globals.SugarLogger.Debugf("========item.item %s", utils.Format4Output(item.Item, false)) value := refutil.CheckAndGetStructValue(item.Item).FieldByName(model.FieldID) if value.IsValid() { bindID = value.Int() diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index ca333d5ed..fd89ea3ef 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -223,14 +223,13 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI globals.SugarLogger.Debugf("========result %s", utils.Format4Output(tiktokResult, false)) globals.SugarLogger.Debugf("========err %s", utils.Format4Output(err, false)) if err != nil { - if err := dao.CreateThingMap(int64(storeSku.SkuID), utils.Int64ToStr(tiktokResult.ProductId), storeDetail.VendorOrgCode, err.Error(), model.ThingTypeSku, model.SyncFlagNewMask); err != nil { - failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) - } - } else { failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID) continue } + if err := dao.CreateThingMap(int64(storeSku.SkuID), utils.Int64ToStr(tiktokResult.ProductId), storeDetail.VendorOrgCode, "本地不存在,线上也不存在", model.ThingTypeSku, model.SyncFlagNewMask); err != nil { + failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) + } var attrId []string for _, v := range tiktokResult.Sku { From 812b7142a96541234e94adfa4e2ae7fc0b855a3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 14 Dec 2022 14:31:48 +0800 Subject: [PATCH 16/78] 1 --- business/jxstore/cms/sync_store_sku.go | 1 + 1 file changed, 1 insertion(+) diff --git a/business/jxstore/cms/sync_store_sku.go b/business/jxstore/cms/sync_store_sku.go index 565c86484..5e0f078d0 100644 --- a/business/jxstore/cms/sync_store_sku.go +++ b/business/jxstore/cms/sync_store_sku.go @@ -743,6 +743,7 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag } } successList := putils.UnselectStoreSkuSyncListByVendorSkuIDs(batchedStoreSkuList, GetVendorSkuIDList(failedList)) + globals.SugarLogger.Debugf("successList ============== %s", utils.Format4Output(successList, false)) if len(successList) > 0 { _, err := updateStoreSku(dao.GetDB(), vendorID, successList, model.SyncFlagNewMask) if err != nil { From fc5a93a21dfc42ce050db6c313f5df04e430119d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 14 Dec 2022 14:37:56 +0800 Subject: [PATCH 17/78] 1 --- business/partner/purchase/tiktok_store/store_sku2_utils.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index fd89ea3ef..c1d299283 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -235,7 +235,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI for _, v := range tiktokResult.Sku { attrId = append(attrId, utils.Int64ToStr(v.SkuId)) } - storeSku.VendorMainId = mainOrderDetail.ProductIdStr + storeSku.VendorMainId = utils.Int64ToStr(tiktokResult.ProductId) storeSku.VendorSkuAttrId = strings.Join(attrId, ",") // 属性id skuID storeSku.VendorSonSkuID = utils.Int2Str(storeSku.SkuID) // 还没同步子商品 } else { From 1d3f68c1035c12d1d5266aa9befe84247c4de361 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 14 Dec 2022 16:35:38 +0800 Subject: [PATCH 18/78] 1 --- business/model/model.go | 6 +- .../purchase/tiktok_store/store_sku2.go | 166 +++++------------- .../purchase/tiktok_store/store_sku2_utils.go | 113 ++++++------ 3 files changed, 104 insertions(+), 181 deletions(-) diff --git a/business/model/model.go b/business/model/model.go index f4fe2c241..bd40a0331 100644 --- a/business/model/model.go +++ b/business/model/model.go @@ -93,9 +93,9 @@ const ( SyncFlagSeqMask = 64 // 门店商家分类下的排序顺序 // combine - SyncFlagStoreSkuOnlyMask = SyncFlagSaleMask | SyncFlagPriceMask | SyncFlagStockMask - SyncFlagStoreSkuModifiedMask = SyncFlagStoreSkuOnlyMask | SyncFlagModifiedMask - SyncFlagChangedMask = SyncFlagSpecMask | SyncFlagNewMask | SyncFlagDeletedMask | SyncFlagStoreSkuModifiedMask + SyncFlagStoreSkuOnlyMask = SyncFlagSaleMask | SyncFlagPriceMask | SyncFlagStockMask // 同步标志存储仅Sku掩码 + SyncFlagStoreSkuModifiedMask = SyncFlagStoreSkuOnlyMask | SyncFlagModifiedMask // 同步标志存储Sku修改掩码 + SyncFlagChangedMask = SyncFlagSpecMask | SyncFlagNewMask | SyncFlagDeletedMask | SyncFlagStoreSkuModifiedMask // 同步标志已更改掩码 ) func IsSyncStatusNew(syncStatus int8) bool { diff --git a/business/partner/purchase/tiktok_store/store_sku2.go b/business/partner/purchase/tiktok_store/store_sku2.go index dc1c3216b..6dbbbf3c7 100644 --- a/business/partner/purchase/tiktok_store/store_sku2.go +++ b/business/partner/purchase/tiktok_store/store_sku2.go @@ -1,7 +1,6 @@ package tiktok_store import ( - "errors" "fmt" "git.rosy.net.cn/baseapi/platformapi/mtwmapi" product_listV2_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_listV2/request" @@ -76,62 +75,6 @@ func (p *PurchaseHandler) IsErrCategoryNotExist(err error) (isNotExist bool) { } func (p *PurchaseHandler) CreateStoreCategory(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeCat *dao.SkuStoreCatInfo) (err error) { - //level := 1 - //if storeCat.ParentCatName != "" { - // level = 2 - //} - //originName := "" - //catName := storeCat.Name - //catCode := storeCat.ID - // - //subCatName := "" - //subCatCode := 0 - //if storeCat.CatSyncStatus&model.SyncFlagNewMask == 0 { - // // 修改一级分类 - // originName = storeCat.VendorCatID - //} - //if level == 2 { // 二级分类 - // // 创建二级分类 - // originName = storeCat.ParentVendorCatID - // catName = storeCat.ParentCatName - // catCode = storeCat.ParentID - // subCatName = storeCat.Name - // subCatCode = storeCat.ID - // if storeCat.CatSyncStatus&model.SyncFlagNewMask == 0 { - // // 修改二级分类 - // originName = storeCat.VendorCatID - // catName = storeCat.Name - // catCode = storeCat.ID - // subCatName = "" - // subCatCode = 0 - // } - //} - //if catName == "" { - // panic("catName is empty") - //} - //catName = utils.FilterEmoji(catName) - //subCatName = utils.FilterEmoji(subCatName) - // vendorStoreID, originName, catCode, catName, subCatCode, subCatName, storeCat.Seq) - //if globals.EnableMtwmStoreWrite { - // // err = api.MtwmAPI.RetailCatUpdate2(vendorStoreID, tryCatName2Code(originName), originName, catCode2Str(catCode), catName, catCode2Str(subCatCode), subCatName, storeCat.Seq) - // param4Update := &mtwmapi.Param4UpdateCat{ - // CategoryCodeOrigin: tryCatName2Code(originName), - // CategoryNameOrigin: originName, - // CategoryCode: catCode2Str(catCode), - // SecondaryCategoryCode: catCode2Str(subCatCode), - // SecondaryCategoryName: subCatName, - // Sequence: storeCat.Seq, - // } - // err = getAPI(storeCat.VendorOrgCode, storeID, vendorStoreID).RetailCatUpdate(vendorStoreID, catName, param4Update) - // if storeCat.CatSyncStatus&model.SyncFlagNewMask == 0 && p.IsErrCategoryNotExist(err) && originName != "" { // 修改分类名,但分类不存在 - // storeCat.CatSyncStatus |= model.SyncFlagNewMask - // err = p.CreateStoreCategory(ctx, storeID, vendorStoreID, storeCat) - // } - //} - //if err == nil { - // // storeCat.VendorCatID = utils.FilterEmoji(storeCat.Name) - // storeCat.VendorCatID = utils.Int2Str(storeCat.ID) - //} return err } @@ -140,23 +83,6 @@ func (p *PurchaseHandler) UpdateStoreCategory(ctx *jxcontext.Context, storeID in } func (p *PurchaseHandler) DeleteStoreCategory(ctx *jxcontext.Context, storeID int, vendorStoreID, vendorCatID string, level int) (err error) { - //if false { - // if globals.EnableMtwmStoreWrite { - // err = getAPI(getStoreVendorOrgCode(storeID), storeID, vendorStoreID).RetailCatDelete(vendorStoreID, tryCatName2Code(vendorCatID), vendorCatID) - // } - //} else { - // var catCodes []string - // if catCode := tryCatName2Code(vendorCatID); catCode != "" { - // catCodes = []string{catCode} - // } - // if globals.EnableMtwmStoreWrite { - // if level == 1 { - // err = getAPI(getStoreVendorOrgCode(storeID), storeID, vendorStoreID).RetailCatSkuBatchDelete2(ctx.GetTrackInfo(), vendorStoreID, catCodes, []string{vendorCatID}, nil, nil, nil) - // } else { - // err = getAPI(getStoreVendorOrgCode(storeID), storeID, vendorStoreID).RetailCatSkuBatchDelete2(ctx.GetTrackInfo(), vendorStoreID, nil, nil, catCodes, []string{vendorCatID}, nil) - // } - // } - //} return err } @@ -181,22 +107,12 @@ func (p *PurchaseHandler) IsErrSkuNotExist(err error) (isNotExist bool) { // } func (p *PurchaseHandler) UpdateStoreSkus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*dao.StoreSkuSyncInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) { failedList, err = p.createOrUpdateStoreSkus(ctx, storeID, vendorStoreID, storeSkuList, false) - // if err == nil && vendorStoreID == specialStoreID { - // for i := 0; i < 2; i++ { - // p.createOrUpdateStoreSkus(ctx, storeID, vendorStoreID, duplicateStoreSkuList(storeSkuList, i+1), true) - // } - // } return failedList, err } // CreateStoreSkus 门店创建商品 func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*dao.StoreSkuSyncInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) { failedList, err = p.createOrUpdateStoreSkus(ctx, storeID, vendorStoreID, storeSkuList, true) - //if err == nil && vendorStoreID == specialStoreID { - // for i := 0; i < 2; i++ { - // p.createOrUpdateStoreSkus(ctx, storeID, vendorStoreID, duplicateStoreSkuList(storeSkuList, i+1), true) - // } - //} return failedList, err } @@ -207,7 +123,7 @@ func (p *PurchaseHandler) DeleteStoreSkus(ctx *jxcontext.Context, storeID int, v continue } if err = getAPI(storeSkuList[0].VendorOrgCode, storeID, vendorStoreID).DeleteStoreCommodity(utils.Str2Int64(v.VendorSkuID)); 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], "删除子商品")...) } dao.DeleteThingToTiktokMapList(model.VendorIDDD, v.VendorMainId) } @@ -224,16 +140,16 @@ func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, vendorOr if status == model.SkuStatusNormal { // 下架 for _, v := range storeSkuList { // 子品商品id获取skuId - childrenSku, err := api.GetSkuDetail(v.VendorSkuID, "") - if err != nil { - return nil, err - } - if len(childrenSku.SpecPrices) <= 0 { - return nil, errors.New("子品商品详情获取失败") - } + //childrenSku, err := api.GetSkuDetail(v.VendorSkuID, "") + //if err != nil { + // return nil, err + //} + //if len(childrenSku.SpecPrices) <= 0 { + // return nil, errors.New("子品商品详情获取失败") + //} param := &sku_syncStock_request.SkuSyncStockParam{ - SkuId: childrenSku.SpecPrices[0].SkuId, + //SkuId: childrenSku.SpecPrices[0].SkuId, ProductId: utils.Str2Int64(v.VendorSkuID), Incremental: false, IdempotentId: "", @@ -241,23 +157,22 @@ func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, vendorOr OutWarehouseId: vendorStoreID, } 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)))...) - } else { - 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)))...) } + } } else { // 上架 for _, v := range storeSkuList { // 子品商品id获取skuId - childrenSku, err := api.GetSkuDetail(v.VendorSkuID, "") - if err != nil { - return nil, err - } - if len(childrenSku.SpecPrices) <= 0 { - return nil, errors.New("子品商品详情获取失败") - } + //childrenSku, err := api.GetSkuDetail(v.VendorSkuID, "") + //if err != nil { + // return nil, err + //} + //if len(childrenSku.SpecPrices) <= 0 { + // return nil, errors.New("子品商品详情获取失败") + //} param := &sku_syncStock_request.SkuSyncStockParam{ - SkuId: childrenSku.SpecPrices[0].SkuId, + //SkuId: childrenSku.SpecPrices[0].SkuId, ProductId: utils.Str2Int64(v.VendorSkuID), Incremental: false, IdempotentId: "", @@ -265,9 +180,7 @@ func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, vendorOr OutWarehouseId: vendorStoreID, } 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)))...) - } else { - 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("下架商品,库存值为0失败.%s", utils.Format4Output(param, false)))...) } } } @@ -282,20 +195,20 @@ func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, vendorOr 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) for _, v := range storeSkuList { - // 更新主品 (暂不支持渠道主商品) + // 更新子品价格 err = api.EditPrice(&sku_editPrice_request.SkuEditPriceParam{ - Price: v.VendorPrice, - SkuId: utils.Str2Int64(v.VendorSkuAttrId), - ProductId: utils.Str2Int64(v.VendorMainId), + Price: v.VendorPrice, + //SkuId: utils.Str2Int64(v.VendorSkuAttrId), + ProductId: utils.Str2Int64(v.VendorSkuID), }) if 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], "同步子品价格异常")...) } // 更新子品 - if _, err := api.BatchApplyStoreProductPrice(utils.Str2Int64(v.VendorMainId)); err != nil { - failedList = append(failedList, putils.GetErrMsg2FailedSingleList(v, err, storeID, model.VendorChineseNames[model.VendorIDDD], "同步子品价格异常")...) - } + //if _, err := api.BatchApplyStoreProductPrice(utils.Str2Int64(v.VendorMainId)); err != nil { + // failedList = append(failedList, putils.GetErrMsg2FailedSingleList(v, err, storeID, model.VendorChineseNames[model.VendorIDDD], "同步子品价格异常")...) + //} //err = api.EditPrice(&sku_editPrice_request.SkuEditPriceParam{ // Price: v.VendorPrice, // SkuId: utils.Str2Int64(v.VendorSonSkuID), @@ -308,9 +221,9 @@ func (p *PurchaseHandler) UpdateStoreSkusPrice(ctx *jxcontext.Context, vendorOrg //} } - if len(failedList) > 0 { - err = nil - } + //if len(failedList) > 0 { + // err = nil + //} return failedList, err } @@ -318,22 +231,25 @@ func (p *PurchaseHandler) UpdateStoreSkusPrice(ctx *jxcontext.Context, vendorOrg func (p *PurchaseHandler) UpdateStoreSkusStock(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) { tiktokApi := getAPI(storeSkuList[0].VendorOrgCode, storeID, vendorStoreID) for _, v := range storeSkuList { - err := tiktokApi.UpdateSkuStock(&sku_syncStock_request.SkuSyncStockParam{ - SkuId: utils.Str2Int64(v.VendorSkuAttrId), + stockNum := &sku_syncStock_request.SkuSyncStockParam{ + //SkuId: utils.Str2Int64(v.VendorSkuAttrId), ProductId: utils.Str2Int64(v.VendorSkuID), Incremental: false, IdempotentId: "", StockNum: int64(v.Stock), OutWarehouseId: vendorStoreID, - }) - if err != nil { + } + if stockNum.StockNum == 0 { + stockNum.StockNum = 99999 + } + + if err := tiktokApi.UpdateSkuStock(stockNum); err != nil { failedList = append(failedList, putils.GetErrMsg2FailedSingleList(v, err, storeID, model.VendorChineseNames[model.VendorIDDD], "更新库存错误")...) - } else { - failedList = append(failedList, putils.GetErrMsg2FailedSingleList(v, err, storeID, model.VendorChineseNames[model.VendorIDDD], "更新库存正常")...) } } - return p.UpdateStoreSkusPrice(ctx, vendorOrgCode, storeID, vendorStoreID, storeSkuList) + return failedList, err + //return p.UpdateStoreSkusPrice(ctx, vendorOrgCode, storeID, vendorStoreID, storeSkuList) } func (p *PurchaseHandler) GetStoreSkusFullInfo(ctx *jxcontext.Context, parentTask tasksch.ITask, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (skuNameList []*partner.SkuNameInfo, err error) { diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index c1d299283..349ddbd1e 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -14,7 +14,8 @@ import ( product_listV2_response "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_listV2/response" shop_bindStoreFreight_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/shop_bindStoreFreight/request" shop_bindStoreSaleLimit_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/shop_bindStoreSaleLimit/request" - superm_product_batchRedistributeStoreProduct_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/superm_product_batchRedistributeStoreProduct/request" + sku_editPrice_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/sku_editPrice/request" + sku_syncStock_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/sku_syncStock/request" trade_createTradeLimitTemplate_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/trade_createTradeLimitTemplate/request" tiktokShop "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/tiktok_api" "git.rosy.net.cn/baseapi/utils" @@ -178,7 +179,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI // param.CategoryLeafId = storeSku.VendorVendorCatID //} if param.CategoryLeafId == 0 { - failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, errors.New("当前商品本地未设置抖音分类/抖音推荐分类查询错误"), storeID, model.VendorChineseNames[model.VendorIDDD], syncType) + failedList = putils.GetErrMsg2FailedSingleList(storeSku, errors.New("当前商品本地未设置抖音分类/抖音推荐分类查询错误"), storeID, model.VendorChineseNames[model.VendorIDDD], syncType) continue } // 是否支持七天无理由 @@ -201,14 +202,14 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI } else { param.ProductFormatNew, err = MakeProductFormatNew(api, int64(storeSku.NameID), param.CategoryLeafId) if err != nil { - failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) + 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(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) + failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) continue } @@ -223,18 +224,19 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI globals.SugarLogger.Debugf("========result %s", utils.Format4Output(tiktokResult, false)) globals.SugarLogger.Debugf("========err %s", utils.Format4Output(err, false)) if err != nil { - failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) + failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID) continue } if err := dao.CreateThingMap(int64(storeSku.SkuID), utils.Int64ToStr(tiktokResult.ProductId), storeDetail.VendorOrgCode, "本地不存在,线上也不存在", model.ThingTypeSku, model.SyncFlagNewMask); err != nil { - failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) + failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) } var attrId []string for _, v := range tiktokResult.Sku { attrId = append(attrId, utils.Int64ToStr(v.SkuId)) } + storeSku.SkuSyncStatus = model.SyncFlagNewMask storeSku.VendorMainId = utils.Int64ToStr(tiktokResult.ProductId) storeSku.VendorSkuAttrId = strings.Join(attrId, ",") // 属性id skuID storeSku.VendorSonSkuID = utils.Int2Str(storeSku.SkuID) // 还没同步子商品 @@ -243,43 +245,51 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI // 本地不存在,线上存在.直接创建子商品保存本地同步记录 var childrenProductId int64 = 0 if mainOrderDetail.CheckStatus != tiktokShop.SkuCheckStatusPass && mainOrderDetail.CheckStatus != tiktokShop.SkuCheckStatusPassNotPutOn { - failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, fmt.Errorf("主商品审核中或审核失败:[%d]", storeSku.SkuID), storeID, model.VendorChineseNames[model.VendorIDDD], syncType) + failedList = putils.GetErrMsg2FailedSingleList(storeSku, fmt.Errorf("主商品审核中或审核失败:[%d]", storeSku.SkuID), storeID, model.VendorChineseNames[model.VendorIDDD], syncType) continue } childrenProductId, err = api.CreateSubProduct(mainOrderDetail.MainProductId, utils.Str2Int64(vendorStoreID)) if err != nil { - failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) - if storeSku.VendorSkuID == "" { - storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID) - } + failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) } if err := dao.CreateThingMap(int64(storeSku.SkuID), mainOrderDetail.ProductIdStr, storeDetail.VendorOrgCode, storeSku.VendorSkuAttrId, model.ThingTypeSku, 0); err != nil { - failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) - if storeSku.VendorSkuID == "" { - storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID) - } + failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) } + storeSku.VendorMainId = mainOrderDetail.ProductIdStr var attrId []string for _, v := range mainOrderDetail.SpecPrices { attrId = append(attrId, utils.Int64ToStr(v.SkuId)) } - storeSku.VendorSkuAttrId = strings.Join(attrId, ",") // 属性id skuID - storeSku.VendorSonSkuID = utils.Int64ToStr(childrenProductId) // (属性id skuID方案一)(自商品的商品id方案二) - storeSku.VendorSkuID = utils.Int64ToStr(childrenProductId) // 子商品主id + storeSku.VendorSkuAttrId = strings.Join(attrId, ",") // 属性id skuID + if childrenProductId > 0 { + storeSku.VendorSonSkuID = utils.Int64ToStr(childrenProductId) // (属性id skuID方案一)(自商品的商品id方案二) + storeSku.VendorSkuID = utils.Int64ToStr(childrenProductId) // 子商品主id + storeSku.SkuSyncStatus = 0 + 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 + } } } else { globals.SugarLogger.Debugf("========result %s", "本地存在,直接创建子商品") // 主商品存在,直接同步子商品 childrenProductId, err := api.CreateSubProduct(utils.Str2Int64(localThing[0].VendorThingID), utils.Str2Int64(vendorStoreID)) - if err != nil { - failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) - if storeSku.VendorSkuID == "" { - storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID) - } + if err != nil || childrenProductId == 0 { + failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) + storeSku.SkuSyncStatus = model.SyncFlagNewMask + storeSku.VendorSonSkuID = utils.Int64ToStr(childrenProductId) // (属性id skuID方案一)(自商品的商品id方案二) + storeSku.VendorSkuID = utils.Int64ToStr(childrenProductId) // 子商品主id + storeSku.VendorMainId = localThing[0].VendorThingID // 商品主id continue } + + // 同步价格,库存,上架 + failedList = upDateChildrenPriceStockLaunch(api, storeSku, childrenProductId, vendorStoreID, syncType) + storeSku.SkuSyncStatus = 0 storeSku.VendorSonSkuID = utils.Int64ToStr(childrenProductId) // (属性id skuID方案一)(自商品的商品id方案二) storeSku.VendorSkuID = utils.Int64ToStr(childrenProductId) // 子商品主id storeSku.VendorMainId = localThing[0].VendorThingID // 商品主id @@ -355,34 +365,6 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID) continue } - - // 门店商品同步,先删除同步商品,在重新分配该商品 - if _, err := api.BatchRedistributeStoreProduct(&superm_product_batchRedistributeStoreProduct_request.TaskParams{ - MainProductId: param.MainProductId, - AddStoreIds: nil, - DelStoreIds: []int64{param.StoreId}, - }); err != nil { - failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) - storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID) - continue - } - - // 主商品修改之后需要审核,审核通过之后在分配 - if _, err := api.BatchRedistributeStoreProduct(&superm_product_batchRedistributeStoreProduct_request.TaskParams{ - MainProductId: param.MainProductId, - AddStoreIds: []int64{param.StoreId}, - DelStoreIds: nil, - }); err != nil { - failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) - storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID) - if err := dao.CreateThingMap(int64(storeSku.SkuID), storeSku.VendorMainId, storeDetail.VendorOrgCode+"|"+vendorStoreID, storeSku.VendorSkuAttrId, model.ThingTypeSku, model.SyncFlagNewMask); err != nil { - failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) - if storeSku.VendorSkuID == "" { - storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID) - } - } - } - } return } @@ -393,8 +375,33 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI return failedList, err } -func createChildrenProduct() { - +func upDateChildrenPriceStockLaunch(api *tiktokShop.API, storeSku *dao.StoreSkuSyncInfo, childrenProductId int64, vendorStoreID, syncType string) (failedList []*partner.StoreSkuInfoWithErr) { + // 同步价格 + if err := api.EditPrice(&sku_editPrice_request.SkuEditPriceParam{ + Price: storeSku.VendorPrice, + ProductId: childrenProductId, + }); err != nil { + failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeSku.StoreID, model.VendorChineseNames[model.VendorIDDD], syncType) + } + // 同步库存 + paramStock := &sku_syncStock_request.SkuSyncStockParam{ + ProductId: childrenProductId, + Incremental: false, + IdempotentId: "", + StockNum: int64(storeSku.Stock), + OutWarehouseId: vendorStoreID, + } + if paramStock.StockNum == 0 { + paramStock.StockNum = 99999 + } + 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()))...) + } + // 上架 + 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()))...) + } + return failedList } func getFreightIdAndSaleLimitId(api *tiktokShop.API, db *dao.DaoDB, storeDetail *dao.StoreDetail, vendorStoreID string) (freightId, saleLimitId int64, err error) { From 2e6b08ce9f820dd720db2bc38f49a8dda947929c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 14 Dec 2022 17:26:47 +0800 Subject: [PATCH 19/78] 1 --- business/jxstore/cms/sync_store_sku.go | 1 - .../purchase/tiktok_store/store_sku2_utils.go | 37 +++++++++++-------- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/business/jxstore/cms/sync_store_sku.go b/business/jxstore/cms/sync_store_sku.go index 5e0f078d0..565c86484 100644 --- a/business/jxstore/cms/sync_store_sku.go +++ b/business/jxstore/cms/sync_store_sku.go @@ -743,7 +743,6 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag } } successList := putils.UnselectStoreSkuSyncListByVendorSkuIDs(batchedStoreSkuList, GetVendorSkuIDList(failedList)) - globals.SugarLogger.Debugf("successList ============== %s", utils.Format4Output(successList, false)) if len(successList) > 0 { _, err := updateStoreSku(dao.GetDB(), vendorID, successList, model.SyncFlagNewMask) if err != nil { diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index 349ddbd1e..34953de07 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -225,21 +225,22 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI globals.SugarLogger.Debugf("========err %s", utils.Format4Output(err, false)) if err != nil { failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) - storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID) continue } if err := dao.CreateThingMap(int64(storeSku.SkuID), utils.Int64ToStr(tiktokResult.ProductId), storeDetail.VendorOrgCode, "本地不存在,线上也不存在", model.ThingTypeSku, model.SyncFlagNewMask); err != nil { failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) } - var attrId []string - for _, v := range tiktokResult.Sku { - attrId = append(attrId, utils.Int64ToStr(v.SkuId)) - } - storeSku.SkuSyncStatus = model.SyncFlagNewMask - storeSku.VendorMainId = utils.Int64ToStr(tiktokResult.ProductId) - storeSku.VendorSkuAttrId = strings.Join(attrId, ",") // 属性id skuID - storeSku.VendorSonSkuID = utils.Int2Str(storeSku.SkuID) // 还没同步子商品 + //var attrId []string + //for _, v := range tiktokResult.Sku { + // attrId = append(attrId, utils.Int64ToStr(v.SkuId)) + //} + //storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID) + //storeSku.SkuSyncStatus = model.SyncFlagStoreSkuModifiedMask // 只创建主品,子品都没做 + //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 { globals.SugarLogger.Debugf("========result %s", "本地不存在,线上存在,创建本地主品,分配子商品") // 本地不存在,线上存在.直接创建子商品保存本地同步记录 @@ -249,12 +250,14 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI continue } + if err := dao.CreateThingMap(int64(storeSku.SkuID), mainOrderDetail.ProductIdStr, storeDetail.VendorOrgCode, storeSku.VendorSkuAttrId, model.ThingTypeSku, 0); err != nil { + failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) + } + childrenProductId, err = api.CreateSubProduct(mainOrderDetail.MainProductId, utils.Str2Int64(vendorStoreID)) if err != nil { failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) - } - if err := dao.CreateThingMap(int64(storeSku.SkuID), mainOrderDetail.ProductIdStr, storeDetail.VendorOrgCode, storeSku.VendorSkuAttrId, model.ThingTypeSku, 0); err != nil { - failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) + continue } storeSku.VendorMainId = mainOrderDetail.ProductIdStr @@ -266,12 +269,12 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI if childrenProductId > 0 { storeSku.VendorSonSkuID = utils.Int64ToStr(childrenProductId) // (属性id skuID方案一)(自商品的商品id方案二) storeSku.VendorSkuID = utils.Int64ToStr(childrenProductId) // 子商品主id - storeSku.SkuSyncStatus = 0 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 { @@ -280,7 +283,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI 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) - storeSku.SkuSyncStatus = model.SyncFlagNewMask + storeSku.SkuSyncStatus = model.SyncFlagStoreSkuModifiedMask storeSku.VendorSonSkuID = utils.Int64ToStr(childrenProductId) // (属性id skuID方案一)(自商品的商品id方案二) storeSku.VendorSkuID = utils.Int64ToStr(childrenProductId) // 子商品主id storeSku.VendorMainId = localThing[0].VendorThingID // 商品主id @@ -289,7 +292,6 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI // 同步价格,库存,上架 failedList = upDateChildrenPriceStockLaunch(api, storeSku, childrenProductId, vendorStoreID, syncType) - storeSku.SkuSyncStatus = 0 storeSku.VendorSonSkuID = utils.Int64ToStr(childrenProductId) // (属性id skuID方案一)(自商品的商品id方案二) storeSku.VendorSkuID = utils.Int64ToStr(childrenProductId) // 子商品主id storeSku.VendorMainId = localThing[0].VendorThingID // 商品主id @@ -401,6 +403,11 @@ func upDateChildrenPriceStockLaunch(api *tiktokShop.API, storeSku *dao.StoreSkuS 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()))...) } + if len(failedList) > 0 { + storeSku.SkuSyncStatus = model.SyncFlagStoreSkuModifiedMask + } else { + storeSku.SkuSyncStatus = 0 + } return failedList } From e6cc7d8b4e7739f83dcb36afc65de756e00bdabd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 14 Dec 2022 17:35:44 +0800 Subject: [PATCH 20/78] 1 --- business/partner/purchase/tiktok_store/store_sku2_utils.go | 1 + 1 file changed, 1 insertion(+) diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index 34953de07..d26d810be 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -295,6 +295,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI storeSku.VendorSonSkuID = utils.Int64ToStr(childrenProductId) // (属性id skuID方案一)(自商品的商品id方案二) storeSku.VendorSkuID = utils.Int64ToStr(childrenProductId) // 子商品主id storeSku.VendorMainId = localThing[0].VendorThingID // 商品主id + globals.SugarLogger.Debugf("===failedList=====:%s", utils.Format4Output(failedList, false)) } } } else { From 907f293916bdd0385a140b35dedd400f1dc22c42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 14 Dec 2022 17:40:00 +0800 Subject: [PATCH 21/78] 1 --- business/partner/purchase/tiktok_store/store_sku2_utils.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index d26d810be..efab64f20 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -283,6 +283,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI 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) + globals.SugarLogger.Debugf("===failedList1=====:%s", utils.Format4Output(failedList, false)) storeSku.SkuSyncStatus = model.SyncFlagStoreSkuModifiedMask storeSku.VendorSonSkuID = utils.Int64ToStr(childrenProductId) // (属性id skuID方案一)(自商品的商品id方案二) storeSku.VendorSkuID = utils.Int64ToStr(childrenProductId) // 子商品主id @@ -295,7 +296,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI storeSku.VendorSonSkuID = utils.Int64ToStr(childrenProductId) // (属性id skuID方案一)(自商品的商品id方案二) storeSku.VendorSkuID = utils.Int64ToStr(childrenProductId) // 子商品主id storeSku.VendorMainId = localThing[0].VendorThingID // 商品主id - globals.SugarLogger.Debugf("===failedList=====:%s", utils.Format4Output(failedList, false)) + globals.SugarLogger.Debugf("===failedList2=====:%s", utils.Format4Output(failedList, false)) } } } else { From 1dabf88f2bff82aa935fb0271a31866e34a6d3a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Thu, 15 Dec 2022 10:19:28 +0800 Subject: [PATCH 22/78] 1 --- .../purchase/tiktok_store/store_sku2.go | 88 +++++++------------ .../purchase/tiktok_store/store_sku2_utils.go | 41 +++++++++ 2 files changed, 73 insertions(+), 56 deletions(-) diff --git a/business/partner/purchase/tiktok_store/store_sku2.go b/business/partner/purchase/tiktok_store/store_sku2.go index 6dbbbf3c7..2b6115efb 100644 --- a/business/partner/purchase/tiktok_store/store_sku2.go +++ b/business/partner/purchase/tiktok_store/store_sku2.go @@ -95,16 +95,6 @@ func (p *PurchaseHandler) IsErrSkuNotExist(err error) (isNotExist bool) { return mtwmapi.IsErrSkuNotExist(err) } -// func duplicateStoreSkuList(storeSkuList []*dao.StoreSkuSyncInfo, index int) (newStoreSkuList []*dao.StoreSkuSyncInfo) { -// newStoreSkuList = make([]*dao.StoreSkuSyncInfo, len(storeSkuList)) -// for k, v := range storeSkuList { -// tmp := *v -// tmp.SkuName = fmt.Sprintf("%s.%d", tmp.SkuName, index) -// tmp.SkuID = index*1000000 + tmp.SkuID -// newStoreSkuList[k] = &tmp -// } -// return newStoreSkuList -// } func (p *PurchaseHandler) UpdateStoreSkus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*dao.StoreSkuSyncInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) { failedList, err = p.createOrUpdateStoreSkus(ctx, storeID, vendorStoreID, storeSkuList, false) return failedList, err @@ -140,16 +130,12 @@ func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, vendorOr if status == model.SkuStatusNormal { // 下架 for _, v := range storeSkuList { // 子品商品id获取skuId - //childrenSku, err := api.GetSkuDetail(v.VendorSkuID, "") - //if err != nil { - // return nil, err - //} - //if len(childrenSku.SpecPrices) <= 0 { - // return nil, errors.New("子品商品详情获取失败") - //} - + childrenSkuId, failedList := getProductSkuId4UpdateStock(api, v, storeID) + if len(failedList) > 0 { + continue + } param := &sku_syncStock_request.SkuSyncStockParam{ - //SkuId: childrenSku.SpecPrices[0].SkuId, + SkuId: childrenSkuId, ProductId: utils.Str2Int64(v.VendorSkuID), Incremental: false, IdempotentId: "", @@ -159,20 +145,17 @@ func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, vendorOr 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)))...) } - } } else { // 上架 for _, v := range storeSkuList { // 子品商品id获取skuId - //childrenSku, err := api.GetSkuDetail(v.VendorSkuID, "") - //if err != nil { - // return nil, err - //} - //if len(childrenSku.SpecPrices) <= 0 { - // return nil, errors.New("子品商品详情获取失败") - //} + childrenSkuId, failedList := getProductSkuId4UpdateStock(api, v, storeID) + if len(failedList) > 0 { + continue + } + param := &sku_syncStock_request.SkuSyncStockParam{ - //SkuId: childrenSku.SpecPrices[0].SkuId, + SkuId: childrenSkuId, ProductId: utils.Str2Int64(v.VendorSkuID), Incremental: false, IdempotentId: "", @@ -185,9 +168,6 @@ func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, vendorOr } } - if len(failedList) > 0 { - err = nil - } return failedList, err } @@ -195,44 +175,41 @@ func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, vendorOr 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) for _, v := range storeSkuList { - // 更新子品价格 - err = api.EditPrice(&sku_editPrice_request.SkuEditPriceParam{ - Price: v.VendorPrice, - //SkuId: utils.Str2Int64(v.VendorSkuAttrId), - ProductId: utils.Str2Int64(v.VendorSkuID), - }) - if err != nil { - failedList = append(failedList, putils.GetErrMsg2FailedSingleList(v, err, storeID, model.VendorChineseNames[model.VendorIDDD], "同步子品价格异常")...) - } - - // 更新子品 - //if _, err := api.BatchApplyStoreProductPrice(utils.Str2Int64(v.VendorMainId)); err != nil { - // failedList = append(failedList, putils.GetErrMsg2FailedSingleList(v, err, storeID, model.VendorChineseNames[model.VendorIDDD], "同步子品价格异常")...) - //} + //// 更新子品价格 //err = api.EditPrice(&sku_editPrice_request.SkuEditPriceParam{ // Price: v.VendorPrice, - // SkuId: utils.Str2Int64(v.VendorSonSkuID), + // SkuId: utils.Str2Int64(v.VendorSkuAttrId), // ProductId: utils.Str2Int64(v.VendorSkuID), //}) //if err != nil { - // failedList = append(failedList, putils.GetErrMsg2FailedSingleList(v, err, storeID, model.VendorChineseNames[model.VendorIDDD], "更新价格异常")...) - //} else { - // failedList = append(failedList, putils.GetErrMsg2FailedSingleList(v, err, storeID, model.VendorChineseNames[model.VendorIDDD], "更新价格正常")...) + // failedList = append(failedList, putils.GetErrMsg2FailedSingleList(v, err, storeID, model.VendorChineseNames[model.VendorIDDD], "同步子品价格异常")...) //} - } - //if len(failedList) > 0 { - // err = nil - //} + //更新子品 + err = api.EditPrice(&sku_editPrice_request.SkuEditPriceParam{ + Price: v.VendorPrice, + SkuId: utils.Str2Int64(v.VendorSonSkuID), + ProductId: utils.Str2Int64(v.VendorSkuID), + }) + if err != nil { + failedList = append(failedList, putils.GetErrMsg2FailedSingleList(v, err, storeID, model.VendorChineseNames[model.VendorIDDD], "更新价格异常")...) + } + } return failedList, err } -// 全量/增量更新商品sku库存 +// UpdateStoreSkusStock 全量/增量更新商品sku库存 func (p *PurchaseHandler) UpdateStoreSkusStock(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) { tiktokApi := getAPI(storeSkuList[0].VendorOrgCode, storeID, vendorStoreID) for _, v := range storeSkuList { + // 子品商品id获取skuId + childrenSkuId, failedList := getProductSkuId4UpdateStock(tiktokApi, v, storeID) + if len(failedList) > 0 { + continue + } + stockNum := &sku_syncStock_request.SkuSyncStockParam{ - //SkuId: utils.Str2Int64(v.VendorSkuAttrId), + SkuId: childrenSkuId, ProductId: utils.Str2Int64(v.VendorSkuID), Incremental: false, IdempotentId: "", @@ -249,7 +226,6 @@ func (p *PurchaseHandler) UpdateStoreSkusStock(ctx *jxcontext.Context, vendorOrg } return failedList, err - //return p.UpdateStoreSkusPrice(ctx, vendorOrgCode, storeID, vendorStoreID, storeSkuList) } func (p *PurchaseHandler) GetStoreSkusFullInfo(ctx *jxcontext.Context, parentTask tasksch.ITask, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (skuNameList []*partner.SkuNameInfo, err error) { diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index efab64f20..e2a390c5d 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -380,8 +380,13 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI } func upDateChildrenPriceStockLaunch(api *tiktokShop.API, storeSku *dao.StoreSkuSyncInfo, childrenProductId int64, vendorStoreID, syncType string) (failedList []*partner.StoreSkuInfoWithErr) { + skuId, failed := getProductSkuID(api, storeSku, syncType, childrenProductId) + if skuId == 0 || len(failed) > 0 { + return failed + } // 同步价格 if err := api.EditPrice(&sku_editPrice_request.SkuEditPriceParam{ + SkuId: skuId, Price: storeSku.VendorPrice, ProductId: childrenProductId, }); err != nil { @@ -389,6 +394,7 @@ func upDateChildrenPriceStockLaunch(api *tiktokShop.API, storeSku *dao.StoreSkuS } // 同步库存 paramStock := &sku_syncStock_request.SkuSyncStockParam{ + SkuId: skuId, ProductId: childrenProductId, Incremental: false, IdempotentId: "", @@ -413,6 +419,41 @@ func upDateChildrenPriceStockLaunch(api *tiktokShop.API, storeSku *dao.StoreSkuS return failedList } +// 查询商品详情,获取商品的抖音skuId +func getProductSkuID(api *tiktokShop.API, storeSku *dao.StoreSkuSyncInfo, syncType string, productId int64) (childrenSkuId int64, failedList []*partner.StoreSkuInfoWithErr) { + if storeSku.VendorSonSkuID != "" && storeSku.VendorSonSkuID != storeSku.VendorSkuID { + return utils.Str2Int64(storeSku.VendorSonSkuID), nil + } + childrenDetail, err := api.GetSkuDetail(utils.Int64ToStr(productId), "") + if err != nil { + failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeSku.StoreID, model.VendorChineseNames[model.VendorIDDD], syncType) + } + + for _, v := range childrenDetail.SpecPrices { + childrenSkuId = v.SkuId + storeSku.VendorSonSkuID = utils.Int64ToStr(childrenSkuId) + return childrenSkuId, nil + } + return 0, putils.GetErrMsg2FailedSingleList(storeSku, fmt.Errorf("获取商品抖音skuId失败[%d]", productId), storeSku.StoreID, model.VendorChineseNames[model.VendorIDDD], syncType) +} + +func getProductSkuId4UpdateStock(api *tiktokShop.API, skuInfo *partner.StoreSkuInfo, storeId int) (tiktokSkuId int64, failedList []*partner.StoreSkuInfoWithErr) { + if skuInfo.VendorSonSkuID != "" && skuInfo.VendorSonSkuID != skuInfo.VendorSkuID { + return utils.Str2Int64(skuInfo.VendorSonSkuID), nil + } + childrenSku, err := api.GetSkuDetail(skuInfo.VendorSkuID, "") + if err != nil || len(childrenSku.SpecPrices) <= 0 { + failedList = append(failedList, putils.GetErrMsg2FailedSingleList(skuInfo, err, storeId, model.VendorChineseNames[model.VendorIDDD], "修改库存[err为空,子商品skuId未获取到]")...) + } + + for _, v := range childrenSku.SpecPrices { + tiktokSkuId = v.SkuId + return tiktokSkuId, nil + } + + return 0, append(failedList, putils.GetErrMsg2FailedSingleList(skuInfo, err, storeId, model.VendorChineseNames[model.VendorIDDD], "修改库存,获取商品详情SkuId未获取到")...) +} + func getFreightIdAndSaleLimitId(api *tiktokShop.API, db *dao.DaoDB, storeDetail *dao.StoreDetail, vendorStoreID string) (freightId, saleLimitId int64, err error) { temp, err := dao.QueryStoreBindInfo(storeDetail.Store.ID) if err != nil || temp == nil || temp.ID == 0 { From 9b0b4adf01965e9a69285db8672871a6a09dfe00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Thu, 15 Dec 2022 10:38:19 +0800 Subject: [PATCH 23/78] 1 --- .../partner/purchase/tiktok_store/store_sku2.go | 16 +++++----------- .../purchase/tiktok_store/store_sku2_utils.go | 1 + 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/business/partner/purchase/tiktok_store/store_sku2.go b/business/partner/purchase/tiktok_store/store_sku2.go index 2b6115efb..f506aee3f 100644 --- a/business/partner/purchase/tiktok_store/store_sku2.go +++ b/business/partner/purchase/tiktok_store/store_sku2.go @@ -175,20 +175,14 @@ func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, vendorOr 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) for _, v := range storeSkuList { - //// 更新子品价格 - //err = api.EditPrice(&sku_editPrice_request.SkuEditPriceParam{ - // Price: v.VendorPrice, - // SkuId: utils.Str2Int64(v.VendorSkuAttrId), - // ProductId: utils.Str2Int64(v.VendorSkuID), - //}) - //if err != nil { - // failedList = append(failedList, putils.GetErrMsg2FailedSingleList(v, err, storeID, model.VendorChineseNames[model.VendorIDDD], "同步子品价格异常")...) - //} - + tiktokSkuId, failedList := getProductSkuId4UpdateStock(api, v, storeID) + if len(failedList) > 0 { + return failedList, err + } //更新子品 err = api.EditPrice(&sku_editPrice_request.SkuEditPriceParam{ Price: v.VendorPrice, - SkuId: utils.Str2Int64(v.VendorSonSkuID), + SkuId: tiktokSkuId, ProductId: utils.Str2Int64(v.VendorSkuID), }) if err != nil { diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index e2a390c5d..265bba0db 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -448,6 +448,7 @@ func getProductSkuId4UpdateStock(api *tiktokShop.API, skuInfo *partner.StoreSkuI for _, v := range childrenSku.SpecPrices { tiktokSkuId = v.SkuId + skuInfo.VendorSonSkuID = utils.Int64ToStr(v.SkuId) return tiktokSkuId, nil } From 5c3779784842cf0c23a4d88102a009071400d05f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Thu, 15 Dec 2022 10:57:52 +0800 Subject: [PATCH 24/78] 1 --- business/partner/purchase/tiktok_store/store_sku2.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/business/partner/purchase/tiktok_store/store_sku2.go b/business/partner/purchase/tiktok_store/store_sku2.go index f506aee3f..793807815 100644 --- a/business/partner/purchase/tiktok_store/store_sku2.go +++ b/business/partner/purchase/tiktok_store/store_sku2.go @@ -179,15 +179,18 @@ func (p *PurchaseHandler) UpdateStoreSkusPrice(ctx *jxcontext.Context, vendorOrg if len(failedList) > 0 { return failedList, err } - //更新子品 - err = api.EditPrice(&sku_editPrice_request.SkuEditPriceParam{ + price := &sku_editPrice_request.SkuEditPriceParam{ Price: v.VendorPrice, SkuId: tiktokSkuId, ProductId: utils.Str2Int64(v.VendorSkuID), - }) - if err != nil { + } + //更新子品 + if err = api.EditPrice(price); err != nil { 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 } From c018a99a18ab871681e0326858bc3e41708996aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Thu, 15 Dec 2022 11:15:37 +0800 Subject: [PATCH 25/78] 1 --- business/jxstore/cms/sync_store_sku.go | 2 ++ business/partner/purchase/tiktok_store/store_sku2.go | 1 + 2 files changed, 3 insertions(+) diff --git a/business/jxstore/cms/sync_store_sku.go b/business/jxstore/cms/sync_store_sku.go index 565c86484..3dd14ee93 100644 --- a/business/jxstore/cms/sync_store_sku.go +++ b/business/jxstore/cms/sync_store_sku.go @@ -823,6 +823,8 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag var failedList []*partner.StoreSkuInfoWithErr failedList, err = storeSkuHandler.UpdateStoreSkusPrice(ctx, storeDetail.VendorOrgCode, storeID, vendorStoreID, batchedStoreSkuList) failedList, err = buildFailedListAndErr(failedList, err, batchedStoreSkuList, nil, storeID, vendorID, "更新门店商品价格") + globals.SugarLogger.Debugf("====================batchedStoreSkuList %s", utils.Format4Output(batchedStoreSkuList, false)) + globals.SugarLogger.Debugf("====================eer %s", utils.Format4Output(failedList, false)) if len(failedList) > 0 { task.AddFailedList(failedList) } diff --git a/business/partner/purchase/tiktok_store/store_sku2.go b/business/partner/purchase/tiktok_store/store_sku2.go index 793807815..103b2628a 100644 --- a/business/partner/purchase/tiktok_store/store_sku2.go +++ b/business/partner/purchase/tiktok_store/store_sku2.go @@ -174,6 +174,7 @@ func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, vendorOr // UpdateStoreSkusPrice 更新商品价格 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) + globals.SugarLogger.Debugf("看看走这儿了没,是不是更新 storeSkuList %s", utils.Format4Output(storeSkuList, false)) for _, v := range storeSkuList { tiktokSkuId, failedList := getProductSkuId4UpdateStock(api, v, storeID) if len(failedList) > 0 { From dcba5f8498bbfada3103b931cdb52bd96e4a236b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Thu, 15 Dec 2022 11:23:46 +0800 Subject: [PATCH 26/78] 1 --- business/jxstore/cms/sync_store_sku.go | 11 +++++++++-- business/partner/purchase/tiktok_store/store_sku2.go | 1 + 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/business/jxstore/cms/sync_store_sku.go b/business/jxstore/cms/sync_store_sku.go index 3dd14ee93..086b44a6b 100644 --- a/business/jxstore/cms/sync_store_sku.go +++ b/business/jxstore/cms/sync_store_sku.go @@ -678,6 +678,15 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag // } } + globals.SugarLogger.Debugf("== createList %s", utils.Format4Output(createList, false)) + globals.SugarLogger.Debugf("== updateList %s", utils.Format4Output(updateList, false)) + globals.SugarLogger.Debugf("== deleteList %s", utils.Format4Output(deleteList, false)) + globals.SugarLogger.Debugf("== stockList %s", utils.Format4Output(stockList, false)) + globals.SugarLogger.Debugf("== onlineList %s", utils.Format4Output(onlineList, false)) + globals.SugarLogger.Debugf("== priceList %s", utils.Format4Output(priceList, false)) + globals.SugarLogger.Debugf("== updateItems %s", utils.Format4Output(updateItems, false)) + globals.SugarLogger.Debugf("== reorderSkuMap %s", utils.Format4Output(reorderSkuMap, false)) + globals.SugarLogger.Debugf("== updateItems %s", utils.Format4Output(updateItems, false)) task := tasksch.NewParallelTask("syncStoreSkuNew", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError2), ctx, func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { step := batchItemList[0].(int) @@ -823,8 +832,6 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag var failedList []*partner.StoreSkuInfoWithErr failedList, err = storeSkuHandler.UpdateStoreSkusPrice(ctx, storeDetail.VendorOrgCode, storeID, vendorStoreID, batchedStoreSkuList) failedList, err = buildFailedListAndErr(failedList, err, batchedStoreSkuList, nil, storeID, vendorID, "更新门店商品价格") - globals.SugarLogger.Debugf("====================batchedStoreSkuList %s", utils.Format4Output(batchedStoreSkuList, false)) - globals.SugarLogger.Debugf("====================eer %s", utils.Format4Output(failedList, false)) if len(failedList) > 0 { task.AddFailedList(failedList) } diff --git a/business/partner/purchase/tiktok_store/store_sku2.go b/business/partner/purchase/tiktok_store/store_sku2.go index 103b2628a..b7e2f118d 100644 --- a/business/partner/purchase/tiktok_store/store_sku2.go +++ b/business/partner/purchase/tiktok_store/store_sku2.go @@ -189,6 +189,7 @@ func (p *PurchaseHandler) UpdateStoreSkusPrice(ctx *jxcontext.Context, vendorOrg if err = api.EditPrice(price); err != nil { failedList = append(failedList, putils.GetErrMsg2FailedSingleList(v, err, storeID, model.VendorChineseNames[model.VendorIDDD], "更新价格异常")...) } + globals.SugarLogger.Debugf("v.VendorPrice ============= %d", v.VendorPrice) globals.SugarLogger.Debugf("看看走这儿了没,是不是更新 参数 %s", utils.Format4Output(price, false)) globals.SugarLogger.Debugf("看看走这儿了没,是不是更新 返回值 %s", utils.Format4Output(failedList, false)) globals.SugarLogger.Debugf("看看走这儿了没,是不是更新 结构体 %s", utils.Format4Output(v, false)) From 11ae4a783b64728dc994f724c7b5916e943d74ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Thu, 15 Dec 2022 11:35:22 +0800 Subject: [PATCH 27/78] 1 --- business/jxstore/cms/sync_store_sku.go | 1 + 1 file changed, 1 insertion(+) diff --git a/business/jxstore/cms/sync_store_sku.go b/business/jxstore/cms/sync_store_sku.go index 086b44a6b..5c88d176c 100644 --- a/business/jxstore/cms/sync_store_sku.go +++ b/business/jxstore/cms/sync_store_sku.go @@ -453,6 +453,7 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag if err != nil || len(skus) == 0 { return err } + globals.SugarLogger.Debugf("=====skus======= %s", utils.Format4Output(skus, false)) if len(excludeSkuIDs) > 0 { excludeSkuMap := jxutils.IntList2Map(excludeSkuIDs) var skus2 []*dao.StoreSkuSyncInfo From be956f084a4f7b49896f1261fb3e83c350a072d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Thu, 15 Dec 2022 13:42:39 +0800 Subject: [PATCH 28/78] 1 --- .../partner/purchase/tiktok_store/store_sku2_utils.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index 265bba0db..f190897a2 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -121,6 +121,7 @@ func GetSkuDetailList(api *tiktokShop.API, param *MainSku) (*product_listV2_resp // 对于多门店平台来说,storeSkuList中只有SkuID与VendorSkuID有意义 // 抖店的商品只管创建,创建接口会返回成功,但是审核的时候不一定成功.当前系统无法判定此商品是否已经创建过了! func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*dao.StoreSkuSyncInfo, isCreate bool) (failedList []*partner.StoreSkuInfoWithErr, err error) { + globals.SugarLogger.Debugf("============%s", utils.Format4Output(storeSkuList, false)) var syncType string db := dao.GetDB() storeDetail, _ := dao.GetStoreDetail(db, storeID, model.VendorIDDD, "") @@ -369,13 +370,15 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID) continue } + globals.SugarLogger.Debugf("==========更新商品 %s", utils.Format4Output(storeSku, false)) } return } + globals.SugarLogger.Debugf("==========failedList %s", utils.Format4Output(failedList, false)) - if len(failedList) > 0 { - err = nil - } + //if len(failedList) > 0 { + // err = nil + //} return failedList, err } From 4f55e66ca43e311e43b9dd0e94822b76ed487953 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Thu, 15 Dec 2022 14:12:01 +0800 Subject: [PATCH 29/78] 1 --- business/jxstore/cms/sync_store_sku.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/business/jxstore/cms/sync_store_sku.go b/business/jxstore/cms/sync_store_sku.go index 5c88d176c..95ebe8813 100644 --- a/business/jxstore/cms/sync_store_sku.go +++ b/business/jxstore/cms/sync_store_sku.go @@ -281,6 +281,9 @@ func storeSkuSyncInfo2Bare(inSku *dao.StoreSkuSyncInfo) (outSku *partner.StoreSk } func calVendorPrice4StoreSku(inSku *dao.StoreSkuSyncInfo, pricePercentagePack model.PricePercentagePack, pricePercentage int) (outSku *dao.StoreSkuSyncInfo) { + globals.SugarLogger.Debugf("=======calVendorPrice4StoreSku==inSku== %s", utils.Format4Output(inSku, false)) + globals.SugarLogger.Debugf("=======calVendorPrice4StoreSku==pricePercentagePack== %s", utils.Format4Output(pricePercentagePack, false)) + globals.SugarLogger.Debugf("=======calVendorPrice4StoreSku==VendorPrice== %d", inSku.VendorPrice) if inSku.VendorPrice <= 0 { // 避免重新计算 inSku.VendorPrice = int64(jxutils.CaculatePriceByPricePack(pricePercentagePack, pricePercentage, int(inSku.Price))) if inSku.VendorPrice <= 0 { From 202e2b7cc81c683fa9740bd5187a115f51c3653f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Thu, 15 Dec 2022 18:07:47 +0800 Subject: [PATCH 30/78] 1 --- business/jxstore/cms/sync_store_sku.go | 3 +- business/jxstore/misc/misc.go | 30 +++++++++++++++++++ .../purchase/tiktok_store/store_sku2_utils.go | 6 ++-- 3 files changed, 34 insertions(+), 5 deletions(-) diff --git a/business/jxstore/cms/sync_store_sku.go b/business/jxstore/cms/sync_store_sku.go index 95ebe8813..bea2b7dcf 100644 --- a/business/jxstore/cms/sync_store_sku.go +++ b/business/jxstore/cms/sync_store_sku.go @@ -489,8 +489,7 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag now := jxutils.OperationTime2HourMinuteFormat(time.Now()) var failedList []*partner.StoreSkuInfoWithErr for _, sku := range skus { - if !useVendorPriceDirectly && - !isSkuLockTimeValid(sku) { + if !useVendorPriceDirectly && !isSkuLockTimeValid(sku) { sku.VendorPrice = 0 } sku.MergedStatus = MergeSkuSaleStatusWithStoreOpTime(sku, storeDetail, now) diff --git a/business/jxstore/misc/misc.go b/business/jxstore/misc/misc.go index e20ec70b3..a29c7ea81 100644 --- a/business/jxstore/misc/misc.go +++ b/business/jxstore/misc/misc.go @@ -249,6 +249,11 @@ func Init() { cms.RefreshTiktokShopToken(jxcontext.AdminCtx) }, 60*time.Second, 30*time.Minute) + // 更新门店商品 + ScheduleTimerFuncByInterval(func() { + syncStoreSkuTiktok() + }, 60*time.Second, 1*time.Minute) + // 定时任务刷新当前订单的物流信息 ScheduleTimerFunc("RefreshMaterialLogistics", func() { bidding.LoadingLogistics(nil) @@ -568,6 +573,31 @@ func syncStoreSku() { tasksch.HandleTask(task, nil, true).Run() } +func syncStoreSkuTiktok() { + syncFlag := 0 | model.SyncFlagSaleMask + task := tasksch.NewParallelTask("同步京西商品到抖音平台,方案二使用", nil, jxcontext.AdminCtx, + func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + step := batchItemList[0].(int) + errList := errlist.New() + db := dao.GetDB() + switch step { + case 0: + if beego.BConfig.RunMode != "jxgy" { + errList.AddErr(cms.DeleteSkuNameExPrefixOverdue(db)) + errList.AddErr(cms.SetMultiStoreSkuSyncModifyStatus(db, partner.GetMultiStoreVendorIDs())) + _, err = cms.CurVendorSync.SyncStoresSkus2(jxcontext.AdminCtx, nil, 0, db, []int{model.VendorIDDD}, nil, false, nil, nil, syncFlag, true, true) + errList.AddErr(err) + } + case 1: + errList.AddErr(err) + SaveImportantTaskID(TaskNameSyncStoreSku, SpecialTaskID) + } + err = errList.GetErrListAsOne() + return retVal, err + }, []int{0, 1}) + tasksch.HandleTask(task, nil, true).Run() +} + func doDailyWork2() { if beego.BConfig.RunMode == "jxgy" { syncStoreSku() diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index f190897a2..767c8cfc0 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -759,7 +759,7 @@ func GetSpecPrices(specs, storeId string, mainSkuId int64, localSku *dao.StoreSk } stock := localSku.Stock if localSku.Stock == 0 { - stock = 9999 + stock = 99999 } sku.StockNum = stock sku.SkuType = 1 @@ -785,7 +785,7 @@ func GetSpecPrices(specs, storeId string, mainSkuId int64, localSku *dao.StoreSk } stock := localSku.Stock if localSku.Stock == 0 { - stock = 9999 + stock = 99999 } sku.StockNum = stock sku.SkuType = 1 @@ -815,7 +815,7 @@ func GetSpecPrices(specs, storeId string, mainSkuId int64, localSku *dao.StoreSk } stock := localSku.Stock if localSku.Stock == 0 { - stock = 9999 + stock = 99999 } sku.StockNum = stock sku.SkuType = 1 From e898e29243437cd1c5331bc5e02c79341dc4237b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Thu, 15 Dec 2022 18:15:49 +0800 Subject: [PATCH 31/78] 1 --- business/jxstore/cms/sync_store_sku.go | 1 - business/jxstore/misc/misc.go | 3 ++- .../purchase/tiktok_store/store_sku2_utils.go | 14 -------------- 3 files changed, 2 insertions(+), 16 deletions(-) diff --git a/business/jxstore/cms/sync_store_sku.go b/business/jxstore/cms/sync_store_sku.go index bea2b7dcf..27f1bec9d 100644 --- a/business/jxstore/cms/sync_store_sku.go +++ b/business/jxstore/cms/sync_store_sku.go @@ -456,7 +456,6 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag if err != nil || len(skus) == 0 { return err } - globals.SugarLogger.Debugf("=====skus======= %s", utils.Format4Output(skus, false)) if len(excludeSkuIDs) > 0 { excludeSkuMap := jxutils.IntList2Map(excludeSkuIDs) var skus2 []*dao.StoreSkuSyncInfo diff --git a/business/jxstore/misc/misc.go b/business/jxstore/misc/misc.go index a29c7ea81..98d39b67e 100644 --- a/business/jxstore/misc/misc.go +++ b/business/jxstore/misc/misc.go @@ -585,7 +585,8 @@ func syncStoreSkuTiktok() { if beego.BConfig.RunMode != "jxgy" { errList.AddErr(cms.DeleteSkuNameExPrefixOverdue(db)) errList.AddErr(cms.SetMultiStoreSkuSyncModifyStatus(db, partner.GetMultiStoreVendorIDs())) - _, err = cms.CurVendorSync.SyncStoresSkus2(jxcontext.AdminCtx, nil, 0, db, []int{model.VendorIDDD}, nil, false, nil, nil, syncFlag, true, true) + globals.SugarLogger.Debugf("=======定时任务更新") + _, err = cms.CurVendorSync.SyncStoresSkus2(jxcontext.AdminCtx, nil, 0, db, []int{model.VendorIDDD}, []int{668594}, false, nil, nil, syncFlag, true, true) errList.AddErr(err) } case 1: diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index 767c8cfc0..210a665ef 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -121,7 +121,6 @@ func GetSkuDetailList(api *tiktokShop.API, param *MainSku) (*product_listV2_resp // 对于多门店平台来说,storeSkuList中只有SkuID与VendorSkuID有意义 // 抖店的商品只管创建,创建接口会返回成功,但是审核的时候不一定成功.当前系统无法判定此商品是否已经创建过了! func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*dao.StoreSkuSyncInfo, isCreate bool) (failedList []*partner.StoreSkuInfoWithErr, err error) { - globals.SugarLogger.Debugf("============%s", utils.Format4Output(storeSkuList, false)) var syncType string db := dao.GetDB() storeDetail, _ := dao.GetStoreDetail(db, storeID, model.VendorIDDD, "") @@ -220,10 +219,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI if len(localThing) == 0 { mainOrderDetail, err := api.GetSkuDetailLocalID("", utils.Int2Str(storeSku.SkuID)) if err != nil || mainOrderDetail == nil || mainOrderDetail.ProductIdStr == "" { - globals.SugarLogger.Debugf("========result %s", "本地不存在,线上也不存在") tiktokResult, err := api.CreateStoreCommodity(param) // 创建主商品,同步主商品 - globals.SugarLogger.Debugf("========result %s", utils.Format4Output(tiktokResult, false)) - globals.SugarLogger.Debugf("========err %s", utils.Format4Output(err, false)) if err != nil { failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) continue @@ -243,7 +239,6 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI //storeSku.VendorSonSkuID = utils.Int2Str(storeSku.SkuID) // 还没同步子商品 failedList = putils.GetErrMsg2FailedSingleList(storeSku, errors.New("只创建了主商品,没创建子商品"), storeID, model.VendorChineseNames[model.VendorIDDD], syncType) } else { - globals.SugarLogger.Debugf("========result %s", "本地不存在,线上存在,创建本地主品,分配子商品") // 本地不存在,线上存在.直接创建子商品保存本地同步记录 var childrenProductId int64 = 0 if mainOrderDetail.CheckStatus != tiktokShop.SkuCheckStatusPass && mainOrderDetail.CheckStatus != tiktokShop.SkuCheckStatusPassNotPutOn { @@ -279,12 +274,10 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI } } } else { - globals.SugarLogger.Debugf("========result %s", "本地存在,直接创建子商品") // 主商品存在,直接同步子商品 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) - globals.SugarLogger.Debugf("===failedList1=====:%s", utils.Format4Output(failedList, false)) storeSku.SkuSyncStatus = model.SyncFlagStoreSkuModifiedMask storeSku.VendorSonSkuID = utils.Int64ToStr(childrenProductId) // (属性id skuID方案一)(自商品的商品id方案二) storeSku.VendorSkuID = utils.Int64ToStr(childrenProductId) // 子商品主id @@ -297,7 +290,6 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI storeSku.VendorSonSkuID = utils.Int64ToStr(childrenProductId) // (属性id skuID方案一)(自商品的商品id方案二) storeSku.VendorSkuID = utils.Int64ToStr(childrenProductId) // 子商品主id storeSku.VendorMainId = localThing[0].VendorThingID // 商品主id - globals.SugarLogger.Debugf("===failedList2=====:%s", utils.Format4Output(failedList, false)) } } } else { @@ -370,15 +362,9 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID) continue } - globals.SugarLogger.Debugf("==========更新商品 %s", utils.Format4Output(storeSku, false)) } return } - globals.SugarLogger.Debugf("==========failedList %s", utils.Format4Output(failedList, false)) - - //if len(failedList) > 0 { - // err = nil - //} return failedList, err } From a9acbc5ca0bcdcaf5b6b521d793980b175c171ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Thu, 15 Dec 2022 18:23:30 +0800 Subject: [PATCH 32/78] 1 --- business/jxstore/cms/sync_store_sku.go | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/business/jxstore/cms/sync_store_sku.go b/business/jxstore/cms/sync_store_sku.go index 27f1bec9d..a5027984f 100644 --- a/business/jxstore/cms/sync_store_sku.go +++ b/business/jxstore/cms/sync_store_sku.go @@ -281,9 +281,6 @@ func storeSkuSyncInfo2Bare(inSku *dao.StoreSkuSyncInfo) (outSku *partner.StoreSk } func calVendorPrice4StoreSku(inSku *dao.StoreSkuSyncInfo, pricePercentagePack model.PricePercentagePack, pricePercentage int) (outSku *dao.StoreSkuSyncInfo) { - globals.SugarLogger.Debugf("=======calVendorPrice4StoreSku==inSku== %s", utils.Format4Output(inSku, false)) - globals.SugarLogger.Debugf("=======calVendorPrice4StoreSku==pricePercentagePack== %s", utils.Format4Output(pricePercentagePack, false)) - globals.SugarLogger.Debugf("=======calVendorPrice4StoreSku==VendorPrice== %d", inSku.VendorPrice) if inSku.VendorPrice <= 0 { // 避免重新计算 inSku.VendorPrice = int64(jxutils.CaculatePriceByPricePack(pricePercentagePack, pricePercentage, int(inSku.Price))) if inSku.VendorPrice <= 0 { @@ -680,15 +677,11 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag // } } - globals.SugarLogger.Debugf("== createList %s", utils.Format4Output(createList, false)) - globals.SugarLogger.Debugf("== updateList %s", utils.Format4Output(updateList, false)) - globals.SugarLogger.Debugf("== deleteList %s", utils.Format4Output(deleteList, false)) - globals.SugarLogger.Debugf("== stockList %s", utils.Format4Output(stockList, false)) - globals.SugarLogger.Debugf("== onlineList %s", utils.Format4Output(onlineList, false)) - globals.SugarLogger.Debugf("== priceList %s", utils.Format4Output(priceList, false)) - globals.SugarLogger.Debugf("== updateItems %s", utils.Format4Output(updateItems, false)) - globals.SugarLogger.Debugf("== reorderSkuMap %s", utils.Format4Output(reorderSkuMap, false)) - globals.SugarLogger.Debugf("== updateItems %s", utils.Format4Output(updateItems, false)) + //globals.SugarLogger.Debugf("== createList %s", utils.Format4Output(createList, false)) + //globals.SugarLogger.Debugf("== updateList %s", utils.Format4Output(updateList, false)) + //globals.SugarLogger.Debugf("== deleteList %s", utils.Format4Output(deleteList, false)) + //globals.SugarLogger.Debugf("== stockList %s", utils.Format4Output(stockList, false)) + //globals.SugarLogger.Debugf("== priceList %s", utils.Format4Output(priceList, false)) task := tasksch.NewParallelTask("syncStoreSkuNew", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError2), ctx, func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { step := batchItemList[0].(int) From af07af1de01921dd0f37f0c85723dfd36bb42074 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Thu, 15 Dec 2022 18:31:01 +0800 Subject: [PATCH 33/78] 1 --- business/jxstore/misc/misc.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/business/jxstore/misc/misc.go b/business/jxstore/misc/misc.go index 98d39b67e..e52a2333f 100644 --- a/business/jxstore/misc/misc.go +++ b/business/jxstore/misc/misc.go @@ -250,9 +250,9 @@ func Init() { }, 60*time.Second, 30*time.Minute) // 更新门店商品 - ScheduleTimerFuncByInterval(func() { - syncStoreSkuTiktok() - }, 60*time.Second, 1*time.Minute) + //ScheduleTimerFuncByInterval(func() { + // syncStoreSkuTiktok() + //}, 60*time.Second, 1*time.Minute) // 定时任务刷新当前订单的物流信息 ScheduleTimerFunc("RefreshMaterialLogistics", func() { From b0631f4eeb12582ba8b82f6fdbce053e28dde08d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Fri, 16 Dec 2022 11:45:54 +0800 Subject: [PATCH 34/78] 1 --- business/partner/printer/jxprint/jxprint.go | 1 + 1 file changed, 1 insertion(+) diff --git a/business/partner/printer/jxprint/jxprint.go b/business/partner/printer/jxprint/jxprint.go index 05d238e69..878854623 100644 --- a/business/partner/printer/jxprint/jxprint.go +++ b/business/partner/printer/jxprint/jxprint.go @@ -72,6 +72,7 @@ func (c *PrinterHandler) RegisterPrinter(ctx *jxcontext.Context, id1, id2, print return "", "", err } +// UnregisterPrinter func (c *PrinterHandler) UnregisterPrinter(ctx *jxcontext.Context, id1, id2 string) (err error) { if globals.EnableStoreWrite { err = api.JxPrintAPI.DelPrinter([]string{id1}) From cf7471444ac78a3c282ac96b9be889f43cadec31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Fri, 16 Dec 2022 11:50:43 +0800 Subject: [PATCH 35/78] 1' --- business/jxstore/cms/store.go | 2 +- business/partner/printer/jxprint/jxprint.go | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index 57e4bb251..be4b99061 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -955,7 +955,7 @@ func UpdateStore(ctx *jxcontext.Context, storeID int, payload map[string]interfa } valid["printerBindInfo"] = "" if handler := partner.GetPrinterPlatformFromVendorID(store.PrinterVendorID); handler != nil { - handler.UnregisterPrinter(ctx, store.PrinterSN, store.PrinterKey) + handler.UnregisterPrinter(ctx, store.PrinterSN, utils.Int2Str(store.ID)) } } if valid["soundPercentage"] != nil && valid["printerSN"] != nil { diff --git a/business/partner/printer/jxprint/jxprint.go b/business/partner/printer/jxprint/jxprint.go index 878854623..fbb472a8d 100644 --- a/business/partner/printer/jxprint/jxprint.go +++ b/business/partner/printer/jxprint/jxprint.go @@ -72,10 +72,9 @@ func (c *PrinterHandler) RegisterPrinter(ctx *jxcontext.Context, id1, id2, print return "", "", err } -// UnregisterPrinter func (c *PrinterHandler) UnregisterPrinter(ctx *jxcontext.Context, id1, id2 string) (err error) { if globals.EnableStoreWrite { - err = api.JxPrintAPI.DelPrinter([]string{id1}) + err = api.JxPrintAPI.DelPrinter([]string{id1}, id2) } return err } From 99dba8bedebc28d52ef0a3b80e5d3131c6c8284a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Fri, 16 Dec 2022 18:23:00 +0800 Subject: [PATCH 36/78] 1 --- business/partner/purchase/tiktok_store/callback.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/business/partner/purchase/tiktok_store/callback.go b/business/partner/purchase/tiktok_store/callback.go index af12c860e..01c4e3e16 100644 --- a/business/partner/purchase/tiktok_store/callback.go +++ b/business/partner/purchase/tiktok_store/callback.go @@ -16,7 +16,8 @@ import ( func OnOrderMsg(msgId string, msg interface{}) (response *tiktokShop.CallbackResponse) { globals.SugarLogger.Debugf("GetCallbackOrderId tiktok msg %s", utils.Format4Output(msg, false)) if CurPurchaseHandler != nil { - orderId, shopId, _ := api.TiktokStore.GetCallbackOrderId(msgId, msg) + orderId, shopId, err := api.TiktokStore.GetCallbackOrderId(msgId, msg) + globals.SugarLogger.Debugf("====== %s %d %s", orderId, shopId, utils.Format4Output(err, false)) if shopId != 0 { //storeDetail, err := dao.GetStoreDetailByVendorStoreID(dao.GetDB(), utils.Int64ToStr(shopId), model.VendorIDDD, "") //globals.SugarLogger.Debugf("==storeDetail=: %s", utils.Format4Output(storeDetail, false)) From 8ab6131ad33c0b91c9cd971493ff5e20c7360386 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Fri, 16 Dec 2022 18:34:13 +0800 Subject: [PATCH 37/78] 1 --- business/partner/purchase/tiktok_store/order.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/business/partner/purchase/tiktok_store/order.go b/business/partner/purchase/tiktok_store/order.go index 9603b66d4..3695c37f4 100644 --- a/business/partner/purchase/tiktok_store/order.go +++ b/business/partner/purchase/tiktok_store/order.go @@ -284,9 +284,11 @@ func (c *PurchaseHandler) onOrderMsg(msgId, orderId string, msg interface{}) (re return tiktokShop.Err2CallbackResponse(nil, "") } + globals.SugarLogger.Debugf("============1 %s", utils.Format4Output(msg, false)) // 已经支付的订单,当做新订单创建在平台内部 ----------------- if msgId == tiktokShop.CallbackPayOrderMsgTagId || msgId == tiktokShop.CallbackChangeMoneyMsgTagId { order, err := c.GetOrder(utils.Int64ToStr(appOrgCode), orderId, "") // 获取平台订单详情,制作本地订单 + globals.SugarLogger.Debugf("============1order %s", utils.Format4Output(order, false)) if err != nil { return tiktokShop.Err2CallbackResponse(err, "") } From 2772c083bee63e12374c5f245eeaaac834a2854d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Fri, 16 Dec 2022 18:38:28 +0800 Subject: [PATCH 38/78] 1 --- business/partner/purchase/tiktok_store/order.go | 1 + 1 file changed, 1 insertion(+) diff --git a/business/partner/purchase/tiktok_store/order.go b/business/partner/purchase/tiktok_store/order.go index 3695c37f4..4260f9b38 100644 --- a/business/partner/purchase/tiktok_store/order.go +++ b/business/partner/purchase/tiktok_store/order.go @@ -289,6 +289,7 @@ func (c *PurchaseHandler) onOrderMsg(msgId, orderId string, msg interface{}) (re if msgId == tiktokShop.CallbackPayOrderMsgTagId || msgId == tiktokShop.CallbackChangeMoneyMsgTagId { order, err := c.GetOrder(utils.Int64ToStr(appOrgCode), orderId, "") // 获取平台订单详情,制作本地订单 globals.SugarLogger.Debugf("============1order %s", utils.Format4Output(order, false)) + globals.SugarLogger.Debugf("============err %s", utils.Format4Output(err, false)) if err != nil { return tiktokShop.Err2CallbackResponse(err, "") } From 2c1f4c4b2116ef0c8ce665671948320f8b768482 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Fri, 16 Dec 2022 18:41:34 +0800 Subject: [PATCH 39/78] 1 --- business/partner/purchase/tiktok_store/order.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/business/partner/purchase/tiktok_store/order.go b/business/partner/purchase/tiktok_store/order.go index 4260f9b38..271f9cdf4 100644 --- a/business/partner/purchase/tiktok_store/order.go +++ b/business/partner/purchase/tiktok_store/order.go @@ -81,6 +81,8 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode, vendorOrderID, vendorStoreID s api := getAPI(vendorOrgCode, 0, vendorStoreID) result, err := api.GetTiktokOrderDetail(vendorOrderID) + globals.SugarLogger.Debugf("=======result %s", utils.Format4Output(result, false)) + globals.SugarLogger.Debugf("=======err %s", utils.Format4Output(err, false)) if err != nil { return nil, nil, err } @@ -213,6 +215,8 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode, vendorOrderID, vendorStoreID s // 本地获取订单记录 orderSeq, _ := dao.GetVendorOrderNumber(dao.GetDB(), model.VendorIDDD, order.VendorStoreID) order.OrderSeq = orderSeq + 1 + globals.SugarLogger.Debugf("=======order %s", utils.Format4Output(order, false)) + globals.SugarLogger.Debugf("=======orderMap %s", utils.Format4Output(orderMap, false)) jxutils.RefreshOrderSkuRelated(order) return order, orderMap, nil From edde0d7f3e540f0ec8f7871365e5658bfc7d5783 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Fri, 16 Dec 2022 18:52:36 +0800 Subject: [PATCH 40/78] 1 --- business/partner/purchase/tiktok_store/callback.go | 3 +-- business/partner/purchase/tiktok_store/order.go | 10 ++-------- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/business/partner/purchase/tiktok_store/callback.go b/business/partner/purchase/tiktok_store/callback.go index 01c4e3e16..af12c860e 100644 --- a/business/partner/purchase/tiktok_store/callback.go +++ b/business/partner/purchase/tiktok_store/callback.go @@ -16,8 +16,7 @@ import ( func OnOrderMsg(msgId string, msg interface{}) (response *tiktokShop.CallbackResponse) { globals.SugarLogger.Debugf("GetCallbackOrderId tiktok msg %s", utils.Format4Output(msg, false)) if CurPurchaseHandler != nil { - orderId, shopId, err := api.TiktokStore.GetCallbackOrderId(msgId, msg) - globals.SugarLogger.Debugf("====== %s %d %s", orderId, shopId, utils.Format4Output(err, false)) + orderId, shopId, _ := api.TiktokStore.GetCallbackOrderId(msgId, msg) if shopId != 0 { //storeDetail, err := dao.GetStoreDetailByVendorStoreID(dao.GetDB(), utils.Int64ToStr(shopId), model.VendorIDDD, "") //globals.SugarLogger.Debugf("==storeDetail=: %s", utils.Format4Output(storeDetail, false)) diff --git a/business/partner/purchase/tiktok_store/order.go b/business/partner/purchase/tiktok_store/order.go index 271f9cdf4..7edebbf5f 100644 --- a/business/partner/purchase/tiktok_store/order.go +++ b/business/partner/purchase/tiktok_store/order.go @@ -81,8 +81,6 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode, vendorOrderID, vendorStoreID s api := getAPI(vendorOrgCode, 0, vendorStoreID) result, err := api.GetTiktokOrderDetail(vendorOrderID) - globals.SugarLogger.Debugf("=======result %s", utils.Format4Output(result, false)) - globals.SugarLogger.Debugf("=======err %s", utils.Format4Output(err, false)) if err != nil { return nil, nil, err } @@ -179,7 +177,8 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode, vendorOrderID, vendorStoreID s // 预订单还是快速达 localStore, err := dao.GetStoreDetailByVendorStoreID(dao.GetDB(), vendorStoreIdRelly, model.VendorIDDD, vendorOrgCode) - if err != nil { + if err != nil || localStore == nil || localStore.ID == 0 { + globals.SugarLogger.Debugf("平台门店未绑定到京西系统 %s", err.Error()) return nil, nil, err } // 订单不在门店营业时间来的订单, @@ -215,8 +214,6 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode, vendorOrderID, vendorStoreID s // 本地获取订单记录 orderSeq, _ := dao.GetVendorOrderNumber(dao.GetDB(), model.VendorIDDD, order.VendorStoreID) order.OrderSeq = orderSeq + 1 - globals.SugarLogger.Debugf("=======order %s", utils.Format4Output(order, false)) - globals.SugarLogger.Debugf("=======orderMap %s", utils.Format4Output(orderMap, false)) jxutils.RefreshOrderSkuRelated(order) return order, orderMap, nil @@ -288,12 +285,9 @@ func (c *PurchaseHandler) onOrderMsg(msgId, orderId string, msg interface{}) (re return tiktokShop.Err2CallbackResponse(nil, "") } - globals.SugarLogger.Debugf("============1 %s", utils.Format4Output(msg, false)) // 已经支付的订单,当做新订单创建在平台内部 ----------------- if msgId == tiktokShop.CallbackPayOrderMsgTagId || msgId == tiktokShop.CallbackChangeMoneyMsgTagId { order, err := c.GetOrder(utils.Int64ToStr(appOrgCode), orderId, "") // 获取平台订单详情,制作本地订单 - globals.SugarLogger.Debugf("============1order %s", utils.Format4Output(order, false)) - globals.SugarLogger.Debugf("============err %s", utils.Format4Output(err, false)) if err != nil { return tiktokShop.Err2CallbackResponse(err, "") } From c8f3265bcb8a368f736cadbbb06f3ea2ed5dbf40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Fri, 16 Dec 2022 22:17:08 +0800 Subject: [PATCH 41/78] 1 --- business/partner/printer/jxprint/jxprint_const.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/partner/printer/jxprint/jxprint_const.go b/business/partner/printer/jxprint/jxprint_const.go index 795635c76..61dce0d8f 100644 --- a/business/partner/printer/jxprint/jxprint_const.go +++ b/business/partner/printer/jxprint/jxprint_const.go @@ -88,7 +88,7 @@ func ManagerOrderPrint(order *model.GoodsOrder, storeTel string, storeDetail *da printOrder[VendorName] = jxutils.GetVendorName(order.VendorID) printOrder[VendorOrderNo] = utils.Int2Str(order.OrderSeq) printOrder[EBaiCode] = jxutils.GetEbaiOrderGetCode(order) - printOrder[QRCOrder] = utils.Int2Str(order.OrderSeq) + printOrder[QRCOrder] = utils.Int2Str(order.VendorOrderID) printOrder[ConsigneeName] = order.ConsigneeName printOrder[ConsigneeMobile] = order.ConsigneeMobile printOrder[ConsigneeAddress] = order.ConsigneeAddress From e10db669dc40ef65750f4d426ddc5eeead37d774 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Fri, 16 Dec 2022 22:18:51 +0800 Subject: [PATCH 42/78] 1 --- business/partner/printer/jxprint/jxprint_const.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/partner/printer/jxprint/jxprint_const.go b/business/partner/printer/jxprint/jxprint_const.go index 61dce0d8f..ccff811d7 100644 --- a/business/partner/printer/jxprint/jxprint_const.go +++ b/business/partner/printer/jxprint/jxprint_const.go @@ -88,7 +88,7 @@ func ManagerOrderPrint(order *model.GoodsOrder, storeTel string, storeDetail *da printOrder[VendorName] = jxutils.GetVendorName(order.VendorID) printOrder[VendorOrderNo] = utils.Int2Str(order.OrderSeq) printOrder[EBaiCode] = jxutils.GetEbaiOrderGetCode(order) - printOrder[QRCOrder] = utils.Int2Str(order.VendorOrderID) + printOrder[QRCOrder] = order.VendorOrderID printOrder[ConsigneeName] = order.ConsigneeName printOrder[ConsigneeMobile] = order.ConsigneeMobile printOrder[ConsigneeAddress] = order.ConsigneeAddress From 57f699d16ceec633bcebdf0fd2d45e64ed2be72d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Mon, 19 Dec 2022 11:14:00 +0800 Subject: [PATCH 43/78] 1 --- business/jxstore/cms/store.go | 4 ++++ business/jxstore/misc/misc.go | 10 ++++++---- business/model/dao/store.go | 11 +++++++++-- business/model/dao/thing_map.go | 5 +++-- .../partner/purchase/tiktok_store/order.go | 3 --- .../purchase/tiktok_store/store_sku2_utils.go | 2 +- controllers/cms_store.go | 19 ++++++++++++++++++- routers/commentsRouter_controllers.go | 10 ++++++++++ 8 files changed, 51 insertions(+), 13 deletions(-) diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index be4b99061..9e581d0da 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -6095,3 +6095,7 @@ func BatchCreateFreeShipTemplate(relInfo map[string][]tiktok_store.RelInfo, ship func GetVendorStoreBind(vendorStoreId string, vendorId int) (int, error) { return dao.GetCodeAndIDByMeiTuan(vendorStoreId, vendorId) } + +func BindJxPrintToStore(storeId int64, printSn, printKey string) error { + return dao.BindJXPrintToStore(storeId, printSn, printKey) +} diff --git a/business/jxstore/misc/misc.go b/business/jxstore/misc/misc.go index e52a2333f..716a39dad 100644 --- a/business/jxstore/misc/misc.go +++ b/business/jxstore/misc/misc.go @@ -249,10 +249,10 @@ func Init() { cms.RefreshTiktokShopToken(jxcontext.AdminCtx) }, 60*time.Second, 30*time.Minute) - // 更新门店商品 - //ScheduleTimerFuncByInterval(func() { - // syncStoreSkuTiktok() - //}, 60*time.Second, 1*time.Minute) + // 抖音更新门店商品 + ScheduleTimerFuncByInterval(func() { + syncStoreSkuTiktok() + }, 60*time.Second, 1*time.Minute) // 定时任务刷新当前订单的物流信息 ScheduleTimerFunc("RefreshMaterialLogistics", func() { @@ -574,6 +574,7 @@ func syncStoreSku() { } func syncStoreSkuTiktok() { + globals.SugarLogger.Debugf("==========syncStoreSkuTiktok=") syncFlag := 0 | model.SyncFlagSaleMask task := tasksch.NewParallelTask("同步京西商品到抖音平台,方案二使用", nil, jxcontext.AdminCtx, func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { @@ -593,6 +594,7 @@ func syncStoreSkuTiktok() { errList.AddErr(err) SaveImportantTaskID(TaskNameSyncStoreSku, SpecialTaskID) } + globals.SugarLogger.Debugf("===============syncStoreSkuTiktok ,errList %s", utils.Format4Output(errList, false)) err = errList.GetErrListAsOne() return retVal, err }, []int{0, 1}) diff --git a/business/model/dao/store.go b/business/model/dao/store.go index c40f9cfac..a376eab42 100644 --- a/business/model/dao/store.go +++ b/business/model/dao/store.go @@ -1631,8 +1631,15 @@ func InsertIntoFreightTemplate(storeID int, vendorStoreID string, templateID, wa return err } -//只获取美团平台的京西storeID +// GetCodeAndIDByMeiTuan 只获取美团平台的京西storeID func GetCodeAndIDByMeiTuan(vendorStoreID string, vendorId int) (storeID int, err error) { - err = GetRow(GetDB(), &storeID, "SELECT s.store_id FROM store_map s WHERE s.vendor_store_id = ? AND s.vendor_id = ? ", vendorStoreID, vendorId) + err = GetRow(GetDB(), &storeID, "SELECT s.store_id FROM store_map s WHERE s.vendor_store_id = ? AND s.vendor_id = ? AND deleted_at = ?", vendorStoreID, vendorId, utils.DefaultTimeValue) return storeID, err } + +// BindJXPrintToStore 更新绑定门店的京西打印机 PrinterFontSize printer_sn printer_key printer_vendor_id printer_font_size +func BindJXPrintToStore(storeId int64, printSn, printKey string) error { + sql := ` UPDATE store SET printer_sn = ? , printer_key = ? , printer_vendor_id = ? , printer_font_size = ? WHERE id = ?` + _, err := ExecuteSQL(GetDB(), sql, []interface{}{printSn, printKey, model.VendorIDJxprint, model.NO, storeId}) + return err +} diff --git a/business/model/dao/thing_map.go b/business/model/dao/thing_map.go index bc51fa0b8..82fb4959a 100644 --- a/business/model/dao/thing_map.go +++ b/business/model/dao/thing_map.go @@ -43,15 +43,16 @@ func CreateThingMap(thingId int64, vendorThingID, appOrgCode, err string, thingT } // GetThingToTiktokMapList 抖店获取同步类型 -func GetThingToTiktokMapList(db *DaoDB, vendorId int, thingId int64) (cats []*model.ThingMap, err error) { +func GetThingToTiktokMapList(db *DaoDB, vendorId int, thingId int64, vendorOrgCode string) (cats []*model.ThingMap, err error) { sql := ` SELECT t1.* FROM thing_map t1 - WHERE t1.thing_id = ? AND t1.vendor_id = ? AND t1.deleted_at = ? + WHERE t1.thing_id = ? AND t1.vendor_id = ? AND vendor_org_code = ? AND t1.deleted_at = ? ` sqlParams := []interface{}{ thingId, vendorId, + vendorOrgCode, utils.DefaultTimeValue, } diff --git a/business/partner/purchase/tiktok_store/order.go b/business/partner/purchase/tiktok_store/order.go index 7edebbf5f..6db0a85c0 100644 --- a/business/partner/purchase/tiktok_store/order.go +++ b/business/partner/purchase/tiktok_store/order.go @@ -589,9 +589,6 @@ func (c *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder, userName s AddressId: 0, StoreId: utils.Str2Int64(order.VendorStoreID), }) - if err != nil { - return err - } return err } diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index 210a665ef..1b4c76b73 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -215,7 +215,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI // 根据本地商品id获取线上商品是否存在,存在则只创建子商品 // 获取本地存储映射关系,获取本地主商品id是否存在 - localThing, err := dao.GetThingToTiktokMapList(db, model.VendorIDDD, int64(storeSku.SkuID)) + localThing, err := dao.GetThingToTiktokMapList(db, model.VendorIDDD, int64(storeSku.SkuID), storeDetail.VendorOrgCode) if len(localThing) == 0 { mainOrderDetail, err := api.GetSkuDetailLocalID("", utils.Int2Str(storeSku.SkuID)) if err != nil || mainOrderDetail == nil || mainOrderDetail.ProductIdStr == "" { diff --git a/controllers/cms_store.go b/controllers/cms_store.go index 26482fe84..6022cfaff 100644 --- a/controllers/cms_store.go +++ b/controllers/cms_store.go @@ -1544,7 +1544,7 @@ func (c *StoreController) CreateFreeShipTemplates() { }) } -// @Title 打印机获取授权账号再京西菜市的绑定关系 +// @Title 打印机获取授权账号再京西菜市的绑定关系(其实就是根据平台门店id获取绑定门店id) // @Description 打印机获取授权账号再京西菜市的绑定关系 // @Param token header string true "认证token" // @Param vendorStoreId formData string true "平台账号id" @@ -1558,3 +1558,20 @@ func (c *StoreController) PrintCheckAccountAuthorization() { return retVal, "", err }) } + +// @Title 门店存在时,绑定打印机账号信息 +// @Description 门店存在时,绑定打印机账号信息 +// @Param token header string true "认证token" +// @Param storeId formData int64 true "京西门店id" +// @Param printSn formData string true "打印机编号" +// @Param printKey formData string true "打印机秘钥" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /BindJxPrinter [post] +func (c *StoreController) BindJxPrinter() { + c.callBindJxPrinter(func(params *tStoreBindJxPrinterParams) (interface{}, string, error) { + err := cms.BindJxPrintToStore(int64(params.StoreId), params.PrintSn, params.PrintKey) + return nil, "", err + }) + +} diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index cb47fa3b8..58042c6c5 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -3000,6 +3000,16 @@ func init() { Filters: nil, Params: nil}) + // 绑定京西打印机到京西菜市 + web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"] = append(web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"], + web.ControllerComments{ + Method: "BindJxPrinter", + Router: `/BindJxPrinter`, + AllowHTTPMethods: []string{"post"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"] = append(web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"], web.ControllerComments{ Method: "BackUpStoreSkuBind", From 500c9eb3b37b68cee7fb32cc2da31ddc871ba94e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Mon, 19 Dec 2022 14:41:27 +0800 Subject: [PATCH 44/78] 1 --- business/model/dao/store.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/model/dao/store.go b/business/model/dao/store.go index a376eab42..8f09f09a4 100644 --- a/business/model/dao/store.go +++ b/business/model/dao/store.go @@ -1633,7 +1633,7 @@ func InsertIntoFreightTemplate(storeID int, vendorStoreID string, templateID, wa // GetCodeAndIDByMeiTuan 只获取美团平台的京西storeID func GetCodeAndIDByMeiTuan(vendorStoreID string, vendorId int) (storeID int, err error) { - err = GetRow(GetDB(), &storeID, "SELECT s.store_id FROM store_map s WHERE s.vendor_store_id = ? AND s.vendor_id = ? AND deleted_at = ?", vendorStoreID, vendorId, utils.DefaultTimeValue) + err = GetRow(GetDB(), &storeID, "SELECT s.store_id FROM store_map s WHERE s.vendor_store_id = ? AND s.vendor_id = ? AND s.deleted_at = ?", vendorStoreID, vendorId, utils.DefaultTimeValue) return storeID, err } From 6c438e81dd8f6ff18a6e5962cb4f7c9b53b90064 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Mon, 19 Dec 2022 16:19:43 +0800 Subject: [PATCH 45/78] 1 --- .../purchase/tiktok_store/store_sku2_utils.go | 41 ++++++++++++++++++- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index 1b4c76b73..0a8d923b5 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -215,9 +215,9 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI // 根据本地商品id获取线上商品是否存在,存在则只创建子商品 // 获取本地存储映射关系,获取本地主商品id是否存在 - localThing, err := dao.GetThingToTiktokMapList(db, model.VendorIDDD, int64(storeSku.SkuID), storeDetail.VendorOrgCode) + localThing, _ := dao.GetThingToTiktokMapList(db, model.VendorIDDD, int64(storeSku.SkuID), storeDetail.VendorOrgCode) + mainOrderDetail, err := api.GetSkuDetailLocalID("", utils.Int2Str(storeSku.SkuID)) if len(localThing) == 0 { - mainOrderDetail, err := api.GetSkuDetailLocalID("", utils.Int2Str(storeSku.SkuID)) if err != nil || mainOrderDetail == nil || mainOrderDetail.ProductIdStr == "" { tiktokResult, err := api.CreateStoreCommodity(param) // 创建主商品,同步主商品 if err != nil { @@ -274,6 +274,43 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI } } } else { + // 线上本地都存在,但是线上审核不成功,就去更新主商品 + if mainOrderDetail.CheckStatus != tiktokShop.SkuCheckStatusPass && mainOrderDetail.CheckStatus != tiktokShop.SkuCheckStatusPassNotPutOn { + // 更新主商品,在同步到子门店,考虑审核时间 + 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 = utils.Str2Int64(storeSku.VendorMainId) + updateParam.MainProductId = utils.Str2Int64(storeSku.VendorMainId) + updateParam.SpecPrices = param.SpecPrices + updateParam.ProductId = utils.Str2Int64(storeSku.VendorSkuID) + 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) + } + continue + } + // 主商品存在,直接同步子商品 childrenProductId, err := api.CreateSubProduct(utils.Str2Int64(localThing[0].VendorThingID), utils.Str2Int64(vendorStoreID)) if err != nil || childrenProductId == 0 { From 676228f8bea090aff1480617ccd96d7c914340c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Mon, 19 Dec 2022 16:59:52 +0800 Subject: [PATCH 46/78] 1 --- business/model/dao/thing_map.go | 5 +++++ .../partner/purchase/tiktok_store/store_sku2_utils.go | 8 +++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/business/model/dao/thing_map.go b/business/model/dao/thing_map.go index 82fb4959a..b6316054c 100644 --- a/business/model/dao/thing_map.go +++ b/business/model/dao/thing_map.go @@ -42,6 +42,11 @@ func CreateThingMap(thingId int64, vendorThingID, appOrgCode, err string, thingT return CreateEntity(GetDB(), thingMap) } +func UpdateThingMap(thingMap *model.ThingMap) error { + _, err := UpdateEntity(GetDB(), thingMap, "ID") + return err +} + // GetThingToTiktokMapList 抖店获取同步类型 func GetThingToTiktokMapList(db *DaoDB, vendorId int, thingId int64, vendorOrgCode string) (cats []*model.ThingMap, err error) { sql := ` diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index 0a8d923b5..9c8fec93a 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -28,6 +28,7 @@ import ( "git.rosy.net.cn/jx-callback/globals" "math/rand" "strings" + "time" ) type MainSku struct { @@ -224,7 +225,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) continue } - if err := dao.CreateThingMap(int64(storeSku.SkuID), utils.Int64ToStr(tiktokResult.ProductId), storeDetail.VendorOrgCode, "本地不存在,线上也不存在", model.ThingTypeSku, model.SyncFlagNewMask); err != nil { + if err := dao.CreateThingMap(int64(storeSku.SkuID), utils.Int64ToStr(tiktokResult.ProductId), storeDetail.VendorOrgCode, "本地不存在,线上也不存在", model.ThingTypeSku, 0); err != nil { failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) } @@ -307,6 +308,11 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI 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 } From 792fcd19cb3f92a349355a8698bfb5d12b24a183 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Mon, 19 Dec 2022 18:31:55 +0800 Subject: [PATCH 47/78] 1 --- business/jxstore/misc/misc.go | 6 +++--- business/partner/purchase/tiktok_store/store_sku2_utils.go | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/business/jxstore/misc/misc.go b/business/jxstore/misc/misc.go index 716a39dad..06ceff54d 100644 --- a/business/jxstore/misc/misc.go +++ b/business/jxstore/misc/misc.go @@ -250,9 +250,9 @@ func Init() { }, 60*time.Second, 30*time.Minute) // 抖音更新门店商品 - ScheduleTimerFuncByInterval(func() { - syncStoreSkuTiktok() - }, 60*time.Second, 1*time.Minute) + //ScheduleTimerFuncByInterval(func() { + // syncStoreSkuTiktok() + //}, 60*time.Second, 1*time.Minute) // 定时任务刷新当前订单的物流信息 ScheduleTimerFunc("RefreshMaterialLogistics", func() { diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index 9c8fec93a..ac7de8b7c 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -303,7 +303,6 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI updateParam.ProductId = utils.Str2Int64(storeSku.VendorMainId) updateParam.MainProductId = utils.Str2Int64(storeSku.VendorMainId) updateParam.SpecPrices = param.SpecPrices - updateParam.ProductId = utils.Str2Int64(storeSku.VendorSkuID) updateParam.StoreId = utils.Str2Int64(vendorStoreID) if err := api.EditStoreCommodity(updateParam); err != nil { failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) @@ -398,13 +397,13 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI param.ProductId = utils.Str2Int64(storeSku.VendorMainId) param.MainProductId = utils.Str2Int64(storeSku.VendorMainId) param.SpecPrices = GetSpecPrices(param.Specs, vendorStoreID, param.MainProductId, storeSku) - param.ProductId = utils.Str2Int64(storeSku.VendorSkuID) param.StoreId = utils.Str2Int64(vendorStoreID) if err := api.EditStoreCommodity(param); err != nil { failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID) continue } + storeSku.StoreSkuStatus = 57 // 品库修改 售卖状态待同步 价格待同步 } return } From 0b3a1618e4ce32f4a78fd0948354269e10f8b71d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Tue, 20 Dec 2022 09:32:07 +0800 Subject: [PATCH 48/78] 1 --- business/jxstore/misc/misc.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/business/jxstore/misc/misc.go b/business/jxstore/misc/misc.go index 06ceff54d..ca878f06a 100644 --- a/business/jxstore/misc/misc.go +++ b/business/jxstore/misc/misc.go @@ -2,7 +2,9 @@ package misc import ( "fmt" + "git.rosy.net.cn/baseapi/platformapi/dingdingapi" "git.rosy.net.cn/jx-callback/business/bidding" + "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/purchase/tiktok_store" "sync" @@ -250,9 +252,9 @@ func Init() { }, 60*time.Second, 30*time.Minute) // 抖音更新门店商品 - //ScheduleTimerFuncByInterval(func() { - // syncStoreSkuTiktok() - //}, 60*time.Second, 1*time.Minute) + ScheduleTimerFuncByInterval(func() { + syncStoreSkuTiktok() + }, 60*time.Second, 2*time.Minute) // 定时任务刷新当前订单的物流信息 ScheduleTimerFunc("RefreshMaterialLogistics", func() { @@ -574,7 +576,6 @@ func syncStoreSku() { } func syncStoreSkuTiktok() { - globals.SugarLogger.Debugf("==========syncStoreSkuTiktok=") syncFlag := 0 | model.SyncFlagSaleMask task := tasksch.NewParallelTask("同步京西商品到抖音平台,方案二使用", nil, jxcontext.AdminCtx, func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { @@ -586,7 +587,6 @@ func syncStoreSkuTiktok() { if beego.BConfig.RunMode != "jxgy" { errList.AddErr(cms.DeleteSkuNameExPrefixOverdue(db)) errList.AddErr(cms.SetMultiStoreSkuSyncModifyStatus(db, partner.GetMultiStoreVendorIDs())) - globals.SugarLogger.Debugf("=======定时任务更新") _, err = cms.CurVendorSync.SyncStoresSkus2(jxcontext.AdminCtx, nil, 0, db, []int{model.VendorIDDD}, []int{668594}, false, nil, nil, syncFlag, true, true) errList.AddErr(err) } @@ -594,7 +594,7 @@ func syncStoreSkuTiktok() { errList.AddErr(err) SaveImportantTaskID(TaskNameSyncStoreSku, SpecialTaskID) } - globals.SugarLogger.Debugf("===============syncStoreSkuTiktok ,errList %s", utils.Format4Output(errList, false)) + ddmsg.SendUserMessage(dingdingapi.MsgTyeText, "2452A93EEB9111EC9B06525400E86DC0", "抖音同步商品", utils.Format4Output(errList, false)) err = errList.GetErrListAsOne() return retVal, err }, []int{0, 1}) From e290ff3fb24d934566fb6e75f8adda1dd077c439 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Tue, 20 Dec 2022 11:04:31 +0800 Subject: [PATCH 49/78] 1 --- business/partner/purchase/mtwm/order.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/business/partner/purchase/mtwm/order.go b/business/partner/purchase/mtwm/order.go index 4c7c529da..9418ab187 100644 --- a/business/partner/purchase/mtwm/order.go +++ b/business/partner/purchase/mtwm/order.go @@ -260,6 +260,11 @@ func (p *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *mo if product["upc"] != nil && product["upc"].(string) != "" { sku.Upc = product["upc"].(string) } + _, _, _, specUnit, _, specQuality := jxutils.SplitSkuName(sku.SkuName) + nameWeight := jxutils.FormatSkuWeight(specQuality, specUnit) + if nameWeight == 0 { + skuName += " " + product["spec"].(string) + } if sku.VendorSkuID == "" { if !strings.Contains(product["app_food_code"].(string), "mtcode") { sku.VendorSkuID = product["app_food_code"].(string) From 7a0aec63428c6b9c8a922e760cf97a201016563c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Tue, 20 Dec 2022 11:47:16 +0800 Subject: [PATCH 50/78] 1 --- business/partner/delivery/rider.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/partner/delivery/rider.go b/business/partner/delivery/rider.go index cc44f1e9c..b3be78795 100644 --- a/business/partner/delivery/rider.go +++ b/business/partner/delivery/rider.go @@ -192,7 +192,6 @@ func PullTiktokRiderInfo(riderInfo *mtpsapi.RiderInfo) { // 呼叫骑手的时候推送发货 // 抖店由于发配送时运单id已经固定了,我们系统在重新发货,或者运单号发生改变时去推送信息时.抖店只识别第一个运单号所以在这儿修改成发单时的第一个运单号! paramsMap := utils.Struct2Map(riderInfo, "", true) - globals.SugarLogger.Debugf("==================paramsMap:%s", utils.Format4Output(paramsMap, false)) if handler := partner.GetPurchaseOrderHandlerFromVendorID(model.VendorIDDD); handler != nil { if err := handler.GetOrderRider("", "", paramsMap); err != nil { globals.SugarLogger.Errorf("PullTiktokRiderInfo Err %s", err.Error()) @@ -296,6 +295,7 @@ func UpdateFakeWayBillToTiktok() { if handler := partner.GetPurchaseOrderHandlerFromVendorID(model.VendorIDDD); handler != nil { if err := handler.GetOrderRider(fakeWayBill[i].VendorOrgCode, "", paramsMap); err != nil { globals.SugarLogger.Errorf("Fake Pull Rider Info Err :%s--%s--%v", riderInfo.OrderId, riderInfo.ThirdCarrierOrderId, err) + continue } } From fe5eda2c1cb585a06329267ccfe13face26bc2a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Tue, 20 Dec 2022 14:16:26 +0800 Subject: [PATCH 51/78] 1 --- business/partner/purchase/tiktok_store/order.go | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/business/partner/purchase/tiktok_store/order.go b/business/partner/purchase/tiktok_store/order.go index 6db0a85c0..4faa2db8e 100644 --- a/business/partner/purchase/tiktok_store/order.go +++ b/business/partner/purchase/tiktok_store/order.go @@ -639,10 +639,19 @@ func (c *PurchaseHandler) SelfDeliverDelivering(order *model.GoodsOrder, userNam // SelfDeliverDelivered 自配搜完成(暂无) func (c *PurchaseHandler) SelfDeliverDelivered(order *model.GoodsOrder, userName string) (err error) { - //if globals.EnableMtwmStoreWrite { - // err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "").OrderArrived(utils.Str2Int64(order.VendorOrderID)) - //} - return err + riderInfo := &mtpsapi.RiderInfo{ + OrderId: order.VendorOrderID, + ThirdCarrierOrderId: order.VendorOrderID, + CourierName: "", + CourierPhone: "", + LogisticsProviderCode: "10002", + LogisticsStatus: 0, + LogisticsContext: "商家自配送,已送达", + Latitude: "", + Longitude: "", + OpCode: tiktokShop.TiktokLogisticsDELIVERED, + } + return c.GetOrderRider("", "", utils.Struct2MapByJson(riderInfo)) } func getTimeFromTimestamp(timeStamp int64) time.Time { From af6d2f88349451aab3ca1f3b98e2295bb7787960 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Tue, 20 Dec 2022 14:23:27 +0800 Subject: [PATCH 52/78] 1 --- business/jxstore/cms/sync_store_sku.go | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/business/jxstore/cms/sync_store_sku.go b/business/jxstore/cms/sync_store_sku.go index a5027984f..596a1282c 100644 --- a/business/jxstore/cms/sync_store_sku.go +++ b/business/jxstore/cms/sync_store_sku.go @@ -677,11 +677,14 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag // } } - //globals.SugarLogger.Debugf("== createList %s", utils.Format4Output(createList, false)) - //globals.SugarLogger.Debugf("== updateList %s", utils.Format4Output(updateList, false)) - //globals.SugarLogger.Debugf("== deleteList %s", utils.Format4Output(deleteList, false)) - //globals.SugarLogger.Debugf("== stockList %s", utils.Format4Output(stockList, false)) - //globals.SugarLogger.Debugf("== priceList %s", utils.Format4Output(priceList, false)) + if vendorID == model.VendorIDDD { + globals.SugarLogger.Debugf("== createList %s", utils.Format4Output(createList, false)) + globals.SugarLogger.Debugf("== updateList %s", utils.Format4Output(updateList, false)) + globals.SugarLogger.Debugf("== deleteList %s", utils.Format4Output(deleteList, false)) + globals.SugarLogger.Debugf("== stockList %s", utils.Format4Output(stockList, false)) + globals.SugarLogger.Debugf("== priceList %s", utils.Format4Output(priceList, false)) + } + task := tasksch.NewParallelTask("syncStoreSkuNew", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError2), ctx, func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { step := batchItemList[0].(int) From e5f1925c99a7615f537e39164cbee8fe4f2d431f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Tue, 20 Dec 2022 15:34:14 +0800 Subject: [PATCH 53/78] 1 --- business/partner/delivery/rider.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/partner/delivery/rider.go b/business/partner/delivery/rider.go index b3be78795..3fb290351 100644 --- a/business/partner/delivery/rider.go +++ b/business/partner/delivery/rider.go @@ -59,7 +59,7 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) { if orderId == "" { // 订单id为空是,是定时轮询操作,不做此状态 waybillList, _ := dao.GetWaybills(dao.GetDB(), v.VendorOrderID) if len(waybillList) > 0 && waybillList[0].Status > model.WaybillStatusEndBegin { - globals.SugarLogger.Debug("订单物流状态结束,不在推送订单状态:orderID[%s],wayBillId[%s]", v.VendorOrderID, waybillList[0].VendorWaybillID) + globals.SugarLogger.Debugf("订单物流状态结束,不在推送订单状态:orderID[%s],wayBillId[%s]", v.VendorOrderID, waybillList[0].VendorWaybillID) continue } } From fd61639e7f2fee20d4143e7d15aa6f997d4bc432 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Tue, 20 Dec 2022 17:28:13 +0800 Subject: [PATCH 54/78] 1 --- .../purchase/tiktok_store/store_sku2_utils.go | 51 ++++++++++++++++++- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index ac7de8b7c..c72a1b4ec 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -29,6 +29,7 @@ import ( "math/rand" "strings" "time" + "unicode" ) type MainSku struct { @@ -156,7 +157,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI if len(param.Name) < 23 { // 中文字符一个汉字三个长度符号/数字/字母两个长度,商品名称不能大于 param.Name += "【同城配送】" } else if len(param.Name) > 90 { // 抖音最大60个字符,三十个汉字 - param.Name = param.Name[0:90] + param.Name = checkNameLenght(param.Name) } // 获取上传图,商品轮播图 @@ -367,7 +368,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI if len(param.Name) < 23 { // 中文字符一个汉字三个长度符号/数字/字母两个长度,商品名称不能大于 param.Name += "【同城配送】" } else if len(param.Name) > 90 { // 抖音最大60个字符,三十个汉字 - param.Name = param.Name[0:90] + param.Name = checkNameLenght(param.Name) } // 获取上传图,商品轮播图 @@ -410,6 +411,52 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI return failedList, err } +func checkNameLenght(name string) string { + var chinesLen int // 中文 + var punctZh int // 中文标点 + var punctEn int // 英文标点 + var punctAZ int // 字母 + var punctNum int // 字母 + var spance int // 空格 + for _, v := range name { + if unicode.Is(unicode.Han, v) { // 中文 + chinesLen++ + continue + } + if unicode.IsPunct(v) { + if v >= 1000 { // 中文字符 + fmt.Println(v) + punctZh++ + } else { + punctEn++ // 英文字符 + } + continue + } + if unicode.IsLetter(v) { // 字母 + punctAZ++ + continue + } + if unicode.IsNumber(v) { // 数字 + punctNum++ + continue + } + if unicode.IsSpace(v) { // 空格 + spance++ + continue + } + } + + maxLen := (chinesLen * 2) + (punctZh * 2) + punctEn + punctAZ + punctNum + spance + if maxLen > 60 { // 美团最多支持30个汉字长度 + index := strings.LastIndex(name, " ") + if index != 0 { + return name[0:index] + } else { + return name[0 : len(name)-(maxLen-60)*3] + } + } + return name +} func upDateChildrenPriceStockLaunch(api *tiktokShop.API, storeSku *dao.StoreSkuSyncInfo, childrenProductId int64, vendorStoreID, syncType string) (failedList []*partner.StoreSkuInfoWithErr) { skuId, failed := getProductSkuID(api, storeSku, syncType, childrenProductId) if skuId == 0 || len(failed) > 0 { From 72981c504e02b036b2c9d998808479956c3e4e95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Tue, 20 Dec 2022 18:01:11 +0800 Subject: [PATCH 55/78] 1 --- .../purchase/tiktok_store/store_sku2_utils.go | 16 +++++----------- controllers/tiktok_delivery.go | 4 +++- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index c72a1b4ec..ea38e62f1 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -154,11 +154,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI PickupMethod: "0", OuterProductId: utils.Int2Str(storeSku.SkuID), // 本地skuId为外部商品id } - if len(param.Name) < 23 { // 中文字符一个汉字三个长度符号/数字/字母两个长度,商品名称不能大于 - param.Name += "【同城配送】" - } else if len(param.Name) > 90 { // 抖音最大60个字符,三十个汉字 - param.Name = checkNameLenght(param.Name) - } + 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) @@ -364,12 +360,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI } else { param.CategoryLeafId = storeSku.VendorVendorCatID } - - if len(param.Name) < 23 { // 中文字符一个汉字三个长度符号/数字/字母两个长度,商品名称不能大于 - param.Name += "【同城配送】" - } else if len(param.Name) > 90 { // 抖音最大60个字符,三十个汉字 - param.Name = checkNameLenght(param.Name) - } + 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) @@ -454,6 +445,9 @@ func checkNameLenght(name string) string { } else { return name[0 : len(name)-(maxLen-60)*3] } + } else if maxLen < 16 { + name += "【同城配送】" + return name } return name } diff --git a/controllers/tiktok_delivery.go b/controllers/tiktok_delivery.go index b01703ade..8397fc9df 100644 --- a/controllers/tiktok_delivery.go +++ b/controllers/tiktok_delivery.go @@ -149,18 +149,20 @@ func (c *LogisticsController) LogisticsQuery() { Message: "运单账号不存在", } c.ServeJSON() + return } // 查询订单的运单是否存在 data, err := dao.GetWayBillsByWayBillId(dao.GetDB(), param.TrackNo) if err != nil || len(data) == 0 { - globals.SugarLogger.Debugf("根据单号查询运单数据错误:%s", err) + globals.SugarLogger.Debugf("根据单号查询运单数据错误:%s,运单号 :%s", err.Error(), param.TrackNo) c.Data["json"] = LogisticsQueryRest{ Result: false, ReturnCode: "1002", Message: "运单账号不存在", } c.ServeJSON() + return } returnParam := &LogisticsQueryRest{ From bb200f32d6396a1f0cabf79709210f83e98f8b35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Tue, 20 Dec 2022 18:45:13 +0800 Subject: [PATCH 56/78] 1 --- business/jxstore/misc/misc.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/business/jxstore/misc/misc.go b/business/jxstore/misc/misc.go index ca878f06a..f24935c82 100644 --- a/business/jxstore/misc/misc.go +++ b/business/jxstore/misc/misc.go @@ -252,9 +252,9 @@ func Init() { }, 60*time.Second, 30*time.Minute) // 抖音更新门店商品 - ScheduleTimerFuncByInterval(func() { - syncStoreSkuTiktok() - }, 60*time.Second, 2*time.Minute) + //ScheduleTimerFuncByInterval(func() { + // syncStoreSkuTiktok() + //}, 60*time.Second, 2*time.Minute) // 定时任务刷新当前订单的物流信息 ScheduleTimerFunc("RefreshMaterialLogistics", func() { From 3fb57405fdf4b311b87ec351b9c225fd394c4aeb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 21 Dec 2022 09:19:13 +0800 Subject: [PATCH 57/78] 1 --- business/jxstore/misc/misc.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/business/jxstore/misc/misc.go b/business/jxstore/misc/misc.go index f24935c82..ca878f06a 100644 --- a/business/jxstore/misc/misc.go +++ b/business/jxstore/misc/misc.go @@ -252,9 +252,9 @@ func Init() { }, 60*time.Second, 30*time.Minute) // 抖音更新门店商品 - //ScheduleTimerFuncByInterval(func() { - // syncStoreSkuTiktok() - //}, 60*time.Second, 2*time.Minute) + ScheduleTimerFuncByInterval(func() { + syncStoreSkuTiktok() + }, 60*time.Second, 2*time.Minute) // 定时任务刷新当前订单的物流信息 ScheduleTimerFunc("RefreshMaterialLogistics", func() { From e0203bb62928329666dd0a3fcb4cb905ba74dac3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 21 Dec 2022 09:43:25 +0800 Subject: [PATCH 58/78] 1 --- business/model/dao/store_sku.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 82dcc9dab..1df4ca69e 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -690,6 +690,8 @@ func GetStoreSkus2(db *DaoDB, vendorID, storeID int, skuIDs []int, mustDirty boo if err = GetRows(db, &skus, sql, sqlParams...); err != nil { return nil, err } + globals.SugarLogger.Debugf("============sql := %s", sql) + globals.SugarLogger.Debugf("============param := %s", utils.Format4Output(sqlParams, false)) return skus, err } From c3c71db81718167f9de9e209432e31da4724c572 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 21 Dec 2022 09:44:37 +0800 Subject: [PATCH 59/78] 1 --- business/jxstore/cms/sync_store_sku.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/jxstore/cms/sync_store_sku.go b/business/jxstore/cms/sync_store_sku.go index 596a1282c..27293c5a4 100644 --- a/business/jxstore/cms/sync_store_sku.go +++ b/business/jxstore/cms/sync_store_sku.go @@ -677,7 +677,7 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag // } } - if vendorID == model.VendorIDDD { + if vendorID == model.VendorIDDD && storeDetail.Store.ID == 668594 { globals.SugarLogger.Debugf("== createList %s", utils.Format4Output(createList, false)) globals.SugarLogger.Debugf("== updateList %s", utils.Format4Output(updateList, false)) globals.SugarLogger.Debugf("== deleteList %s", utils.Format4Output(deleteList, false)) From b241c601467a528b3ced4cc443ed729758077be0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 21 Dec 2022 10:40:21 +0800 Subject: [PATCH 60/78] 1 --- business/jxstore/cms/sync_store_sku.go | 7 +++++++ business/model/dao/store_sku.go | 7 +++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/business/jxstore/cms/sync_store_sku.go b/business/jxstore/cms/sync_store_sku.go index 27293c5a4..18ed91e7b 100644 --- a/business/jxstore/cms/sync_store_sku.go +++ b/business/jxstore/cms/sync_store_sku.go @@ -484,7 +484,11 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag } now := jxutils.OperationTime2HourMinuteFormat(time.Now()) var failedList []*partner.StoreSkuInfoWithErr + var skuList []int for _, sku := range skus { + if vendorID == 14 && storeID == 668594 { + skuList = append(skuList, sku.SkuID) + } if !useVendorPriceDirectly && !isSkuLockTimeValid(sku) { sku.VendorPrice = 0 } @@ -621,6 +625,9 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag } return skuList } + if vendorID == 14 && storeID == 668594 { + globals.SugarLogger.Debugf("==========sku %s", utils.Format4Output(skuList, false)) + } isContinueWhenError2 := true //如果是银豹平台,则要按照商品skuname维度同步 diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 1df4ca69e..c803fb76f 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -690,8 +690,11 @@ func GetStoreSkus2(db *DaoDB, vendorID, storeID int, skuIDs []int, mustDirty boo if err = GetRows(db, &skus, sql, sqlParams...); err != nil { return nil, err } - globals.SugarLogger.Debugf("============sql := %s", sql) - globals.SugarLogger.Debugf("============param := %s", utils.Format4Output(sqlParams, false)) + if vendorID == 14 && storeID == 668594 { + globals.SugarLogger.Debugf("============sql := %s", sql) + globals.SugarLogger.Debugf("============param := %s", utils.Format4Output(sqlParams, false)) + + } return skus, err } From 12a98750ee83a6dca9285a8606260ce57c5cfd7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 21 Dec 2022 10:59:03 +0800 Subject: [PATCH 61/78] 1 --- business/jxstore/cms/sync_store_sku.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/business/jxstore/cms/sync_store_sku.go b/business/jxstore/cms/sync_store_sku.go index 18ed91e7b..9a624c24d 100644 --- a/business/jxstore/cms/sync_store_sku.go +++ b/business/jxstore/cms/sync_store_sku.go @@ -534,6 +534,8 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag } } } else { + globals.SugarLogger.Debugf("======skuid %d", sku.SkuID) + globals.SugarLogger.Debugf("======MergedStatus %d", sku.MergedStatus) if sku.MergedStatus == model.SkuStatusNormal { if vendorID == model.VendorIDDD { createList = append(createList, sku) From 5ab644b1a4f9c52407dde4ef7a8e73e163921156 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 21 Dec 2022 11:46:44 +0800 Subject: [PATCH 62/78] 1 --- business/jxstore/cms/sync_store_sku.go | 17 ----------------- business/model/dao/store_sku.go | 5 ----- 2 files changed, 22 deletions(-) diff --git a/business/jxstore/cms/sync_store_sku.go b/business/jxstore/cms/sync_store_sku.go index 9a624c24d..12f0f55c4 100644 --- a/business/jxstore/cms/sync_store_sku.go +++ b/business/jxstore/cms/sync_store_sku.go @@ -484,11 +484,7 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag } now := jxutils.OperationTime2HourMinuteFormat(time.Now()) var failedList []*partner.StoreSkuInfoWithErr - var skuList []int for _, sku := range skus { - if vendorID == 14 && storeID == 668594 { - skuList = append(skuList, sku.SkuID) - } if !useVendorPriceDirectly && !isSkuLockTimeValid(sku) { sku.VendorPrice = 0 } @@ -534,8 +530,6 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag } } } else { - globals.SugarLogger.Debugf("======skuid %d", sku.SkuID) - globals.SugarLogger.Debugf("======MergedStatus %d", sku.MergedStatus) if sku.MergedStatus == model.SkuStatusNormal { if vendorID == model.VendorIDDD { createList = append(createList, sku) @@ -627,9 +621,6 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag } return skuList } - if vendorID == 14 && storeID == 668594 { - globals.SugarLogger.Debugf("==========sku %s", utils.Format4Output(skuList, false)) - } isContinueWhenError2 := true //如果是银豹平台,则要按照商品skuname维度同步 @@ -686,14 +677,6 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag // } } - if vendorID == model.VendorIDDD && storeDetail.Store.ID == 668594 { - globals.SugarLogger.Debugf("== createList %s", utils.Format4Output(createList, false)) - globals.SugarLogger.Debugf("== updateList %s", utils.Format4Output(updateList, false)) - globals.SugarLogger.Debugf("== deleteList %s", utils.Format4Output(deleteList, false)) - globals.SugarLogger.Debugf("== stockList %s", utils.Format4Output(stockList, false)) - globals.SugarLogger.Debugf("== priceList %s", utils.Format4Output(priceList, false)) - } - task := tasksch.NewParallelTask("syncStoreSkuNew", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError2), ctx, func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { step := batchItemList[0].(int) diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index c803fb76f..82dcc9dab 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -690,11 +690,6 @@ func GetStoreSkus2(db *DaoDB, vendorID, storeID int, skuIDs []int, mustDirty boo if err = GetRows(db, &skus, sql, sqlParams...); err != nil { return nil, err } - if vendorID == 14 && storeID == 668594 { - globals.SugarLogger.Debugf("============sql := %s", sql) - globals.SugarLogger.Debugf("============param := %s", utils.Format4Output(sqlParams, false)) - - } return skus, err } From df84f660ab1df0d42787a93ffc2e31d5cf4610dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 21 Dec 2022 13:58:14 +0800 Subject: [PATCH 63/78] 1 --- .../purchase/tiktok_store/store_sku2_utils.go | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index ea38e62f1..10e528cf1 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -384,10 +384,29 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI } // 获取品牌 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, err := api.GetSkuDetailLocalID("", utils.Int2Str(storeSku.SkuID)) + if err != nil { + failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) + continue + } + storeSku.VendorMainId = mainOrderDetail.ProductIdStr + mainIdInt = mainOrderDetail.MainProductId + if err := dao.CreateThingMap(int64(storeSku.SkuID), mainOrderDetail.ProductIdStr, storeDetail.VendorOrgCode, storeSku.VendorSkuAttrId, model.ThingTypeSku, 0); err != nil { + failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) + } + } else { + storeSku.VendorMainId = localThing[0].VendorThingID + mainIdInt = utils.Str2Int64(localThing[0].VendorThingID) + } + } // 修改商品 - param.ProductId = utils.Str2Int64(storeSku.VendorMainId) - param.MainProductId = utils.Str2Int64(storeSku.VendorMainId) + param.ProductId = mainIdInt + param.MainProductId = mainIdInt param.SpecPrices = GetSpecPrices(param.Specs, vendorStoreID, param.MainProductId, storeSku) param.StoreId = utils.Str2Int64(vendorStoreID) if err := api.EditStoreCommodity(param); err != nil { From 1cad57a15523f0ed3b8cc7460f83c3860aa50427 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 21 Dec 2022 14:29:02 +0800 Subject: [PATCH 64/78] 1 --- business/partner/purchase/tiktok_store/store_sku2_utils.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index 10e528cf1..81e8b6fe9 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -405,7 +405,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI } // 修改商品 - param.ProductId = mainIdInt + //param.ProductId = mainIdInt param.MainProductId = mainIdInt param.SpecPrices = GetSpecPrices(param.Specs, vendorStoreID, param.MainProductId, storeSku) param.StoreId = utils.Str2Int64(vendorStoreID) From 2a97c4435694be74fda68436afae873cf46c6615 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 21 Dec 2022 14:41:07 +0800 Subject: [PATCH 65/78] 1 --- business/partner/purchase/tiktok_store/store_sku2_utils.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index 81e8b6fe9..6db584b2b 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -405,7 +405,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI } // 修改商品 - //param.ProductId = mainIdInt + param.ProductId = 1752694442617903 param.MainProductId = mainIdInt param.SpecPrices = GetSpecPrices(param.Specs, vendorStoreID, param.MainProductId, storeSku) param.StoreId = utils.Str2Int64(vendorStoreID) From fe1090e7ec972c1c63256bb56c71416add2a8b8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 21 Dec 2022 15:07:24 +0800 Subject: [PATCH 66/78] 1 --- business/partner/purchase/tiktok_store/store_sku2_utils.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index 6db584b2b..f213181a0 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -300,7 +300,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI updateParam.ProductId = utils.Str2Int64(storeSku.VendorMainId) updateParam.MainProductId = utils.Str2Int64(storeSku.VendorMainId) updateParam.SpecPrices = param.SpecPrices - updateParam.StoreId = utils.Str2Int64(vendorStoreID) + //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) @@ -405,10 +405,10 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI } // 修改商品 - param.ProductId = 1752694442617903 + param.ProductId = mainIdInt param.MainProductId = mainIdInt param.SpecPrices = GetSpecPrices(param.Specs, vendorStoreID, param.MainProductId, storeSku) - param.StoreId = utils.Str2Int64(vendorStoreID) + //param.StoreId = utils.Str2Int64(vendorStoreID) if err := api.EditStoreCommodity(param); err != nil { failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID) From 3cc774dce74487ecd2e9b1181c419f3ae0a0f43c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 21 Dec 2022 15:50:16 +0800 Subject: [PATCH 67/78] 1 --- .../purchase/tiktok_store/store_sku2.go | 2 +- .../purchase/tiktok_store/store_sku2_utils.go | 21 ++++++++++++++----- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/business/partner/purchase/tiktok_store/store_sku2.go b/business/partner/purchase/tiktok_store/store_sku2.go index b7e2f118d..465313b0d 100644 --- a/business/partner/purchase/tiktok_store/store_sku2.go +++ b/business/partner/purchase/tiktok_store/store_sku2.go @@ -178,6 +178,7 @@ func (p *PurchaseHandler) UpdateStoreSkusPrice(ctx *jxcontext.Context, vendorOrg for _, v := range storeSkuList { tiktokSkuId, failedList := getProductSkuId4UpdateStock(api, v, storeID) if len(failedList) > 0 { + globals.SugarLogger.Debugf("看看走这儿了没,是不是更新 参数failedList1 %s", utils.Format4Output(failedList, false)) return failedList, err } price := &sku_editPrice_request.SkuEditPriceParam{ @@ -189,7 +190,6 @@ func (p *PurchaseHandler) UpdateStoreSkusPrice(ctx *jxcontext.Context, vendorOrg if err = api.EditPrice(price); err != nil { failedList = append(failedList, putils.GetErrMsg2FailedSingleList(v, err, storeID, model.VendorChineseNames[model.VendorIDDD], "更新价格异常")...) } - globals.SugarLogger.Debugf("v.VendorPrice ============= %d", v.VendorPrice) globals.SugarLogger.Debugf("看看走这儿了没,是不是更新 参数 %s", utils.Format4Output(price, false)) globals.SugarLogger.Debugf("看看走这儿了没,是不是更新 返回值 %s", utils.Format4Output(failedList, false)) globals.SugarLogger.Debugf("看看走这儿了没,是不是更新 结构体 %s", utils.Format4Output(v, false)) diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index f213181a0..7f4bcec30 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -529,12 +529,23 @@ func getProductSkuID(api *tiktokShop.API, storeSku *dao.StoreSkuSyncInfo, syncTy } func getProductSkuId4UpdateStock(api *tiktokShop.API, skuInfo *partner.StoreSkuInfo, storeId int) (tiktokSkuId int64, failedList []*partner.StoreSkuInfoWithErr) { - if skuInfo.VendorSonSkuID != "" && skuInfo.VendorSonSkuID != skuInfo.VendorSkuID { + if skuInfo.VendorSonSkuID != "" && skuInfo.VendorSonSkuID != skuInfo.VendorSkuID && len(skuInfo.VendorSonSkuID) >= len("3589393056912261100") { // 抖音长度 return utils.Str2Int64(skuInfo.VendorSonSkuID), nil } - childrenSku, err := api.GetSkuDetail(skuInfo.VendorSkuID, "") - if err != nil || len(childrenSku.SpecPrices) <= 0 { - failedList = append(failedList, putils.GetErrMsg2FailedSingleList(skuInfo, err, storeId, model.VendorChineseNames[model.VendorIDDD], "修改库存[err为空,子商品skuId未获取到]")...) + + var childrenSku *product_detail_response.ProductDetailData + if len(skuInfo.VendorSkuID) >= len("3589393056912261100") { + childrenSku, err := api.GetSkuDetail(skuInfo.VendorSkuID, "") + if err != nil || len(childrenSku.SpecPrices) <= 0 { + failedList = append(failedList, putils.GetErrMsg2FailedSingleList(skuInfo, err, storeId, model.VendorChineseNames[model.VendorIDDD], "修改库存[err为空,子商品skuId未获取到]")...) + return 0, failedList + } + } else { + childrenSku, err := api.GetSkuDetailLocalID("", skuInfo.VendorSkuID) + if err != nil || len(childrenSku.SpecPrices) <= 0 { + failedList = append(failedList, putils.GetErrMsg2FailedSingleList(skuInfo, err, storeId, model.VendorChineseNames[model.VendorIDDD], "修改库存[err为空,子商品skuId未获取到]")...) + return 0, failedList + } } for _, v := range childrenSku.SpecPrices { @@ -543,7 +554,7 @@ func getProductSkuId4UpdateStock(api *tiktokShop.API, skuInfo *partner.StoreSkuI return tiktokSkuId, nil } - return 0, append(failedList, putils.GetErrMsg2FailedSingleList(skuInfo, err, storeId, model.VendorChineseNames[model.VendorIDDD], "修改库存,获取商品详情SkuId未获取到")...) + return 0, append(failedList, putils.GetErrMsg2FailedSingleList(skuInfo, nil, storeId, model.VendorChineseNames[model.VendorIDDD], "修改库存,获取商品详情SkuId未获取到")...) } func getFreightIdAndSaleLimitId(api *tiktokShop.API, db *dao.DaoDB, storeDetail *dao.StoreDetail, vendorStoreID string) (freightId, saleLimitId int64, err error) { From e3d754361b791652e1e75df93952f793d8246ea9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 21 Dec 2022 16:16:35 +0800 Subject: [PATCH 68/78] 1 --- business/partner/purchase/tiktok_store/store_sku2_utils.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index 7f4bcec30..54c5697b3 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -297,8 +297,8 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI updateParam.Description = detailImg updateParam.WeightUnit = tiktokShop.WeightUint_G updateParam.StandardBrandId = param.StandardBrandId // 默认品牌京西菜市 - updateParam.ProductId = utils.Str2Int64(storeSku.VendorMainId) - updateParam.MainProductId = utils.Str2Int64(storeSku.VendorMainId) + updateParam.ProductId = mainOrderDetail.MainProductId + updateParam.MainProductId = mainOrderDetail.MainProductId updateParam.SpecPrices = param.SpecPrices //updateParam.StoreId = utils.Str2Int64(vendorStoreID) if err := api.EditStoreCommodity(updateParam); err != nil { From 142bd63dd4fd7a30ff8eacbb682b39099008cb88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 21 Dec 2022 16:21:40 +0800 Subject: [PATCH 69/78] 1 --- business/partner/purchase/tiktok_store/store_sku2_utils.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index 54c5697b3..f7035359f 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -301,6 +301,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI updateParam.MainProductId = mainOrderDetail.MainProductId updateParam.SpecPrices = param.SpecPrices //updateParam.StoreId = utils.Str2Int64(vendorStoreID) + globals.SugarLogger.Debugf("========updateParam=============1 %s", utils.Format4Output(updateParam, false)) if err := api.EditStoreCommodity(updateParam); err != nil { failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID) @@ -409,6 +410,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI param.MainProductId = mainIdInt param.SpecPrices = GetSpecPrices(param.Specs, vendorStoreID, param.MainProductId, storeSku) //param.StoreId = utils.Str2Int64(vendorStoreID) + globals.SugarLogger.Debugf("========param=============1 %s", utils.Format4Output(param, false)) if err := api.EditStoreCommodity(param); err != nil { failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID) From f852d3611f4b3859437fdff04fa266eca3434987 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 21 Dec 2022 16:29:50 +0800 Subject: [PATCH 70/78] 1 --- business/partner/purchase/tiktok_store/store_sku2_utils.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index f7035359f..f8a0aeeff 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -388,8 +388,10 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI var mainIdInt int64 if storeSku.VendorMainId == "" { localThing, _ := dao.GetThingToTiktokMapList(db, model.VendorIDDD, int64(storeSku.SkuID), storeDetail.VendorOrgCode) + globals.SugarLogger.Debugf("========localThing=============1 %s", utils.Format4Output(localThing, false)) if len(localThing) == 0 || localThing == nil { mainOrderDetail, err := api.GetSkuDetailLocalID("", utils.Int2Str(storeSku.SkuID)) + globals.SugarLogger.Debugf("========mainOrderDetail=============1 %s", utils.Format4Output(mainOrderDetail, false)) if err != nil { failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) continue From 6235a6b0ce75c945f66443e8b2efbc4081e48fa7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 21 Dec 2022 16:41:39 +0800 Subject: [PATCH 71/78] 1 --- business/partner/purchase/tiktok_store/store_sku2_utils.go | 1 + 1 file changed, 1 insertion(+) diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index f8a0aeeff..43c8faa6e 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -386,6 +386,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI // 获取品牌 param.StandardBrandId = 789194134 // 默认品牌京西菜市 var mainIdInt int64 + globals.SugarLogger.Debugf("========param=============0 %s , mainId %d", utils.Format4Output(storeSku, false), mainIdInt) if storeSku.VendorMainId == "" { localThing, _ := dao.GetThingToTiktokMapList(db, model.VendorIDDD, int64(storeSku.SkuID), storeDetail.VendorOrgCode) globals.SugarLogger.Debugf("========localThing=============1 %s", utils.Format4Output(localThing, false)) From 8ba030360d6b584750cbd88346d1934b940c24e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 21 Dec 2022 16:46:18 +0800 Subject: [PATCH 72/78] 1 --- business/partner/purchase/tiktok_store/store_sku2_utils.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index 43c8faa6e..577f621d7 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -406,6 +406,8 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI storeSku.VendorMainId = localThing[0].VendorThingID mainIdInt = utils.Str2Int64(localThing[0].VendorThingID) } + } else { + mainIdInt = utils.Str2Int64(storeSku.VendorMainId) } // 修改商品 From f548726ae3f714a5cae31319c763935170d0d5bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 21 Dec 2022 16:54:36 +0800 Subject: [PATCH 73/78] 1 --- business/partner/purchase/tiktok_store/store_sku2.go | 3 ++- business/partner/purchase/tiktok_store/store_sku2_utils.go | 5 ----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/business/partner/purchase/tiktok_store/store_sku2.go b/business/partner/purchase/tiktok_store/store_sku2.go index 465313b0d..f44adbc7d 100644 --- a/business/partner/purchase/tiktok_store/store_sku2.go +++ b/business/partner/purchase/tiktok_store/store_sku2.go @@ -181,10 +181,11 @@ func (p *PurchaseHandler) UpdateStoreSkusPrice(ctx *jxcontext.Context, vendorOrg globals.SugarLogger.Debugf("看看走这儿了没,是不是更新 参数failedList1 %s", utils.Format4Output(failedList, false)) return failedList, err } + globals.SugarLogger.Debugf("====SkuId:= %d,ProductId := %d ", tiktokSkuId, utils.Str2Int64(v.VendorMainId)) price := &sku_editPrice_request.SkuEditPriceParam{ Price: v.VendorPrice, SkuId: tiktokSkuId, - ProductId: utils.Str2Int64(v.VendorSkuID), + ProductId: utils.Str2Int64(v.VendorMainId), } //更新子品 if err = api.EditPrice(price); err != nil { diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index 577f621d7..912161b4f 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -301,7 +301,6 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI updateParam.MainProductId = mainOrderDetail.MainProductId updateParam.SpecPrices = param.SpecPrices //updateParam.StoreId = utils.Str2Int64(vendorStoreID) - globals.SugarLogger.Debugf("========updateParam=============1 %s", utils.Format4Output(updateParam, false)) if err := api.EditStoreCommodity(updateParam); err != nil { failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID) @@ -386,13 +385,10 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI // 获取品牌 param.StandardBrandId = 789194134 // 默认品牌京西菜市 var mainIdInt int64 - globals.SugarLogger.Debugf("========param=============0 %s , mainId %d", utils.Format4Output(storeSku, false), mainIdInt) if storeSku.VendorMainId == "" { localThing, _ := dao.GetThingToTiktokMapList(db, model.VendorIDDD, int64(storeSku.SkuID), storeDetail.VendorOrgCode) - globals.SugarLogger.Debugf("========localThing=============1 %s", utils.Format4Output(localThing, false)) if len(localThing) == 0 || localThing == nil { mainOrderDetail, err := api.GetSkuDetailLocalID("", utils.Int2Str(storeSku.SkuID)) - globals.SugarLogger.Debugf("========mainOrderDetail=============1 %s", utils.Format4Output(mainOrderDetail, false)) if err != nil { failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) continue @@ -415,7 +411,6 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI param.MainProductId = mainIdInt param.SpecPrices = GetSpecPrices(param.Specs, vendorStoreID, param.MainProductId, storeSku) //param.StoreId = utils.Str2Int64(vendorStoreID) - globals.SugarLogger.Debugf("========param=============1 %s", utils.Format4Output(param, false)) if err := api.EditStoreCommodity(param); err != nil { failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID) From 640e9a3fb5cfb174b0fc764d9b758ce6d2abb803 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 21 Dec 2022 17:04:20 +0800 Subject: [PATCH 74/78] 1 --- business/partner/purchase/tiktok_store/store_sku2_utils.go | 1 + 1 file changed, 1 insertion(+) diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index 912161b4f..556631398 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -550,6 +550,7 @@ func getProductSkuId4UpdateStock(api *tiktokShop.API, skuInfo *partner.StoreSkuI } } + globals.SugarLogger.Debugf("=GetSkuDetail By childrenSku %s", utils.Format4Output(childrenSku, false)) for _, v := range childrenSku.SpecPrices { tiktokSkuId = v.SkuId skuInfo.VendorSonSkuID = utils.Int64ToStr(v.SkuId) From 6c7845d4b0de511be2508fc18dd46d92ca6dde0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 21 Dec 2022 17:09:30 +0800 Subject: [PATCH 75/78] 1 --- business/partner/purchase/tiktok_store/store_sku2_utils.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index 556631398..fe1c41cf2 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -536,14 +536,15 @@ func getProductSkuId4UpdateStock(api *tiktokShop.API, skuInfo *partner.StoreSkuI } var childrenSku *product_detail_response.ProductDetailData + var err error if len(skuInfo.VendorSkuID) >= len("3589393056912261100") { - childrenSku, err := api.GetSkuDetail(skuInfo.VendorSkuID, "") + childrenSku, err = api.GetSkuDetail(skuInfo.VendorSkuID, "") if err != nil || len(childrenSku.SpecPrices) <= 0 { failedList = append(failedList, putils.GetErrMsg2FailedSingleList(skuInfo, err, storeId, model.VendorChineseNames[model.VendorIDDD], "修改库存[err为空,子商品skuId未获取到]")...) return 0, failedList } } else { - childrenSku, err := api.GetSkuDetailLocalID("", skuInfo.VendorSkuID) + childrenSku, err = api.GetSkuDetailLocalID("", skuInfo.VendorSkuID) if err != nil || len(childrenSku.SpecPrices) <= 0 { failedList = append(failedList, putils.GetErrMsg2FailedSingleList(skuInfo, err, storeId, model.VendorChineseNames[model.VendorIDDD], "修改库存[err为空,子商品skuId未获取到]")...) return 0, failedList From 90cabaee5c23f9daf7fa13205e938d575161eb68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 21 Dec 2022 17:18:17 +0800 Subject: [PATCH 76/78] 1 --- business/jxstore/misc/misc.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/business/jxstore/misc/misc.go b/business/jxstore/misc/misc.go index ca878f06a..ddc658f3e 100644 --- a/business/jxstore/misc/misc.go +++ b/business/jxstore/misc/misc.go @@ -252,9 +252,11 @@ func Init() { }, 60*time.Second, 30*time.Minute) // 抖音更新门店商品 - ScheduleTimerFuncByInterval(func() { - syncStoreSkuTiktok() - }, 60*time.Second, 2*time.Minute) + if beego.BConfig.RunMode != "jxgy" { + ScheduleTimerFuncByInterval(func() { + syncStoreSkuTiktok() + }, 60*time.Second, 10*time.Minute) + } // 定时任务刷新当前订单的物流信息 ScheduleTimerFunc("RefreshMaterialLogistics", func() { From 4f768143195f7c4076b31aae30e57e5e2923993b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 21 Dec 2022 17:39:50 +0800 Subject: [PATCH 77/78] 1 --- business/partner/purchase/tiktok_store/store_sku2.go | 2 +- business/partner/purchase/tiktok_store/store_sku2_utils.go | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/business/partner/purchase/tiktok_store/store_sku2.go b/business/partner/purchase/tiktok_store/store_sku2.go index f44adbc7d..0a602cdb7 100644 --- a/business/partner/purchase/tiktok_store/store_sku2.go +++ b/business/partner/purchase/tiktok_store/store_sku2.go @@ -185,7 +185,7 @@ func (p *PurchaseHandler) UpdateStoreSkusPrice(ctx *jxcontext.Context, vendorOrg price := &sku_editPrice_request.SkuEditPriceParam{ Price: v.VendorPrice, SkuId: tiktokSkuId, - ProductId: utils.Str2Int64(v.VendorMainId), + ProductId: utils.Str2Int64(v.VendorSkuID), } //更新子品 if err = api.EditPrice(price); err != nil { diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index fe1c41cf2..e3af2f8a9 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -555,6 +555,7 @@ func getProductSkuId4UpdateStock(api *tiktokShop.API, skuInfo *partner.StoreSkuI for _, v := range childrenSku.SpecPrices { tiktokSkuId = v.SkuId skuInfo.VendorSonSkuID = utils.Int64ToStr(v.SkuId) + skuInfo.VendorSkuID = childrenSku.ProductIdStr return tiktokSkuId, nil } From be5f9058487298ed8a18a923120cfb5cfe133f07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Thu, 22 Dec 2022 10:44:29 +0800 Subject: [PATCH 78/78] 1 --- business/partner/purchase/mtwm/store_sku2.go | 1 + .../purchase/tiktok_store/store_sku2_utils.go | 18 +++++++++--------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/business/partner/purchase/mtwm/store_sku2.go b/business/partner/purchase/mtwm/store_sku2.go index f846cb18f..8ac303798 100644 --- a/business/partner/purchase/mtwm/store_sku2.go +++ b/business/partner/purchase/mtwm/store_sku2.go @@ -343,6 +343,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI } } + globals.SugarLogger.Debugf("foodDataList=======mtwm %s", utils.Format4Output(foodDataList, false)) if globals.EnableMtwmStoreWrite { if len(foodDataList) == 1 { foodDataList[0]["skus"] = string(utils.MustMarshal(foodDataList[0]["skus"])) diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index e3af2f8a9..9c24e79cd 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -226,15 +226,15 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) } - //var attrId []string - //for _, v := range tiktokResult.Sku { - // attrId = append(attrId, utils.Int64ToStr(v.SkuId)) - //} - //storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID) - //storeSku.SkuSyncStatus = model.SyncFlagStoreSkuModifiedMask // 只创建主品,子品都没做 - //storeSku.VendorMainId = utils.Int64ToStr(tiktokResult.ProductId) - //storeSku.VendorSkuAttrId = strings.Join(attrId, ",") // 属性id skuID - //storeSku.VendorSonSkuID = utils.Int2Str(storeSku.SkuID) // 还没同步子商品 + var attrId []string + for _, v := range tiktokResult.Sku { + attrId = append(attrId, utils.Int64ToStr(v.SkuId)) + } + 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 { // 本地不存在,线上存在.直接创建子商品保存本地同步记录