1
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user