您的位置:首页 > 其它

权限树问题

2016-06-14 20:20 316 查看


1.前台jsp

<body>

<table id="role_tb">

</table>

<!-- 权限编辑窗口 -->

<div id="win" class="easyui-window" title="权限编辑"

style="width: 500px; height: 250px;" closed="true">

<form style="padding: 10px 20px 10px 40px;">

<ul id="tt" class="easyui-tree" url="../service/func/allTree" method="post"

checkbox="true">

</ul>

<div style="padding: 5px; text-align: center;">

<a href="#" class="easyui-linkbutton" icon="icon-ok" onclick="confrimEdit();">确定</a> <a

href="#" class="easyui-linkbutton" icon="icon-cancel" onclick="closeWin();">取消</a>

</div>

</form>

</div>

<!-- 角色用户编辑窗口 -->

<div id="roleUserWin" class="easyui-window" title="编辑管理员"

style="width: 500px; height: 250px;" closed="true">

<table id="roleUser_tb" toolbar="#addBar">

</table>

</div>

<!-- 角色用户编辑窗口工具栏 -->

<div id="addBar" style="padding: 3px">

<span>输入工号添加用户:</span> <input id="addUserId"

style="line-height: 26px; border: 1px solid #ccc">

<a href="#" class="easyui-linkbutton" plain="true" onclick="addRoleUser()">点击添加至管理员</a>

</div>

<script type="text/JavaScript"

src="<%=request.getContextPath()%>/js/admin/role.js"></script>

</body>

2.前台js

/**

* 初始化界面

*/

var dataGrid;

var editRowId;

var rowEditor = undefined;

$(function() {

dataGrid = $("#role_tb")

.datagrid(

{

url : "../service/role/all",// 加载的URL

isField : "id",

method : "GET",

pagination : false,// 显示分页

fit : true,// 自动补全

fitColumns : true,

singleSelect : true,

iconCls : "icon-save",// 图标

columns : [ [ // 每个列具体内容

{

field : 'id',

title : '编号',

align : 'center',

width : 100,

},

{

field : 'roleName',

title : '角色名称',

align : 'center',

width : 100,

editor : 'text'

},

{

field : 'createTm',

title : '创建时间',

align : 'center',

width : 100

},

{

field : 'isDelete',

title : '是否禁用',

align : 'center',

width : 100,

editor : {

type : 'checkbox',

options : {

on : '1',

off : '0'

}

},

formatter : function(value, row, index) {

if (value == '0') {

return '<span style="color:green">正常</span>';

} else {

return '<span style="color:red">禁用</span>';

}

}

},{

field : 'action',

title : '编辑权限',

align : 'center',

width : 100,

formatter : function(value, row, index) {

return "<a href='#' class='easyui-linkbutton' onclick='editRole("+row.id+")'>编辑权限</a>";

}

},{

field : 'roleUser',

title : '查看管理员',

align : 'center',

width : 100,

formatter : function(value, row, index) {

return "<a href='#' class='easyui-linkbutton' onclick='editRoleUser("+row.id+")'>查看管理员</a>";

}

} ] ],

toolbar : [ // 工具条

{

text : "增加",

iconCls : "icon-add",

handler : function() {// 回调函数

if (rowEditor == undefined) {

dataGrid.datagrid('insertRow', {// 如果处于未被点击状态,在第一行开启编辑

index : 0,

row : {}

});

rowEditor = 0;

dataGrid.datagrid('beginEdit',

rowEditor);// 没有这行,即使开启了也不编辑

}

}

},

{

text : "删除",

iconCls : "icon-remove",

handler : function() {

var rows = dataGrid

.datagrid('getSelections');

if (rows.length <= 0) {

$.messager.alert('警告', '您没有选择',

'error');

} else if (rows.length > 1) {

$.messager.alert('警告', '不支持批量删除',

'error');

} else {

$.messager

.confirm(

'确定',

'您确定要删除吗',

function(t) {

if (t) {

$.ajax({

url : '../service/role/del',

method : 'POST',

data : rows[0],

dataType : 'json',

success : function(

r) {

if (r.code=="1") {

dataGrid

.datagrid('acceptChanges');

$.messager

.show({

msg : r.msg,

title : '成功'

});

editRow = undefined;

dataGrid

.datagrid('reload');

} else {

dataGrid

.datagrid(

'beginEdit',

editRow);

$.messager

.alert(

'错误',

r.msg,

'error');

}

dataGrid

.datagrid('unselectAll');

}

});

}

})

}

}

},

{

text : "修改",

iconCls : "icon-edit",

handler : function() {

var rows = dataGrid

.datagrid('getSelections');

if (rows.length == 1) {

if (rowEditor == undefined) {

var index = dataGrid.datagrid(

'getRowIndex', rows[0]);

rowEditor = index;

dataGrid

.datagrid('unselectAll');

dataGrid.datagrid('beginEdit',

index);

}

}

}

},

/*{

text : "查询",

iconCls : "icon-search",

handler : function() {

}

},*/

{

text : "保存",

iconCls : "icon-save",

handler : function() {

dataGrid.datagrid('endEdit', rowEditor);

rowEditor = undefined;

}

}, {

text : "取消编辑",

iconCls : "icon-redo",

handler : function() {

rowEditor = undefined;

dataGrid.datagrid('rejectChanges');

}

} ],

onAfterEdit : function(rowIndex, rowData, changes) {

var inserted = dataGrid.datagrid('getChanges',

'inserted');

var updated = dataGrid.datagrid('getChanges',

'updated');

if (inserted.length < 1 && updated.length < 1) {

editRow = undefined;

dataGrid.datagrid('unselectAll');

return;

}

var url = '';

if (inserted.length > 0) {

url = '../service/role/add';

}

if (updated.length > 0) {

url = '../service/role/update';

}

$

.ajax({

url : url,

method : "POST",

data : rowData,

dataType : 'json',

success : function(r) {

if (r.code=="1") {

dataGrid

.datagrid('acceptChanges');

$.messager.show({

msg : r.msg,

title : '成功'

});

editRow = undefined;

dataGrid.datagrid('reload');

} else {

/* datagrid.datagrid('rejectChanges'); */

dataGrid.datagrid('beginEdit',

editRow);

$.messager.alert('错误', r.msg,

'error');

}

dataGrid.datagrid('unselectAll');

}

});

},

onDblClickCell : function(rowIndex, field, value) {

if (rowEditor == undefined) {

dataGrid.datagrid('beginEdit', rowIndex);

rowEditor = rowIndex;

}

}

});

});

