From 3be9cfcb6b59366b936821966d20a998a6895f9f Mon Sep 17 00:00:00 2001
From: 黎星凯 <13949086503@163.com>
Date: 星期二, 30 四月 2024 14:38:13 +0800
Subject: [PATCH] bug41、42修改

---
 consum-base/src/main/java/com/consum/base/service/impl/BaseCategoryServiceImpl.java |   75 ++++++++++++++++++-------------------
 1 files changed, 37 insertions(+), 38 deletions(-)

diff --git a/consum-base/src/main/java/com/consum/base/service/impl/BaseCategoryServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/impl/BaseCategoryServiceImpl.java
index f2face6..27616a7 100644
--- a/consum-base/src/main/java/com/consum/base/service/impl/BaseCategoryServiceImpl.java
+++ b/consum-base/src/main/java/com/consum/base/service/impl/BaseCategoryServiceImpl.java
@@ -1,9 +1,8 @@
 package com.consum.base.service.impl;
 
-import java.util.Comparator;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
-import java.util.stream.Collectors;
 
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
@@ -75,12 +74,12 @@
         HashMap<String, Object> paramts = new HashMap<>();
 
         // 鍒嗙被鍚嶇О
-        sql.append(" and category_name =:category_name ");
-        paramts.put("category_name", categoryName);
+        sql.append("and category_name =:categoryName ");
+        paramts.put("categoryName", categoryName);
         // 鐖剁被id
-        sql.append(" and father_category_id =:father_category_id ");
-        paramts.put("father_category_id", fatherCategoryId);
-
+        sql.append("and father_category_id =:fatherCategoryId ");
+        paramts.put("fatherCategoryId", fatherCategoryId);
+        sql.append("and states = 1 ");
         return this.get(sql.toString(), paramts, new BaseCategory());
     }
 
@@ -178,41 +177,41 @@
         BaseCategory categoryParam = new BaseCategory();
         categoryParam.setStates(1);
         // 鏌ュ嚭鎵�鏈夊垎绫�
-        List<BaseCategory> all = select(categoryParam);
-        // 缁勮鎴愮埗瀛愭爲褰㈢粨鏋�
-        // 1绾у垎绫�
-        List<ProjectTreeResult> menus = all.stream().filter(entity -> entity.getLevels() == 1).map(entity -> {
-            ProjectTreeResult projectTreeResult = new ProjectTreeResult(entity);
-            if (getChildren(projectTreeResult, all).isEmpty()) {
-                projectTreeResult.setChildren(null);
-            } else {
-                projectTreeResult.setChildren(getChildren(projectTreeResult, all));
-            }
-            return projectTreeResult;
-        }).sorted(Comparator.comparingInt(menu -> (menu.getSort() == null ? 0 : menu.getSort())))
-            .collect(Collectors.toList());
-        return menus;
+        List<BaseCategory> all = this.select(categoryParam);
 
+        // 缁勮鎴愮埗瀛愭爲褰㈢粨鏋�
+        List<ProjectTreeResult> rootNodes = new ArrayList<>();
+        for (BaseCategory category : all) {
+            ProjectTreeResult node = new ProjectTreeResult(category);
+            Long parentId = category.getFatherCategoryId();
+            if (parentId == 0) {
+                // 娌℃湁鐖惰妭鐐癸紝灏嗗叾浣滀负鏍硅妭鐐�
+                rootNodes.add(node);
+            } else {
+                // 鏈夌埗鑺傜偣锛屽皢鍏舵坊鍔犲埌鐖惰妭鐐圭殑瀛愯妭鐐瑰垪琛ㄤ腑
+                addToParent(parentId, node, rootNodes);
+            }
+        }
+        return rootNodes;
     }
 
-    /**
-     * 閫掑綊鏌ユ壘鎵�鏈夎彍鍗曠殑瀛愯彍鍗�
-     */
-    private List<ProjectTreeResult> getChildren(ProjectTreeResult root, List<BaseCategory> all) {
-        List<ProjectTreeResult> children =
-            all.stream().filter(entity -> entity.getFatherCategoryId().equals(root.getId())).map(entity -> {
-
-                ProjectTreeResult projectTreeResult = new ProjectTreeResult(entity);
-                // 閫氳繃閫掑綊鎵惧埌瀛愬垎绫�
-                if (getChildren(projectTreeResult, all).isEmpty()) {
-                    projectTreeResult.setChildren(null);
-                } else {
-                    projectTreeResult.setChildren(getChildren(projectTreeResult, all));
+    private void addToParent(Long parentId, ProjectTreeResult node, List<ProjectTreeResult> nodes) {
+        for (ProjectTreeResult parent : nodes) {
+            if (parent.getId().equals(parentId)) {
+                // 鎵惧埌浜嗙埗鑺傜偣锛屽皢鍏舵坊鍔犲埌瀛愯妭鐐瑰垪琛ㄤ腑
+                if (parent.getChildren() == null) {
+                    parent.setChildren(new ArrayList<>());
                 }
-                return projectTreeResult;
-            }).sorted(Comparator.comparingInt(menu -> (menu.getSort() == null ? 0 : menu.getSort())))
-                .collect(Collectors.toList());
-        return children;
+                parent.getChildren().add(node);
+                break;
+            } else {
+                // 缁х画鏌ユ壘鐖惰妭鐐圭殑瀛愯妭鐐�
+                List<ProjectTreeResult> children = parent.getChildren();
+                if (children != null) {
+                    addToParent(parentId, node, children);
+                }
+            }
+        }
     }
 
     /**

--
Gitblit v1.9.1