diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index ed7ef245f..ba78fb441 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -1171,7 +1171,8 @@ func GetStoreSkusByNameIDs(db *DaoDB, storeIDs []int, nameID int) (skuList []*St } func GetTopSkusByStoreIDs(db *DaoDB, storeIDs []int) (storeSkuNameExt []*StoreSkuNameExt, err error) { - sql := ` + for _, storeId := range storeIDs { + sql := ` SELECT t1.count, t2.id sku_id, t3.*, t1.store_id, t1.store_name FROM( SELECT SUM(b.count) count,c.id,a.store_id,d.name store_name @@ -1184,18 +1185,18 @@ func GetTopSkusByStoreIDs(db *DaoDB, storeIDs []int) (storeSkuNameExt []*StoreSk WHERE 1=1 AND a.order_created_at BETWEEN ? and NOW() ` - sqlParams := []interface{}{ - utils.DefaultTimeValue, - utils.DefaultTimeValue, - model.SkuStatusNormal, - utils.DefaultTimeValue, - time.Now().AddDate(0, -1, 0), - } - if len(storeIDs) > 0 { - sql += " AND a.store_id IN(" + GenQuestionMarks(len(storeIDs)) + ")" - sqlParams = append(sqlParams, storeIDs) - } - sql += ` + sqlParams := []interface{}{ + utils.DefaultTimeValue, + utils.DefaultTimeValue, + model.SkuStatusNormal, + utils.DefaultTimeValue, + time.Now().AddDate(0, -1, 0), + } + if storeId > 0 { + sql += " AND a.store_id = ? " + sqlParams = append(sqlParams, storeId) + } + sql += ` AND b.sale_price > ? GROUP BY 2,3,4 LIMIT 0, 1000 )t1 JOIN sku t2 ON t2.id = t1.id @@ -1211,13 +1212,13 @@ func GetTopSkusByStoreIDs(db *DaoDB, storeIDs []int) (storeSkuNameExt []*StoreSk JOIN sku_name g ON g.id = f.name_id AND g.deleted_at = ? WHERE 1=1 ` - sqlParams = append(sqlParams, salePriceLimit, utils.DefaultTimeValue, utils.DefaultTimeValue) - if len(storeIDs) > 0 { - sql += " AND a.store_id IN(" + GenQuestionMarks(len(storeIDs)) + ")" - sqlParams = append(sqlParams, storeIDs) - } - sql += - ` + sqlParams = append(sqlParams, salePriceLimit, utils.DefaultTimeValue, utils.DefaultTimeValue) + if storeId > 0 { + sql += " AND a.store_id = ?" + sqlParams = append(sqlParams, storeId) + } + sql += + ` AND NOW() BETWEEN d.begin_at AND d.end_at AND a.status = ? AND a.deleted_at = ? @@ -1228,20 +1229,25 @@ func GetTopSkusByStoreIDs(db *DaoDB, storeIDs []int) (storeSkuNameExt []*StoreSk JOIN sku b ON a.sku_id = b.id AND b.deleted_at = ? AND b.status = ? JOIN sku_name c ON b.name_id = c.id AND c.deleted_at = ? AND c.status = ? JOIN store d ON d.id = a.store_id AND d.deleted_at = ? AND d.status <> ? - WHERE a.store_id IN (` + GenQuestionMarks(len(storeIDs)) + `) + WHERE a.store_id = ? AND a.deleted_at = ? AND a.status = ? ORDER BY 1 DESC LIMIT ? ` - sqlParams = append(sqlParams, model.StoreSkuBindStatusNormal, utils.DefaultTimeValue, model.ActSkuDirectDown, model.ActSkuSecKill, - utils.DefaultTimeValue, model.SkuStatusNormal, utils.DefaultTimeValue, model.SkuStatusNormal, utils.DefaultTimeValue, model.StoreStatusDisabled, - storeIDs, utils.DefaultTimeValue, model.StoreSkuBindStatusNormal, 30) - err = GetRows(db, &storeSkuNameExt, sql, sqlParams...) - var skuNamesInfo = &StoreSkuNamesInfo{ - SkuNames: storeSkuNameExt, - } - var skuIdList = make([]int, 0, 0) - sql2 := ` + sqlParams = append(sqlParams, model.StoreSkuBindStatusNormal, utils.DefaultTimeValue, model.ActSkuDirectDown, model.ActSkuSecKill, + utils.DefaultTimeValue, model.SkuStatusNormal, utils.DefaultTimeValue, model.SkuStatusNormal, utils.DefaultTimeValue, model.StoreStatusDisabled, + storeId, utils.DefaultTimeValue, model.StoreSkuBindStatusNormal, 30) + + storeSkuName := make([]*StoreSkuNameExt, 0, 0) + err = GetRows(db, &storeSkuName, sql, sqlParams...) + var skuNamesInfo = &StoreSkuNamesInfo{ + SkuNames: storeSkuName, + } + if len(storeSkuName) != 0 { + storeSkuNameExt = append(storeSkuNameExt, storeSkuName...) + } + var skuIdList = make([]int, 0, 0) + sql2 := ` SELECT a.id sku_id,a.*,t4.created_at bind_created_at, t4.updated_at bind_updated_at, t4.last_operator bind_last_operator, t4.deleted_at bind_deleted_at, t4.sub_store_id, t4.price bind_price, IF(t4.unit_price IS NOT NULL, t4.unit_price, t1.price) unit_price, t4.status store_sku_status, t4.auto_sale_at, t4.ebai_id, t4.mtwm_id,t4.dd_id,t4.tao_id, @@ -1254,24 +1260,27 @@ func GetTopSkusByStoreIDs(db *DaoDB, storeIDs []int) (storeSkuNameExt []*StoreSk WHERE a.id = ? AND a.deleted_at = ? ` - for _, v := range storeSkuNameExt { - var skus []*StoreSkuExt - sqlParams2 := []interface{}{ - utils.DefaultTimeValue, - utils.DefaultTimeValue, - v.SkuID, - utils.DefaultTimeValue, - } - if len(storeIDs) > 0 { - sql2 += " AND t4.store_id IN(" + GenQuestionMarks(len(storeIDs)) + ")" - sqlParams2 = append(sqlParams2, storeIDs) - } - if err = GetRows(db, &skus, sql2, sqlParams2...); err == nil { - v.Skus = skus - skuIdList = append(skuIdList, v.SkuID) + for _, v := range storeSkuName { + var skus []*StoreSkuExt + sqlParams2 := []interface{}{ + utils.DefaultTimeValue, + utils.DefaultTimeValue, + v.SkuID, + utils.DefaultTimeValue, + } + if storeId > 0 { + sql2 += " AND t4.store_id = ? " + sqlParams2 = append(sqlParams2, storeId) + } + if err = GetRows(db, &skus, sql2, sqlParams2...); err == nil { + v.Skus = skus + skuIdList = append(skuIdList, v.SkuID) + } } + err = UpdateActPrice4StoreSkuNameNew(db, []int{storeId}, skuIdList, skuNamesInfo, model.VendorIDJX) + } - err = UpdateActPrice4StoreSkuNameNew(db, storeIDs, skuIdList, skuNamesInfo, model.VendorIDJX) + return storeSkuNameExt, err }