Explorar el Código

feat:新增商铺入驻获取三级分类数据接口

penghao hace 2 semanas
padre
commit
e9b1bb6fdf

+ 22 - 1
alien-store/src/main/java/shop/alien/store/controller/StoreInfoController.java

@@ -988,7 +988,28 @@ public class StoreInfoController {
             return R.fail("获取推荐店铺失败,请稍后重试");
         }
     }
-
+    /**
+     * 根据business_classify字段获取字典表数据实现UI图中的功能
+     * RESTful风格:GET /store/info/business-classifies
+     * 返回扁平化的分类列表,用于多选分类功能
+     *
+     * @param parentId 父分类ID(可选),如果提供则只返回该父分类下的子分类
+     * @return R<List<StoreDictionaryVo>> 分类列表(扁平化,仅子分类)
+     */
+    @ApiOperation("获取店铺分类信息)")
+    @ApiOperationSupport(order = 19)
+    @GetMapping("/business-classifies")
+    public R<List<StoreDictionaryVo>> getBusinessClassifyData(
+            @RequestParam(value = "parentId", required = false) Integer parentId) {
+        log.info("StoreInfoController.getBusinessClassifyData?parentId={}", parentId);
+        try {
+            List<StoreDictionaryVo> result = storeInfoService.getBusinessClassifyData(parentId);
+            return R.data(result);
+        } catch (Exception e) {
+            log.error("获取business_classify分类数据异常", e);
+            return R.fail("获取分类数据失败,请稍后重试");
+        }
+    }
 
 
 }

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

@@ -361,4 +361,13 @@ public interface StoreInfoService extends IService<StoreInfo> {
      * @return List<StoreInfoVo> 店铺信息列表
      */
     List<StoreInfoVo> getRecommendedStores(String businessSection, String businessTypes, String businessClassify, Double lon, Double lat);
+
+    /**
+     * 获取三级分类数据
+     * 根据二级分类ID获取该分类下的三级分类
+     *
+     * @param parentId 二级分类ID
+     * @return List<StoreDictionaryVo> 三级分类列表
+     */
+    List<StoreDictionaryVo> getBusinessClassifyData(Integer parentId);
 }

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

@@ -3221,6 +3221,38 @@ public class StoreInfoServiceImpl extends ServiceImpl<StoreInfoMapper, StoreInfo
     }
 
     @Override
+    public List<StoreDictionaryVo> getBusinessClassifyData(Integer parentId) {
+        // 构建查询条件
+        LambdaQueryWrapper<StoreDictionary> queryWrapper = new LambdaQueryWrapper<StoreDictionary>()
+                .eq(StoreDictionary::getTypeName, "business_classify")
+                .eq(StoreDictionary::getDeleteFlag, 0)
+                .orderByAsc(StoreDictionary::getDictId);
+
+        // 如果指定了parentId,则只查询该父分类下的子分类
+        if (parentId != null) {
+            queryWrapper.eq(StoreDictionary::getParentId, parentId);
+        } else {
+            // 如果没有指定parentId,则查询所有子分类(parentId不为0或null的分类)
+            queryWrapper.isNotNull(StoreDictionary::getParentId)
+                    .ne(StoreDictionary::getParentId, 0);
+        }
+
+        // 查询字典数据
+        List<StoreDictionary> allClassifies = storeDictionaryMapper.selectList(queryWrapper);
+
+        // 构建扁平化的结果列表(仅返回子分类,用于多选功能)
+        List<StoreDictionaryVo> result = new ArrayList<>();
+
+        for (StoreDictionary classify : allClassifies) {
+            StoreDictionaryVo vo = new StoreDictionaryVo();
+            BeanUtils.copyProperties(classify, vo);
+            // 不设置subDataList,返回扁平化列表
+            result.add(vo);
+        }
+        return result;
+    }
+
+    @Override
     public Map<String, Object> getStoreOcrData(String storeId, String imageUrl) {
         Map<String, Object> map = new HashMap<>();
         LambdaQueryWrapper<OcrImageUpload> queryWrapper = new LambdaQueryWrapper<>();