Sfoglia il codice sorgente

八大类全部子类增加入参

ldz 2 settimane fa
parent
commit
237678317f

+ 5 - 3
alien-store/src/main/java/shop/alien/store/controller/StoreInfoController.java

@@ -915,11 +915,13 @@ public class StoreInfoController {
     @ApiOperation("获取所有经营板块以及子类")
     @ApiOperationSupport(order = 18)
     @GetMapping("/getAllBusinessSection")
-    public R<List<StoreDictionary>> queryBusinessSectionTree() {
-        log.info("platformBusinessSection.queryBusinessSectionTree");
+    public R<List<StoreDictionary>> queryBusinessSectionTree(
+            @ApiParam(value = "一级分类dictId,可选,如果传入则只返回该一级分类下的二级和三级分类", required = false)
+            @RequestParam(required = false) String businessSection) {
+        log.info("platformBusinessSection.queryBusinessSectionTree, businessSection={}", businessSection);
 
         try {
-            List<StoreDictionary> result = storeInfoService.getAllBusinessSection();
+            List<StoreDictionary> result = storeInfoService.getAllBusinessSection(businessSection);
             return R.data(result);
         }catch (Exception e){
             log.error("获取休闲娱乐分类数据异常", e);

+ 8 - 0
alien-store/src/main/java/shop/alien/store/service/StoreInfoService.java

@@ -332,6 +332,14 @@ public interface StoreInfoService extends IService<StoreInfo> {
     List<StoreDictionary> getAllBusinessSection();
 
     /**
+     * 根据一级分类获取该分类下的二级和三级分类
+     *
+     * @param businessSection 一级分类的dictId(可选,如果为空则返回所有分类)
+     * @return List<StoreDictionary> 分类树形结构
+     */
+    List<StoreDictionary> getAllBusinessSection(String businessSection);
+
+    /**
      * 获取门店下三级分类结构
      * 根据门店ID查询该门店的经营板块、经营种类和分类的三级结构
      *

+ 60 - 0
alien-store/src/main/java/shop/alien/store/service/impl/StoreInfoServiceImpl.java

@@ -3616,6 +3616,66 @@ public class StoreInfoServiceImpl extends ServiceImpl<StoreInfoMapper, StoreInfo
         return buildTreeOptimized(storeDictionaryList);
     }
 
+    @Override
+    public List<StoreDictionary> getAllBusinessSection(String businessSection) {
+        // 如果没有传入一级分类参数,返回所有分类
+        if (businessSection == null || businessSection.trim().isEmpty()) {
+            return getAllBusinessSection();
+        }
+
+        // 1. 根据dictId查询一级分类
+        StoreDictionary firstLevelDict = storeDictionaryMapper.selectOne(
+                new LambdaQueryWrapper<StoreDictionary>()
+                        .eq(StoreDictionary::getDictId, businessSection.trim())
+                        .eq(StoreDictionary::getTypeName, "business_section")
+                        .eq(StoreDictionary::getDeleteFlag, 0)
+        );
+
+        if (firstLevelDict == null) {
+            log.warn("未找到一级分类,businessSection={}", businessSection);
+            return new ArrayList<>();
+        }
+
+        // 2. 查询该一级分类下的所有二级分类(business_type)
+        List<StoreDictionary> secondLevelDicts = storeDictionaryMapper.selectList(
+                new LambdaQueryWrapper<StoreDictionary>()
+                        .eq(StoreDictionary::getTypeName, "business_type")
+                        .eq(StoreDictionary::getParentId, firstLevelDict.getId())
+                        .eq(StoreDictionary::getDeleteFlag, 0)
+                        .orderByAsc(StoreDictionary::getSortId)
+        );
+
+        if (secondLevelDicts.isEmpty()) {
+            // 如果没有二级分类,只返回一级分类
+            firstLevelDict.setStoreDictionaryList(new ArrayList<>());
+            return Collections.singletonList(firstLevelDict);
+        }
+
+        // 3. 获取所有二级分类的ID
+        List<Integer> secondLevelIds = secondLevelDicts.stream()
+                .map(StoreDictionary::getId)
+                .collect(Collectors.toList());
+
+        // 4. 查询这些二级分类下的所有三级分类(business_classify)
+        List<StoreDictionary> thirdLevelDicts = storeDictionaryMapper.selectList(
+                new LambdaQueryWrapper<StoreDictionary>()
+                        .eq(StoreDictionary::getTypeName, "business_classify")
+                        .in(StoreDictionary::getParentId, secondLevelIds)
+                        .eq(StoreDictionary::getDeleteFlag, 0)
+                        .orderByAsc(StoreDictionary::getSortId)
+        );
+
+        // 5. 构建树形结构
+        // 将一级分类、二级分类、三级分类合并
+        List<StoreDictionary> allDicts = new ArrayList<>();
+        allDicts.add(firstLevelDict);
+        allDicts.addAll(secondLevelDicts);
+        allDicts.addAll(thirdLevelDicts);
+
+        // 构建树形结构
+        return buildTreeOptimized(allDicts);
+    }
+
     /**
      * 构建树形结构(优化版)
      *