- 处理删除SKU或SKUNAME后,同步饿百门店的情况
This commit is contained in:
@@ -68,8 +68,8 @@ const (
|
|||||||
SyncFlagNewMask = 2
|
SyncFlagNewMask = 2
|
||||||
SyncFlagDeletedMask = 4
|
SyncFlagDeletedMask = 4
|
||||||
|
|
||||||
SyncFlagSaleMask = 8
|
SyncFlagSaleMask = 8 // 改了门店商品价格必须设置此标志
|
||||||
SyncFlagPriceMask = 16
|
SyncFlagPriceMask = 16 // 改了门店商品可售状态必须设置此标志
|
||||||
SyncFlagSpecMask = 32
|
SyncFlagSpecMask = 32
|
||||||
|
|
||||||
SyncFlagStoreSkuOnlyMask = SyncFlagSaleMask | SyncFlagPriceMask
|
SyncFlagStoreSkuOnlyMask = SyncFlagSaleMask | SyncFlagPriceMask
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/platformapi/ebaiapi"
|
"git.rosy.net.cn/baseapi/platformapi/ebaiapi"
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
@@ -23,7 +24,6 @@ const (
|
|||||||
type tStoreSkuFullInfo struct {
|
type tStoreSkuFullInfo struct {
|
||||||
model.StoreSkuBind
|
model.StoreSkuBind
|
||||||
|
|
||||||
SkuID int `orm:"column(sku_id)"`
|
|
||||||
NameID int `orm:"column(name_id)"`
|
NameID int `orm:"column(name_id)"`
|
||||||
|
|
||||||
SpecQuality float32 `json:"specQuality"`
|
SpecQuality float32 `json:"specQuality"`
|
||||||
@@ -82,7 +82,7 @@ var (
|
|||||||
|
|
||||||
func (p *PurchaseHandler) getDirtyStoreSkus(db *dao.DaoDB, storeID int, skuIDs []int) (storeSkuInfoList []*tStoreSkuFullInfo, err error) {
|
func (p *PurchaseHandler) getDirtyStoreSkus(db *dao.DaoDB, storeID int, skuIDs []int) (storeSkuInfoList []*tStoreSkuFullInfo, err error) {
|
||||||
sql := `
|
sql := `
|
||||||
SELECT t8.price_percentage, t1.*, t2.id sku_id, t2.spec_quality, t2.spec_unit, t2.weight, t2.status sku_status,
|
SELECT t8.price_percentage, t1.*, t2.spec_quality, t2.spec_unit, t2.weight, t2.status sku_status,
|
||||||
t3.id name_id, t3.prefix, t3.name, t2.comment, t3.is_global, t3.unit, IF(t3.img_ebai <> '', t3.img_ebai, t3.img) img, t3.upc, t3.desc_img_ebai,
|
t3.id name_id, t3.prefix, t3.name, t2.comment, t3.is_global, t3.unit, IF(t3.img_ebai <> '', t3.img_ebai, t3.img) img, t3.upc, t3.desc_img_ebai,
|
||||||
t4.name cat_name, t4.ebai_price_percentage cat_price_percentage,
|
t4.name cat_name, t4.ebai_price_percentage cat_price_percentage,
|
||||||
t4.id cat_id, t4.level cat_level, t5.ebai_id cat_ebai_id,
|
t4.id cat_id, t4.level cat_level, t5.ebai_id cat_ebai_id,
|
||||||
@@ -91,14 +91,14 @@ func (p *PurchaseHandler) getDirtyStoreSkus(db *dao.DaoDB, storeID int, skuIDs [
|
|||||||
FROM store_sku_bind t1
|
FROM store_sku_bind t1
|
||||||
LEFT JOIN sku t2 ON t1.sku_id = t2.id AND t2.deleted_at = ? AND t2.status = ?
|
LEFT JOIN sku t2 ON t1.sku_id = t2.id AND t2.deleted_at = ? AND t2.status = ?
|
||||||
LEFT JOIN sku_name t3 ON t2.name_id = t3.id AND t3.deleted_at = ? AND t3.status = ?
|
LEFT JOIN sku_name t3 ON t2.name_id = t3.id AND t3.deleted_at = ? AND t3.status = ?
|
||||||
JOIN sku_category t4 ON t3.category_id = t4.id
|
LEFT JOIN sku_category t4 ON t3.category_id = t4.id
|
||||||
LEFT JOIN sku_category t4p ON t4p.id = t4.parent_id
|
LEFT JOIN sku_category t4p ON t4p.id = t4.parent_id
|
||||||
LEFT JOIN store_sku_category_map t5 ON t5.store_id = t1.store_id AND t5.category_id = t4.id AND t5.deleted_at = ?
|
LEFT JOIN store_sku_category_map t5 ON t5.store_id = t1.store_id AND t5.category_id = t4.id AND t5.deleted_at = ?
|
||||||
LEFT JOIN store_sku_category_map t5p ON t5p.store_id = t1.store_id AND t5p.category_id = t4p.id AND t5p.deleted_at = ?
|
LEFT JOIN store_sku_category_map t5p ON t5p.store_id = t1.store_id AND t5p.category_id = t4p.id AND t5p.deleted_at = ?
|
||||||
LEFT JOIN sku_vendor_category cat1 ON t4.ebai_category_id = cat1.vendor_category_id AND cat1.vendor_id = ?
|
LEFT JOIN sku_vendor_category cat1 ON t4.ebai_category_id = cat1.vendor_category_id AND cat1.vendor_id = ?
|
||||||
LEFT JOIN sku_vendor_category cat2 ON cat1.parent_id = cat2.vendor_category_id AND cat1.vendor_id = ?
|
LEFT JOIN sku_vendor_category cat2 ON cat1.parent_id = cat2.vendor_category_id AND cat1.vendor_id = ?
|
||||||
JOIN store_map t8 ON t8.store_id = t1.store_id AND t8.vendor_id = ? AND t8.deleted_at = ?
|
JOIN store_map t8 ON t8.store_id = t1.store_id AND t8.vendor_id = ? AND t8.deleted_at = ?
|
||||||
WHERE t1.store_id = ? AND (t1.ebai_sync_status <> 0)
|
WHERE t1.store_id = ? AND (t1.ebai_sync_status <> 0 OR (t1.deleted_at = ? AND t3.id IS NULL))
|
||||||
`
|
`
|
||||||
sqlParams := []interface{}{
|
sqlParams := []interface{}{
|
||||||
utils.DefaultTimeValue,
|
utils.DefaultTimeValue,
|
||||||
@@ -112,6 +112,7 @@ func (p *PurchaseHandler) getDirtyStoreSkus(db *dao.DaoDB, storeID int, skuIDs [
|
|||||||
model.VendorIDEBAI,
|
model.VendorIDEBAI,
|
||||||
utils.DefaultTimeValue,
|
utils.DefaultTimeValue,
|
||||||
storeID,
|
storeID,
|
||||||
|
utils.DefaultTimeValue,
|
||||||
}
|
}
|
||||||
if len(skuIDs) > 0 {
|
if len(skuIDs) > 0 {
|
||||||
sql += " AND t1.sku_id IN (" + dao.GenQuestionMarks(len(skuIDs)) + ")"
|
sql += " AND t1.sku_id IN (" + dao.GenQuestionMarks(len(skuIDs)) + ")"
|
||||||
@@ -125,7 +126,7 @@ func (p *PurchaseHandler) getDirtyStoreSkus(db *dao.DaoDB, storeID int, skuIDs [
|
|||||||
func (p *PurchaseHandler) createCatByStoreSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, db *dao.DaoDB, storeID int, storeSkuInfoList []*tStoreSkuFullInfo) (num int64, err error) {
|
func (p *PurchaseHandler) createCatByStoreSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, db *dao.DaoDB, storeID int, storeSkuInfoList []*tStoreSkuFullInfo) (num int64, err error) {
|
||||||
catList2Add := make(map[int]int)
|
catList2Add := make(map[int]int)
|
||||||
for _, storeSku := range storeSkuInfoList {
|
for _, storeSku := range storeSkuInfoList {
|
||||||
if storeSku.SkuID != 0 && storeSku.EbaiSyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreSkuModifiedMask) != 0 {
|
if storeSku.CatID != 0 && storeSku.EbaiSyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreSkuModifiedMask) != 0 {
|
||||||
if storeSku.ParentCatEbaiID == 0 && storeSku.ParentCatID != 0 {
|
if storeSku.ParentCatEbaiID == 0 && storeSku.ParentCatID != 0 {
|
||||||
catList2Add[storeSku.ParentCatID] = 1
|
catList2Add[storeSku.ParentCatID] = 1
|
||||||
}
|
}
|
||||||
@@ -251,27 +252,43 @@ func (p *PurchaseHandler) SyncStoreSkus(ctx *jxcontext.Context, parentTask tasks
|
|||||||
storeSku := batchItemList[0].(*tStoreSkuFullInfo)
|
storeSku := batchItemList[0].(*tStoreSkuFullInfo)
|
||||||
updateFields := []string{model.FieldEbaiSyncStatus}
|
updateFields := []string{model.FieldEbaiSyncStatus}
|
||||||
if globals.EnableEbaiStoreWrite {
|
if globals.EnableEbaiStoreWrite {
|
||||||
if storeSku.SkuID == 0 || storeSku.EbaiSyncStatus&model.SyncFlagDeletedMask != 0 {
|
if storeSku.NameID == 0 || storeSku.EbaiSyncStatus&model.SyncFlagDeletedMask != 0 {
|
||||||
if storeSku.EbaiSyncStatus&model.SyncFlagNewMask == 0 && storeSku.EbaiID != 0 {
|
if storeSku.EbaiSyncStatus&model.SyncFlagNewMask == 0 && !jxutils.IsFakeID(storeSku.EbaiID) {
|
||||||
err = api.EbaiAPI.SkuDelete(strStoreID, utils.Int64ToStr(storeSku.EbaiID))
|
err = api.EbaiAPI.SkuDelete(strStoreID, utils.Int64ToStr(storeSku.EbaiID))
|
||||||
}
|
}
|
||||||
} else if storeSku.EbaiSyncStatus&model.SyncFlagNewMask != 0 {
|
if err == nil {
|
||||||
// globals.SugarLogger.Debug(utils.Format4Output(genSkuParamsFromStoreSkuInfo(storeSku), false))
|
if utils.IsTimeZero(storeSku.DeletedAt) {
|
||||||
// todo 适当处理重复(即已经创建)的情况
|
storeSku.DeletedAt = time.Now()
|
||||||
if storeSku.EbaiID, err = api.EbaiAPI.SkuCreate(strStoreID, storeSku.SkuID, genSkuParamsFromStoreSkuInfo(storeSku)); err == nil {
|
updateFields = append(updateFields, model.FieldDeletedAt)
|
||||||
updateFields = append(updateFields, model.FieldEbaiID)
|
|
||||||
} else if storeSku.EbaiID = ebaiapi.GetEbaiSkuIDFromError(err); storeSku.EbaiID > 0 {
|
|
||||||
// globals.SugarLogger.Debugf("SyncStoreSkus test storeSku.EbaiID:%d, err:%v", storeSku.EbaiID, err)
|
|
||||||
updateFields = append(updateFields, model.FieldEbaiID)
|
|
||||||
_, err = api.EbaiAPI.SkuUpdate(strStoreID, storeSku.EbaiID, genSkuParamsFromStoreSkuInfo(storeSku))
|
|
||||||
}
|
|
||||||
} else if storeSku.EbaiSyncStatus&model.SyncFlagStoreSkuModifiedMask != 0 {
|
|
||||||
if jxutils.IsFakeID(storeSku.EbaiID) {
|
|
||||||
err = fmt.Errorf("京西数据异常,修改一个没有创建的饿百商品:%d, store:%s", storeSku.SkuID, strStoreID)
|
|
||||||
} else {
|
|
||||||
if _, err = api.EbaiAPI.SkuUpdate(strStoreID, storeSku.EbaiID, genSkuParamsFromStoreSkuInfo(storeSku)); err == nil {
|
|
||||||
// err = api.EbaiAPI.SkuShopCategoryMap(strStoreID, storeSku.EbaiID, utils.Int64ToStr(storeSku.CatEbaiID))
|
|
||||||
}
|
}
|
||||||
|
if !jxutils.IsFakeID(storeSku.EbaiID) {
|
||||||
|
storeSku.EbaiID = 0
|
||||||
|
updateFields = append(updateFields, model.FieldEbaiID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if storeSku.Img != "" {
|
||||||
|
if storeSku.EbaiSyncStatus&model.SyncFlagNewMask != 0 {
|
||||||
|
// globals.SugarLogger.Debug(utils.Format4Output(genSkuParamsFromStoreSkuInfo(storeSku), false))
|
||||||
|
// todo 适当处理重复(即已经创建)的情况
|
||||||
|
if storeSku.EbaiID, err = api.EbaiAPI.SkuCreate(strStoreID, storeSku.SkuID, genSkuParamsFromStoreSkuInfo(storeSku)); err == nil {
|
||||||
|
updateFields = append(updateFields, model.FieldEbaiID)
|
||||||
|
} else if storeSku.EbaiID = ebaiapi.GetEbaiSkuIDFromError(err); storeSku.EbaiID > 0 {
|
||||||
|
// globals.SugarLogger.Debugf("SyncStoreSkus test storeSku.EbaiID:%d, err:%v", storeSku.EbaiID, err)
|
||||||
|
updateFields = append(updateFields, model.FieldEbaiID)
|
||||||
|
_, err = api.EbaiAPI.SkuUpdate(strStoreID, storeSku.EbaiID, genSkuParamsFromStoreSkuInfo(storeSku))
|
||||||
|
}
|
||||||
|
} else if storeSku.EbaiSyncStatus&model.SyncFlagStoreSkuModifiedMask != 0 {
|
||||||
|
if jxutils.IsFakeID(storeSku.EbaiID) {
|
||||||
|
err = fmt.Errorf("京西数据异常,修改一个没有创建的饿百商品:%d, store:%s", storeSku.SkuID, strStoreID)
|
||||||
|
} else {
|
||||||
|
if _, err = api.EbaiAPI.SkuUpdate(strStoreID, storeSku.EbaiID, genSkuParamsFromStoreSkuInfo(storeSku)); err == nil {
|
||||||
|
// err = api.EbaiAPI.SkuShopCategoryMap(strStoreID, storeSku.EbaiID, utils.Int64ToStr(storeSku.CatEbaiID))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
err = fmt.Errorf("SKUANME%d:%s没有图片,同步失败", storeSku.NameID, storeSku.Name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user