shuzheng преди 9 години
родител
ревизия
b2f33ad7c6

+ 58 - 4
zheng-upms/zheng-upms-server/src/main/java/com/zheng/upms/server/controller/manage/UpmsPermissionController.java

@@ -7,10 +7,8 @@ import com.zheng.common.base.BaseController;
 import com.zheng.common.validator.LengthValidator;
 import com.zheng.upms.common.constant.UpmsResult;
 import com.zheng.upms.common.constant.UpmsResultConstant;
-import com.zheng.upms.dao.model.UpmsPermission;
-import com.zheng.upms.dao.model.UpmsPermissionExample;
-import com.zheng.upms.dao.model.UpmsSystem;
-import com.zheng.upms.dao.model.UpmsSystemExample;
+import com.zheng.upms.dao.model.*;
+import com.zheng.upms.rpc.api.UpmsApiService;
 import com.zheng.upms.rpc.api.UpmsPermissionService;
 import com.zheng.upms.rpc.api.UpmsSystemService;
 import io.swagger.annotations.Api;
@@ -45,6 +43,9 @@ public class UpmsPermissionController extends BaseController {
     @Autowired
     private UpmsSystemService upmsSystemService;
 
+    @Autowired
+    private UpmsApiService upmsApiService;
+
     @ApiOperation(value = "权限首页")
     @RequiresPermissions("upms:permission:read")
     @RequestMapping(value = "/index", method = RequestMethod.GET)
@@ -84,6 +85,59 @@ public class UpmsPermissionController extends BaseController {
         return result;
     }
 
+    @ApiOperation(value = "角色权限列表")
+    @RequiresPermissions("upms:permission:read")
+    @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);
+        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;
+    }
+
+    @ApiOperation(value = "用户权限列表")
+    @RequiresPermissions("upms:permission:read")
+    @RequestMapping(value = "/user/{id}", method = RequestMethod.POST)
+    @ResponseBody
+    public Object user(@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);
+        List<UpmsPermission> permissions = upmsPermissionService.selectByExample(upmsPermissionExample);
+        // 用户已有权限
+        List<UpmsUserPermission> rolePermissions = upmsApiService.selectUpmsUserPermissionByUpmsUserId(id);
+        // 用户已有角色
+        List<UpmsRole> roles = upmsApiService.selectUpmsRoleByUpmsUserId(id);
+        // 返回结果集
+        Map result = new HashMap();
+        result.put("systems", systems);
+        result.put("permissions", permissions);
+        result.put("rolePermissions", rolePermissions);
+        result.put("roles", roles);
+        return result;
+    }
+
     @ApiOperation(value = "新增权限")
     @RequiresPermissions("upms:permission:create")
     @RequestMapping(value = "/create", method = RequestMethod.GET)

+ 37 - 0
zheng-upms/zheng-upms-server/src/main/java/com/zheng/upms/server/controller/manage/UpmsRoleController.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;
@@ -9,6 +11,9 @@ import com.zheng.upms.common.constant.UpmsResult;
 import com.zheng.upms.common.constant.UpmsResultConstant;
 import com.zheng.upms.dao.model.UpmsRole;
 import com.zheng.upms.dao.model.UpmsRoleExample;
+import com.zheng.upms.dao.model.UpmsRolePermission;
+import com.zheng.upms.dao.model.UpmsRolePermissionExample;
+import com.zheng.upms.rpc.api.UpmsRolePermissionService;
 import com.zheng.upms.rpc.api.UpmsRoleService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -21,6 +26,8 @@ import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -39,6 +46,9 @@ public class UpmsRoleController extends BaseController {
     @Autowired
     private UpmsRoleService upmsRoleService;
 
+    @Autowired
+    private UpmsRolePermissionService upmsRolePermissionService;
+
     @ApiOperation(value = "角色首页")
     @RequiresPermissions("upms:role:read")
     @RequestMapping(value = "/index", method = RequestMethod.GET)
@@ -55,6 +65,33 @@ public class UpmsRoleController extends BaseController {
         return "/manage/role/permission";
     }
 
+    @ApiOperation(value = "角色授权")
+    @RequiresPermissions("upms:role:permission")
+    @RequestMapping(value = "/permission/{id}", method = RequestMethod.POST)
+    @ResponseBody
+    public Object permission(@PathVariable("id") int id, HttpServletRequest request) {
+        JSONArray datas = JSONArray.parseArray(request.getParameter("datas"));
+        List<Integer> deleteIds = new ArrayList<>();
+        for (int i = 0; i < datas.size(); i ++) {
+            JSONObject json = datas.getJSONObject(i);
+            if (!json.getBoolean("checked")) {
+                deleteIds.add(json.getIntValue("id"));
+            } else {
+                // 加权限
+                UpmsRolePermission upmsRolePermission = new UpmsRolePermission();
+                upmsRolePermission.setRoleId(id);
+                upmsRolePermission.setPermissionId(json.getIntValue("id"));
+                upmsRolePermissionService.insertSelective(upmsRolePermission);
+            }
+        }
+        // 减权限
+        UpmsRolePermissionExample upmsRolePermissionExample = new UpmsRolePermissionExample();
+        upmsRolePermissionExample.createCriteria()
+            .andPermissionIdIn(deleteIds);
+        upmsRolePermissionService.deleteByExample(upmsRolePermissionExample);
+        return new UpmsResult(UpmsResultConstant.SUCCESS, datas.size());
+    }
+
     @ApiOperation(value = "角色列表")
     @RequiresPermissions("upms:role:read")
     @RequestMapping(value = "/list", method = RequestMethod.GET)

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

@@ -209,6 +209,7 @@ function deleteAction() {
 }
 // 授权
 var permissionDialog;
+var roleId;
 function permissionAction() {
 	var rows = $table.bootstrapTable('getSelections');
 	if (rows.length != 1) {
@@ -225,16 +226,19 @@ function permissionAction() {
 			}
 		});
 	} else {
+		roleId = rows[0].roleId;
 		permissionDialog = $.dialog({
 			animationSpeed: 300,
 			title: '角色授权',
-			content: 'url:${basePath}/manage/role/permission/' + rows[0].roleId,
+			content: 'url:${basePath}/manage/role/permission/' + roleId,
 			onContentReady: function () {
 				initMaterialInput();
+				initTree();
 			}
 		});
 	}
 }
