七、组织机构模块-角色管理

实现角色管理,角色与用户之间多对多分配
代码下载:git clone –b day6 https://github.com/qixiangchen/gufang_fisys.git

角色接口IRole

package com.gf.statusflow;

public interface IRole
{
	public void setId(String id);
	public String getId();
	public void setName(String name);
	public String getName();
	public void setDescription(String description);
	public String getDescription();
	public void setFlag(String flag);
	public String getFlag();	
}

角色实现类DefaultRole

package com.gf.statusflow.def;

import com.gf.statusflow.IOrg;
import com.gf.statusflow.IRole;

public class DefaultRole implements IRole{
	private String id = null;
	private String name = null;
	private String description = null;
	private String flag = "gf";
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getDescription() {
		return description;
	}
	public void setDescription(String description) {
		this.description = description;
	}
	public String getFlag() {
		return flag;
	}
	public void setFlag(String flag) {
		this.flag = flag;
	}

}

用户角色关联接口

package com.gf.statusflow;

import java.util.Date;
import java.util.List;


public interface IOrgUserRole extends java.io.Serializable
{
	public String USER = "user";
	public String ORG = "org";
	
	public String getId();
	public void setId(String id);
	public String getEntityId();
	public void setEntityId(String entityId);
	public String getEntityType();
	public void setEntityType(String entityType);//entityType="user",entityType="org"
	public String getRoleId();
	public void setRoleId(String roleId);
	public String getFlag();
	public void setFlag(String flag);
	public String getEntityName();
	public void setEntityName(String entityName);
	public String getRoleName();
	public void setRoleName(String roleName);	
}

用户角色实体类

package com.gf.statusflow.def;

import com.gf.statusflow.IOrg;
import com.gf.statusflow.IOrgUserRole;

public class DefaultOrgUserRole implements IOrgUserRole{
	private String id = null;
	private String entityId = null;
	private String entityType = USER;
	private String roleId = null;
	private String flag = null;
	//冗余字段
	private String entityName = null;
	private String roleName = null;
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getEntityId() {
		return entityId;
	}
	public void setEntityId(String entityId) {
		this.entityId = entityId;
	}
	public String getEntityType() {
		return entityType;
	}
	public void setEntityType(String entityType) {
		this.entityType = entityType;
	}
	public String getRoleId() {
		return roleId;
	}
	public void setRoleId(String roleId) {
		this.roleId = roleId;
	}
	public String getFlag() {
		return flag;
	}
	public void setFlag(String flag) {
		this.flag = flag;
	}
	public String getEntityName() {
		return entityName;
	}
	public void setEntityName(String entityName) {
		this.entityName = entityName;
	}
	public String getRoleName() {
		return roleName;
	}
	public void setRoleName(String roleName) {
		this.roleName = roleName;
	}

}

SQL

create table gf_role(id varchar(32),
	name varchar(100),
	description varchar(200),
	flag varchar(50));
create table gf_orguserrole(id varchar(32),
	entityid varchar(32),
	entitytype varchar(10),
	roleid varchar(32),
	flag varchar(50));

Mapper层设计

