From 76abfbf5a9e4397211aefb073beccd0ab8cf145e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 4 Jan 2023 22:42:36 +0800 Subject: [PATCH] 1 --- .../purchase/tiktok_store/store_sku2_utils.go | 118 ++++++++---------- 1 file changed, 52 insertions(+), 66 deletions(-) diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index f0ea38b9e..0b7a085bd 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -218,60 +218,57 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI localThing, _ := dao.GetThingToTiktokMapList(db, model.VendorIDDD, int64(storeSku.SkuID), storeDetail.VendorOrgCode) if len(localThing) != 0 { mainProductId = utils.Str2Int64(localThing[0].VendorThingID) - } else { - mainOrderDetail = loadMainProductId(api, storeSku) - mainProductId = mainOrderDetail.MainProductId } if len(localThing) == 0 { - if mainProductId == 0 { - tiktokResult, err := api.CreateStoreCommodity(param) // 创建主商品,同步主商品 - if err != nil { - failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) - continue - } - dao.CreateThingMap(int64(storeSku.SkuID), utils.Int64ToStr(tiktokResult.ProductId), storeDetail.VendorOrgCode, "本地不存在,线上也不存在", model.ThingTypeSku, 0) - var attrId []string - for _, v := range tiktokResult.Sku { - attrId = append(attrId, utils.Int64ToStr(v.SkuId)) - } - - mainProductId = tiktokResult.ProductId - storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID) - storeSku.SkuSyncStatus = model.SyncFlagNewMask // 只创建主品,子品都没做 - storeSku.VendorMainId = utils.Int64ToStr(tiktokResult.ProductId) - storeSku.VendorSkuAttrId = strings.Join(attrId, ",") // 属性id skuID - storeSku.VendorSonSkuID = utils.Int2Str(storeSku.SkuID) // 还没同步子商品 - failedList = putils.GetErrMsg2FailedSingleList(storeSku, errors.New("只创建了主商品,没创建子商品"), storeID, model.VendorChineseNames[model.VendorIDDD], syncType) - } else { - // 本地不存在,线上存在.直接创建子商品保存本地同步记录 - var childrenProductId int64 = 0 - dao.CreateThingMap(int64(storeSku.SkuID), utils.Int64ToStr(mainProductId), storeDetail.VendorOrgCode, "线上存在本地不存在", model.ThingTypeSku, 0) - - childrenProductId, err = api.CreateSubProduct(mainProductId, utils.Str2Int64(vendorStoreID)) - if err != nil { - failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) - continue - } - - storeSku.VendorMainId = utils.Int64ToStr(mainProductId) - var attrId []string - for _, v := range mainOrderDetail.SpecPrices { - attrId = append(attrId, utils.Int64ToStr(v.SkuId)) - } - storeSku.VendorSkuAttrId = strings.Join(attrId, ",") // 属性id skuID - if childrenProductId > 0 { - storeSku.VendorSonSkuID = utils.Int64ToStr(childrenProductId) // (属性id skuID方案一)(自商品的商品id方案二) - storeSku.SkuSyncStatus = 0 - storeSku.VendorSkuID = utils.Int64ToStr(childrenProductId) // 子商品主id - 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) - } + //if mainProductId == 0 { + tiktokResult, err := api.CreateStoreCommodity(param) // 创建主商品,同步主商品 + if err != nil { + failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) + continue } + dao.CreateThingMap(int64(storeSku.SkuID), utils.Int64ToStr(tiktokResult.ProductId), storeDetail.VendorOrgCode, "本地不存在,线上也不存在", model.ThingTypeSku, 0) + var attrId []string + for _, v := range tiktokResult.Sku { + attrId = append(attrId, utils.Int64ToStr(v.SkuId)) + } + + mainProductId = tiktokResult.ProductId + storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID) + storeSku.SkuSyncStatus = model.SyncFlagNewMask // 只创建主品,子品都没做 + storeSku.VendorMainId = utils.Int64ToStr(tiktokResult.ProductId) + storeSku.VendorSkuAttrId = strings.Join(attrId, ",") // 属性id skuID + storeSku.VendorSonSkuID = utils.Int2Str(storeSku.SkuID) // 还没同步子商品 + failedList = putils.GetErrMsg2FailedSingleList(storeSku, errors.New("只创建了主商品,没创建子商品"), storeID, model.VendorChineseNames[model.VendorIDDD], syncType) + //} else { + // // 本地不存在,线上存在.直接创建子商品保存本地同步记录 + // var childrenProductId int64 = 0 + // dao.CreateThingMap(int64(storeSku.SkuID), utils.Int64ToStr(mainProductId), storeDetail.VendorOrgCode, "线上存在本地不存在", model.ThingTypeSku, 0) + // + // childrenProductId, err = api.CreateSubProduct(mainProductId, utils.Str2Int64(vendorStoreID)) + // if err != nil { + // failedList = putils.GetErrMsg2FailedSingleList(storeSku, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) + // continue + // } + // + // storeSku.VendorMainId = utils.Int64ToStr(mainProductId) + // var attrId []string + // for _, v := range mainOrderDetail.SpecPrices { + // attrId = append(attrId, utils.Int64ToStr(v.SkuId)) + // } + // storeSku.VendorSkuAttrId = strings.Join(attrId, ",") // 属性id skuID + // if childrenProductId > 0 { + // storeSku.VendorSonSkuID = utils.Int64ToStr(childrenProductId) // (属性id skuID方案一)(自商品的商品id方案二) + // storeSku.SkuSyncStatus = 0 + // storeSku.VendorSkuID = utils.Int64ToStr(childrenProductId) // 子商品主id + // 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 { // 主商品存在,直接同步子商品 childrenProductId, err := api.CreateSubProduct(utils.Str2Int64(localThing[0].VendorThingID), utils.Str2Int64(vendorStoreID)) @@ -279,7 +276,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI globals.SugarLogger.Debugf("===============err %s", utils.Format4Output(err != nil && strings.Contains(err.Error(), "2010004"), false)) if err != nil && strings.Contains(err.Error(), "2010004") { // 2010004:主商品非在线审核通过状态,不允许绑定子商品 // 线上本地都存在,但是线上审核不成功,就去更新主商品 - mainOrderDetail = loadMainProductId(api, storeSku) + mainOrderDetail = loadMainProductId(api, storeSku, localThing[0].VendorThingID) globals.SugarLogger.Debugf("====bool %s", utils.Format4Output(mainOrderDetail.CheckStatus == tiktokShop.SkuCheckStatusProhibit || mainOrderDetail.CheckStatus == tiktokShop.SkuCheckStatusNotPass, false)) if mainOrderDetail.CheckStatus == tiktokShop.SkuCheckStatusProhibit || mainOrderDetail.CheckStatus == tiktokShop.SkuCheckStatusNotPass { // 更新主商品,在同步到子门店,考虑审核时间 @@ -397,14 +394,8 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI if storeSku.VendorMainId == "" { localThing, _ := dao.GetThingToTiktokMapList(db, model.VendorIDDD, int64(storeSku.SkuID), storeDetail.VendorOrgCode) if len(localThing) == 0 || localThing == nil { - mainOrderDetail := loadMainProductId(api, storeSku) - if mainOrderDetail.MainProductId == 0 { - failedList = putils.GetErrMsg2FailedSingleList(storeSku, errors.New("主商品获取失败"), storeID, model.VendorChineseNames[model.VendorIDDD], syncType) - continue - } - mainIdInt = mainOrderDetail.MainProductId - storeSku.VendorMainId = utils.Int64ToStr(mainIdInt) - dao.CreateThingMap(int64(storeSku.SkuID), utils.Int64ToStr(mainIdInt), storeDetail.VendorOrgCode, "更新发现不存在", model.ThingTypeSku, 0) + failedList = putils.GetErrMsg2FailedSingleList(storeSku, errors.New(fmt.Sprintf("更新主品失败,请创建主品skuId[storeId:%d,skuId:%s]", storeID, storeSku.SkuID)), storeID, model.VendorChineseNames[model.VendorIDDD], syncType) + continue } else { storeSku.VendorMainId = localThing[0].VendorThingID mainIdInt = utils.Str2Int64(localThing[0].VendorThingID) @@ -434,14 +425,9 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI return failedList, err } -func loadMainProductId(api *tiktokShop.API, storeSku *dao.StoreSkuSyncInfo) *product_detail_response.ProductDetailData { +func loadMainProductId(api *tiktokShop.API, storeSku *dao.StoreSkuSyncInfo, mainProductId string) *product_detail_response.ProductDetailData { // 这有可能获取的值主商品也有可能是子商品,我们需要的是主商品id和状态 - var mainOrderDetailProductId = &product_detail_response.ProductDetailData{} - if storeSku.VendorMainId != "" { - mainOrderDetailProductId.MainProductId = utils.Str2Int64(storeSku.VendorMainId) - return mainOrderDetailProductId - } - mainOrderDetailProductId, err := api.GetSkuDetail(utils.Int64ToStr(mainOrderDetailProductId.MainProductId), "") + mainOrderDetailProductId, err := api.GetSkuDetail(mainProductId, "") if err != nil || mainOrderDetailProductId == nil { mainOrderDetailProductId.MainProductId = 0 mainOrderDetailProductId.CheckStatus = 4