- 新版同步逻辑编译通过,欠SKU的创建已存在与删除不存在判断逻辑
This commit is contained in:
@@ -9,6 +9,7 @@ import (
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||
"git.rosy.net.cn/jx-callback/business/partner"
|
||||
"git.rosy.net.cn/jx-callback/business/partner/putils"
|
||||
"git.rosy.net.cn/jx-callback/globals"
|
||||
"git.rosy.net.cn/jx-callback/globals/api"
|
||||
)
|
||||
@@ -58,6 +59,14 @@ func convertVendorCatList(remoteCats []*mtwmapi.RetailCategoryInfo) (cats []*par
|
||||
return cats
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) IsErrCategoryExist(err error) (isExist bool) {
|
||||
return mtwmapi.IsErrCategoryExist(err)
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) IsErrCategoryNotExist(err error) (isNotExist bool) {
|
||||
return mtwmapi.IsErrCategoryNotExist(err)
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) CreateStoreCategory(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeCat *dao.SkuStoreCatInfo) (err error) {
|
||||
level := 1
|
||||
if storeCat.ParentCatName != "" {
|
||||
@@ -106,12 +115,12 @@ func (p *PurchaseHandler) DeleteStoreCategory(ctx *jxcontext.Context, storeID in
|
||||
// 门店商品
|
||||
|
||||
// 多门店平台不需要实现这个接口
|
||||
func (p *PurchaseHandler) UpdateStoreSkus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*dao.StoreSkuSyncInfo) (err error) {
|
||||
func (p *PurchaseHandler) UpdateStoreSkus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*dao.StoreSkuSyncInfo) (successList []*dao.StoreSkuSyncInfo, err error) {
|
||||
return p.CreateStoreSkus(ctx, storeID, vendorStoreID, storeSkuList)
|
||||
}
|
||||
|
||||
// 对于多门店平台来说,storeSkuList中只有SkuID与VendorSkuID有意义
|
||||
func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*dao.StoreSkuSyncInfo) (err error) {
|
||||
func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*dao.StoreSkuSyncInfo) (successList []*dao.StoreSkuSyncInfo, err error) {
|
||||
foodDataList := make([]map[string]interface{}, len(storeSkuList))
|
||||
for i, storeSku := range storeSkuList {
|
||||
foodData := make(map[string]interface{})
|
||||
@@ -155,32 +164,40 @@ func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, v
|
||||
foodDataList[0]["skus"] = string(utils.MustMarshal(foodDataList[0]["skus"]))
|
||||
err = api.MtwmAPI.RetailInitData(vendorStoreID, utils.Int2Str(storeSkuList[0].SkuID), foodDataList[0])
|
||||
} else if len(foodDataList) > 0 {
|
||||
_, err = api.MtwmAPI.RetailBatchInitData(vendorStoreID, foodDataList)
|
||||
failedFoodList, err2 := api.MtwmAPI.RetailBatchInitData(vendorStoreID, foodDataList)
|
||||
if err = err2; err == nil {
|
||||
if err = putils.GenPartialFailedErr(failedFoodList, len(failedFoodList)); err != nil {
|
||||
successList = putils.UnselectStoreSkuSyncListByVendorSkuIDs(storeSkuList, getAppFoodCodeList(failedFoodList))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if err == nil {
|
||||
for _, storeSku := range storeSkuList {
|
||||
storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID)
|
||||
}
|
||||
for _, storeSku := range storeSkuList {
|
||||
storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID)
|
||||
}
|
||||
return err
|
||||
return successList, err
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) DeleteStoreSkus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (err error) {
|
||||
func getAppFoodCodeList(l []*mtwmapi.AppFoodResult) (vendorSkuIDs []string) {
|
||||
return vendorSkuIDs
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) DeleteStoreSkus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (successList []*partner.StoreSkuInfo, err error) {
|
||||
if globals.EnableMtwmStoreWrite {
|
||||
if len(storeSkuList) == 1 {
|
||||
err = api.MtwmAPI.RetailDelete(vendorStoreID, storeSkuList[0].VendorSkuID)
|
||||
} else {
|
||||
// todo 部分失败
|
||||
err = api.MtwmAPI.RetailCatSkuBatchDelete(vendorStoreID, nil, nil, partner.BareStoreSkuInfoList(storeSkuList).GetVendorSkuIDList())
|
||||
}
|
||||
if mtwmapi.IsErrSkuNotExist(err) {
|
||||
err = nil
|
||||
}
|
||||
}
|
||||
return err
|
||||
return nil, err
|
||||
}
|
||||
|
||||
func storeSku2Mtwm(storeSkuList []*partner.StoreSkuInfo, updateType int) (validSkus, invalidSkus []*mtwmapi.BareStoreFoodInfo) {
|
||||
func storeSku2Mtwm(storeSkuList []*partner.StoreSkuInfo, updateType int) (skuList []*mtwmapi.BareStoreFoodInfo) {
|
||||
for _, storeSku := range storeSkuList {
|
||||
skuInfo := &mtwmapi.BareStoreFoodInfo{
|
||||
AppFoodCode: storeSku.VendorSkuID,
|
||||
@@ -199,42 +216,49 @@ func storeSku2Mtwm(storeSkuList []*partner.StoreSkuInfo, updateType int) (validS
|
||||
} else if updateType == updateTypePrice {
|
||||
skuInfo.Skus[0].Price = jxutils.IntPrice2StandardString(storeSku.VendorPrice)
|
||||
}
|
||||
if updateType != updateTypeStatus || storeSku.Status == model.SkuStatusNormal {
|
||||
validSkus = append(validSkus, skuInfo)
|
||||
} else {
|
||||
invalidSkus = append(invalidSkus, skuInfo)
|
||||
}
|
||||
skuList = append(skuList, skuInfo)
|
||||
}
|
||||
return validSkus, invalidSkus
|
||||
return skuList
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (err error) {
|
||||
validSkus, invalidSkus := storeSku2Mtwm(storeSkuList, updateTypeStatus)
|
||||
func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo, status int) (successList []*partner.StoreSkuInfo, err error) {
|
||||
skuList := storeSku2Mtwm(storeSkuList, updateTypeStatus)
|
||||
mtwmStatus := skuStatusJX2Mtwm(status)
|
||||
if globals.EnableMtwmStoreWrite {
|
||||
if len(invalidSkus) > 0 {
|
||||
_, err = api.MtwmAPI.RetailSkuSellStatus(vendorStoreID, invalidSkus, mtwmapi.SellStatusOffline)
|
||||
}
|
||||
if err == nil && len(validSkus) > 0 {
|
||||
_, err = api.MtwmAPI.RetailSkuSellStatus(vendorStoreID, validSkus, mtwmapi.SellStatusOnline)
|
||||
failedFoodList, err2 := api.MtwmAPI.RetailSkuSellStatus(vendorStoreID, skuList, mtwmStatus)
|
||||
if err = err2; err == nil {
|
||||
if len(failedFoodList) > 0 {
|
||||
successList = putils.UnselectStoreSkuListByVendorSkuIDs(storeSkuList, getAppFoodCodeList(failedFoodList))
|
||||
}
|
||||
}
|
||||
}
|
||||
return err
|
||||
return successList, err
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) UpdateStoreSkusPrice(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (err error) {
|
||||
priceList, _ := storeSku2Mtwm(storeSkuList, updateTypePrice)
|
||||
func (p *PurchaseHandler) UpdateStoreSkusPrice(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (successList []*partner.StoreSkuInfo, err error) {
|
||||
priceList := storeSku2Mtwm(storeSkuList, updateTypePrice)
|
||||
if globals.EnableMtwmStoreWrite {
|
||||
_, err = api.MtwmAPI.RetailSkuPrice(vendorStoreID, priceList)
|
||||
failedFoodList, err2 := api.MtwmAPI.RetailSkuPrice(vendorStoreID, priceList)
|
||||
if err = err2; err == nil {
|
||||
if err = putils.GenPartialFailedErr(failedFoodList, len(failedFoodList)); err != nil {
|
||||
successList = putils.UnselectStoreSkuListByVendorSkuIDs(storeSkuList, getAppFoodCodeList(failedFoodList))
|
||||
}
|
||||
}
|
||||
}
|
||||
return err
|
||||
return successList, err
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) UpdateStoreSkusStock(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (err error) {
|
||||
stockList, _ := storeSku2Mtwm(storeSkuList, updateTypeStock)
|
||||
func (p *PurchaseHandler) UpdateStoreSkusStock(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (successList []*partner.StoreSkuInfo, err error) {
|
||||
stockList := storeSku2Mtwm(storeSkuList, updateTypeStock)
|
||||
if globals.EnableMtwmStoreWrite {
|
||||
_, err = api.MtwmAPI.RetailSkuStock(vendorStoreID, stockList)
|
||||
failedFoodList, err2 := api.MtwmAPI.RetailSkuStock(vendorStoreID, stockList)
|
||||
if err = err2; err == nil {
|
||||
if err = putils.GenPartialFailedErr(failedFoodList, len(failedFoodList)); err != nil {
|
||||
successList = putils.UnselectStoreSkuListByVendorSkuIDs(storeSkuList, getAppFoodCodeList(failedFoodList))
|
||||
}
|
||||
}
|
||||
}
|
||||
return err
|
||||
return successList, err
|
||||
}
|
||||
|
||||
func mtwmSkuStatus2Jx(mtwmSkuStatus int) (jxSkuStatus int) {
|
||||
@@ -254,12 +278,25 @@ func (p *PurchaseHandler) GetStoreSkusFullInfo(ctx *jxcontext.Context, parentTas
|
||||
}
|
||||
skuNameList = append(skuNameList, vendorSku2Jx(skuInfo))
|
||||
} else {
|
||||
var storeSkuMap map[string]*partner.StoreSkuInfo
|
||||
if storeSkuList != nil {
|
||||
storeSkuMap = putils.StoreSkuList2MapByVendorSkuID(storeSkuList)
|
||||
}
|
||||
for {
|
||||
// todo 待优化获取速度
|
||||
result, err := api.MtwmAPI.RetailList(vendorStoreID, len(skuNameList), mtwmapi.GeneralMaxLimit)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
skuNameList = append(skuNameList, vendorSkuList2Jx(result)...)
|
||||
if storeSkuMap == nil {
|
||||
skuNameList = append(skuNameList, vendorSkuList2Jx(result)...)
|
||||
} else {
|
||||
for _, v := range result {
|
||||
if storeSkuMap[v.AppFoodCode] != nil {
|
||||
skuNameList = append(skuNameList, vendorSku2Jx(v))
|
||||
}
|
||||
}
|
||||
}
|
||||
if len(result) < mtwmapi.GeneralMaxLimit {
|
||||
break
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user