<!-- 角色相关SQL -->
	<insert id="saveRole" parameterType="com.gf.statusflow.def.DefaultRole">
		insert into gf_role(id,name,description,flag)
			values(#{id},#{name},#{description},#{flag})
	</insert>
	<update id="updateRole" parameterType="com.gf.statusflow.def.DefaultRole">
		update gf_role set name=#{name},description=#{description},flag=#{flag}
			where id=#{id}
	</update>
	<delete id="deleteRole">
		delete from gf_role where id=#{id}
	</delete>
	<select id="getAllRole" resultType="com.gf.statusflow.def.DefaultRole">
		select * from gf_role
	</select>
	<select id="getRoleById" resultType="com.gf.statusflow.def.DefaultRole">
		select * from gf_role where id=#{id}
	</select>
	
	<!-- 部门与角色,用户与角色相关SQL -->
	<insert id="saveOrgUserRole" parameterType="com.gf.statusflow.def.DefaultOrgUserRole">
		insert into gf_orguserrole(id,entityid,entitytype,roleid,flag)
			values(#{id},#{entityId},#{entityType},#{roleId},#{flag})
	</insert>
	<delete id="deleteOrgUserRoleByEntityId">
		delete from gf_orguserrole where entityid=#{entityId}
	</delete>
	<select id="getOrgUserRoleByEntityId" resultType="com.gf.statusflow.def.DefaultOrgUserRole">
		select * from gf_orguserrole where entityid=#{entityId}
	</select>

组织机构接口IOrgModel修改

/**
	 * 角色相关Mybatis方法
	 */
	public void saveRole(DefaultRole role);
	public void updateRole(DefaultRole role);
	public void deleteRole(String id);
	public List<DefaultRole> getAllRole();
	public DefaultRole getRoleById(String id);
	
	/**
	 * 部门与角色,用户与角色相关SQ
	 */
	public void saveOrgUserRole(DefaultOrgUserRole our);
	public void deleteOrgUserRoleByEntityId(String entityId);
	public List<DefaultOrgUserRole> getOrgUserRoleByEntityId(String entityId);

组织机构实现类DefaultOrgModel

/**
	 * 角色相关Mybatis方法
	 */
	@Override
	public void saveRole(DefaultRole role) {
		try
		{
			mapper.saveRole(role);
		}
		catch(Exception e)
		{
			log.error(e.getMessage());
		}
	}
	@Override
	public void updateRole(DefaultRole role) {
		try
		{
			mapper.updateRole(role);
		}
		catch(Exception e)
		{
			log.error(e.getMessage());
		}
	}
	@Override
	public void deleteRole(String id) {
		try
		{
			mapper.deleteRole(id);
		}
		catch(Exception e)
		{
			log.error(e.getMessage());
		}
	}
	@Override
	public List<DefaultRole> getAllRole() {
		try
		{
			return mapper.getAllRole();
		}
		catch(Exception e)
		{
			log.error(e.getMessage());
		}
		return null;
	}
	@Override
	public DefaultRole getRoleById(String id) {
		try
		{
			return mapper.getRoleById(id);
		}
		catch(Exception e)
		{
			log.error(e.getMessage());
		}
		return null;
	}
	
	/**
	 * 部门与角色,用户与角色相关SQ
	 */
	@Override
	public void saveOrgUserRole(DefaultOrgUserRole our) {
		try
		{
			mapper.saveOrgUserRole(our);
		}
		catch(Exception e)
		{
			log.error(e.getMessage());
		}
	}
	@Override
	public void deleteOrgUserRoleByEntityId(String entityId) {
		try
		{
			mapper.deleteOrgUserRoleByEntityId(entityId);
		}
		catch(Exception e)
		{
			log.error(e.getMessage());
		}
	}
	@Override
	public List<DefaultOrgUserRole> getOrgUserRoleByEntityId(String entityId) {
		try
		{
			return mapper.getOrgUserRoleByEntityId(entityId);
		}
		catch(Exception e)
		{
			log.error(e.getMessage());
		}
		return null;
	}

Controller层设计

@RequestMapping("/userquery")
	@ResponseBody
	public Map userquery(Integer page,Integer rows,String qname)
	{
		if(page == null)
			page = 1;
		if(rows == null)
			rows = 10;
		Map m = new HashMap();
		PageHelper.startPage(page,rows);
		List<DefaultUser> list = orgmodel.findUserByName(qname);
		PageInfo pi = new PageInfo(list);
		Long total = pi.getTotal();
		List<DefaultUser> users = pi.getList();
		m.put("total", total);
		m.put("rows", users);
		return m;
	}

	
	@RequestMapping("/role")
	public String role()
	{
		return "/orgmodel/role";
	}
	
	@RequestMapping("/roleload")
	@ResponseBody
	public Map roleload(Integer page,Integer rows)
	{
		if(page == null)
			page = 1;
		if(rows == null)
			rows = 10;
		Map m = new HashMap();
		PageHelper.startPage(page,rows);
		List<DefaultRole> list = orgmodel.getAllRole();
		PageInfo pi = new PageInfo(list);
		Long total = pi.getTotal();
		List<DefaultRole> users = pi.getList();
		m.put("total", total);
		m.put("rows", users);
		return m;
	}
	
	@RequestMapping("/rolesave")
	@ResponseBody
	public Boolean rolesave(DefaultRole role)
	{
		log.debug("rolesave role="+role);
		String id = role.getId();
		if("".equals(Util.fmtStr(id)))
		{
			id = UUID.create("role");
			role.setId(id);
			orgmodel.saveRole(role);
		}
		else
		{
			orgmodel.updateRole(role);
		}
		return true;
	}
	
	@RequestMapping("/roledelete")
	@ResponseBody
	public Boolean roledelete(String[] id)
	{
		log.debug("roledelete id="+id);
		if(id != null)
		{
			for(String id2:id)
				orgmodel.deleteRole(id2);
		}
		return true;
	}
	
	@RequestMapping("/roleuser")
	public String orguserrole()
	{
		return "/orgmodel/orguserrole";
	}
	
	@RequestMapping("/roleroot")
	@ResponseBody
	public List<TreeNode> roleroot()
	{
		List<TreeNode> rtn = new ArrayList<TreeNode>();
		TreeNode root = new TreeNode();
		root.setId("root");
		root.setText("角色树");
		rtn.add(root);
		List<DefaultRole> roles = orgmodel.getAllRole();
		for(DefaultRole role:roles)
		{
			TreeNode tn = new TreeNode();
			tn.setId(role.getId());
			tn.setText(role.getName());
			root.addChild(tn);
		}

		return rtn;
	}

页面orguserrole.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	String menu = (String)request.getAttribute("menu");
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<script type="text/javascript" src="/easyui/jquery.min.js"></script>
<script type="text/javascript" src="/easyui/jquery.easyui.min.js"></script>
<script type="text/javascript" src="/easyui/easyui-lang-zh_CN.js"></script>
<link rel="stylesheet" href="/easyui/themes/default/easyui.css"/>
<link rel="stylesheet" href="/easyui/themes/icon.css"/>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>财务报销系统</title>
<script>
function reloadtree()
{
	//$('#tree').tree('loadData',[{"id":"1","text":"Root","iconCls":null,"url":null,"state":"closed","attributes":{"type":"system","isload":"false","path":"/","parentId":null}}]);
	$.get('/roleroot',function(data)
		{
			$('#tree').tree({
				data: data
			});
		}
	)
}
function queryuser()
{
	var qname = $('#qname').val();
	$('#userdg').datagrid({
		url:'/userquery?qname='+qname
	})
}
function saveroleuser()
{
	var nodes = $('#tree').tree('getChecked');
	var roleid = '';
	for(var i=0;i<nodes.length;i++)
	{
		if('root' != nodes[i].id)
			roleid = roleid + nodes[i].id + ',';
	}
	var users = $('#userdg').datagrid('getChecked');
	var userid = '';
	for(var i=0;i<users.length;i++)
		userid = userid + users[i].id;
	$.ajax({
		url:'/roleassign?roleId='+roleid+"&userId="+userid,
		success:function(data)
		{
			queryuser();
		}
	})
}
function openuser(index, row)
{
	$('#win').window('open');
	var userId = row.id;
	$('#userroledg').datagrid({
		url:'/userrolequery?userId='+userId
	})
}
function deluserrole()
{
	var objs = $('#userroledg').datagrid('getChecked');
	var id = '';
	for(i=0;i<objs.length;i++)
	{
		id = id + objs[i].id + ',';
		userId = objs[i].userId;
	}
	$.ajax({
		url:'/userroledel?id='+id,
		success:function(data)
		{
			$('#userroledg').datagrid({
				url:'/userrolequery?userId='+userId
			})
		}
	})
}
$(document).ready(
		function()
		{
			reloadtree();
			$('#win').window('close');
			
			$('#userdg').datagrid({
				'onClickRow':openuser
			})
		}
	);		
</script>
</head>
<body class="easyui-layout">
    <div data-options="region:'west',title:'角色树'" style="width:250px;">
		<ul id="tree" class="easyui-tree" data-options="lines:true,checkbox:true,cascadeCheck:false">   
		</ul> 
    </div>
    <div data-options="region:'center',title:'用户查询'" style="padding:5px;">
		<table id="userdg" class="easyui-datagrid" style="width:100%;height:250px"   
		        data-options="url:'/userquery',fitColumns:true,pagination:true,
		        pageSize:10,pageList:[10,50,100,200],toolbar:'#tb'">   
		    <thead>   
		        <tr>
		        	<th data-options="field:'id',width:100,checkbox:true">ID</th>   
		            <th data-options="field:'loginId',width:100">登录ID</th>   
		            <th data-options="field:'name',width:100">姓名</th>   
		            <th data-options="field:'mobile',width:100">手机</th>
					<th data-options="field:'roleName',width:100">已分配角色</th>
		        </tr>   
		    </thead>   
		</table>
		<div id="tb">
			<input class="easyui-textbox" type="text" id="qname" name="qname" data-options="width:250,label:'输入用户名称:'" />
			<a id="btn" onclick="queryuser()" class="easyui-linkbutton" data-options="iconCls:'icon-search'">查询</a>
			<a id="btn" onclick="saveroleuser()" class="easyui-linkbutton" data-options="iconCls:'icon-search'">保存</a>
		</div>
		
		<div id="win" class="easyui-window" title="用户角色授权窗口" style="width:600px;height:320px"   
		        data-options="iconCls:'icon-save',modal:true">   
		    <div class="easyui-layout" data-options="fit:true">  
				<table id="userroledg" class="easyui-datagrid" style="width:100%;height:250px"   
				        data-options="url:'/userrolequery',fitColumns:true,pagination:true,
				        pageSize:10,pageList:[10,50,100,200]">   
				    <thead>   
				        <tr>
				        	<th data-options="field:'id',width:100,checkbox:true">ID</th>    
				            <th data-options="field:'name',width:100">姓名</th>
				            <th data-options="field:'userId',width:100">姓名</th>     
							<th data-options="field:'roleName',width:100">角色</th>
				        </tr>   
				    </thead>   
				</table>
				<a id="btn" onclick="deluserrole()" class="easyui-linkbutton" data-options="iconCls:'icon-search'">删除</a>
				<a id="btn" onclick="closeuserrole()" class="easyui-linkbutton" data-options="iconCls:'icon-search'">关闭</a>
			</div>
		</div>

    </div>
</body>
</html>

批量授权页面

管理员可以选择多个角色和多个用户,批量进行授权。

在这里插入图片描述
删除某用户已分配角色
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值