Browse Source

增加角色列表和添加角色

david 2 years ago
parent
commit
70e8ca0706

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


+ 15 - 13
src/main/java/com/roma/romaapi/controller/ApiController.java

@@ -126,23 +126,25 @@ public class ApiController {
         return CustomResponse.formatResponse(ret);
     }
 
+    // 角色管理-获取全部角色
+    @RequestMapping("/api/roleList")
+    public Map roleList(HttpServletRequest request) {
+        Map<String, Object> ret = new HashMap<>();
+        List allPermiss = apiService.roleList();
+        ret.put("options", allPermiss);
 
+        return CustomResponse.formatResponse(ret);
+    }
 
-    // 获取所有页面
-//    @RequestMapping("/api/pageList")
-//    public Map pageList(HttpServletRequest request) {
-//        Map<String, Object> ret = new HashMap<>();
-//
-//
-//        List allPermiss = apiService.pageList();
-//        ret.put("options", allPermiss);
-//        System.out.println("------------------------------"+allPermiss);
-//        return CustomResponse.formatResponse(ret);
-//    }
+    // 添加角色
+    @RequestMapping("/api/roleSave")
+    public Map roleSave(HttpServletRequest request, @RequestBody String data) {
+        Map maps = commonUtil.analysisRequestParams(request, data); // 参数
 
-    // 角色管理-获取全部角色
+        Map ret = apiService.addRole(maps);
 
-    // 角色分配权限
+        return CustomResponse.formatResponse(ret);
+    }
 
     // 用户管理-获取全部用户
 

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

@@ -2,7 +2,12 @@ package com.roma.romaapi.dao;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.dao.EmptyResultDataAccessException;
+import org.springframework.jdbc.core.PreparedStatementCreator;
+import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource;
+import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
 import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
+import org.springframework.jdbc.support.GeneratedKeyHolder;
+import org.springframework.jdbc.support.KeyHolder;
 import org.springframework.stereotype.Repository;
 
 import java.util.HashMap;
@@ -69,4 +74,24 @@ public class ApiDao {
             return resultMap;
         }
     }
+
+    // 添加角色
+    public Integer addRole(Map<String, Object> bindValue) {
+        String insertSql = " INSERT INTO `roma_roles` (`role_name`,`role_description`,`is_enable`,`created_at`)  " +
+                "VALUES (:roleName,:roleDesc,:isEnable,:createdAt)  ";
+        KeyHolder keyHolder = new GeneratedKeyHolder();
+        Integer row = namedParameterJdbcTemplate.update(insertSql, new MapSqlParameterSource(bindValue), keyHolder);
+        int k = keyHolder.getKey().intValue();
+
+        return k;
+    }
+
+    // 插入角色和权限关联表数据
+    public Integer addRolePermission(String info){
+        Map map = new HashMap<>();
+        String insertSql = " INSERT INTO `roma_permission_role` (`role_id`,`permission_id`) VALUES  " + info;
+        Integer row = namedParameterJdbcTemplate.update(insertSql, map);
+
+        return row;
+    }
 }

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

@@ -67,6 +67,15 @@ public class PageDao {
         return resMap2;
     }
 
