Просмотр исходного кода

修改菜单获取,权限列表

david 2 лет назад
Родитель
Сommit
6f26ceec86

BIN
out/artifacts/roma_api_jar/roma-api.jar


+ 16 - 0
src/main/java/com/roma/romaapi/dao/ApiDao.java

@@ -53,4 +53,20 @@ public class ApiDao {
                 "value(:parent_id,:page_id,:sort,:value,:display_name,:description,:type,:created_at,:icon,:is_enable) ";
         Integer row = namedParameterJdbcTemplate.update(sql, bindValue);
     }
+
+    // 通过id和数据表类型,查询不同的数据
+    public Map getDetailsInfoByIdAndType(String tableName, String id) {
+        try {
+            Map<String, Object> paramMap = new HashMap<>();
+            paramMap.put("id", id);
+            Map<String, Object> resMap2 = namedParameterJdbcTemplate.queryForMap(
+                    "SELECT * FROM `"+tableName+"` where id = :id", paramMap);
+            return  resMap2;
+        } catch (EmptyResultDataAccessException e) {
+            Map<String, Object> resultMap = new HashMap<>();
+            resultMap.put("sysErrorCode", "500");
+
+            return resultMap;
+        }
+    }
 }

+ 19 - 9
src/main/java/com/roma/romaapi/dao/PageDao.java

