From 7efdea0454f775fb3933a2855456da9f8903228d Mon Sep 17 00:00:00 2001 From: PQZ Date: Mon, 23 Jun 2025 17:34:25 +0800 Subject: [PATCH] 1 --- .../controller/BusiCategoryController.java | 53 ++-- .../com/ruoyi/busi/domain/BusiCategory.java | 2 +- .../ruoyi/busi/mapper/BusiCategoryMapper.java | 12 +- .../busi/service/IBusiCategoryService.java | 25 +- .../service/impl/BusiCategoryServiceImpl.java | 80 +++++- .../com/ruoyi/busi/vo/BusiCategoryVO.java | 26 ++ .../mapper/busi/BusiCategoryMapper.xml | 20 -- .../views/busi/category/form/categoryForm.vue | 63 ++++ dl_vue/src/views/busi/category/index.vue | 270 ++---------------- 9 files changed, 215 insertions(+), 336 deletions(-) create mode 100644 dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/vo/BusiCategoryVO.java create mode 100644 dl_vue/src/views/busi/category/form/categoryForm.vue diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiCategoryController.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiCategoryController.java index e325fd4..afba367 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiCategoryController.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiCategoryController.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; import javax.servlet.http.HttpServletResponse; + import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.springframework.security.access.prepost.PreAuthorize; @@ -28,51 +29,36 @@ import com.ruoyi.common.core.page.TableDataInfo; /** * 网站栏目Controller - * - * @author vinjor-m + * + * @author pqz * @date 2025-06-19 */ @RestController @RequestMapping("/busi/category") -public class BusiCategoryController extends BaseController -{ +public class BusiCategoryController extends BaseController { @Autowired private IBusiCategoryService busiCategoryService; /** - * 查询网站栏目列表 - */ - @PreAuthorize("@ss.hasPermi('busi:category:list')") + * 网站栏目树形结构 + * + * @param busiCategory {@link BusiCategory} + * @return com.ruoyi.common.core.domain.AjaxResult + * @author PQZ + * @date 14:01 2025/6/23 + **/ @GetMapping("/list") - public AjaxResult list(BusiCategory busiCategory, - @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum, - @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) - { - Page page = new Page<>(pageNum, pageSize); - IPage list = busiCategoryService.queryListPage(busiCategory,page); - return success(list); + public AjaxResult list(BusiCategory busiCategory) { + return success(busiCategoryService.treeCategory(busiCategory)); } - /** - * 导出网站栏目列表 - */ - @PreAuthorize("@ss.hasPermi('busi:category:export')") - @Log(title = "网站栏目", businessType = BusinessType.EXPORT) - @PostMapping("/export") - public void export(HttpServletResponse response, BusiCategory busiCategory) - { - List list = busiCategoryService.list(); - ExcelUtil util = new ExcelUtil(BusiCategory.class); - util.exportExcel(response, list, "网站栏目数据"); - } /** * 获取网站栏目详细信息 */ @PreAuthorize("@ss.hasPermi('busi:category:query')") @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable("id") String id) - { + public AjaxResult getInfo(@PathVariable("id") String id) { return success(busiCategoryService.getById(id)); } @@ -82,8 +68,7 @@ public class BusiCategoryController extends BaseController @PreAuthorize("@ss.hasPermi('busi:category:add')") @Log(title = "网站栏目", businessType = BusinessType.INSERT) @PostMapping - public AjaxResult add(@RequestBody BusiCategory busiCategory) - { + public AjaxResult add(@RequestBody BusiCategory busiCategory) { return toAjax(busiCategoryService.save(busiCategory)); } @@ -93,8 +78,7 @@ public class BusiCategoryController extends BaseController @PreAuthorize("@ss.hasPermi('busi:category:edit')") @Log(title = "网站栏目", businessType = BusinessType.UPDATE) @PutMapping - public AjaxResult edit(@RequestBody BusiCategory busiCategory) - { + public AjaxResult edit(@RequestBody BusiCategory busiCategory) { return toAjax(busiCategoryService.updateById(busiCategory)); } @@ -103,9 +87,8 @@ public class BusiCategoryController extends BaseController */ @PreAuthorize("@ss.hasPermi('busi:category:remove')") @Log(title = "网站栏目", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public AjaxResult remove(@PathVariable String[] ids) - { + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable String[] ids) { List list = new ArrayList<>(Arrays.asList(ids)); return toAjax(busiCategoryService.removeByIds(list)); } diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiCategory.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiCategory.java index 8f7ac3d..a976bbc 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiCategory.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiCategory.java @@ -10,7 +10,7 @@ import com.ruoyi.common.core.domain.DlBaseEntity; /** * 网站栏目对象 dl_busi_category * - * @author vinjor-m + * @author pqz * @date 2025-06-19 */ @TableName("dl_busi_category") diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiCategoryMapper.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiCategoryMapper.java index f4e216c..68017f4 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiCategoryMapper.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiCategoryMapper.java @@ -1,21 +1,15 @@ package com.ruoyi.busi.mapper; -import java.util.List; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.ruoyi.busi.domain.BusiCategory; -import org.apache.ibatis.annotations.Param; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.busi.domain.BusiCategory; import org.apache.ibatis.annotations.Mapper; /** * 网站栏目Mapper接口 - * + * * @author vinjor-m * @date 2025-06-19 */ @Mapper -public interface BusiCategoryMapper extends BaseMapper -{ - IPage queryListPage(@Param("entity") BusiCategory entity, Page page); +public interface BusiCategoryMapper extends BaseMapper { } diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiCategoryService.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiCategoryService.java index 9f5ae59..a808c08 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiCategoryService.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiCategoryService.java @@ -1,18 +1,27 @@ package com.ruoyi.busi.service; -import java.util.List; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.busi.domain.BusiCategory; +import com.ruoyi.busi.vo.BusiCategoryVO; + +import java.util.List; /** * 网站栏目Service接口 - * - * @author vinjor-m + * + * @author pqz * @date 2025-06-19 */ -public interface IBusiCategoryService extends IService -{ - IPage queryListPage(BusiCategory pageReqVO, Page page); +public interface IBusiCategoryService extends IService { + + /** + * 树形结构查询网站栏目 + * + * @param category {@link BusiCategory} + * @return java.util.List + * @author PQZ + * @date 14:06 2025/6/23 + **/ + List treeCategory(BusiCategory category); + } diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiCategoryServiceImpl.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiCategoryServiceImpl.java index 525dc44..57bee00 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiCategoryServiceImpl.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiCategoryServiceImpl.java @@ -1,30 +1,82 @@ package com.ruoyi.busi.service.impl; -import java.util.List; -import com.ruoyi.common.utils.DateUtils; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.busi.domain.BusiCategory; +import com.ruoyi.busi.mapper.BusiCategoryMapper; +import com.ruoyi.busi.service.IBusiCategoryService; +import com.ruoyi.busi.vo.BusiCategoryVO; +import com.ruoyi.common.core.domain.DlBaseEntity; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.ruoyi.busi.mapper.BusiCategoryMapper; -import com.ruoyi.busi.domain.BusiCategory; -import com.ruoyi.busi.service.IBusiCategoryService; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * 网站栏目Service业务层处理 - * - * @author vinjor-m + * + * @author pqz * @date 2025-06-19 */ @Service -public class BusiCategoryServiceImpl extends ServiceImpl implements IBusiCategoryService -{ +public class BusiCategoryServiceImpl extends ServiceImpl implements IBusiCategoryService { @Autowired private BusiCategoryMapper busiCategoryMapper; + + /** + * 树形结构查询网站栏目 + * + * @param category {@link BusiCategory} + * @return java.util.List + * @author PQZ + * @date 14:06 2025/6/23 + **/ @Override - public IPage queryListPage(BusiCategory pageReqVO, Page page) { - return busiCategoryMapper.queryListPage(pageReqVO, page); + public List treeCategory(BusiCategory category) { + //查询全部栏目 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(DlBaseEntity::getDelFlag,0) + .eq(BusiCategory::getTenantId,category.getTenantId()); + + List list = list(lambdaQueryWrapper); + return buildCategoryTree(list); + } + + + /** + * 生成树结构 + * @author PQZ + * @date 14:11 2025/6/23 + * @param list 网站栏目列表 + * @return java.util.List + **/ + private List buildCategoryTree(List list) { + // Map存放id到VO的映射 + Map idToNodeMap = new HashMap<>(); + // 先将所有节点转换为VO,并放入Map + for (BusiCategory category : list) { + BusiCategoryVO vo = new BusiCategoryVO(); + BeanUtils.copyProperties(category,vo); + idToNodeMap.put(vo.getId(), vo); + } + List roots = new ArrayList<>(); + // 构建树 + for (BusiCategoryVO node : idToNodeMap.values()) { + String parentId = node.getParentId(); + if (parentId == null || parentId.trim().isEmpty() || !idToNodeMap.containsKey(parentId)) { + // 根节点 + roots.add(node); + } else { + // 作为父节点的子节点 + BusiCategoryVO parent = idToNodeMap.get(parentId); + parent.getChildren().add(node); + } + } + return roots; } } diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/vo/BusiCategoryVO.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/vo/BusiCategoryVO.java new file mode 100644 index 0000000..5345cd2 --- /dev/null +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/vo/BusiCategoryVO.java @@ -0,0 +1,26 @@ +package com.ruoyi.busi.vo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.ruoyi.busi.domain.BusiCategory; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.DlBaseEntity; +import lombok.Data; + +import java.util.List; + + +/** + * 网站栏目VO + * @author PQZ + * @date 14:03 2025/6/23 +**/ +@Data +public class BusiCategoryVO extends BusiCategory { + + /** + * 子集 + */ + private List children; + +} diff --git a/dl_admin/ruoyi-admin/src/main/resources/mapper/busi/BusiCategoryMapper.xml b/dl_admin/ruoyi-admin/src/main/resources/mapper/busi/BusiCategoryMapper.xml index 8e323a8..4334942 100644 --- a/dl_admin/ruoyi-admin/src/main/resources/mapper/busi/BusiCategoryMapper.xml +++ b/dl_admin/ruoyi-admin/src/main/resources/mapper/busi/BusiCategoryMapper.xml @@ -32,24 +32,4 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select id, code, catg_name, catg_level, catg_type, parent_id, prods_junior, prods_all, title, keyword, description, sort, content, prod_up, prod_down, tenant_id, creator, create_time, updater, update_time, del_flag from dl_busi_category - \ No newline at end of file diff --git a/dl_vue/src/views/busi/category/form/categoryForm.vue b/dl_vue/src/views/busi/category/form/categoryForm.vue new file mode 100644 index 0000000..bcc8846 --- /dev/null +++ b/dl_vue/src/views/busi/category/form/categoryForm.vue @@ -0,0 +1,63 @@ + + + + + diff --git a/dl_vue/src/views/busi/category/index.vue b/dl_vue/src/views/busi/category/index.vue index 8699b8c..48b7484 100644 --- a/dl_vue/src/views/busi/category/index.vue +++ b/dl_vue/src/views/busi/category/index.vue @@ -1,14 +1,6 @@