From 81d15b609a4588a4a36e4e0c30338f73e0a53da0 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Fri, 12 Sep 2025 17:27:43 +0800
Subject: [PATCH] feat(ai): 新增产品分类相关功能

---
 src/main/java/cc/mrbird/febs/ai/controller/productCategory/ApiProductCategoryController.java |   24 ++++++++++++------------
 src/main/java/cc/mrbird/febs/ai/enumerates/ProductCategoryLevelEnum.java                     |   20 ++++++++++++++++++++
 src/main/java/cc/mrbird/febs/ai/service/impl/AiProductCategoryServiceImpl.java               |    3 +++
 src/main/resources/mapper/modules/AiProductCategoryMapper.xml                                |    3 +++
 src/main/java/cc/mrbird/febs/ai/req/productCategory/ApiProductCategoryPageDto.java           |    7 +++++--
 5 files changed, 43 insertions(+), 14 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/ai/controller/productCategory/ApiProductCategoryController.java b/src/main/java/cc/mrbird/febs/ai/controller/productCategory/ApiProductCategoryController.java
index c29d398..34a2457 100644
--- a/src/main/java/cc/mrbird/febs/ai/controller/productCategory/ApiProductCategoryController.java
+++ b/src/main/java/cc/mrbird/febs/ai/controller/productCategory/ApiProductCategoryController.java
@@ -36,18 +36,7 @@
     }
 
 
-    @ApiOperation(value = "分类列表", notes = "分类列表")
-    @ApiResponses({
-            @ApiResponse(code = 200, message = "success", response = ApiProductCategoryVo.class)
-    })
-    @PostMapping(value = "/list")
-    public FebsResponse list(@RequestBody @Validated ApiProductCategoryPageDto dto) {
-
-        return aiProductCategoryService.categoryList(dto);
-    }
-
-
-    @ApiOperation(value = "全部分类", notes = "全部分类")
+    @ApiOperation(value = "全部父级分类", notes = "全部父级分类")
     @ApiResponses({
             @ApiResponse(code = 200, message = "success", response = ApiProductCategoryVo.class)
     })
@@ -56,4 +45,15 @@
 
         return aiProductCategoryService.allList();
     }
+
+
+    @ApiOperation(value = "子分类列表", notes = "子分类列表")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "success", response = ApiProductCategoryVo.class)
+    })
+    @PostMapping(value = "/list")
+    public FebsResponse list(@RequestBody @Validated ApiProductCategoryPageDto dto) {
+
+        return aiProductCategoryService.categoryList(dto);
+    }
 }
diff --git a/src/main/java/cc/mrbird/febs/ai/enumerates/ProductCategoryLevelEnum.java b/src/main/java/cc/mrbird/febs/ai/enumerates/ProductCategoryLevelEnum.java
new file mode 100644
index 0000000..7deb61a
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/ai/enumerates/ProductCategoryLevelEnum.java
@@ -0,0 +1,20 @@
+package cc.mrbird.febs.ai.enumerates;
+
+import lombok.Getter;
+
+@Getter
+public enum ProductCategoryLevelEnum {
+
+    LEVEL_TWO("二级菜单",2),
+    LEVEL_ONE("一级菜单",1);
+
+
+    private String name;
+    private Integer level;
+
+    ProductCategoryLevelEnum(String name,Integer level) {
+
+        this.level = level;
+        this.name = name;
+    }
+}
diff --git a/src/main/java/cc/mrbird/febs/ai/req/productCategory/ApiProductCategoryPageDto.java b/src/main/java/cc/mrbird/febs/ai/req/productCategory/ApiProductCategoryPageDto.java
index 5e413ea..cffb9a9 100644
--- a/src/main/java/cc/mrbird/febs/ai/req/productCategory/ApiProductCategoryPageDto.java
+++ b/src/main/java/cc/mrbird/febs/ai/req/productCategory/ApiProductCategoryPageDto.java
@@ -4,6 +4,7 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 
 /**
@@ -21,7 +22,9 @@
     @ApiModelProperty(value = "每页数量", example = "10")
     private Integer pageSize;
 
-    @ApiModelProperty(value = "查询名称", example = "123")
-    private String query;
+
+    @NotBlank(message = "父分类不能为空")
+    @ApiModelProperty(value = "父分类ID", example = "123")
+    private String parentId;
 
 }
diff --git a/src/main/java/cc/mrbird/febs/ai/service/impl/AiProductCategoryServiceImpl.java b/src/main/java/cc/mrbird/febs/ai/service/impl/AiProductCategoryServiceImpl.java
index d2c7adb..2f0697e 100644
--- a/src/main/java/cc/mrbird/febs/ai/service/impl/AiProductCategoryServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/ai/service/impl/AiProductCategoryServiceImpl.java
@@ -1,6 +1,7 @@
 package cc.mrbird.febs.ai.service.impl;
 
 import cc.mrbird.febs.ai.entity.AiProductCategory;
+import cc.mrbird.febs.ai.enumerates.ProductCategoryLevelEnum;
 import cc.mrbird.febs.ai.mapper.AiProductCategoryMapper;
 import cc.mrbird.febs.ai.req.productCategory.ApiProductCategoryPageDto;
 import cc.mrbird.febs.ai.res.productCategory.ApiProductCategoryVo;
@@ -50,6 +51,7 @@
         List<ApiProductCategoryVo> list = new ArrayList<>();
 
         LambdaQueryWrapper<AiProductCategory> query = Wrappers.lambdaQuery(AiProductCategory.class);
+        query.eq(AiProductCategory::getLevel, ProductCategoryLevelEnum.LEVEL_TWO.getLevel());
         query.eq(AiProductCategory::getState, 1);
         query.eq(AiProductCategory::getHotState, 1);
         query.orderByAsc(AiProductCategory::getSort);
@@ -94,6 +96,7 @@
         List<ApiProductCategoryVo> list = new ArrayList<>();
         LambdaQueryWrapper<AiProductCategory> query = Wrappers.lambdaQuery(AiProductCategory.class);
         query.eq(AiProductCategory::getState, 1);
+        query.eq(AiProductCategory::getLevel, ProductCategoryLevelEnum.LEVEL_ONE.getLevel());
         query.orderByAsc(AiProductCategory::getSort);
         List<AiProductCategory> listByQuery = this.getListByQuery(query);
         if (CollUtil.isNotEmpty(listByQuery)){
diff --git a/src/main/resources/mapper/modules/AiProductCategoryMapper.xml b/src/main/resources/mapper/modules/AiProductCategoryMapper.xml
index d1ae984..abed80a 100644
--- a/src/main/resources/mapper/modules/AiProductCategoryMapper.xml
+++ b/src/main/resources/mapper/modules/AiProductCategoryMapper.xml
@@ -11,6 +11,9 @@
         from ai_product_category a
         where
             a.state = 1
+            <if test="record.parentId != null and record.parentId != ''">
+                and a.parent_id = #{record.parentId}
+            </if>
         order by a.sort asc
     </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.1