- 优化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)
|
||||
}
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user