diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsArticleMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsArticleMapper.xml
index b9ce6c3..44b6954 100644
--- a/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsArticleMapper.xml
+++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsArticleMapper.xml
@@ -46,6 +46,12 @@
#{item}
+
+ AND a.category_id IN
+
+ #{item}
+
+
AND a.image LIKE CONCAT('%', #{param.image}, '%')
diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsPageMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsPageMapper.xml
index 118101f..9d73b14 100644
--- a/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsPageMapper.xml
+++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsPageMapper.xml
@@ -14,6 +14,12 @@
AND n.navigation_id = #{param.navigationId}
+
+ AND n.navigation_id IN
+
+ #{item}
+
+
AND a.title LIKE CONCAT('%', #{param.title}, '%')
diff --git a/src/main/java/com/gxwebsoft/cms/param/CmsArticleParam.java b/src/main/java/com/gxwebsoft/cms/param/CmsArticleParam.java
index 5a7d12f..f194096 100644
--- a/src/main/java/com/gxwebsoft/cms/param/CmsArticleParam.java
+++ b/src/main/java/com/gxwebsoft/cms/param/CmsArticleParam.java
@@ -73,6 +73,10 @@ public class CmsArticleParam extends BaseParam {
@QueryField(type = QueryType.EQ)
private Integer categoryId;
+ @Schema(description = "分类ID集合(逗号分隔字符串),用于聚合父栏目下所有子栏目的文章,由前端递归收集后传入")
+ @TableField(exist = false)
+ private String categoryIdsStr;
+
@Schema(description = "父级栏目ID")
@QueryField(type = QueryType.EQ)
private Integer parentId;
diff --git a/src/main/java/com/gxwebsoft/cms/param/CmsCaseParam.java b/src/main/java/com/gxwebsoft/cms/param/CmsCaseParam.java
index 985fd05..d1f9022 100644
--- a/src/main/java/com/gxwebsoft/cms/param/CmsCaseParam.java
+++ b/src/main/java/com/gxwebsoft/cms/param/CmsCaseParam.java
@@ -38,4 +38,8 @@ public class CmsCaseParam extends BaseParam {
@Schema(description = "案例分类ID(关联 cms_navigation.navigation_id,model=case)")
@QueryField(type = QueryType.EQ)
private Integer categoryId;
+
+ @Schema(description = "案例分类ID集合(逗号分隔),用于聚合父栏目下所有子栏目的案例;优先级高于 categoryId")
+ @QueryField(type = QueryType.IN_STR)
+ private String categoryIds;
}
diff --git a/src/main/java/com/gxwebsoft/cms/param/CmsPageParam.java b/src/main/java/com/gxwebsoft/cms/param/CmsPageParam.java
index ef2d71e..533d686 100644
--- a/src/main/java/com/gxwebsoft/cms/param/CmsPageParam.java
+++ b/src/main/java/com/gxwebsoft/cms/param/CmsPageParam.java
@@ -54,4 +54,8 @@ public class CmsPageParam extends BaseParam {
@TableField(exist = false)
@QueryField(type = QueryType.EQ)
private Integer navigationId;
+
+ @Schema(description = "导航栏目ID集(逗号分隔),用于父栏目聚合查询其下所有子栏目的单页")
+ @TableField(exist = false)
+ private String navigationIdsStr;
}
diff --git a/src/main/java/com/gxwebsoft/cms/param/CmsProductParam.java b/src/main/java/com/gxwebsoft/cms/param/CmsProductParam.java
index 0cecf65..f9de78c 100644
--- a/src/main/java/com/gxwebsoft/cms/param/CmsProductParam.java
+++ b/src/main/java/com/gxwebsoft/cms/param/CmsProductParam.java
@@ -31,6 +31,10 @@ public class CmsProductParam extends BaseParam {
@QueryField(type = QueryType.EQ)
private Integer categoryId;
+ @Schema(description = "分类ID集合(逗号分隔),用于聚合父栏目下所有子栏目的产品;优先级高于 categoryId")
+ @QueryField(type = QueryType.IN_STR)
+ private String categoryIds;
+
@Schema(description = "状态: 1在售 0下架")
@QueryField(type = QueryType.EQ)
private Integer status;
diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsCaseServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsCaseServiceImpl.java
index 0f20cd6..6179c26 100644
--- a/src/main/java/com/gxwebsoft/cms/service/impl/CmsCaseServiceImpl.java
+++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsCaseServiceImpl.java
@@ -25,6 +25,10 @@ public class CmsCaseServiceImpl extends ServiceImpl impl
@Override
public PageResult pageRel(CmsCaseParam param) {
+ // 聚合场景:传入 categoryIds 时忽略单值 categoryId,避免 AND 冲突
+ if (StrUtil.isNotBlank(param.getCategoryIds())) {
+ param.setCategoryId(null);
+ }
PageParam page = new PageParam<>(param);
page.setDefaultOrder("sort_number asc, create_time desc");
QueryWrapper wrapper = page.getWrapper();
diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsProductServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsProductServiceImpl.java
index a110001..ff9fdf7 100644
--- a/src/main/java/com/gxwebsoft/cms/service/impl/CmsProductServiceImpl.java
+++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsProductServiceImpl.java
@@ -25,6 +25,10 @@ public class CmsProductServiceImpl extends ServiceImpl pageRel(CmsProductParam param) {
+ // 聚合场景:传入 categoryIds 时忽略单值 categoryId,避免 AND 冲突
+ if (StrUtil.isNotBlank(param.getCategoryIds())) {
+ param.setCategoryId(null);
+ }
PageParam page = new PageParam<>(param);
page.setDefaultOrder("sort_number asc, create_time desc");
QueryWrapper wrapper = page.getWrapper();