1
This commit is contained in:
@@ -95,16 +95,6 @@ func (p *PurchaseHandler) IsErrSkuNotExist(err error) (isNotExist bool) {
|
|||||||
return mtwmapi.IsErrSkuNotExist(err)
|
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) {
|
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)
|
failedList, err = p.createOrUpdateStoreSkus(ctx, storeID, vendorStoreID, storeSkuList, false)
|
||||||
return failedList, err
|
return failedList, err
|
||||||
@@ -140,16 +130,12 @@ func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, vendorOr
|
|||||||
if status == model.SkuStatusNormal { // 下架
|
if status == model.SkuStatusNormal { // 下架
|
||||||
for _, v := range storeSkuList {
|
for _, v := range storeSkuList {
|
||||||
// 子品商品id获取skuId
|
// 子品商品id获取skuId
|
||||||
//childrenSku, err := api.GetSkuDetail(v.VendorSkuID, "")
|
childrenSkuId, failedList := getProductSkuId4UpdateStock(api, v, storeID)
|
||||||
//if err != nil {
|
if len(failedList) > 0 {
|
||||||
// return nil, err
|
continue
|
||||||
//}
|
}
|
||||||
//if len(childrenSku.SpecPrices) <= 0 {
|
|
||||||
// return nil, errors.New("子品商品详情获取失败")
|
|
||||||
//}
|
|
||||||
|
|
||||||
param := &sku_syncStock_request.SkuSyncStockParam{
|
param := &sku_syncStock_request.SkuSyncStockParam{
|
||||||
//SkuId: childrenSku.SpecPrices[0].SkuId,
|
SkuId: childrenSkuId,
|
||||||
ProductId: utils.Str2Int64(v.VendorSkuID),
|
ProductId: utils.Str2Int64(v.VendorSkuID),
|
||||||
Incremental: false,
|
Incremental: false,
|
||||||
IdempotentId: "",
|
IdempotentId: "",
|
||||||
@@ -159,20 +145,17 @@ func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, vendorOr
|
|||||||
if err := api.UpdateSkuStock(param); err != nil {
|
if err := api.UpdateSkuStock(param); err != nil {
|
||||||
failedList = append(failedList, putils.GetErrMsg2FailedSingleList(v, err, storeID, model.VendorChineseNames[model.VendorIDDD], fmt.Sprintf("上架商品,库存值最大化.%s", utils.Format4Output(param, false)))...)
|
failedList = append(failedList, putils.GetErrMsg2FailedSingleList(v, err, storeID, model.VendorChineseNames[model.VendorIDDD], fmt.Sprintf("上架商品,库存值最大化.%s", utils.Format4Output(param, false)))...)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
} else { // 上架
|
} else { // 上架
|
||||||
for _, v := range storeSkuList {
|
for _, v := range storeSkuList {
|
||||||
// 子品商品id获取skuId
|
// 子品商品id获取skuId
|
||||||
//childrenSku, err := api.GetSkuDetail(v.VendorSkuID, "")
|
childrenSkuId, failedList := getProductSkuId4UpdateStock(api, v, storeID)
|
||||||
//if err != nil {
|
if len(failedList) > 0 {
|
||||||
// return nil, err
|
continue
|
||||||
//}
|
}
|
||||||
//if len(childrenSku.SpecPrices) <= 0 {
|
|
||||||
// return nil, errors.New("子品商品详情获取失败")
|
|
||||||
//}
|
|
||||||
param := &sku_syncStock_request.SkuSyncStockParam{
|
param := &sku_syncStock_request.SkuSyncStockParam{
|
||||||
//SkuId: childrenSku.SpecPrices[0].SkuId,
|
SkuId: childrenSkuId,
|
||||||
ProductId: utils.Str2Int64(v.VendorSkuID),
|
ProductId: utils.Str2Int64(v.VendorSkuID),
|
||||||
Incremental: false,
|
Incremental: false,
|
||||||
IdempotentId: "",
|
IdempotentId: "",
|
||||||
@@ -185,9 +168,6 @@ func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, vendorOr
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(failedList) > 0 {
|
|
||||||
err = nil
|
|
||||||
}
|
|
||||||
return failedList, err
|
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) {
|
func (p *PurchaseHandler) UpdateStoreSkusPrice(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) {
|
||||||
api := getAPI(vendorOrgCode, storeID, vendorStoreID)
|
api := getAPI(vendorOrgCode, storeID, vendorStoreID)
|
||||||
for _, v := range storeSkuList {
|
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{
|
//err = api.EditPrice(&sku_editPrice_request.SkuEditPriceParam{
|
||||||
// Price: v.VendorPrice,
|
// Price: v.VendorPrice,
|
||||||
// SkuId: utils.Str2Int64(v.VendorSonSkuID),
|
// SkuId: utils.Str2Int64(v.VendorSkuAttrId),
|
||||||
// ProductId: utils.Str2Int64(v.VendorSkuID),
|
// ProductId: utils.Str2Int64(v.VendorSkuID),
|
||||||
//})
|
//})
|
||||||
//if err != nil {
|
//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], "同步子品价格异常")...)
|
||||||
//} else {
|
|
||||||
// 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
|
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) {
|
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)
|
tiktokApi := getAPI(storeSkuList[0].VendorOrgCode, storeID, vendorStoreID)
|
||||||
for _, v := range storeSkuList {
|
for _, v := range storeSkuList {
|
||||||
|
// 子品商品id获取skuId
|
||||||
|
childrenSkuId, failedList := getProductSkuId4UpdateStock(tiktokApi, v, storeID)
|
||||||
|
if len(failedList) > 0 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
stockNum := &sku_syncStock_request.SkuSyncStockParam{
|
stockNum := &sku_syncStock_request.SkuSyncStockParam{
|
||||||
//SkuId: utils.Str2Int64(v.VendorSkuAttrId),
|
SkuId: childrenSkuId,
|
||||||
ProductId: utils.Str2Int64(v.VendorSkuID),
|
ProductId: utils.Str2Int64(v.VendorSkuID),
|
||||||
Incremental: false,
|
Incremental: false,
|
||||||
IdempotentId: "",
|
IdempotentId: "",
|
||||||
@@ -249,7 +226,6 @@ func (p *PurchaseHandler) UpdateStoreSkusStock(ctx *jxcontext.Context, vendorOrg
|
|||||||
}
|
}
|
||||||
|
|
||||||
return failedList, err
|
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) {
|
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) {
|
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{
|
if err := api.EditPrice(&sku_editPrice_request.SkuEditPriceParam{
|
||||||
|
SkuId: skuId,
|
||||||
Price: storeSku.VendorPrice,
|
Price: storeSku.VendorPrice,
|
||||||
ProductId: childrenProductId,
|
ProductId: childrenProductId,
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
@@ -389,6 +394,7 @@ func upDateChildrenPriceStockLaunch(api *tiktokShop.API, storeSku *dao.StoreSkuS
|
|||||||
}
|
}
|
||||||
// 同步库存
|
// 同步库存
|
||||||
paramStock := &sku_syncStock_request.SkuSyncStockParam{
|
paramStock := &sku_syncStock_request.SkuSyncStockParam{
|
||||||
|
SkuId: skuId,
|
||||||
ProductId: childrenProductId,
|
ProductId: childrenProductId,
|
||||||
Incremental: false,
|
Incremental: false,
|
||||||
IdempotentId: "",
|
IdempotentId: "",
|
||||||
@@ -413,6 +419,41 @@ func upDateChildrenPriceStockLaunch(api *tiktokShop.API, storeSku *dao.StoreSkuS
|
|||||||
return failedList
|
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) {
|
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)
|
temp, err := dao.QueryStoreBindInfo(storeDetail.Store.ID)
|
||||||
if err != nil || temp == nil || temp.ID == 0 {
|
if err != nil || temp == nil || temp.ID == 0 {
|
||||||
|
|||||||
Reference in New Issue
Block a user