Ver Fonte

订单销售名称搜索项

yuhongqi há 2 dias atrás
pai
commit
726aa73d5c

+ 22 - 4
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreUserEndCategoryScrmServiceImpl.java

@@ -48,9 +48,18 @@ public class FsStoreUserEndCategoryScrmServiceImpl implements IFsStoreUserEndCat
         List<FsStoreProductScrm> products = fsStoreProductScrmMapper.getStoreProductInProductIds(productIds);
         Map<Long, FsStoreProductScrm> productMap = products.stream().collect(Collectors.toMap(FsStoreProductScrm::getProductId, p -> p, (a, b) -> a));
         List<FsStoreProductTagNameVO> tagNames = productTagRelationMapper.selectProductTagNamesByProductIds(productIds);
-        Map<Long, List<String>> tagMap = new LinkedHashMap<>();
+        // 按商品ID分组,每个商品的标签列表按sort排序
+        Map<Long, List<FsStoreProductTagNameVO>> tagVoMap = new LinkedHashMap<>();
         for (FsStoreProductTagNameVO tn : tagNames) {
-            tagMap.computeIfAbsent(tn.getProductId(), k -> new ArrayList<>()).add(tn.getTagName());
+            tagVoMap.computeIfAbsent(tn.getProductId(), k -> new ArrayList<>()).add(tn);
+        }
+        // 转换为标签名称列表,已按sort排序(SQL已排序)
+        Map<Long, List<String>> tagMap = new LinkedHashMap<>();
+        for (Map.Entry<Long, List<FsStoreProductTagNameVO>> entry : tagVoMap.entrySet()) {
+            List<String> tagNameList = entry.getValue().stream()
+                    .map(FsStoreProductTagNameVO::getTagName)
+                    .collect(Collectors.toList());
+            tagMap.put(entry.getKey(), tagNameList);
         }
         List<FsStoreUserEndCategoryProductVO> result = new ArrayList<>();
         for (Long pid : productIds) {
@@ -87,9 +96,18 @@ public class FsStoreUserEndCategoryScrmServiceImpl implements IFsStoreUserEndCat
         List<FsStoreProductScrm> products = fsStoreProductScrmMapper.getStoreProductInProductIdsForApp(productIds);
         Map<Long, FsStoreProductScrm> productMap = products.stream().collect(Collectors.toMap(FsStoreProductScrm::getProductId, p -> p, (a, b) -> a));
         List<FsStoreProductTagNameVO> tagNames = productTagRelationMapper.selectProductTagNamesByProductIds(productIds);
-        Map<Long, List<String>> tagMap = new LinkedHashMap<>();
+        // 按商品ID分组,每个商品的标签列表按sort排序
+        Map<Long, List<FsStoreProductTagNameVO>> tagVoMap = new LinkedHashMap<>();
         for (FsStoreProductTagNameVO tn : tagNames) {
-            tagMap.computeIfAbsent(tn.getProductId(), k -> new ArrayList<>()).add(tn.getTagName());
+            tagVoMap.computeIfAbsent(tn.getProductId(), k -> new ArrayList<>()).add(tn);
+        }
+        // 转换为标签名称列表,已按sort排序(SQL已排序)
+        Map<Long, List<String>> tagMap = new LinkedHashMap<>();
+        for (Map.Entry<Long, List<FsStoreProductTagNameVO>> entry : tagVoMap.entrySet()) {
+            List<String> tagNameList = entry.getValue().stream()
+                    .map(FsStoreProductTagNameVO::getTagName)
+                    .collect(Collectors.toList());
+            tagMap.put(entry.getKey(), tagNameList);
         }
         List<FsStoreUserEndCategoryProductVO> result = new ArrayList<>();
         for (Long pid : productIds) {

+ 2 - 0
fs-service/src/main/java/com/fs/hisStore/vo/FsStoreProductTagNameVO.java

@@ -14,4 +14,6 @@ public class FsStoreProductTagNameVO implements Serializable {
 
     private Long productId;
     private String tagName;
+    /** 排序值 */
+    private Long sort;
 }

+ 4 - 2
fs-service/src/main/resources/mapper/hisStore/FsStoreProductTagRelationScrmMapper.xml

@@ -25,10 +25,12 @@
     </delete>
 
     <select id="selectProductTagNamesByProductIds" resultType="com.fs.hisStore.vo.FsStoreProductTagNameVO">
-        select r.product_id as productId, t.tag_name as tagName
+        select r.product_id as productId, t.tag_name as tagName, t.sort as sort
         from fs_store_product_tag_relation_scrm r
-        inner join fs_store_product_tag_scrm t on r.tag_id = t.id and t.status = 1
+        left join fs_store_product_tag_scrm t on r.tag_id = t.id
         where r.product_id in
         <foreach collection="productIds" item="pid" open="(" separator="," close=")">#{pid}</foreach>
+        and t.status = 1
+        order by t.sort asc
     </select>
 </mapper>