diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 3dc2ed309..908a7cc74 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -216,16 +216,20 @@ func GetStoresSkus(ctx *jxcontext.Context, storeIDs []int, isFocus bool, keyword sqlParams = append(sqlParams, fromStatus, toStatus) } if params["jdSyncStatus"] != nil || params["ebaiSyncStatus"] != nil || params["mtwmSyncStatus"] != nil { + realVendorMap, err2 := getValidStoreVendorMap(db, storeIDs) + if err = err2; err != nil { + return nil, err + } sql += " AND ( 1 = 0" - if params["jdSyncStatus"] != nil { + if params["jdSyncStatus"] != nil && realVendorMap[model.VendorIDJD] == 1 { sql += " OR t4.jd_sync_status & ? <> 0" sqlParams = append(sqlParams, params["jdSyncStatus"]) } - if params["ebaiSyncStatus"] != nil { + if params["ebaiSyncStatus"] != nil && realVendorMap[model.VendorIDEBAI] == 1 { sql += " OR t4.ebai_sync_status & ? <> 0" sqlParams = append(sqlParams, params["ebaiSyncStatus"]) } - if params["mtwmSyncStatus"] != nil { + if params["mtwmSyncStatus"] != nil && realVendorMap[model.VendorIDMTWM] == 1 { sql += " OR t4.mtwm_sync_status & ? <> 0" sqlParams = append(sqlParams, params["mtwmSyncStatus"]) } @@ -418,8 +422,27 @@ func GetStoresSkus(ctx *jxcontext.Context, storeIDs []int, isFocus bool, keyword return skuNamesInfo, err } +func getValidStoreVendorMap(db *dao.DaoDB, storeIDs []int) (realVendorMap map[int]int, err error) { + storeMapList, err := dao.GetStoresMapList(db, nil, storeIDs, model.StoreStatusAll) + if err != nil { + return nil, err + } + realVendorMap = make(map[int]int) + for _, v := range storeMapList { + if v.IsSync != 0 { + realVendorMap[v.VendorID] = 1 + } + } + return realVendorMap, nil +} + func GetStoreAbnormalSkuCount(ctx *jxcontext.Context, storeID, syncStatus int, isBySku bool, params map[string]interface{}) (count int, err error) { db := dao.GetDB() + realVendorMap, err2 := getValidStoreVendorMap(db, []int{storeID}) + if err = err2; err != nil { + return 0, err + } + sql := ` SELECT COUNT(*) ct` if !isBySku { @@ -432,20 +455,24 @@ func GetStoreAbnormalSkuCount(ctx *jxcontext.Context, storeID, syncStatus int, i JOIN sku t2 ON t2.id = t1.sku_id AND t2.deleted_at = ? JOIN sku_name t3 ON t3.id = t2.name_id AND t3.deleted_at = ? WHERE t1.deleted_at = ? AND t1.store_id = ? AND - (t1.jd_sync_status & ? <> 0 OR t1.ebai_sync_status & ? <> 0 OR t1.mtwm_sync_status & ? <> 0) AND - ((t2.status = ? AND t3.status = ?) OR t1.status = ?)` + ((t2.status = ? AND t3.status = ?) OR t1.status = ?) AND + (1 = 0` sqlParams := []interface{}{ utils.DefaultTimeValue, utils.DefaultTimeValue, utils.DefaultTimeValue, storeID, - syncStatus, - syncStatus, - syncStatus, model.SkuStatusNormal, model.SkuStatusNormal, model.SkuStatusNormal, } + for _, vendorID := range []int{model.VendorIDJD, model.VendorIDEBAI, model.VendorIDMTWM} { + if realVendorMap[vendorID] != 0 { + sql += fmt.Sprintf(" OR t1.%s_sync_status & ? <> 0", dao.ConvertDBFieldPrefix(model.VendorNames[vendorID])) + sqlParams = append(sqlParams, syncStatus) + } + } + sql += ")" if params["fromStatus"] != nil { fromStatus := params["fromStatus"].(int) toStatus := fromStatus