Explorar o código

权限操作改为标准json格式树结构

shuzheng %!s(int64=9) %!d(string=hai) anos
pai
achega
6b10c3c268

+ 3 - 0
zheng-upms/zheng-upms-rpc-api/src/main/java/com/zheng/upms/rpc/api/UpmsPermissionService.java

@@ -1,5 +1,6 @@
 package com.zheng.upms.rpc.api;
 
+import com.alibaba.fastjson.JSONArray;
 import com.zheng.common.base.BaseService;
 import com.zheng.upms.dao.model.UpmsPermission;
 import com.zheng.upms.dao.model.UpmsPermissionExample;
@@ -10,4 +11,6 @@ import com.zheng.upms.dao.model.UpmsPermissionExample;
 */
 public interface UpmsPermissionService extends BaseService<UpmsPermission, UpmsPermissionExample> {
 
+    JSONArray getTreeByRoleId(Integer roleId);
+
 }

+ 11 - 0
zheng-upms/zheng-upms-rpc-api/src/main/java/com/zheng/upms/rpc/api/UpmsPermissionServiceMock.java

@@ -1,9 +1,12 @@
 package com.zheng.upms.rpc.api;
 
+import com.alibaba.fastjson.JSONArray;
 import com.zheng.common.base.BaseServiceMock;
 import com.zheng.upms.dao.mapper.UpmsPermissionMapper;
 import com.zheng.upms.dao.model.UpmsPermission;
 import com.zheng.upms.dao.model.UpmsPermissionExample;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
 * 降级实现UpmsPermissionService接口
@@ -11,4 +14,12 @@ import com.zheng.upms.dao.model.UpmsPermissionExample;
 */
 public class UpmsPermissionServiceMock extends BaseServiceMock<UpmsPermissionMapper, UpmsPermission, UpmsPermissionExample> implements UpmsPermissionService {
 
+    private static Logger _log = LoggerFactory.getLogger(UpmsPermissionServiceMock.class);
+
+    @Override
+    public JSONArray getTreeByRoleId(Integer roleId) {
+        _log.info("UpmsPermissionServiceMock => getTree");
+        return null;
+    }
+
 }

+ 107 - 2
zheng-upms/zheng-upms-rpc-service/src/main/java/com/zheng/upms/rpc/service/impl/UpmsPermissionServiceImpl.java

@@ -1,10 +1,13 @@
 package com.zheng.upms.rpc.service.impl;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.zheng.common.annotation.BaseService;
 import com.zheng.common.base.BaseServiceImpl;
 import com.zheng.upms.dao.mapper.UpmsPermissionMapper;
-import com.zheng.upms.dao.model.UpmsPermission;
-import com.zheng.upms.dao.model.UpmsPermissionExample;
+import com.zheng.upms.dao.mapper.UpmsSystemMapper;
+import com.zheng.upms.dao.model.*;
+import com.zheng.upms.rpc.api.UpmsApiService;
 import com.zheng.upms.rpc.api.UpmsPermissionService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -12,6 +15,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.List;
