From 7dcd9d471a16790dd4f45f4ef98ceac91da41bd6 Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Mon, 8 Dec 2025 11:48:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=A7=92=E8=89=B2=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../annotation/SaAdminCheckPermission.java | 5 ++++ .../src/main/java/com/czg/LoadingRole.java | 26 +++++++++++++++++-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/cash-common/cash-common-sa-token/src/main/java/com/czg/annotation/SaAdminCheckPermission.java b/cash-common/cash-common-sa-token/src/main/java/com/czg/annotation/SaAdminCheckPermission.java index f4687e5e4..ede0e2c2c 100644 --- a/cash-common/cash-common-sa-token/src/main/java/com/czg/annotation/SaAdminCheckPermission.java +++ b/cash-common/cash-common-sa-token/src/main/java/com/czg/annotation/SaAdminCheckPermission.java @@ -28,6 +28,11 @@ public @interface SaAdminCheckPermission { String name() default ""; + /** + * 上级菜单名称 + */ + String parentName() default ""; + /** * 验证模式:AND | OR,默认AND * @return 验证模式 diff --git a/cash-common/cash-common-tools/src/main/java/com/czg/LoadingRole.java b/cash-common/cash-common-tools/src/main/java/com/czg/LoadingRole.java index b878d4118..e97378b81 100644 --- a/cash-common/cash-common-tools/src/main/java/com/czg/LoadingRole.java +++ b/cash-common/cash-common-tools/src/main/java/com/czg/LoadingRole.java @@ -85,6 +85,28 @@ public class LoadingRole implements CommandLineRunner { Method nameMethod = annotationClass.getMethod("name"); String permissionName = (String) nameMethod.invoke(annotation); + Method parentNameMethod = annotationClass.getMethod("parentName"); + String parentName = (String) parentNameMethod.invoke(annotation); + + String parentId; + if (StrUtil.isNotBlank(parentName)) { + String menuSql = "select * from sys_menu where title=?"; // 查询菜单是否存在 + Row menu1 = Db.selectOneBySql(menuSql, parentName); + if (menu1 == null) { + throw new RuntimeException(StrUtil.format("上级菜单不存在, 方法名{}, 方法路径:{}", method.getName(), fullPath)); + } + parentId = menu1.getString("menu_id"); + }else { + String menuSql = "select * from sys_menu where title=?"; // 查询菜单是否存在 + Row menu1 = Db.selectOneBySql(menuSql, "默认接口目录"); + if (menu1 == null) { + menuSql = "INSERT INTO `sys_menu` (`type`, `title`) VALUES (?, ?);"; + Db.insertBySql(menuSql, 0, "默认接口目录"); + } + menu1 = Db.selectOneBySql(menuSql, "默认接口目录"); + parentId = menu1.getString("menu_id"); + + } for (String s : permissions) { String sql = "select * from sys_menu where permission=?"; Row menu1 = Db.selectOneBySql(sql, s); @@ -98,9 +120,9 @@ public class LoadingRole implements CommandLineRunner { List count1 = Db.selectListBySql(listSql, menuId, 1L); if (count1.isEmpty()) { - sql = "INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`) VALUES (?, ?);"; + sql = "INSERT INTO `sys_roles_menus` (`menu_id`, `role_id`, `pid`) VALUES (?, ?, ?);"; Db.insertBySql(sql, menuId, 1L); - log.info("接口菜单添加成功, 菜单名称: {}, 菜单权限: {}", title, permission); + log.info("接口菜单添加成功, 菜单名称: {}, 菜单权限: {}", title, permission, parentId); } if (!title.equals(permissionName) || !fullPath.equals(url) || !httpMethod.equals(method1)) {