@@ -35,12 +35,17 @@ public class PageDao {
     // 获取全部菜单项
     public List<Map<String, Object>> getMenuForList(){
         Map<String, Object> paramMap = new HashMap<>();
-        paramMap.put("type_menu", "menu");
-        paramMap.put("type_dir", "dir");
-        String sql = " SELECT  `rp`.`id`,`rp`.`parent_id`,`rp`.`icon`,`rp`.`type`,`rp`.`value` AS `path`,`pd`.`front_path` AS `url`,`rp`.`display_name` AS `label` " +
-                "FROM `roma_permissions` AS `rp` LEFT JOIN `page_details` AS `pd` ON `pd`.`id`=`rp`.`page_id` " +
-                "WHERE `rp`.`is_enable`=1 AND (`rp`.`type`=:type_menu OR `rp`.`type`=:type_dir )  ORDER BY `rp`.`sort` ASC ";
+//        paramMap.put("type_menu", "menu");
+//        paramMap.put("type_dir", "dir");
+//        String sql = " SELECT  `rp`.`id`,`rp`.`parent_id`,`rp`.`icon`,`rp`.`type`,`rp`.`value` AS `path`,`pd`.`front_path` AS `url`,`rp`.`display_name` AS `label` " +
+//                "FROM `roma_permissions` AS `rp` LEFT JOIN `page_details` AS `pd` ON `pd`.`id`=`rp`.`page_id` " +
+//                "WHERE `rp`.`is_enable`=1 AND (`rp`.`type`=:type_menu OR `rp`.`type`=:type_dir )  ORDER BY `rp`.`sort` ASC ";
+          String sql= " SELECT  `rp`.`id`,`rp`.`parent_id`,`rp`.`permissions_icon` as `icon`,`rp`.`object_type`," +
+                  "`rp`.`object_id`,`pd`.`page_code` AS `path`,`pd`.`front_path` AS `url`,`rp`.`menu_name` AS `label` " +
+                  "FROM `roma_permissions` AS `rp` LEFT JOIN `page_details` AS `pd` ON `pd`.`id`=`rp`.`object_id` " +
+                  "WHERE `rp`.`is_enable`=1   and `rp`.`is_menu`=1   ORDER BY `rp`.`permission_sort` ASC ";
         List<Map<String, Object>> resMap2 = namedParameterJdbcTemplate.queryForList(sql, paramMap);
+        System.out.println("==========================="+resMap2);
 
         return resMap2;
     }
@@ -48,10 +53,15 @@ public class PageDao {
     // 获取全部权限
     public List<Map<String, Object>> getAllMenuForList(){
         Map<String, Object> paramMap = new HashMap<>();
-        paramMap.put("append_params", "1");
-        String sql = " SELECT  `rp`.`is_enable`,`rp`.`id`,`rp`.`parent_id`,`rp`.`icon`,`rp`.`type`,`rp`.`value` AS `path`,`pd`.`front_path` AS `url`,`rp`.`display_name` AS `label` " +
-                "FROM `roma_permissions` AS `rp` LEFT JOIN `page_details` AS `pd` ON `pd`.`id`=`rp`.`page_id` " +
-                "WHERE  (1=:append_params )  ORDER BY `rp`.`sort` ASC ";
+//        paramMap.put("append_params", "1");
+//        String sql = " SELECT  `rp`.`is_enable`,`rp`.`id`,`rp`.`parent_id`,`rp`.`icon`,`rp`.`type`,`rp`.`value` AS `path`,`pd`.`front_path` AS `url`,`rp`.`display_name` AS `label` " +
+//                "FROM `roma_permissions` AS `rp` LEFT JOIN `page_details` AS `pd` ON `pd`.`id`=`rp`.`page_id` " +
+//                "WHERE  (1=:append_params )  ORDER BY `rp`.`sort` ASC ";
+//        List<Map<String, Object>> resMap2 = namedParameterJdbcTemplate.queryForList(sql, paramMap);
+
+        String sql = " SELECT  `rp`.`is_enable`,`rp`.`id`,`rp`.`parent_id`,`rp`.`permissions_icon`,`rp`.`object_type`," +
+                "`rp`.`object_id`,`rp`.`is_menu`,`rp`.`permission_sort`,`rp`.`menu_name` FROM `roma_permissions` AS `rp` " +
+                "WHERE  1=1  ORDER BY `rp`.`permission_sort` ASC";
         List<Map<String, Object>> resMap2 = namedParameterJdbcTemplate.queryForList(sql, paramMap);
 
         return resMap2;

+ 42 - 0
src/main/java/com/roma/romaapi/service/ApiService.java

@@ -161,6 +161,19 @@ public class ApiService {
             String stringParentId = parentId.toString(); // 上级id
             Object dataId = map.get("id");
             String stringDataId = dataId.toString(); // 主键id
+
+            // 新增字段:权限项名称 权限项路径
+            Object objectId = map.get("object_id");
+            Object objectType = map.get("object_type");
+            String stringObjectId = objectId.toString();
+            String stringObjectType = objectType.toString();
+            Map permissionDetails = this.getPermissionDetails(stringObjectType, stringObjectId);
+            if (permissionDetails.containsKey("permission_path")) {
+                map.put("permission_path", permissionDetails.get("permission_path"));
+            }
+            if (permissionDetails.containsKey("permission_name")) {
+                map.put("permission_name", permissionDetails.get("permission_name"));
+            }
             if (stringParentId.equals(id)) {
                 // 组装子节点,开始循环去获取子节点
                 List<?> children = menuChild(stringDataId, data);
@@ -174,4 +187,33 @@ public class ApiService {
         }
         return lists;
     }
+
+    private Map getPermissionDetails(String stringObjectType, String stringObjectId) {
+         Map map = new HashMap<>();
+        // 如果是page,且object_id=0.则代表是菜单目录,没有路径(即不需要打开页面)
+        if (stringObjectType.equals("page")) {
+            if(stringObjectId.equals("0")) {
+                // 如果是菜单目录,则无路径,无权限名称只有菜单名称
+            } else {
+                // 获取page_details表数据,编码,和权限名称
+                Map pageInfo = apiDao.getDetailsInfoByIdAndType("page_details", stringObjectId);
+                map.put("permission_path", "/page/"+pageInfo.get("page_code"));
+                map.put("permission_name", pageInfo.get("page_name"));
+            }
+        } else if (stringObjectType.equals("sql")) {
+            Map pageInfo = apiDao.getDetailsInfoByIdAndType("sql_details", stringObjectId);
+            map.put("permission_path", "/dbapi/"+pageInfo.get("sql_code"));
+            map.put("permission_name", pageInfo.get("sql_name"));
+        } else if (stringObjectType.equals("api")) {
+            Map pageInfo = apiDao.getDetailsInfoByIdAndType("api_details", stringObjectId);
+            map.put("permission_path", "/api/"+pageInfo.get("api_code"));
+            map.put("permission_name", pageInfo.get("api_name"));
+        }else if (stringObjectType.equals("item")) {
+            Map pageInfo = apiDao.getDetailsInfoByIdAndType("item_details", stringObjectId);
+            map.put("permission_path", "/api/"+pageInfo.get("item_code"));
+            map.put("permission_name", pageInfo.get("item_name"));
+        }
+
+         return map;
+    }
 }

+ 3 - 3
src/main/java/com/roma/romaapi/service/PageService.java

@@ -32,7 +32,7 @@ public class PageService {
         List<Map<String, Object>> retList = new ArrayList<Map<String, Object>>();
         for (int i = 0; i < menuData.size(); i++) {
             Map map = menuData.get(i);
-            String menuType = (String) map.get("type");
+            String menuType = (String) map.get("object_type");
             Map tempMap = new HashMap<>();
             tempMap.put("id", map.get("id"));
             tempMap.put("parent_id", map.get("parent_id"));
@@ -47,14 +47,14 @@ public class PageService {
             }
             tempMap.put("visible", visible);
             switch (menuType) {
-                case "menu": // 菜单
+                case "page": // 菜单
                     // 判断,如果是menu,但是value是空的,即path.则表名为目录,且不需要添加url和path
                     String path = (String) map.get("path");
                     if(path == null || path.equals("")) {
 
                     } else {
                         tempMap.put("url", (String) map.get("url"));
-                        tempMap.put("schemaApi", path);
+                        tempMap.put("schemaApi", "/page/"+path);
                     }
                     break;
                 case "dir":