From 064d703f2907b931085c5f565269289e9fa81012 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期五, 17 十月 2025 15:53:55 +0800
Subject: [PATCH] 最新版本541200007

---
 server/system_service/src/main/java/com/doumee/service/system/impl/SystemPermissionServiceImpl.java |   98 ++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 93 insertions(+), 5 deletions(-)

diff --git a/server/system_service/src/main/java/com/doumee/service/system/impl/SystemPermissionServiceImpl.java b/server/system_service/src/main/java/com/doumee/service/system/impl/SystemPermissionServiceImpl.java
index 05215d4..64a8286 100644
--- a/server/system_service/src/main/java/com/doumee/service/system/impl/SystemPermissionServiceImpl.java
+++ b/server/system_service/src/main/java/com/doumee/service/system/impl/SystemPermissionServiceImpl.java
@@ -1,5 +1,7 @@
 package com.doumee.service.system.impl;
 
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.doumee.dao.system.dto.DeleteSystemPermissionDTO;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.doumee.service.business.third.model.PageData;
@@ -11,11 +13,14 @@
 import com.doumee.service.system.SystemPermissionService;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.apache.commons.lang3.RandomStringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -25,6 +30,7 @@
  */
 @Service
 public class SystemPermissionServiceImpl implements SystemPermissionService {
+
 
     @Autowired
     private SystemPermissionMapper systemPermissionMapper;
@@ -53,6 +59,26 @@
     }
 
     @Override
+    public void delete(DeleteSystemPermissionDTO dto) {
+        UpdateWrapper<SystemPermission> deleteWrapper = new UpdateWrapper<>();
+        deleteWrapper.lambda()
+                .set(SystemPermission::getDeleted, Boolean.TRUE)
+                .eq(dto.getId() != null, SystemPermission::getId, dto.getId())
+                .likeLeft(dto.getModulePrefix() != null, SystemPermission::getModule, dto.getModulePrefix());
+        systemPermissionMapper.update(null, deleteWrapper);
+    }
+
+    @Override
+    public void deleteInBatch(List<DeleteSystemPermissionDTO> dtos) {
+        if (CollectionUtils.isEmpty(dtos)) {
+            return;
+        }
+        for (DeleteSystemPermissionDTO dto : dtos) {
+            this.delete(dto);
+        }
+    }
+
+    @Override
     public void updateById(SystemPermission systemPermission) {
         systemPermissionMapper.updateById(systemPermission);
     }
@@ -61,7 +87,7 @@
     @Transactional
     public void updateByIdInBatch(List<SystemPermission> systemPermissions) {
         if (CollectionUtils.isEmpty(systemPermissions)) return;
-        for (SystemPermission systemPermission: systemPermissions) {
+        for (SystemPermission systemPermission : systemPermissions) {
             this.updateById(systemPermission);
         }
     }
@@ -83,7 +109,8 @@
 
     @Override
     public SystemPermission findOne(SystemPermission systemPermission) {
-        Wrapper<SystemPermission> wrapper = new QueryWrapper<>(systemPermission);
+        QueryWrapper<SystemPermission> wrapper = new QueryWrapper<>(systemPermission);
+        wrapper.lambda().last("limit 1");
         return systemPermissionMapper.selectOne(wrapper);
     }
 
@@ -94,9 +121,46 @@
     }
 
     @Override
-    public PageData<SystemPermissionListVO> findPage(PageWrap<QuerySystemPermissionDTO> pageWrap) {
-        PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity());
-        return PageData.from(new PageInfo<>(systemPermissionMapper.selectManageList(pageWrap.getModel(), pageWrap.getOrderByClause())));
+    public List<SystemPermissionListVO> findTree() {
+        List<SystemPermissionListVO> permissionList = systemPermissionMapper.selectManageList();
+        List<SystemPermissionListVO> tree = new ArrayList<>();
+        for (SystemPermissionListVO permission : permissionList) {
+            // 娌℃湁妯″潡鐨勬潈闄愰粯璁ゅ綊灞炰负"鍏跺畠"妯″潡
+            if (StringUtils.isBlank(permission.getModule())) {
+                permission.setModule("鍏跺畠");
+            }
+            // 鍒嗚В妯″潡
+            String[] modulePaths = permission.getModule().split("/");
+            SystemPermissionListVO target = null;
+            SystemPermissionListVO parent = null;
+            List<String> paths = new ArrayList<>();
+            for (String path : modulePaths) {
+                paths.add(path);
+                // 鏌ユ壘妯″潡
+                target = this.getTargetNode(tree, paths);
+                // 濡傛灉妯″潡涓嶅瓨鍦紝鍒欐坊鍔犱竴涓瓙妯″潡
+                if (target == null) {
+                    target = new SystemPermissionListVO();
+                    target.setId(Integer.valueOf(RandomStringUtils.randomNumeric(6)) * -1);
+                    target.setLevel(paths.size() - 1);
+                    target.setType("module");
+                    target.setName(path);
+                    target.setModulePath(StringUtils.join(paths, "/"));
+                    target.setChildren(new ArrayList<>());
+                    if (parent != null) {
+                        parent.getChildren().add(target);
+                    } else {
+                        tree.add(target);
+                    }
+                }
+                parent = target;
+            }
+            // 灏嗘潈闄愭坊鍔犺繘妯″潡涓�
+            if (target != null) {
+                target.getChildren().add(permission);
+            }
+        }
+        return tree;
     }
 
     @Override
@@ -104,4 +168,28 @@
         Wrapper<SystemPermission> wrapper = new QueryWrapper<>(systemPermission);
         return systemPermissionMapper.selectCount(wrapper);
     }
+
+    /**
+     * 鏌ユ壘鐩爣鑺傜偣
+     * @param tree 鑺傜偣鏍�
+     * @param paths 妯″潡璺緞
+     * @return
+     */
+    private SystemPermissionListVO getTargetNode(List<SystemPermissionListVO> tree, List<String> paths) {
+        List<SystemPermissionListVO> list = tree;
+        List<SystemPermissionListVO> nodeStack = new ArrayList<>();
+        for (String path : paths) {
+            if (list == null) {
+                break;
+            }
+            for (SystemPermissionListVO permission : list) {
+                if (path.equals(permission.getName()) && "module".equals(permission.getType())) {
+                    nodeStack.add(permission);
+                    list = permission.getChildren();
+                    break;
+                }
+            }
+        }
+        return nodeStack.size() == paths.size() ? nodeStack.get(nodeStack.size() - 1) : null;
+    }
 }

--
Gitblit v1.9.3