function editRole(id){

editRowId = id;

//1.取消所有选择

//var root = $('#tt').tree('getRoot');

//$("#tt").tree('uncheck',root.target);

//2.加载权限,动态选择

var url = '../service/func/roleTree?roleId='+id;

$.ajax({

cache : true,

type : "POST",

url : url,

async : false,

success : function(data) {

data = JSON.parse(data);

$(data).each(function(i, obj){

var children = obj.children;

$(children).each(function(j,c_obj){

var cc = $("#tt").tree('find',c_obj.id);

if(cc){

$("#tt").tree('check',cc.target);

}

});

});

}

});

$("#win").window('open');

}

//获取选中节点和父节点

function getChecked(){

var nodesParent = $('#tt').tree('getChecked','indeterminate');

var nodes = $('#tt').tree('getChecked');

var s = '';

for (var i = 0; i < nodesParent.length; i++) {

if (s != '')

s += ',';

s += nodesParent[i].id;

}

for (var i = 0; i < nodes.length; i++) {

if (s != '')

s += ',';

s += nodes[i].id;

}

return s;

}

//提交修改

function confrimEdit(){

var funIds = getChecked();

var url = '../service/role/editFunc';

var data = {

"roleId" :editRowId,

"funcIds":funIds

};

$.ajax({

cache : true,

type : "POST",

url : url,

data: data,

async : true,

success : function(data) {

if (data == "1") {

$.messager.show({

msg : "操作成功",

title : '成功'

});

closeWin();

}else{

$.messager

.alert(

'错误',

"操作失败",

'error');

}

}

});

}

//关闭窗口

function closeWin(){

$('#tt').tree('reload');

$("#win").window('close');

}

//打开编辑管理员窗口

function editRoleUser(roleId){

editRowId = roleId;

var roleUserGrid = $("#roleUser_tb").datagrid(

{

url : "../service/role/getUsers?roleId="+roleId,// 加载的URL

isField : "user_id",

method : "POST",

pagination : false,// 显示分页

fit : true,// 自动补全

fitColumns : true,

singleSelect : true,

iconCls : "icon-save",// 图标

columns : [ [ // 每个列具体内容

{

field : 'user_id',

title : '用户编号',

align : 'center',

width : 100,

},{

field : 'userName',

title : '姓名',

align : 'center',

width : 100,

},{

field : 'empNo',

title : '工号',

align : 'center',

width : 100,

}

]]

});

$("#roleUserWin").window('open');

}

//输入工号添加用户至管理员

