|
@@ -110,6 +110,14 @@ class GoodsCategoryClass extends BaseClass
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ // 商品ID精确筛选(逗号分隔),用于首页轮播图等场景按选中的具体商品跳转展示
|
|
|
|
|
+ if (!empty($askInfo['goodsIds'])) {
|
|
|
|
|
+ $goodsIds = array_filter(array_map('intval', explode(',', strval($askInfo['goodsIds']))));
|
|
|
|
|
+ if (!empty($goodsIds)) {
|
|
|
|
|
+ $query->andWhere(['xhGoods.id' => $goodsIds]);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
// 价格区间筛选(按商品基础价 xhGoods.price)
|
|
// 价格区间筛选(按商品基础价 xhGoods.price)
|
|
|
if (isset($askInfo['minPrice']) && $askInfo['minPrice'] !== '' && is_numeric($askInfo['minPrice'])) {
|
|
if (isset($askInfo['minPrice']) && $askInfo['minPrice'] !== '' && is_numeric($askInfo['minPrice'])) {
|
|
|
$query->andWhere(['>=', 'xhGoods.price', floatval($askInfo['minPrice'])]);
|
|
$query->andWhere(['>=', 'xhGoods.price', floatval($askInfo['minPrice'])]);
|
|
@@ -119,8 +127,15 @@ class GoodsCategoryClass extends BaseClass
|
|
|
}
|
|
}
|
|
|
}]);
|
|
}]);
|
|
|
|
|
|
|
|
-
|
|
|
|
|
- $query->orderBy(['inTurn' => SORT_DESC]);
|
|
|
|
|
|
|
+ // 指定 goodsIds 时按传入顺序排序,还原运营在后台选择商品的顺序;否则按分类排序权重
|
|
|
|
|
+ $goodsIdsForOrder = !empty($askInfo['goodsIds'])
|
|
|
|
|
+ ? array_filter(array_map('intval', explode(',', strval($askInfo['goodsIds']))))
|
|
|
|
|
+ : [];
|
|
|
|
|
+ if (!empty($goodsIdsForOrder)) {
|
|
|
|
|
+ $query->orderBy(new \yii\db\Expression('FIELD(xhGoods.id, ' . implode(',', $goodsIdsForOrder) . ')'));
|
|
|
|
|
+ } else {
|
|
|
|
|
+ $query->orderBy(['inTurn' => SORT_DESC]);
|
|
|
|
|
+ }
|
|
|
// 获取总数
|
|
// 获取总数
|
|
|
$total = $query->count();
|
|
$total = $query->count();
|
|
|
// 分页查询
|
|
// 分页查询
|