+    //获取全部角色
+    public List<Map<String, Object>> getAllRoleForList(){
+        Map<String, Object> paramMap = new HashMap<>();
+        String sql = " SELECT  * FROM `roma_roles`";
+        List<Map<String, Object>> resMap2 = namedParameterJdbcTemplate.queryForList(sql, paramMap);
+
+        return resMap2;
+    }
+
     // 获取全部的页面
     public List<Map<String, Object>> getAllPageList() {
         Map<String, Object> paramMap = new HashMap<>();

+ 66 - 1
src/main/java/com/roma/romaapi/service/ApiService.java

@@ -9,6 +9,7 @@ import org.springframework.data.redis.core.RedisTemplate;
 import com.roma.romaapi.utils.SecurityUtils;
 import org.springframework.stereotype.Service;
 
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 
@@ -109,6 +110,14 @@ public class ApiService {
         return treeMenu;
     }
 
+    // 获取全部角色
+    public List roleList() {
+        Map<String, Object> map = new HashMap<>();
+        List<Map<String, Object>> menuData = pageDao.getAllRoleForList(); // 获取全部角色
+
+        return menuData;
+    }
+
     // 获取全部page_details
     public List pageList() {
         Map<String, Object> map = new HashMap<>();
@@ -149,7 +158,63 @@ public class ApiService {
 
     // 新建权限
     public void addPermissions(Map maps) {
-        System.out.println("权限数据----------------"+maps);
+        String objectType = maps.get("object_type").toString();
+        String menuName = "";
+        if (maps.containsKey("object_type")) {
+            menuName = maps.get("menu_name").toString();
+        }
+        // 通过是否有菜单名称,判断是否是菜单.
+        if (objectType.equals("page")) {
+            // 如果没有父级id,则应该有菜单名称.因为没有页面,是菜单目录,要展示菜单名称
+            // 如果不是菜单,则应该选择页面,启用. 父级权限可选或不选
+            // 如果是菜单,则可以不选择页面,也可以选择页面. 可以选择父级菜单,即自己是子菜单. 或者不选择父级菜单,自己是顶级菜单.可以输入icon
+        }
+        System.out.println("权限数据----------------"+objectType);
+        System.out.println("权限数据----------------"+menuName);
+    }
+
+    // 添加角色
+    public Map addRole(Map maps) {
+        // 角色名,是否启用,是必填的
+        String isEnable = maps.get("is_enable").toString();
+        String roleName = maps.get("role_name").toString();
+        String roleDesc = "";
+        if (maps.containsKey("role_desc")) {
+            roleDesc = maps.get("role_desc").toString();
+        }
+        String createdAt = commonUtil.getNowYYMMDDHHIISS();
+        Map<String, Object> addRolePamars = new HashMap<>();
+        addRolePamars.put("roleName", roleName);
+        addRolePamars.put("isEnable", isEnable);
+        addRolePamars.put("roleDesc", roleDesc);
+        addRolePamars.put("createdAt", createdAt);
+        // 添加角色
+        Integer roleId = apiDao.addRole(addRolePamars);
+        // 判断是否给角色勾选的权限
+        Boolean hasPermission = maps.containsKey("permission_info");
+        Integer addRolePermissionRet = 0;
+        if(hasPermission) {
+            String allPermission = maps.get("permission_info").toString();
+            // 如果有权限,则添加完角色后,再添加角色和权限的关联表数据
+            LinkedHashSet<String> unPermission = new LinkedHashSet<String>();
+            for(String s : allPermission.split(",")) {
+                unPermission.add(s);
+            }
+            // 循环去重后的数据
+            String values = "";
+            for(String val: unPermission) {
+                values += " ("+roleId+","+val+"),";
+            }
+            values = commonUtil.trimFirstAndLastChar(values, ",");
+            addRolePermissionRet = apiDao.addRolePermission(values);
+        }
+        Map retInfo = new HashMap<>();
+        if((hasPermission && addRolePermissionRet>0 && roleId>0) || (!hasPermission && roleId>0)) {
+
+        } else {
+            retInfo.put("sysErrorCode", "500");
+        }
+        return retInfo;
     }
 
 //    public List pageList() {

+ 31 - 0
src/main/java/com/roma/romaapi/utils/CommonUtil.java

@@ -10,6 +10,8 @@ import org.springframework.stereotype.Component;
 import org.springframework.web.bind.annotation.RequestBody;
 
 import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -40,6 +42,7 @@ public class CommonUtil {
         return stringRedisTemplate.delete(redisTokenKey);
     }
 
+    // 解析请求参数
     public Map analysisRequestParams(HttpServletRequest request, @RequestBody String data) {
         Map<String, String[]> maps = request.getParameterMap();
         String requestContentType = request.getContentType(); // 请求类型
@@ -68,4 +71,32 @@ public class CommonUtil {
 
         return  ret;
     }
+
+    /**
+     * 去除首尾指定字符
+     * @param str   字符串
+     * @param element   指定字符
+     * @return
+     */
+    public String trimFirstAndLastChar(String str, String element){
+        boolean beginIndexFlag = true;
+        boolean endIndexFlag = true;
+        do{
+            int beginIndex = str.indexOf(element) == 0 ? 1 : 0;
+            int endIndex = str.lastIndexOf(element) + 1 == str.length() ? str.lastIndexOf(element) : str.length();
+            str = str.substring(beginIndex, endIndex);
+            beginIndexFlag = (str.indexOf(element) == 0);
+            endIndexFlag = (str.lastIndexOf(element) + 1 == str.length());
+        } while (beginIndexFlag || endIndexFlag);
+        return str;
+    }
+
+    // 返回当前年月日 时分秒
+    public String getNowYYMMDDHHIISS() {
+        Date date = new Date();
+        SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String dateString = fmt.format(date);
+
+        return dateString;
+    }
 }

+ 1 - 1
src/main/resources/application.properties

@@ -1 +1 @@
-#服务
server.port=8056
server.servlet.session.timeout=600

#数据库
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url = jdbc:mysql://172.22.53.67:3306/lowcode?serverTimezone=UTC&tinyInt1isBit=false&transformedBitIsBoolean=false
spring.datasource.username = root
spring.datasource.password = mypass

#redis
spring.redis.database=0
spring.redis.password=
#spring.redis.password=name:password
spring.redis.port=6379
spring.redis.host=127.0.0.1
spring.redis.timeout=5000
+#服务
server.port=8056
server.servlet.session.timeout=600

#数据库
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url = jdbc:mysql://192.168.88.110:3306/lowcode?serverTimezone=UTC&tinyInt1isBit=false&transformedBitIsBoolean=false
spring.datasource.username = root
spring.datasource.password = mypass

#redis
spring.redis.database=0
spring.redis.password=
#spring.redis.password=name:password
spring.redis.port=6379
spring.redis.host=127.0.0.1
spring.redis.timeout=5000