- 优化GetStoresSkus与GetStoreAbnormalSkuCount中的同步标志查询
This commit is contained in:
@@ -216,16 +216,20 @@ func GetStoresSkus(ctx *jxcontext.Context, storeIDs []int, isFocus bool, keyword
|
|||||||
sqlParams = append(sqlParams, fromStatus, toStatus)
|
sqlParams = append(sqlParams, fromStatus, toStatus)
|
||||||
}
|
}
|
||||||
if params["jdSyncStatus"] != nil || params["ebaiSyncStatus"] != nil || params["mtwmSyncStatus"] != nil {
|
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"
|
sql += " AND ( 1 = 0"
|
||||||
if params["jdSyncStatus"] != nil {
|
if params["jdSyncStatus"] != nil && realVendorMap[model.VendorIDJD] == 1 {
|
||||||
sql += " OR t4.jd_sync_status & ? <> 0"
|
sql += " OR t4.jd_sync_status & ? <> 0"
|
||||||
sqlParams = append(sqlParams, params["jdSyncStatus"])
|
sqlParams = append(sqlParams, params["jdSyncStatus"])
|
||||||
}
|
}
|
||||||
if params["ebaiSyncStatus"] != nil {
|
if params["ebaiSyncStatus"] != nil && realVendorMap[model.VendorIDEBAI] == 1 {
|
||||||
sql += " OR t4.ebai_sync_status & ? <> 0"
|
sql += " OR t4.ebai_sync_status & ? <> 0"
|
||||||
sqlParams = append(sqlParams, params["ebaiSyncStatus"])
|
sqlParams = append(sqlParams, params["ebaiSyncStatus"])
|
||||||
}
|
}
|
||||||
if params["mtwmSyncStatus"] != nil {
|
if params["mtwmSyncStatus"] != nil && realVendorMap[model.VendorIDMTWM] == 1 {
|
||||||
sql += " OR t4.mtwm_sync_status & ? <> 0"
|
sql += " OR t4.mtwm_sync_status & ? <> 0"
|
||||||
sqlParams = append(sqlParams, params["mtwmSyncStatus"])
|
sqlParams = append(sqlParams, params["mtwmSyncStatus"])
|
||||||
}
|
}
|
||||||
@@ -418,8 +422,27 @@ func GetStoresSkus(ctx *jxcontext.Context, storeIDs []int, isFocus bool, keyword
|
|||||||
return skuNamesInfo, err
|
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) {
|
func GetStoreAbnormalSkuCount(ctx *jxcontext.Context, storeID, syncStatus int, isBySku bool, params map[string]interface{}) (count int, err error) {
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
|
realVendorMap, err2 := getValidStoreVendorMap(db, []int{storeID})
|
||||||
|
if err = err2; err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
|
||||||
sql := `
|
sql := `
|
||||||
SELECT COUNT(*) ct`
|
SELECT COUNT(*) ct`
|
||||||
if !isBySku {
|
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 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 = ?
|
JOIN sku_name t3 ON t3.id = t2.name_id AND t3.deleted_at = ?
|
||||||
WHERE t1.deleted_at = ? AND t1.store_id = ? AND
|
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 = ?) AND
|
||||||
((t2.status = ? AND t3.status = ?) OR t1.status = ?)`
|
(1 = 0`
|
||||||
sqlParams := []interface{}{
|
sqlParams := []interface{}{
|
||||||
utils.DefaultTimeValue,
|
utils.DefaultTimeValue,
|
||||||
utils.DefaultTimeValue,
|
utils.DefaultTimeValue,
|
||||||
utils.DefaultTimeValue,
|
utils.DefaultTimeValue,
|
||||||
storeID,
|
storeID,
|
||||||
syncStatus,
|
|
||||||
syncStatus,
|
|
||||||
syncStatus,
|
|
||||||
model.SkuStatusNormal,
|
model.SkuStatusNormal,
|
||||||
model.SkuStatusNormal,
|
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 {
|
if params["fromStatus"] != nil {
|
||||||
fromStatus := params["fromStatus"].(int)
|
fromStatus := params["fromStatus"].(int)
|
||||||
toStatus := fromStatus
|
toStatus := fromStatus
|
||||||
|
|||||||
Reference in New Issue
Block a user