+
 </script>
 </body>
 </html>

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

@@ -0,0 +1,132 @@
+<%@ page contentType="text/html; charset=utf-8"%>
+<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="spring"%>
+<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
+<%@taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
+<c:set var="basePath" value="${pageContext.request.contextPath}"/>
+<div id="permissionDialog" class="crudDialog">
+	<form id="permissionForm" method="post">
+		<div class="form-group">
+			<ul id="ztree" class="ztree"></ul>
+		</div>
+		<div class="form-group text-right dialog-buttons">
+			<a class="waves-effect waves-button" href="javascript:;" onclick="permissionSubmit();">保存</a>
+			<a class="waves-effect waves-button" href="javascript:;" onclick="permissionDialog.close();">取消</a>
+		</div>
+	</form>
+</div>
+<script>
+var changeDatas = [];
+var setting = {
+	check: {
+		enable: true,
+		// 勾选关联父,取消关联子
+		chkboxType: { "Y" : "p", "N" : "s" }
+	},
+	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;
+		}
+	},
+	data: {
+		simpleData: {
+			enable: true
+		}
+	},
+	callback: {
+		onCheck: function() {
+			var zTree = $.fn.zTree.getZTreeObj("ztree")
+			var changeNodes = zTree.getChangeCheckedNodes();
+			for (var i = 0; i < changeNodes.length; i ++) {
+				var changeData = {};
+				changeData.id = changeNodes[i].id;
+				changeData.checked = changeNodes[i].checked;
+				changeDatas.push(changeData);
+			}
+		}
+	}
+};
+function initTree() {
+	$.fn.zTree.init($('#ztree'), setting);
+}
+
+function permissionSubmit() {
+    $.ajax({
+        type: 'post',
+        url: '${basePath}/manage/role/permission/' + roleId,
+        data: {datas: JSON.stringify(changeDatas), roleId: roleId},
+        success: function(result) {
+			if (result.code != 1) {
+				if (result.data instanceof Array) {
+					$.each(result.data, function(index, value) {
+						$.confirm({
+							theme: 'dark',
+							animation: 'rotateX',
+							closeAnimation: 'rotateX',
+							title: false,
+							content: value.errorMsg,
+							buttons: {
+								confirm: {
+									text: '确认',
+									btnClass: 'waves-effect waves-button waves-light'
+								}
+							}
+						});
+					});
+				} else {
+						$.confirm({
+							theme: 'dark',
+							animation: 'rotateX',
+							closeAnimation: 'rotateX',
+							title: false,
+							content: result.data.errorMsg,
+							buttons: {
+								confirm: {
+									text: '确认',
+									btnClass: 'waves-effect waves-button waves-light'
+								}
+							}
+						});
+				}
+			} else {
+				permissionDialog.close();
+				$table.bootstrapTable('refresh');
+			}
+        },
+        error: function(XMLHttpRequest, textStatus, errorThrown) {
+			$.confirm({
+				theme: 'dark',
+				animation: 'rotateX',
+				closeAnimation: 'rotateX',
+				title: false,
+				content: textStatus,
+				buttons: {
+					confirm: {
+						text: '确认',
+						btnClass: 'waves-effect waves-button waves-light'
+					}
+				}
+			});
+        }
+    });
+}
+</script>