diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 2e8f0e352..9d2973140 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -1108,7 +1108,7 @@ func GetStoreSkusByNameIDs(db *DaoDB, storeIDs []int, nameID int) (skuList []*St func GetTopSkusByStoreIDs(db *DaoDB, storeIDs []int) (storeSkuNameExt []*StoreSkuNameExt, err error) { sql := ` - SELECT t2.id sku_id,t3.*,t1.store_id,t1.store_name + SELECT 1 s, 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 FROM goods_order a @@ -1136,10 +1136,32 @@ func GetTopSkusByStoreIDs(db *DaoDB, storeIDs []int) (storeSkuNameExt []*StoreSk GROUP BY 2,3,4)t1 JOIN sku t2 ON t2.id = t1.id JOIN sku_name t3 ON t3.id = t2.name_id - ORDER BY t1.count DESC + UNION ALL + SELECT 2 s, 0 count, a.sku_id, g.*, a.store_id, d.name store_name + FROM store_sku_bind a + LEFT JOIN act_store_sku b ON a.store_id = b.store_id AND b.sku_id = a.sku_id + LEFT JOIN act_map c ON c.act_id = b.act_id + LEFT JOIN act d ON d.id = c.act_id + JOIN store e ON e.id = a.store_id + JOIN sku f ON a.sku_id = f.id AND f.deleted_at = ? + 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 += + ` + AND NOW() BETWEEN d.begin_at AND d.end_at + AND a.status = ? + AND a.deleted_at = ? + AND (d.type = ? OR d.type = ?) + ORDER BY 1,2 DESC LIMIT ? ` - sqlParams = append(sqlParams, salePriceLimit, 30) + sqlParams = append(sqlParams, model.StoreSkuBindStatusNormal, utils.DefaultTimeValue, model.ActSkuDirectDown, model.ActSkuSecKill, 30) err = GetRows(db, &storeSkuNameExt, sql, sqlParams...) var skuNamesInfo = &StoreSkuNamesInfo{ SkuNames: storeSkuNameExt,