function addRoleUser(){

var empNo = $("#addUserId").val();

var url = '../service/role/addRoleUser';

var data = {

"roleId" :editRowId,

"empNo":empNo

};

$.ajax({

type : "POST",

url : url,

data: data,

dataType:'json',

success : function(data) {

if (data.flg == "1") {

$.messager.show({

msg : "操作成功",

title : '成功'

});

$("#roleUser_tb").datagrid('reload');

}else{

$.messager

.alert(

'错误',

data.msg,

'error');

}

}

});

}

3.后台controller

/**

*

*/

package com.sf.fys.controller.role;

import Java.util.ArrayList;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.ResponseBody;

import org.springframework.web.bind.annotation.RestController;

import com.sf.fys.config.LogAppender;

import com.sf.fys.configs.Message;

import com.sf.fys.controller.BaseController;

import com.sf.fys.data.Res;

import com.sf.fys.model.Role;

import com.sf.fys.model.RoleUser;

import com.sf.fys.model.User;

import com.sf.fys.model.UserInfo;

import com.sf.fys.result.ResultResponse;

import com.sf.fys.result.ReturnCode;

import com.sf.fys.result.StringResult;

import com.sf.fys.service.role.RoleService;

import com.sf.fys.service.user.UserService;

/**

* 角色权限管理

* @author sfit0512

*

*/

@RestController

public class RoleController extends BaseController

{

Logger log = Logger.getLogger(LogAppender.ADMIN);

@Autowired

private RoleService roleService;

@Autowired

private UserService userService;

/**

* 查询所有角色

* @return

*/

@RequestMapping(value = "/role/all", method = RequestMethod.GET)

public List<Role> getRoles()

{

List<Role> list = new ArrayList<Role>();

list = roleService.getRoles();

return list;

}

/**

* 添加角色

* @param request

* @param response

* @return

* @throws Exception

*/

@RequestMapping(value = "/role/add", method = RequestMethod.POST)

@ResponseBody

public Res addRole(HttpServletRequest request, HttpServletResponse response)

throws Exception

{

String roleName = request.getParameter("roleName");

String isDelete = request.getParameter("isDelete");

Role role = new Role(roleName, isDelete.charAt(0));

int ret = roleService.addRole(role);

if (ret > 0)

{

return success();

}

return fail();

}

/**

* 修改角色

* @param request

* @param response

* @return

* @throws Exception

*/

@RequestMapping(value = "/role/update", method = RequestMethod.POST)

@ResponseBody

public Res updateRole(HttpServletRequest request,

HttpServletResponse response) throws Exception

{

String roleName = request.getParameter("roleName");

String isDelete = request.getParameter("isDelete");

String id = request.getParameter("id");

Role role = new Role(roleName, isDelete.charAt(0));

role.setId(Long.parseLong(id));

int ret = roleService.updateRole(role);

if (ret > 0)

{

return success();

}

return fail();

}

/**

* 删除角色

* @param request

* @param response

* @return

* @throws Exception

*/

@RequestMapping(value = "/role/del", method = RequestMethod.POST)

@ResponseBody

public Res deleteRole(HttpServletRequest request,

HttpServletResponse response) throws Exception

{

String id = request.getParameter("id");

int ret = roleService.delRole(Long.parseLong(id));

if (ret > 0)

{

return success();

}

return fail();

}

/**

* 编辑角色功能

* @param request

* @param response

* @return

* @throws Exception

*/

@RequestMapping(value = "/role/editFunc", method = RequestMethod.POST)

@ResponseBody

public String editRoleFunction(HttpServletRequest request,

HttpServletResponse response) throws Exception

{

String roleId = request.getParameter("roleId");

String funcIds = request.getParameter("funcIds");

if (funcIds != null && !"".equals(funcIds))

{

int ret = roleService.updateRoleFunc(Long.parseLong(roleId),

funcIds);

if (ret > 0)

{

return "1";

}

}

return "0";

}

/**

* 根据角色编号查询该角色的所有用户

* @param request

* @param response

* @return

* @throws Exception

*/

@RequestMapping(value = "/role/getUsers", method = RequestMethod.POST)

@ResponseBody

public List<User> getUsersByRoleId(HttpServletRequest request,

HttpServletResponse response) throws Exception

{

String roleId = getParameter(request, "roleId");

log.info("getUsersByRoleId|roleId=" + roleId);

List<User> list = roleService.getUsersByRoleId(Long.parseLong(roleId));

return list;

}

/**

* 给用户赋予角色

* @param request

* @param response

* @return

* @throws Exception

*/

@RequestMapping(value = "/role/addRoleUser", method = RequestMethod.POST)

@ResponseBody

public ResultResponse addRoleUser(HttpServletRequest request,

HttpServletResponse response) throws Exception

{

String roleId = getParameter(request, "roleId");

String empNo = getParameter(request, "empNo");

log.info("addRoleUser|roleId=" + roleId + "|empNo=" + empNo);

List<UserInfo> list = userService.getUserByName("SF", empNo);

if(list==null || list.get(0).getUserId()<=0){

return new StringResult(ReturnCode.FAIL,Message.Error.USER_NOTE_EXITS, "");

}

long userId = list.get(0).getUserId();

RoleUser roleUser = new RoleUser();

roleUser.setRoleId(Long.parseLong(roleId));

roleUser.setUserId(userId);

int ret = roleService.addRoleUser(roleUser);

if (ret > 0)

{

return new StringResult(ReturnCode.SUCCESS,

ReturnCode.get(ReturnCode.SUCCESS), "");

}

else

{

return new StringResult(ReturnCode.FAIL,

ReturnCode.get(ReturnCode.FAIL), "");

}

}

/**

* 删除用户角色

* @param request

* @param response

* @return

* @throws Exception

*/

@RequestMapping(value = "/role/delRoleUser", method = RequestMethod.POST)

@ResponseBody

public ResultResponse delRoleUser(HttpServletRequest request,

HttpServletResponse response) throws Exception

{

String roleId = getParameter(request, "roleId");

String userId = getParameter(request, "userId");

log.info("addRoleUser|roleId=" + roleId + "|userId=" + userId);

RoleUser roleUser = new RoleUser();

roleUser.setRoleId(Long.parseLong(roleId));

roleUser.setUserId(Long.parseLong(userId));

int ret = roleService.delRoleUser(roleUser);

if (ret > 0)

{

return new StringResult(ReturnCode.SUCCESS,

ReturnCode.get(ReturnCode.SUCCESS), "");

}

else

{

return new StringResult(ReturnCode.FAIL,

ReturnCode.get(ReturnCode.FAIL), "");

}

}

}

