diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/util/AsmsPostUtil.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/util/AsmsPostUtil.java index e2d7662f..ae37437d 100644 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/util/AsmsPostUtil.java +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/util/AsmsPostUtil.java @@ -61,6 +61,7 @@ public class AsmsPostUtil { map.put("password", password); ResponseEntity responseEntity = restTemplate.postForEntity(host + "xiaobodata/openApi/login", map, Result.class); if (!responseEntity.getBody().isSuccess()) { + System.out.println("汽车标准数字化平台:token获取失败" + responseEntity.getBody().toString()); throw new JeroBootException("汽车标准数字化平台:token获取失败"); } Map resultMap = (Map) responseEntity.getBody().getResult(); @@ -135,6 +136,7 @@ public class AsmsPostUtil { } if (!responseEntity.getBody().isSuccess()) { + System.out.println("汽车标准数字化平台:请求发送失败" + responseEntity.getBody().toString()); throw new JeroBootException("汽车标准数字化平台:请求发送失败"); } return responseEntity; diff --git a/laws-modules/src/main/java/com/jero/modules/laws/common/util/CurrentUserUtil.java b/laws-modules/src/main/java/com/jero/modules/laws/common/util/CurrentUserUtil.java index 49e60731..1fa97e66 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/common/util/CurrentUserUtil.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/common/util/CurrentUserUtil.java @@ -40,4 +40,14 @@ public class CurrentUserUtil { return loginUser.getOrgCode(); } + /** + * @Author: liao + * @Date: 2023/10/27 10:21 + * @Description: 获取当前用户角色编码(逗号分隔) + **/ + public static String getRoles() { + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + return loginUser.getRoleIds(); + } + } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/dataCenter/entity/LawsDataCenterFolder.java b/laws-modules/src/main/java/com/jero/modules/laws/dataCenter/entity/LawsDataCenterFolder.java index 5647a484..8b79c3c2 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/dataCenter/entity/LawsDataCenterFolder.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/dataCenter/entity/LawsDataCenterFolder.java @@ -131,4 +131,9 @@ public class LawsDataCenterFolder implements Serializable { @ApiModelProperty(value = "子集") @TableField(exist = false) private List children; + /** + * 构建树型结构-父id + */ + @TableField(exist = false) + private java.lang.String pId; } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/dataCenter/mapper/LawsDataCenterFolderMapper.java b/laws-modules/src/main/java/com/jero/modules/laws/dataCenter/mapper/LawsDataCenterFolderMapper.java index 1260a0d3..bfe3551a 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/dataCenter/mapper/LawsDataCenterFolderMapper.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/dataCenter/mapper/LawsDataCenterFolderMapper.java @@ -21,7 +21,7 @@ public interface LawsDataCenterFolderMapper extends BaseMapper getAllFolderList(@Param("userId") String userId); + List getMyFolderList(@Param("userId") String userId); } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/dataCenter/mapper/xml/LawsDataCenterFolderMapper.xml b/laws-modules/src/main/java/com/jero/modules/laws/dataCenter/mapper/xml/LawsDataCenterFolderMapper.xml index 8fe280b5..f16f19d3 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/dataCenter/mapper/xml/LawsDataCenterFolderMapper.xml +++ b/laws-modules/src/main/java/com/jero/modules/laws/dataCenter/mapper/xml/LawsDataCenterFolderMapper.xml @@ -16,7 +16,7 @@ - SELECT ldcf.id, ldcf.folder_name, @@ -26,5 +26,7 @@ ldcf.sort FROM laws_data_center_folder ldcf + WHERE ldcf.owner_id = #{userId} + OR ldcf.auth_view_ids LIKE CONCAT('%',#{userId},'%') \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/laws/dataCenter/service/impl/LawsDataCenterFolderServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/dataCenter/service/impl/LawsDataCenterFolderServiceImpl.java index 71f7ae3e..a468667d 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/dataCenter/service/impl/LawsDataCenterFolderServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/dataCenter/service/impl/LawsDataCenterFolderServiceImpl.java @@ -1,6 +1,7 @@ package com.jero.modules.laws.dataCenter.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.jero.modules.laws.common.constant.FieldCommon; import com.jero.modules.laws.common.util.CurrentUserUtil; import com.jero.modules.laws.dataCenter.entity.LawsDataCenterFolder; import com.jero.modules.laws.dataCenter.mapper.LawsDataCenterFolderMapper; @@ -11,8 +12,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.jero.common.exception.JeroBootException; -import java.util.List; -import java.util.Date; + +import java.util.*; +import java.util.stream.Collectors; + import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jero.common.system.query.QueryGenerator; import javax.servlet.http.HttpServletRequest; @@ -41,8 +44,56 @@ public class LawsDataCenterFolderServiceImpl extends ServiceImpl getTreeList() { // 获取全部文件夹集合 - List allFolderList = lawsDataCenterFolderMapper.getAllFolderList(CurrentUserUtil.getId()); - return allFolderList; + List folders = list(); + + // 创建节点映射,方便查找节点 + Map nodeMap = new HashMap<>(); + folders.forEach(folder -> { + folder.setPId(folder.getParentId()); + nodeMap.put(folder.getId(), folder); + }); + + // 创建根节点列表 + List roots = folders.stream().filter(folder -> + "0".equals(folder.getParentId())).collect(Collectors.toList()); + + // 递归构建子节点 + roots.forEach(root -> buildChildren(root, nodeMap)); + + if (CurrentUserUtil.getRoles().contains(FieldCommon.ROLE_ADMIN)) { + // 如果是管理员,可以查看全部文件夹 + return roots; + } else { + // 获取自己拥有权限的文件夹集合 + List myFolders = lawsDataCenterFolderMapper.getMyFolderList(CurrentUserUtil.getId()); + + Map myNodeMap = new HashMap<>(); + myFolders.forEach(folder -> { + folder.setPId(folder.getParentId()); + myNodeMap.put(folder.getId(), folder); + }); + + + } + + return roots; + } + + /** + * @Author: liao + * @Date: 2023/10/27 10:03 + * @Description: 递归构建子节点 + **/ + private void buildChildren(LawsDataCenterFolder node, Map nodeMap) { + if (node.getChildren() == null) { + node.setChildren(new ArrayList<>()); + } + nodeMap.values().forEach(child -> { + if (node.getId().equals(child.getPId())) { + node.getChildren().add(child); + buildChildren(child, nodeMap); + } + }); } /**