From 7cf4c63bcd035d93ef0cf89c41050ee9ecc5780d Mon Sep 17 00:00:00 2001 From: wangxy <1481820854@qq.com> Date: Thu, 27 Mar 2025 10:08:56 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E9=A6=96=E9=A1=B5=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AE=A3=E4=BC=A0=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/home/ColumnTreeController.java | 73 +++++++++++++++++++ .../ruoyi/framework/config/ShiroConfig.java | 1 + .../com/ruoyi/system/domain/SysColumnVO.java | 46 ++++++++++++ 3 files changed, 120 insertions(+) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/home/ColumnTreeController.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/SysColumnVO.java diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/home/ColumnTreeController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/home/ColumnTreeController.java new file mode 100644 index 0000000..e4939aa --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/home/ColumnTreeController.java @@ -0,0 +1,73 @@ +package com.ruoyi.web.controller.home; + +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.system.domain.SysColumn; +import com.ruoyi.system.domain.SysColumnVO; +import com.ruoyi.system.service.ISysColumnService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.ArrayList; +import java.util.List; + +/** + * ClassName: ColumnController + * Package: com.ruoyi.web.controller.home + * Description:栏目树 + * + * @Author wangxy + * @Create 2025/3/27 9:54 + * @Version 1.0 + */ +@Api("栏目树") +@RestController +@RequestMapping("/columnTree") +public class ColumnTreeController extends BaseController { + + //专题活动类型 + public static final String SPECIAL_COLUMN_TYPE = "2"; + //栏目等级 + public static final String COLUMN_GRADE = "2"; + public static final String STATUS = "0"; + + @Autowired + private ISysColumnService columnService; + + @ApiOperation("类别树") + @GetMapping("/getTree") + public R> getTree(@RequestParam(required = false, defaultValue = "0") String parentId) { + LambdaQueryWrapper tagWrapper = new LambdaQueryWrapper<>(); + tagWrapper.eq(SysColumn::getColumnType, SPECIAL_COLUMN_TYPE) + .eq(SysColumn::getColumnGrade, COLUMN_GRADE) + .eq(SysColumn::getStatus,STATUS) + .orderByAsc(SysColumn::getOrderNum); + List datas = columnService.list(tagWrapper); + List tagTreeVOList = new ArrayList<>(Convert.toList(SysColumnVO.class, datas)); + tagTreeVOList.forEach(this::buildChildren); + return R.ok(tagTreeVOList); + } + + /** + * 构建子节点 + * + * @param pNode 父级 + */ + private void buildChildren(SysColumnVO pNode) { + // 获取子节点 + LambdaQueryWrapper tagWrapper = new LambdaQueryWrapper<>(); + tagWrapper.eq(SysColumn::getParentId, pNode.getColumnId()); + List dataTags = columnService.list(tagWrapper); + List children = Convert.toList(SysColumnVO.class, dataTags); + // 递归获取子节点 + children.forEach(this::buildChildren); + pNode.setChildren(children); + } +} diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ShiroConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ShiroConfig.java index e882047..60e24e5 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ShiroConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ShiroConfig.java @@ -314,6 +314,7 @@ public class ShiroConfig filterChainDefinitionMap.put("/public_view.html", "anon"); filterChainDefinitionMap.put("/profile/**", "anon"); filterChainDefinitionMap.put("/search", "anon"); + filterChainDefinitionMap.put("/columnTree/**", "anon"); // 系统权限列表 // filterChainDefinitionMap.putAll(SpringUtils.getBean(IMenuService.class).selectPermsAll()); diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysColumnVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysColumnVO.java new file mode 100644 index 0000000..7919ac6 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysColumnVO.java @@ -0,0 +1,46 @@ +package com.ruoyi.system.domain; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.List; + +/** + * ClassName: SysColumnVO + * Package: com.ruoyi.system.domain + * Description: + * + * @Author wangxy + * @Create 2025/3/27 9:46 + * @Version 1.0 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +public class SysColumnVO implements Serializable { + + private static final long serialVersionUID = 1L; + + + private String columnId; + + /** 菜单名称 */ + private String columnName; + + + private String columnCode; + + + /** 父菜单ID */ + private String parentId; + + + /** 栏目等级 */ + private String columnGrade; + + + private List children ; + +}