修改菜单权限分配问题

This commit is contained in:
wenli 2024-09-08 09:20:03 +08:00
parent 37bbfe74c9
commit 5b94f1c7bd
6 changed files with 135 additions and 44 deletions

View File

@ -17,7 +17,7 @@
<maven.compiler.source>${java.version}</maven.compiler.source> <maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target> <maven.compiler.target>${java.version}</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<openjfx.version>22.0.1</openjfx.version> <openjfx.version>22.0.2</openjfx.version>
<sass.version>1.54.4</sass.version> <sass.version>1.54.4</sass.version>
<atlantafx.version>2.0.1</atlantafx.version> <atlantafx.version>2.0.1</atlantafx.version>

View File

@ -0,0 +1,5 @@
public class App {
public static void main(String[] args) {
SimpleJavaFXApp.main(args);
}
}

View File

@ -0,0 +1,67 @@
import javafx.application.Application;
import javafx.application.Platform;
import javafx.css.PseudoClass;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.stage.Window;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class SimpleJavaFXApp extends Application {
@Override
public void start(Stage stage) throws Exception {
// 创建一个标签并设置文本
Label label = new Label("Hello, JavaFX!");
// 创建一个根布局
StackPane root = new StackPane();
root.getChildren().add(label);
// 创建一个场景设置根布局和窗口大小
Scene scene = new Scene(root, 300, 200);
// 设置窗口标题
stage.setTitle("Simple JavaFX App");
// 设置场景到窗口
stage.setScene(scene);
//
// Method tkStageGetter = Window.class.getDeclaredMethod("getPeer");;
//
// tkStageGetter.setAccessible(true);
// Object tkStage = tkStageGetter.invoke(stage);
// Method getPlatformWindow = tkStage.getClass().getDeclaredMethod("getPlatformWindow");
//// getPlatformWindow.setAccessible(true);
//// Object platformWindow = getPlatformWindow.invoke(tkStage);
// Method getNativeHandle = platformWindow.getClass().getMethod("getNativeHandle");
// getNativeHandle.setAccessible(true);
// Object nativeHandle = getNativeHandle.invoke(platformWindow);
// getNativeHandle.setAccessible(true);
var seamlessFrameApplied = false;
stage.getScene()
.getRoot()
.pseudoClassStateChanged(PseudoClass.getPseudoClass("seamless-frame"), seamlessFrameApplied);
stage.getScene()
.getRoot()
.pseudoClassStateChanged(PseudoClass.getPseudoClass("separate-frame"), !seamlessFrameApplied);
// 显示窗口
stage.show();
}
public static void main(String[] args) {
// 启动 JavaFX 应用
launch(args);
}
}

View File