+
 /**
 * UpmsPermissionService实现
 * Created by shuzheng on 2017/3/20.
@@ -23,7 +28,107 @@ public class UpmsPermissionServiceImpl extends BaseServiceImpl<UpmsPermissionMap
 
     private static Logger _log = LoggerFactory.getLogger(UpmsPermissionServiceImpl.class);
 
+    @Autowired
+    UpmsSystemMapper upmsSystemMapper;
+
     @Autowired
     UpmsPermissionMapper upmsPermissionMapper;
 
+    @Autowired
+    UpmsApiService upmsApiService;
+
+    @Override
+    public JSONArray getTreeByRoleId(Integer roleId) {
+        // 角色已有权限
+        List<UpmsRolePermission> rolePermissions = upmsApiService.selectUpmsRolePermisstionByUpmsRoleId(roleId);
+
+        JSONArray systems = new JSONArray();
+        // 系统
+        UpmsSystemExample upmsSystemExample = new UpmsSystemExample();
+        upmsSystemExample.createCriteria()
+                .andStatusEqualTo((byte) 1);
+        upmsSystemExample.setOrderByClause("orders asc");
+        List<UpmsSystem> upmsSystems = upmsSystemMapper.selectByExample(upmsSystemExample);
+        for (UpmsSystem upmsSystem : upmsSystems) {
+            JSONObject node = new JSONObject();
+            node.put("id", upmsSystem.getSystemId());
+            node.put("name", upmsSystem.getTitle());
+            node.put("nocheck", true);
+            node.put("open", true);
+            systems.add(node);
+        }
+
+        if (!systems.isEmpty()) {
+            for (Object system: systems) {
+                UpmsPermissionExample upmsPermissionExample = new UpmsPermissionExample();
+                upmsPermissionExample.createCriteria()
+                        .andStatusEqualTo((byte) 1)
+                        .andSystemIdEqualTo(((JSONObject) system).getIntValue("id"));
+                upmsPermissionExample.setOrderByClause("orders asc");
+                List<UpmsPermission> upmsPermissions = upmsPermissionMapper.selectByExample(upmsPermissionExample);
+                if (upmsPermissions.size() == 0) continue;
+                // 目录
+                JSONArray folders = new JSONArray();
+                for (UpmsPermission upmsPermission: upmsPermissions) {
+                    if (upmsPermission.getPid().intValue() != 0 || upmsPermission.getType() != 1) continue;
+                    JSONObject node = new JSONObject();
+                    node.put("id", upmsPermission.getPermissionId());
+                    node.put("name", upmsPermission.getName());
+                    node.put("open", true);
+                    for (UpmsRolePermission rolePermission : rolePermissions) {
+                        if (rolePermission.getPermissionId().intValue() == upmsPermission.getPermissionId().intValue()) {
+                            node.put("checked", true);
+                        }
+                    }
+                    folders.add(node);
+                    // 菜单
+                    JSONArray menus = new JSONArray();
+                    for (Object folder : folders) {
+                        for (UpmsPermission upmsPermission2: upmsPermissions) {
+                            if (upmsPermission2.getPid().intValue() != ((JSONObject) folder).getIntValue("id") || upmsPermission2.getType() != 2) continue;
+                            JSONObject node2 = new JSONObject();
+                            node2.put("id", upmsPermission2.getPermissionId());
+                            node2.put("name", upmsPermission2.getName());
+                            node2.put("open", true);
+                            for (UpmsRolePermission rolePermission : rolePermissions) {
+                                if (rolePermission.getPermissionId().intValue() == upmsPermission2.getPermissionId().intValue()) {
+                                    node2.put("checked", true);
+                                }
+                            }
+                            menus.add(node2);
+                            // 按钮
+                            JSONArray buttons = new JSONArray();
+                            for (Object menu : menus) {
+                                for (UpmsPermission upmsPermission3: upmsPermissions) {
+                                    if (upmsPermission3.getPid().intValue() != ((JSONObject) menu).getIntValue("id") || upmsPermission3.getType() != 3) continue;
+                                    JSONObject node3 = new JSONObject();
+                                    node3.put("id", upmsPermission3.getPermissionId());
+                                    node3.put("name", upmsPermission3.getName());
+                                    node3.put("open", true);
+                                    for (UpmsRolePermission rolePermission : rolePermissions) {
+                                        if (rolePermission.getPermissionId().intValue() == upmsPermission3.getPermissionId().intValue()) {
+                                            node3.put("checked", true);
+                                        }
+                                    }
+                                    buttons.add(node3);
+                                }
+                                if (buttons.size() > 0) {
+                                    ((JSONObject) menu).put("children", buttons);
+                                    buttons = new JSONArray();
+                                }
+                            }
+                        }
+                        if (menus.size() > 0) {
+                            ((JSONObject) folder).put("children", menus);
+                            menus = new JSONArray();
+                        }
+                    }
+                }
+                if (folders.size() > 0) {
+                    ((JSONObject) system).put("children", folders);
+                }
+            }
+        }
+        return systems;
+    }
 }

+ 3 - 19
zheng-upms/zheng-upms-server/src/main/java/com/zheng/upms/server/controller/manage/UpmsPermissionController.java

@@ -1,5 +1,7 @@
 package com.zheng.upms.server.controller.manage;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baidu.unbiz.fluentvalidator.ComplexResult;
 import com.baidu.unbiz.fluentvalidator.FluentValidator;
 import com.baidu.unbiz.fluentvalidator.ResultCollectors;
@@ -95,25 +97,7 @@ public class UpmsPermissionController extends BaseController {
     @RequestMapping(value = "/role/{id}", method = RequestMethod.POST)
     @ResponseBody
     public Object role(@PathVariable("id") int id) {
-        // 所有正常系统
-        UpmsSystemExample upmsSystemExample = new UpmsSystemExample();
-        upmsSystemExample.createCriteria()
-                .andStatusEqualTo((byte) 1);
-        List<UpmsSystem> systems = upmsSystemService.selectByExample(upmsSystemExample);
-        // 所有正常权限
-        UpmsPermissionExample upmsPermissionExample = new UpmsPermissionExample();
-        upmsPermissionExample.createCriteria()
-            .andStatusEqualTo((byte) 1);
-        upmsPermissionExample.setOrderByClause("orders asc");
-        List<UpmsPermission> permissions = upmsPermissionService.selectByExample(upmsPermissionExample);
-        // 角色已有权限
-        List<UpmsRolePermission> rolePermissions = upmsApiService.selectUpmsRolePermisstionByUpmsRoleId(id);
-        // 返回结果集
-        Map result = new HashMap();
-        result.put("systems", systems);
-        result.put("permissions", permissions);
-        result.put("rolePermissions", rolePermissions);
-        return result;
+        return upmsPermissionService.getTreeByRoleId(id);
     }
 
     @ApiOperation(value = "用户权限列表")

+ 1 - 19
zheng-upms/zheng-upms-server/src/main/webapp/WEB-INF/jsp/manage/role/permission.jsp

@@ -27,25 +27,7 @@ var setting = {
 	},
 	async: {
 		enable: true,
-		url: '${basePath}/manage/permission/role/' + roleId,
-		dataFilter: function(treeId, parentNode, datas) {
-			var nodes = [];
-			for (var i = 0; i < datas.permissions.length; i ++) {
-				var node = {};
-				node.id = datas.permissions[i].permissionId;
-				node.pId = datas.permissions[i].pid;
-				node.name = datas.permissions[i].name;
-				node.open = true;
-				// 是否已拥有
-				for (var j = 0; j < datas.rolePermissions.length; j ++) {
-					if (datas.permissions[i].permissionId == datas.rolePermissions[j].permissionId) {
-						node.checked = true;
-					}
-				}
-				nodes.push(node)
-			}
-			return nodes;
-		}
+		url: '${basePath}/manage/permission/role/' + roleId
 	},
 	data: {
 		simpleData: {