This commit is contained in:
邹宗楠
2025-07-30 10:22:54 +08:00
parent d5770e2699
commit 5b512fcada
4 changed files with 133 additions and 106 deletions

View File

@@ -792,7 +792,7 @@ func BatchInitSkuMT2TT(ctx *jxcontext.Context, fromSku []*mtwmapi.AppFood, fromS
dao.CreateEntity(db, copyData)
} else {
// 主商品存在,直接同步子商品
childrenProductId, err := toApi.CreateSubProduct(utils.Str2Int64(copyMap[storeSku.AppPoiCode].MainSkuId), utils.Str2Int64(toStoreDetail.VendorStoreID))
childrenProductId, _, err := toApi.CreateSubProduct(utils.Str2Int64(copyMap[storeSku.AppPoiCode].MainSkuId), utils.Str2Int64(toStoreDetail.VendorStoreID))
// 2010004:主商品非在线审核通过状态,不允许绑定子商品
if err != nil && strings.Contains(err.Error(), "2010004") {
// 线上本地都存在,但是线上审核不成功,就去更新主商品

View File

@@ -98,12 +98,18 @@ 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 storeID == 669044 {
globals.SugarLogger.Debugf("------storeSkuList- UpdateStoreSkus := %s", utils.Format4Output(storeSkuList, false))
}
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 storeID == 669044 {
globals.SugarLogger.Debugf("------storeSkuList- UpdateStoreSkus := %s", utils.Format4Output(storeSkuList, false))
}
return failedList, err
}

View File

@@ -5,6 +5,7 @@ import (
"errors"
"fmt"
product_addV2_response "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_addV2/response"
"git.rosy.net.cn/jx-callback/globals"
beego "github.com/astaxie/beego/server/web"
"strings"
"time"
@@ -130,6 +131,10 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI
db := dao.GetDB()
storeDetail, _ := dao.GetStoreDetail(db, storeID, model.VendorIDDD, "")
api := getAPI(storeDetail.VendorOrgCode, storeID, vendorStoreID)
if storeID == 669044 {
globals.SugarLogger.Debugf("-----storeSkuList %s", utils.Format4Output(storeSkuList, false))
globals.SugarLogger.Debugf("-----isCreate %s", utils.Format4Output(isCreate, false))
}
if isCreate {
syncType = "创建商品"
for _, storeSku := range storeSkuList { // 创建商品
@@ -214,7 +219,9 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI
storeSku.VendorSkuAttrId = strings.Join(attrId, ",") // 属性id skuID
storeSku.VendorSonSkuID = utils.Int2Str(storeSku.SkuID) // 还没同步子商品
failedList = putils.GetErrMsg2FailedSingleList(storeSku, errors.New("只创建了主商品,没创建子商品"), storeID, model.VendorChineseNames[model.VendorIDDD], syncType)
} else if localThing[0].SyncStatus == model.ThingTypeSyncFail { // 同步失败在重新创建
} else {
switch localThing[0].SyncStatus {
case model.ThingTypeSyncFail: // 同步失败在重新创建
param, failedList2 := makeMainProductSku(db, api, storeSku, storeDetail, storeID, vendorStoreID, syncType)
if len(failedList2) != 0 {
failedList = append(failedList, failedList2...)
@@ -245,16 +252,20 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI
storeSku.VendorSkuAttrId = strings.Join(attrId, ",") // 属性id skuID
//storeSku.VendorSonSkuID = utils.Int2Str(storeSku.SkuID) // 还没同步子商品
failedList = putils.GetErrMsg2FailedSingleList(storeSku, errors.New("只创建了主商品,没创建子商品"), storeID, model.VendorChineseNames[model.VendorIDDD], syncType)
} else if localThing[0].SyncStatus == model.ThingTypeSyncing {
case model.ThingTypeSyncing:
if time.Now().Unix()-localThing[0].CreatedAt.Unix() > 300 {
dao.DeleteThingToTiktokMapList(model.VendorIDDD, localThing[0].VendorThingID, storeSku.SkuID)
}
storeSku.SkuSyncStatus = model.SyncFlagNewMask // 只创建主品,子品都没做
failedList = putils.GetErrMsg2FailedSingleList(storeSku, errors.New("商品同步中或同步错误"), storeID, model.VendorChineseNames[model.VendorIDDD], syncType)
continue
} else if localThing[0].SyncStatus == model.ThingTypeSyncSuccess {
case model.ThingTypeSyncSuccess:
// 主商品存在,直接同步子商品
childrenProductId, err := api.CreateSubProduct(utils.Str2Int64(localThing[0].VendorThingID), utils.Str2Int64(vendorStoreID))
childrenProductId, sonSkuId, err := api.CreateSubProduct(utils.Str2Int64(localThing[0].VendorThingID), utils.Str2Int64(vendorStoreID))
if storeID == 669044 {
globals.SugarLogger.Debugf("---childrenProductId- :%d", childrenProductId)
globals.SugarLogger.Debugf("---childrenProductId- :%s", sonSkuId)
}
if err != nil && strings.Contains(err.Error(), "2010004") { // 2010004:主商品非在线审核通过状态,不允许绑定子商品
// 线上本地都存在,但是线上审核不成功,就去更新主商品
mainOrderDetail = loadMainProductId(api, storeSku, localThing[0].VendorThingID)
@@ -304,6 +315,9 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI
continue
}
}
if sonSkuId != "" {
storeSku.VendorSonSkuID = sonSkuId
}
if err != nil && strings.Contains(err.Error(), "2010001") { // 2010001:重复创建渠道商品
storeSkuDetail, err := api.GetSkuDetailLocalID(vendorStoreID, utils.Int2Str(storeSku.SkuID))
@@ -312,6 +326,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI
failedList = append(failedList, failedList3...)
continue
}
storeSku.VendorSonSkuID = utils.Int64ToStr(storeSkuDetail.SpecPrices[0].SkuId)
childrenProductId = storeSkuDetail.ProductId
}
@@ -331,6 +346,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI
}
}
}
}
} else {
syncType = "更新商品"
for _, storeSku := range storeSkuList {
@@ -440,6 +456,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI
//param.FreightId, _ = api.GetStoreBindTemp(utils.Str2Int64(vendorStoreID))
param.SpecPrices = GetSpecPrices(param.Specs, vendorStoreID, mainIdInt, storeSku)
err = api.EditStoreCommodity(param)
globals.SugarLogger.Debugf("-------2err := %v", err)
if err != nil && !strings.Contains(err.Error(), "您上传的商品主图存在重复") {
failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType)
//storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID)
@@ -674,6 +691,10 @@ func checkNameLenght(name string) string {
}
func upDateChildrenPriceStockLaunch(api *tiktokShop.API, storeSku *dao.StoreSkuSyncInfo, childrenProductId int64, vendorStoreID, syncType string) (skuID int64, failedList []*partner.StoreSkuInfoWithErr) {
skuId, failed := getProductSkuID(api, storeSku, syncType, childrenProductId)
if storeSku.StoreID == 669044 {
globals.SugarLogger.Debugf("-------skuid := %d", skuId)
globals.SugarLogger.Debugf("-------storeSku := %s", utils.Format4Output(storeSku, false))
}
if skuId == 0 || len(failed) > 0 {
return 0, failed
}

View File

@@ -552,7 +552,7 @@ func (c *OrderController) StaleIndexInfo() {
}
if permission.IsRoled(ctx) && len(dataList) == model.NO {
return retVal, "", fmt.Errorf("该用户%s,暂无门店信息", ctx.GetUserName())
return retVal, "", fmt.Errorf("该用户%s,暂无门店信息", ctx.GetUserName())
}
retVal, err = orderman.FixedOrderManager.GetStoresOrderSaleInfo2(timeList[0], timeList[1], params.StoreID, brandIds, vendors, dataList, params.BrandOperator, params.OperatorNumber)