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