From 9b1144d0cbb0eaf62c78033f3a8d814706c82944 Mon Sep 17 00:00:00 2001 From: "ys.git" <18439391935@163.com> Date: Mon, 8 Dec 2025 09:57:35 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=A7=92=E8=89=B2=E6=9D=83?= =?UTF-8?q?=E9=99=90=E5=85=B3=E8=81=94=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/PermissionController.java | 2 +- .../pojo/ModelMenuPermissionPojo.java | 10 +++- .../pojo/ModelRolePermissionPojo.java | 33 +++++++++++ .../service/ModelMenuPermissionService.java | 1 + .../impl/ModelMenuPermissionServiceImpl.java | 57 ++++++++++--------- src/main/resources/sql.sql | 25 ++++++-- 6 files changed, 93 insertions(+), 35 deletions(-) create mode 100644 src/main/java/com/xdap/self_development/pojo/ModelRolePermissionPojo.java diff --git a/src/main/java/com/xdap/self_development/controller/PermissionController.java b/src/main/java/com/xdap/self_development/controller/PermissionController.java index cd61632..9060bd0 100644 --- a/src/main/java/com/xdap/self_development/controller/PermissionController.java +++ b/src/main/java/com/xdap/self_development/controller/PermissionController.java @@ -14,6 +14,7 @@ import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.List; +import java.util.Map; @RestController @RequestMapping("/custom/permission") @@ -59,7 +60,6 @@ public class PermissionController { } } - //参数查询 diff --git a/src/main/java/com/xdap/self_development/pojo/ModelMenuPermissionPojo.java b/src/main/java/com/xdap/self_development/pojo/ModelMenuPermissionPojo.java index 0c3c1d9..72e4534 100644 --- a/src/main/java/com/xdap/self_development/pojo/ModelMenuPermissionPojo.java +++ b/src/main/java/com/xdap/self_development/pojo/ModelMenuPermissionPojo.java @@ -10,10 +10,10 @@ import java.util.Date; @Data @EqualsAndHashCode(callSuper = false) -@Table("yfsjglpt_model_menu_permission") +@Table("yfsjglpt_model_menu_dictionary") public class ModelMenuPermissionPojo { - @RowID(sequence = "yfsjglpt_model_menu_permission_s", type = RowIDType.UUID) + @RowID(sequence = "yfsjglpt_model_menu_dictionary_s", type = RowIDType.UUID) private String id ; /** 上级ID,; */ private String parentId ; @@ -33,4 +33,10 @@ public class ModelMenuPermissionPojo { private String lastUpdatedBy ; /** 最后更新时间,; */ private Date lastUpdateDate ; + + public ModelMenuPermissionPojo(String id, String parentId, String menuName) { + this.id = id; + this.parentId = parentId; + this.menuName = menuName; + } } diff --git a/src/main/java/com/xdap/self_development/pojo/ModelRolePermissionPojo.java b/src/main/java/com/xdap/self_development/pojo/ModelRolePermissionPojo.java new file mode 100644 index 0000000..6b21458 --- /dev/null +++ b/src/main/java/com/xdap/self_development/pojo/ModelRolePermissionPojo.java @@ -0,0 +1,33 @@ +package com.xdap.self_development.pojo; + +import com.definesys.mpaas.query.annotation.RowID; +import com.definesys.mpaas.query.annotation.RowIDType; +import com.definesys.mpaas.query.annotation.Table; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +@Data +@EqualsAndHashCode(callSuper = false) +@Table("yfsjglpt_model_role_permission") +public class ModelRolePermissionPojo { + + @RowID(sequence = "yfsjglpt_model_role_permission_s", type = RowIDType.UUID) + /** ID,; */ + private String id ; + /** 角色ID,; */ + private String roleId ; + /** 权限路径ID,; */ + private String perId ; + /** 是否启用,0:未启用;1:启用,; */ + private int isEnable ; + /** 创建人,; */ + private String createdBy ; + /** 创建时间,; */ + private Date creationDate ; + /** 最后更新人,; */ + private String lastUpdatedBy ; + /** 最后更新时间,; */ + private Date lastUpdateDate ; +} diff --git a/src/main/java/com/xdap/self_development/service/ModelMenuPermissionService.java b/src/main/java/com/xdap/self_development/service/ModelMenuPermissionService.java index d51678e..8e28088 100644 --- a/src/main/java/com/xdap/self_development/service/ModelMenuPermissionService.java +++ b/src/main/java/com/xdap/self_development/service/ModelMenuPermissionService.java @@ -4,6 +4,7 @@ package com.xdap.self_development.service; import com.xdap.self_development.pojo.view.MenuListView; import java.util.List; +import java.util.Map; public interface ModelMenuPermissionService { diff --git a/src/main/java/com/xdap/self_development/service/impl/ModelMenuPermissionServiceImpl.java b/src/main/java/com/xdap/self_development/service/impl/ModelMenuPermissionServiceImpl.java index 0bced7a..fa4ce64 100644 --- a/src/main/java/com/xdap/self_development/service/impl/ModelMenuPermissionServiceImpl.java +++ b/src/main/java/com/xdap/self_development/service/impl/ModelMenuPermissionServiceImpl.java @@ -14,10 +14,7 @@ import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Date; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; @@ -29,33 +26,39 @@ public class ModelMenuPermissionServiceImpl implements ModelMenuPermissionServic BusinessDatabase businessDatabase; - @Override - public List selectMenus() { - List menuListViews = new ArrayList(); + public List selectMenus() { + + Map nodeMap = new HashMap<>(); + List views = new ArrayList<>(); List permissionPojos = businessDatabase.getBusinessDatabase() .doQuery(ModelMenuPermissionPojo.class); + for (ModelMenuPermissionPojo pojo : permissionPojos) { - MenuListView menuListView = new MenuListView(); - String id = pojo.getId(); - menuListView.setId(id); - menuListView.setMenu(pojo.getMenuName()); - List pojos = permissionPojos.stream().filter(x -> x.getParentId().equals(id)).collect(Collectors.toList()); - - if (ObjectUtils.isNotEmpty(pojos)) { - ArrayList menuListViews1 = new ArrayList(); - - for (ModelMenuPermissionPojo pojo2 : pojos) { - MenuListView menuListView1 = new MenuListView(); - String id2 = pojo2.getId(); - menuListView1.setId(id2); - menuListView1.setMenu(pojo2.getMenuName()); - menuListViews1.add(menuListView1); - } - menuListView.setListViews(menuListViews1); - } - menuListViews.add(menuListView); + MenuListView node = new MenuListView(); + node.setId(pojo.getId()); + node.setMenu(pojo.getMenuName()); + node.setListViews(new ArrayList<>()); + nodeMap.put(pojo.getId(), node); } - return menuListViews; + + for (ModelMenuPermissionPojo pojo : permissionPojos) { + String parentId = pojo.getParentId(); + MenuListView currentNode = nodeMap.get(pojo.getId()); + + if (ObjectUtils.isEmpty(parentId) || !nodeMap.containsKey(parentId)) { + // 根节点 + views.add(currentNode); + } else { + // 子节点,添加到父节点 + MenuListView parentNode = nodeMap.get(parentId); + if (parentNode.getListViews() == null) { + parentNode.setListViews(new ArrayList<>()); + } + parentNode.getListViews().add(currentNode); + } + } + + return views; } } diff --git a/src/main/resources/sql.sql b/src/main/resources/sql.sql index 3b5a617..618c7d3 100644 --- a/src/main/resources/sql.sql +++ b/src/main/resources/sql.sql @@ -43,8 +43,8 @@ CREATE TABLE yfsjglpt_model_roles( -- 菜单权限 -DROP TABLE IF EXISTS yfsjglpt_model_menu_permission; -CREATE TABLE yfsjglpt_model_menu_permission( +DROP TABLE IF EXISTS yfsjglpt_model_menu_dictionary; +CREATE TABLE yfsjglpt_model_menu_dictionary( `id` VARCHAR(64) NOT NULL COMMENT 'ID', `parent_id` VARCHAR(64) COMMENT '上级ID', `menu_name` VARCHAR(64) COMMENT '菜单名称', @@ -56,10 +56,10 @@ CREATE TABLE yfsjglpt_model_menu_permission( `last_updated_by` VARCHAR(64) COMMENT '最后更新人', `last_update_date` DATETIME COMMENT '最后更新时间', PRIMARY KEY (`id`) -) COMMENT '菜单权限'; +) COMMENT '菜单字典表'; --- 菜单参数关联表 +-- 菜单参数关联表(权限路径表) DROP TABLE IF EXISTS yfsjglpt_model_menu_parameter; CREATE TABLE yfsjglpt_model_menu_parameter( `id` VARCHAR(64) NOT NULL COMMENT 'ID', @@ -72,7 +72,7 @@ CREATE TABLE yfsjglpt_model_menu_parameter( `last_updated_by` VARCHAR(64) COMMENT '最后更新人', `last_update_date` DATETIME COMMENT '最后更新时间', PRIMARY KEY (`id`) -) COMMENT '菜单参数关联表'; +) COMMENT '菜单参数关联表(权限路径表)'; -- 部门或用户关联角色表 DROP TABLE IF EXISTS yfsjglpt_model_dep_user_role; @@ -88,3 +88,18 @@ CREATE TABLE yfsjglpt_model_dep_user_role( PRIMARY KEY (`id`) ) COMMENT '部门或用户关联角色表'; + +--角色权限关联表 +DROP TABLE IF EXISTS yc_datasource_0.yfsjglpt_model_role_permission; +CREATE TABLE yc_datasource_0.yfsjglpt_model_role_permission( + `id` VARCHAR(64) NOT NULL COMMENT 'ID', + `role_id` VARCHAR(64) COMMENT '角色ID', + `per_id` VARCHAR(64) COMMENT '权限路径ID', + `is_enable` INT DEFAULT 1 COMMENT '是否启用;0:未启用;1:启用', + `created_by` VARCHAR(64) COMMENT '创建人', + `creation_date` DATETIME COMMENT '创建时间', + `last_updated_by` VARCHAR(64) COMMENT '最后更新人', + `last_update_date` DATETIME COMMENT '最后更新时间', + PRIMARY KEY (`id`) +) COMMENT '角色权限关联表'; +