Browse Source

商品列表排序规则优化

chao 3 years ago
parent
commit
d633ef4512

+ 20 - 8
src/main/java/com/caimei365/commodity/components/SearchOpenService.java

@@ -284,16 +284,22 @@ public class SearchOpenService {
         }
         // 创建sort对象,并设置二维排序
         Sort sorter = new Sort();
-        // 价格,销量,人气 排序
+        // 价格,销量,人气 排序(按最近30天内)
         String[] sortFields = {"price", "sales", "favorite"};
         if (StringUtils.isNotEmpty(sortField) && Arrays.asList(sortFields).contains(sortField)) {
+            // 设置选定排序字段
             Order order = (1 == sortType) ? Order.DECREASE : Order.INCREASE;
-            // 设置排序字段
             sorter.addToSortFields(new SortField("p_" + sortField, order));
+        } else {
+            // 以RANK相关性算分降序
+            sorter.addToSortFields(new SortField("RANK", Order.DECREASE));
+            // 综合排序:按照品牌权重(p_sort),销量,人气,价格的高低依次降序排列
+            sorter.addToSortFields(new SortField("p_sort", Order.DECREASE));
+            sorter.addToSortFields(new SortField("p_sales", Order.DECREASE));
+            sorter.addToSortFields(new SortField("p_favorite", Order.DECREASE));
+            sorter.addToSortFields(new SortField("p_price", Order.DECREASE));
         }
-        // 以RANK相关性算分降序
-        sorter.addToSortFields(new SortField("RANK", Order.DECREASE));
-        // 默认商品ID倒序
+        // 商品ID倒序
         sorter.addToSortFields(new SortField("p_id", Order.DECREASE));
         //添加Sort对象参数
         searchParams.setSort(sorter);
@@ -362,14 +368,20 @@ public class SearchOpenService {
 
         // 创建sort对象,并设置二维排序
         Sort sorter = new Sort();
-        // 价格,销量,人气 排序
+        // 价格,销量,人气 排序(按最近30天内)
         String[] sortFields = {"price", "sales", "favorite"};
         if (StringUtils.isNotEmpty(sortField) && Arrays.asList(sortFields).contains(sortField)) {
+            // 设置选定排序字段
             Order order = (1 == sortType) ? Order.DECREASE : Order.INCREASE;
-            // 设置排序字段
             sorter.addToSortFields(new SortField("p_" + sortField, order));
+        } else {
+            // 综合排序:按照品牌权重(p_sort),销量,人气,价格的高低依次降序排列
+            sorter.addToSortFields(new SortField("p_sort", Order.DECREASE));
+            sorter.addToSortFields(new SortField("p_sales", Order.DECREASE));
+            sorter.addToSortFields(new SortField("p_favorite", Order.DECREASE));
+            sorter.addToSortFields(new SortField("p_price", Order.DECREASE));
         }
-        // 默认商品ID倒序
+        // 商品ID倒序
         sorter.addToSortFields(new SortField("p_id", Order.DECREASE));
         //添加Sort对象参数
         searchParams.setSort(sorter);

+ 1 - 3
src/main/resources/mapper/SearchMapper.xml

@@ -10,10 +10,7 @@
         p.price as p_price,
         p.priceFlag as p_price_flag,
         p.productCode as p_code,
-        p.sortIndex as p_sort,
         p.unit as p_unit,
-        p.sellNumber as p_sales,
-        p.favoriteTimes as p_favorite,
         br.id as p_brand_id,
         br.name as p_brand_name,
         p.shopID as p_supplier_id,
@@ -27,6 +24,7 @@
         p.preferredFlag as p_preferred,
         p.productCategory as p_type,
         p.validFlag as p_valid,
+        br.weights as p_sort,
         DATE_FORMAT(p.ADDTIME,'%Y%m%d') as p_time,
         IFNULL(p.visibility,3) as p_visibility
     </sql>