@ -214,22 +214,29 @@ public class DataPermissionPane extends JPanel {
private void treeDataScopeDeptIds(DefaultMutableTreeNode treeNode, Set<Long> deptIdlist) { private void treeDataScopeDeptIds(DefaultMutableTreeNode treeNode, Set<Long> deptIdlist) {
if (treeNode.getUserObject() instanceof DeptSimpleRespVO) { addDeptIdIfApplicable(treeNode, deptIdlist);
DeptSimpleRespVO deptSimpleRespVO = (DeptSimpleRespVO) treeNode.getUserObject();
deptIdlist.add(deptSimpleRespVO.getId());
// 处理子节点
for (int i = 0; i < treeNode.getChildCount(); i++) {
DefaultMutableTreeNode childNode = (DefaultMutableTreeNode) treeNode.getChildAt(i);
treeDataScopeDeptIds(childNode, deptIdlist);
} }
// 处理父节点
for (int i = 0; i < treeNode.getChildCount(); i++) { while (treeNode.getParent() != null) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) treeNode.getChildAt(i); treeNode = (DefaultMutableTreeNode) treeNode.getParent();
if (node.getUserObject() instanceof DeptSimpleRespVO) { addDeptIdIfApplicable(treeNode, deptIdlist);
DeptSimpleRespVO deptSimpleRespVO = (DeptSimpleRespVO) node.getUserObject();
deptIdlist.add(deptSimpleRespVO.getId());
}
treeDataScopeDeptIds(node,deptIdlist);
} }
} }
// 将添加菜单ID的逻辑提取成一个方法
private void addDeptIdIfApplicable(DefaultMutableTreeNode treeNode, Set<Long> deptIdList) {
if (treeNode.getUserObject() instanceof DeptSimpleRespVO) {
DeptSimpleRespVO respVO = (DeptSimpleRespVO) treeNode.getUserObject();
deptIdList.add(respVO.getId());
}
}
public void updateData(RoleRespVO roleRespVO) { public void updateData(RoleRespVO roleRespVO) {
@ -258,11 +265,13 @@ public class DataPermissionPane extends JPanel {
Map<Long, DefaultMutableTreeNode> nodeMap = new HashMap<>(); Map<Long, DefaultMutableTreeNode> nodeMap = new HashMap<>();
nodeMap.put(0l, deptRoot); // Root node nodeMap.put(0l, deptRoot); // Root node
List<TreePath> selTreePth = new ArrayList<>(); List<DefaultMutableTreeNode> selNodes = new ArrayList<>();
for (DeptSimpleRespVO simpleRespVO : deptResult.getData()) { for (DeptSimpleRespVO simpleRespVO : deptResult.getData()) {
DefaultMutableTreeNode node = new DefaultMutableTreeNode(simpleRespVO); DefaultMutableTreeNode node = new DefaultMutableTreeNode(simpleRespVO);
nodeMap.put(simpleRespVO.getId(), node); nodeMap.put(simpleRespVO.getId(), node);
if (roleRespVO.getDataScopeDeptIds().contains(simpleRespVO.getId())) {
selNodes.add(node);
}
} }
deptResult.getData().forEach(deptSimpleRespVO -> { deptResult.getData().forEach(deptSimpleRespVO -> {
@ -271,15 +280,13 @@ public class DataPermissionPane extends JPanel {
if (parentNode != null) { if (parentNode != null) {
parentNode.add(childNode); parentNode.add(childNode);
} }
if (roleRespVO.getDataScopeDeptIds().contains(deptSimpleRespVO.getId())) {
selTreePth.add(new TreePath(nodeMap.get(deptSimpleRespVO.getId()).getPath()));
}
}); });
Map<String, Object> resultMap = new HashMap<>(); Map<String, Object> resultMap = new HashMap<>();
resultMap.put("deptRoot", deptRoot); resultMap.put("deptRoot", deptRoot);
resultMap.put("selTreePth", selTreePth); resultMap.put("selNodes", selNodes);
return resultMap; return resultMap;
} }
@ -289,11 +296,17 @@ public class DataPermissionPane extends JPanel {
try { try {
deptTree.setModel(new DefaultTreeModel((TreeNode) get().get("deptRoot"))); deptTree.setModel(new DefaultTreeModel((TreeNode) get().get("deptRoot")));
List<TreePath> selTreePth = (List<TreePath>) get().get("selTreePth"); List<DefaultMutableTreeNode> selNodes = (List<DefaultMutableTreeNode>) get().get("selNodes");
if (selTreePth != null) { if (selNodes != null) {
deptTree.getCheckBoxTreeSelectionModel().setSelectionPaths(selTreePth.toArray(new TreePath[0])); for (DefaultMutableTreeNode node : selNodes) {
if (node.isLeaf()) {
deptTree.getCheckBoxTreeSelectionModel().addSelectionPath(new TreePath(node.getPath()));
}
}
} }
TreeUtils.expandAll(deptTree); TreeUtils.expandAll(deptTree);
TreeUtils.expandAll(deptTree);
} catch (InterruptedException e) { } catch (InterruptedException e) {
throw new RuntimeException(e); throw new RuntimeException(e);

View File

@ -171,19 +171,26 @@ public class RoleAssignMenuPane extends JPanel {
private void treeDataScopeDeptIds(DefaultMutableTreeNode treeNode, Set<Long> menuIdlist) { private void treeDataScopeDeptIds(DefaultMutableTreeNode treeNode, Set<Long> menuIdlist) {
if (treeNode.getUserObject() instanceof MenuSimpleRespVO) { // 处理当前节点
MenuSimpleRespVO menuSimpleRespVO = (MenuSimpleRespVO) treeNode.getUserObject(); addMenuIdIfApplicable(treeNode, menuIdlist);
menuIdlist.add(menuSimpleRespVO.getId());
// 处理子节点
for (int i = 0; i < treeNode.getChildCount(); i++) {
DefaultMutableTreeNode childNode = (DefaultMutableTreeNode) treeNode.getChildAt(i);
treeDataScopeDeptIds(childNode, menuIdlist);
} }
// 处理父节点
for (int i = 0; i < treeNode.getChildCount(); i++) { while (treeNode.getParent() != null) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) treeNode.getChildAt(i); treeNode = (DefaultMutableTreeNode) treeNode.getParent();
if (node.getUserObject() instanceof MenuSimpleRespVO) { addMenuIdIfApplicable(treeNode, menuIdlist);
MenuSimpleRespVO menuSimpleRespVO = (MenuSimpleRespVO) node.getUserObject(); }
menuIdlist.add(menuSimpleRespVO.getId()); }
} // 将添加菜单ID的逻辑提取成一个方法
treeDataScopeDeptIds(node, menuIdlist); private void addMenuIdIfApplicable(DefaultMutableTreeNode treeNode, Set<Long> menuIdList) {
if (treeNode.getUserObject() instanceof MenuSimpleRespVO) {
MenuSimpleRespVO menuSimpleRespVO = (MenuSimpleRespVO) treeNode.getUserObject();
menuIdList.add(menuSimpleRespVO.getId());
} }
} }
@ -208,9 +215,7 @@ public class RoleAssignMenuPane extends JPanel {
java.util.List<DefaultMutableTreeNode> selNodes = new ArrayList<>(); java.util.List<DefaultMutableTreeNode> selNodes = new ArrayList<>();
for (MenuSimpleRespVO simpleRespVO : menuResult.getData()) { for (MenuSimpleRespVO simpleRespVO : menuResult.getData()) {
if (simpleRespVO.getType() == 3) {
continue;
}
DefaultMutableTreeNode node = new DefaultMutableTreeNode(simpleRespVO); DefaultMutableTreeNode node = new DefaultMutableTreeNode(simpleRespVO);
nodeMap.put(simpleRespVO.getId(), node); nodeMap.put(simpleRespVO.getId(), node);
@ -220,18 +225,17 @@ public class RoleAssignMenuPane extends JPanel {
} }
menuResult.getData().forEach(menuSimpleRespVO -> { menuResult.getData().forEach(menuSimpleRespVO -> {
if (menuSimpleRespVO.getType() != 3) {
DefaultMutableTreeNode parentNode = nodeMap.get(menuSimpleRespVO.getParentId()); DefaultMutableTreeNode parentNode = nodeMap.get(menuSimpleRespVO.getParentId());
DefaultMutableTreeNode childNode = nodeMap.get(menuSimpleRespVO.getId()); DefaultMutableTreeNode childNode = nodeMap.get(menuSimpleRespVO.getId());
if (parentNode != null) { if (parentNode != null) {
if (childNode != null) { if (childNode != null) {
parentNode.add(childNode); parentNode.add(childNode);
}
} }
} }
}); });
Map<String, Object> resultMap = new HashMap<>(); Map<String, Object> resultMap = new HashMap<>();
@ -249,7 +253,9 @@ public class RoleAssignMenuPane extends JPanel {
java.util.List<DefaultMutableTreeNode> selNodes = (List<DefaultMutableTreeNode>) get().get("selNodes"); java.util.List<DefaultMutableTreeNode> selNodes = (List<DefaultMutableTreeNode>) get().get("selNodes");
if (selNodes != null) { if (selNodes != null) {
for (DefaultMutableTreeNode node : selNodes) { for (DefaultMutableTreeNode node : selNodes) {
menuTree.getCheckBoxTreeSelectionModel().addSelectionPath(new TreePath(node.getPath())); if (node.isLeaf()) {
menuTree.getCheckBoxTreeSelectionModel().addSelectionPath(new TreePath(node.getPath()));
}
} }
} }

BIN
dump.rdb

Binary file not shown.