完成给角色分配菜单和权限

lihaobo
luoyijiucheng 7 years ago
parent 570507f7cf
commit 1f04711ddf

@ -27,6 +27,11 @@ public class TreeNode {
private Boolean spread;
private List<TreeNode> children = new ArrayList<TreeNode>();
/**
* 0 1
*/
private String checkArr="0";
/**
*
* @param id
@ -58,4 +63,20 @@ public class TreeNode {
this.title = title;
this.spread = spread;
}
/**
*
* @param id
* @param pid
* @param title
* @param spread
* @param checkArr
*/
public TreeNode(Integer id, Integer pid, String title, Boolean spread, String checkArr) {
this.id = id;
this.pid = pid;
this.title = title;
this.spread = spread;
this.checkArr = checkArr;
}
}

@ -101,10 +101,10 @@ public class MenuController {
IPage<Permission> page = new Page<>(permissionVo.getPage(),permissionVo.getLimit());
//进行模糊查询
QueryWrapper<Permission> queryWrapper = new QueryWrapper<>();
queryWrapper.eq(permissionVo.getId()!=null,"id",permissionVo.getId()).or().eq(permissionVo.getId()!=null,"pid",permissionVo.getId());
//只能查询菜单
queryWrapper.eq("type",Constast.TYPE_MENU);
queryWrapper.like(StringUtils.isNotBlank(permissionVo.getTitle()),"title",permissionVo.getTitle());
queryWrapper.eq(permissionVo.getId()!=null,"id",permissionVo.getId()).or().eq(permissionVo.getId()!=null,"pid",permissionVo.getId());
queryWrapper.orderByAsc("ordernum");
//进行查询
permissionService.page(page,queryWrapper);

@ -44,7 +44,6 @@ public class PermissionController {
*/
@RequestMapping("loadPermissionManagerLeftTreeJson")
public DataGridView loadPermissionManagerLeftTreeJson(PermissionVo permissionVo){
QueryWrapper<Permission> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("type", Constast.TYPE_MENU);
//查询出所有的权限存放进list中
@ -72,7 +71,7 @@ public class PermissionController {
queryWrapper.eq("type",Constast.TYPE_PERMISSION);
queryWrapper.like(StringUtils.isNotBlank(permissionVo.getTitle()),"title",permissionVo.getTitle());
queryWrapper.like(StringUtils.isNotBlank(permissionVo.getPercode()),"percode",permissionVo.getPercode());
queryWrapper.eq(permissionVo.getId()!=null,"id",permissionVo.getId()).or().eq(permissionVo.getId()!=null,"pid",permissionVo.getId());
queryWrapper.eq(permissionVo.getId()!=null,"pid",permissionVo.getId());
queryWrapper.orderByAsc("ordernum");
//进行查询
permissionService.page(page,queryWrapper);

@ -1,13 +1,18 @@
package com.yeqifu.sys.controller;
import com.baomidou.mybatisplus.core.conditions.query.Query;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sun.org.apache.regexp.internal.RE;
import com.yeqifu.sys.common.Constast;
import com.yeqifu.sys.common.DataGridView;
import com.yeqifu.sys.common.ResultObj;
import com.yeqifu.sys.common.TreeNode;
import com.yeqifu.sys.entity.Permission;
import com.yeqifu.sys.entity.Role;
import com.yeqifu.sys.service.IPermissionService;
import com.yeqifu.sys.service.IRoleService;
import com.yeqifu.sys.vo.RoleVo;
import org.apache.commons.lang3.StringUtils;
@ -16,7 +21,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* <p>
@ -33,6 +40,9 @@ public class RoleController {
@Autowired
private IRoleService roleService;
@Autowired
private IPermissionService permissionService;
/**
*
* @param roleVo
@ -101,5 +111,61 @@ public class RoleController {
}
}
/**
* IDjson
* @param roleId
* @return
*/
@RequestMapping("initPermissionByRoleId")
public DataGridView initPermissionByRoleId(Integer roleId){
//查询所有可用的菜单和权限
QueryWrapper<Permission> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("available", Constast.AVAILABLE_TRUE);
List<Permission> allPermissions = permissionService.list(queryWrapper);
//1.首先根据角色id查询出当前角色所拥有的所有菜单的ID和权限的ID
List<Integer> currentRolePermissions = roleService.queryRolePermissionIdsByRid(roleId);
//2.根据查询出来的菜单ID和权限ID再查询出菜单的数据和权限的数据
List<Permission> currentPermissions = null;
//如果根据角色id查询出来了菜单ID或权限ID就去查询
if (currentRolePermissions.size()>0){
queryWrapper.in("id",currentRolePermissions);
currentPermissions = permissionService.list(queryWrapper);
}else {
currentPermissions = new ArrayList<>();
}
//构造List<TreeNode>
List<TreeNode> nodes = new ArrayList<>();
for (Permission allPermission : allPermissions) {
String checkArr = "0";
for (Permission currentPermission : currentPermissions) {
if (allPermission.getId().equals(currentPermission.getId())){
checkArr = "1";
break;
}
}
Boolean spread = (allPermission.getOpen()==null||allPermission.getOpen()==1)?true:false;
nodes.add(new TreeNode(allPermission.getId(),allPermission.getPid(),allPermission.getTitle(),spread,checkArr));
}
return new DataGridView(nodes);
}
/**
*
* @param rid
* @param ids
* @return
*/
@RequestMapping("saveRolePermission")
public ResultObj saveRolePermission(Integer rid,Integer[] ids){
try {
roleService.saveRolePermission(rid,ids);
return ResultObj.DISPATCH_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return ResultObj.DISPATCH_ERROR;
}
}
}

@ -6,6 +6,7 @@ import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.io.Serializable;
import java.util.List;
/**
* <p>
@ -29,4 +30,18 @@ public interface RoleMapper extends BaseMapper<Role> {
* @param id id
*/
void deleteUserRoleByRid(@Param("pid") Serializable id);
/**
* IDIDID
* @param roleId
* @return
*/
List<Integer> queryRolePermissionIdsByRid(@Param("roleId") Integer roleId);
/**
*
* @param rid
* @param pid
*/
void saveRolePermission(@Param("rid") Integer rid,@Param("pid") Integer pid);
}

@ -3,6 +3,8 @@ package com.yeqifu.sys.service;
import com.yeqifu.sys.entity.Role;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* <p>
* InnoDB free: 9216 kB
@ -13,4 +15,17 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface IRoleService extends IService<Role> {
/**
* IDIDID
* @param roleId
* @return
*/
List<Integer> queryRolePermissionIdsByRid(Integer roleId);
/**
*
* @param rid
* @param ids
*/
void saveRolePermission(Integer rid, Integer[] ids);
}

@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.io.Serializable;
import java.util.List;
/**
* <p>
@ -27,4 +28,31 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
this.getBaseMapper().deleteUserRoleByRid(id);
return super.removeById(id);
}
/**
* IDIDID
* @param roleId
* @return
*/
@Override
public List<Integer> queryRolePermissionIdsByRid(Integer roleId) {
return this.getBaseMapper().queryRolePermissionIdsByRid(roleId);
}
/**
*
* @param rid
* @param ids
*/
@Override
public void saveRolePermission(Integer rid, Integer[] ids) {
RoleMapper roleMapper = this.getBaseMapper();
//根据rid删除sys_role_permission
roleMapper.deleteRolePermissionByRid(rid);
if (ids!=null&&ids.length>0){
for (Integer pid : ids){
roleMapper.saveRolePermission(rid,pid);
}
}
}
}

@ -1,10 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yeqifu.sys.mapper.RoleMapper">
<delete id="deleteRolePermissionByRid">
delete from sys_role_permission where rid = #{pid}
</delete>
<delete id="deleteUserRoleByRid">
delete from sys_user_role where rid = #{pid}
</delete>
<!--IDsys_role_permission-->
<delete id="deleteRolePermissionByRid">
delete from sys_role_permission where rid = #{pid}
</delete>
<!--IDsys_user_role-->
<delete id="deleteUserRoleByRid">
delete from sys_user_role where rid = #{pid}
</delete>
<!--IDIDID-->
<select id="queryRolePermissionIdsByRid" resultType="java.lang.Integer">
select pid from sys_role_permission where rid = #{roleId}
</select>
<!---->
<insert id="saveRolePermission">
insert into sys_role_permission(rid,pid) values (#{rid},#{pid})
</insert>
</mapper>

@ -11,11 +11,10 @@
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="format-detection" content="telephone=no">
<link rel="icon" href="/resources/favicon.ico">
<!--<link rel="stylesheet" href="resources/layui/css/layui.css" media="all" />
<link rel="stylesheet" href="resources/css/public.css" media="all" />-->
<link rel="stylesheet" href="resources/layui/css/layui.css" th:href="@{/resources/layui/css/layui.css}"
media="all"/>
<link rel="stylesheet" href="resources/layui/css/layui.css" th:href="@{/resources/layui/css/layui.css}" media="all"/>
<link rel="stylesheet" href="resources/css/public.css" th:href="@{/resources/css/public.css}" media="all"/>
<link rel="stylesheet" th:href="@{/resources/layui_ext/dtree/dtree.css}" media="all"/>
<link rel="stylesheet" th:href="@{/resources/layui_ext/dtree/font/dtreefont.css}" media="all"/>
</head>
<body class="childrenBody">
<!---->
@ -133,15 +132,22 @@
</form>
</div>
<div id="selectRolePermissionDiv" style="display: none;">
<ul id="permissionTree" class="dtree" data-id="0"></ul>
</div>
<script type="text/javascript" src="/resources/layui/layui.js"></script>
<script type="text/javascript">
layui.use(['jquery', 'form', 'layer', 'laydate', 'table'], function () {
layui.extend({
dtree: '/resources/layui_ext/dtree/dtree'
}).use(['jquery', 'form', 'layer', 'laydate', 'table','dtree'], function () {
var $ = layui.jquery;
var form = layui.form;
var layer = layui.layer;
var laydate = layui.laydate;
var table = layui.table;
var dtree = layui.dtree;
//初始化时间选择器
laydate.render({
elem: "#startTime",
@ -294,6 +300,47 @@
});
}
//打开分配权限弹出层
function selectPermission(data) {
mainIndex = layer.open({
type:1,
content:$("#selectRolePermissionDiv"),
area:['400px','580px'],
title:'给'+data.name+'',
btn: ['<span class=layui-icon>&#xe605;</span>','<span class=layui-icon>&#x1006;</span>'],
btnAlign:'c',
yes: function(index, layero){
var permissionData = dtree.getCheckbarNodesParam("permissionTree");
var params = "rid="+data.id;
console.log(params);
$.each(permissionData,function (index, item) {
params+="&ids="+item.nodeId;
});
$.post("/role/saveRolePermission",params,function (res) {
layer.msg(res.msg);
});
layer.close(mainIndex);
},
btn2: function(index, layero){
//关闭弹出层
},
success:function () {
//根据角色ID请求权限和菜单tree的json数据
dtree.render({
elem:"#permissionTree",
url:"/role/initPermissionByRoleId?roleId="+data.id,
//使用layui风格的数据格式
dataStyle:"layuiStyle",
//配置data的风格为list
dataFormat:"list",
//修改response中返回数据的定义
response:{message:"msg",statusCode:0},
checkbar:true,
checkbarType:"all"
});
}
});
}
});

Loading…
Cancel
Save