diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index c40af82f9..334c5ffce 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -146,8 +146,8 @@ func GetStoreSkus(db *DaoDB, vendorID, storeID int, skuIDs []int) (skus []*Store t5.%s_sync_status cat_sync_status, t5.%s_id vendor_cat_id, t5sku.%s_sync_status sku_cat_sync_status, t5sku.%s_id sku_vendor_cat_id FROM store_sku_bind t1 - JOIN sku t2 ON t1.sku_id = t2.id AND t2.deleted_at = ? AND t2.status = ? - JOIN sku_name t3 ON t2.name_id = t3.id AND t3.deleted_at = ? AND t3.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 = ? JOIN sku_category t4 ON t3.category_id = t4.id AND t4.deleted_at = ? JOIN store_sku_category_map t5 ON t4.id = t5.category_id AND t5.store_id = t1.store_id AND t5.deleted_at = ? LEFT JOIN store_sku_category_map t5sku ON t2.category_id = t5sku.category_id AND t5sku.store_id = t1.store_id AND t5sku.deleted_at = ? diff --git a/business/partner/purchase/ebai/store_sku.go b/business/partner/purchase/ebai/store_sku.go index f10b25247..385928c07 100644 --- a/business/partner/purchase/ebai/store_sku.go +++ b/business/partner/purchase/ebai/store_sku.go @@ -23,6 +23,9 @@ const ( type tStoreSkuFullInfo struct { model.StoreSkuBind + SkuID int `orm:"column(sku_id)"` + NameID int `orm:"column(name_id)"` + SpecQuality float32 `json:"specQuality"` SpecUnit string `orm:"size(8)" json:"specUnit"` // 质量或容量 Weight int `json:"weight"` // 重量/质量,单位为克,当相应的SkuName的SpecUnit为g或kg时,必须等于SpecQuality @@ -77,15 +80,15 @@ var ( func (p *PurchaseHandler) getDirtyStoreSkus(db *dao.DaoDB, storeID int, skuIDs []int) (storeSkuInfoList []*tStoreSkuFullInfo, err error) { sql := ` - SELECT t8.price_percentage, t1.*, t2.spec_quality, t2.spec_unit, t2.weight, t2.status sku_status, - t3.prefix, t3.name, t2.comment, t3.is_global, t3.unit, IF(t3.img_ebai <> '', t3.img_ebai, t3.img) img, t3.upc, + SELECT t8.price_percentage, t1.*, t2.id sku_id, 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, t4.name cat_name, t4.id cat_id, t4.level cat_level, t5.ebai_id cat_ebai_id, t4p.id parent_cat_id, t5p.ebai_id parent_cat_ebai_id, t5p.ebai_sync_status parent_cat_ebai_sync_status, cat1.vendor_category_id ebai_cat3_id, cat2.vendor_category_id ebai_cat2_id, cat2.parent_id ebai_cat1_id FROM store_sku_bind t1 - JOIN sku t2 ON t1.sku_id = t2.id AND t2.deleted_at = ? AND t2.status = ? - JOIN sku_name t3 ON t2.name_id = t3.id AND t3.deleted_at = ? AND t3.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 = ? JOIN sku_category t4 ON t3.category_id = t4.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 = ? @@ -120,7 +123,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) { catList2Add := make(map[int]int) for _, storeSku := range storeSkuInfoList { - if storeSku.EbaiSyncStatus&(model.SyncFlagNewMask|model.SyncFlagModifiedMask) != 0 { + if storeSku.SkuID != 0 && storeSku.EbaiSyncStatus&(model.SyncFlagNewMask|model.SyncFlagModifiedMask) != 0 { if storeSku.ParentCatEbaiID == 0 && storeSku.ParentCatID != 0 { catList2Add[storeSku.ParentCatID] = 1 } @@ -246,7 +249,7 @@ func (p *PurchaseHandler) SyncStoreSkus(ctx *jxcontext.Context, parentTask tasks storeSku := batchItemList[0].(*tStoreSkuFullInfo) updateFields := []string{model.FieldEbaiSyncStatus} if globals.EnableStoreWrite && globals.EnableEbaiStoreWrite { - if storeSku.EbaiSyncStatus&model.SyncFlagDeletedMask != 0 { + if storeSku.SkuID == 0 || storeSku.EbaiSyncStatus&model.SyncFlagDeletedMask != 0 { if storeSku.EbaiSyncStatus&model.SyncFlagNewMask == 0 && storeSku.EbaiID != 0 { err = api.EbaiAPI.SkuDelete(strStoreID, utils.Int64ToStr(storeSku.EbaiID)) } diff --git a/business/partner/purchase/mtwm/store_sku.go b/business/partner/purchase/mtwm/store_sku.go index 70f2d192c..eefa2ee33 100644 --- a/business/partner/purchase/mtwm/store_sku.go +++ b/business/partner/purchase/mtwm/store_sku.go @@ -255,9 +255,9 @@ func (p *PurchaseHandler) SyncStoreSkus(ctx *jxcontext.Context, parentTask tasks updateFields := []string{model.FieldMtwmSyncStatus} storeSkuBind := &model.StoreSkuBind{} storeSkuBind.ID = skuItem.BindID - if skuItem.SkuSyncStatus&model.SyncFlagDeletedMask != 0 { - if skuItem.SkuSyncStatus&model.SyncFlagNewMask == 0 && skuItem.ID != 0 { - err = api.MtwmAPI.RetailDelete(vendorStoreID, utils.Int2Str(skuItem.ID)) + if skuItem.ID == 0 || skuItem.SkuSyncStatus&model.SyncFlagDeletedMask != 0 { + if skuItem.SkuSyncStatus&model.SyncFlagNewMask == 0 && skuItem.VendorSkuID != "" { + err = api.MtwmAPI.RetailDelete(vendorStoreID, skuItem.VendorSkuID) } } else if skuItem.SkuSyncStatus&(model.SyncFlagModifiedMask|model.SyncFlagNewMask) != 0 { foodData := make(map[string]interface{})