From 92b586e7d47167421f6500be641734acebeacd79 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期五, 15 三月 2024 20:39:30 +0800
Subject: [PATCH] 分类管理、字段管理接口

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbFieldCategoryServiceImpl.java |   56 ++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 40 insertions(+), 16 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbFieldCategoryServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbFieldCategoryServiceImpl.java
index 2a7e491..bb46ead 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbFieldCategoryServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbFieldCategoryServiceImpl.java
@@ -4,9 +4,11 @@
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.common.basic.PageVO;
+import com.ruoyi.common.basic.PageDTO;
+import com.ruoyi.common.enums.ShowStatus;
+import com.ruoyi.common.utils.BeanUtils;
+import com.ruoyi.common.utils.CollUtils;
 import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.common.utils.bean.BeanUtils;
 import com.ruoyi.system.domain.TbFieldCategory;
 import com.ruoyi.system.dto.FieldCategoryDTO;
 import com.ruoyi.system.dto.ShowHideDTO;
@@ -63,31 +65,39 @@
     }
 
     @Override
-    public PageVO<FieldCategoryVO> queryPage(FieldCategoryQuery query) {
+    public PageDTO<FieldCategoryVO> queryPage(FieldCategoryQuery query) {
         Page<TbFieldCategory> page = this.lambdaQuery()
                 .like(StringUtils.isNotBlank(query.getFieldCategoryName()), TbFieldCategory::getFieldCategoryName, query.getFieldCategoryName())
                 .eq(ObjectUtils.isNotEmpty(query.getStatus()), TbFieldCategory::getStatus, query.getStatus())
+                .eq(TbFieldCategory::getParentId, 0)
+                .orderByDesc(TbFieldCategory::getCreateTime)
                 .page(new Page<>(query.getPageNum(), query.getPageSize()));
-        PageVO<FieldCategoryVO> pageVO = new PageVO<>();
-        pageVO.setPageNo(page.getPages());
-        pageVO.setPageSize(page.getSize());
-        pageVO.setTotalPages(page.getTotal());
-        pageVO.setTotalCount(page.getTotal());
-        pageVO.setRecords(page.getRecords().stream().map(item -> {
-            FieldCategoryVO fieldCategoryVO = new FieldCategoryVO();
-            BeanUtils.copyBeanProp(fieldCategoryVO, item);
-            return fieldCategoryVO;
-        }).collect(Collectors.toList()));
-        return pageVO;
+        if (CollUtils.isEmpty(page.getRecords())) {
+            return PageDTO.empty(page);
+        }
+        return PageDTO.of(page, FieldCategoryVO.class);
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void showHide(ShowHideDTO dto) {
-        TbFieldCategory category = this.getById(dto.getId());
+        updateCategoryAndChildren(dto.getId(), dto.getStatus());
+    }
+
+    private void updateCategoryAndChildren(Integer id, Integer status) {
+        TbFieldCategory category = this.getById(id);
         if (Objects.isNull(category)) {
             throw new RuntimeException("非法id");
         }
-        this.lambdaUpdate().eq(TbFieldCategory::getId, dto.getId()).set(TbFieldCategory::getStatus, dto.getStatus());
+        this.lambdaUpdate()
+                .eq(TbFieldCategory::getId, id)
+                .set(TbFieldCategory::getStatus, status)
+                .update();
+        List<TbFieldCategory> children = this.lambdaQuery().eq(TbFieldCategory::getParentId, category.getId()).list();
+        if (CollUtils.isNotEmpty(children)) {
+            List<Integer> childIds = children.stream().map(TbFieldCategory::getId).collect(Collectors.toList());
+            childIds.forEach(childId -> updateCategoryAndChildren(childId, status));
+        }
     }
 
     @Override
@@ -113,6 +123,9 @@
     public void delete(Integer id) {
         //一级分类
         TbFieldCategory category = this.getById(id);
+        if (Objects.isNull(category)) {
+            throw new RuntimeException("非法参数");
+        }
         //查询是否有二级分类
         List<TbFieldCategory> threeCategoryList = this.lambdaQuery().eq(TbFieldCategory::getParentId, id).list();
         if (CollectionUtils.isNotEmpty(threeCategoryList)) {
@@ -148,6 +161,7 @@
             });
         }
     }
+
     private void updateCategory(FieldCategoryUpdateDTO dto) {
         if (dto == null) return;
         this.lambdaUpdate()
@@ -156,4 +170,14 @@
                 .eq(TbFieldCategory::getId, dto.getId())
                 .update();
     }
+
+    @Override
+    public List<FieldCategoryVO> queryFieldCategories(Integer id) {
+        List<TbFieldCategory> list = this.lambdaQuery()
+                .select(TbFieldCategory::getId,TbFieldCategory::getFieldCategoryName)
+                .eq(TbFieldCategory::getParentId, id)
+                .eq(TbFieldCategory::getStatus, ShowStatus.SHOW)
+                .list();
+        return BeanUtils.copyList(list, FieldCategoryVO.class);
+    }
 }

--
Gitblit v1.7.1