4.后台service

@Service

public class RoleService {

@Autowired

private RoleMapper mapper;

@Autowired

private RoleUserMapper roleUserMapper;

/**

* 查询所有角色

* @return

*/

public List<Role> getRoles(){

return mapper.getRoles();

}

/**

* 添加角色

* @param role

* @return

*/

public int addRole(Role role){

return mapper.addRole(role);

}

/**

* 修改角色

* @param role

* @return

*/

public int updateRole(Role role){

return mapper.updateRole(role);

}

/**

* 删除角色

* @return

*/

public int delRole(long id){

return mapper.delRole(id);

}

/**

* 修改角色下的权限功能

* @param roleId 角色编号

* @param funcs 功能编号

* @return

*/

public int updateRoleFunc(long roleId,String funcs){

//1.删除该角色所有功能

mapper.deleteRoleFunc(roleId);

//2.添加新功能

int ret = 0;

String[] funcList = funcs.split(",");

for(String s:funcList){

ret += mapper.addRoleFunc(roleId,Long.parseLong(s));

}

return ret;

}

/**

* 根据角色编号查询该角色的所有用户

* @param roleId

* @return

*/

public List<User> getUsersByRoleId(long roleId){

return roleUserMapper.getUsersByRoleId(roleId);

}

/**

* 给用户赋予角色

* @param roleUser

* @return

*/

public int addRoleUser(RoleUser roleUser){

return roleUserMapper.addRoleUser(roleUser);

}

/**

* 取消用户角色

* @param roleUser

* @return

*/

public int delRoleUser(RoleUser roleUser){

return roleUserMapper.deleteRoleUser(roleUser);

}

}

5.mapper xml

<?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.sf.fys.mapper.role.RoleUserMapper">

<!-- 根据用户编号查询该用户拥有的角色 -->

<select id="getRoleByUserId" resultType="com.sf.fys.model.RoleUser">

select role_id as roleId,user_id as userId,create_tm

as createTm from

Role_User where user_id = #{userId,jdbcType=BIGINT}

</select>

<!-- 根据角色编号查询该角色下所有用户 -->

<select id="getUsersByRoleId" resultType="com.sf.fys.model.User">

select

u.user_id,u.user_name as userName,u.emp_no as empNo from Role_User ru

left join Users u on ru.user_id = u.user_id

where ru.role_id = #{roleId,jdbcType=BIGINT}

</select>

<!-- 给用户赋予角色 -->

<insert id="addRoleUser">

insert into Role_User(role_id,user_id,create_tm)

values(

#{roleId,jdbcType=BIGINT},

#{userId,jdbcType=BIGINT},

now()

)

</insert>

<!-- 删除用户角色 -->

<delete id="deleteRoleUser">

delete from Role_User where role_id =

#{roleId,jdbcType=BIGINT} and user_id = #{userId,jdbcType=BIGINT}

</delete>

</mapper>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: