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" οnclick="confrimEdit();">确定</a> <a
href="#" class="easyui-linkbutton" icon="icon-cancel" οnclick="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" οnclick="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' οnclick='editRole("+row.id+")'>编辑权限</a>";
}
},{
field : 'roleUser',
title : '查看管理员',
align : 'center',
width : 100,
formatter : function(value, row, index) {
return "<a href='#' class='easyui-linkbutton' οnclick='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), "");
}
}
}
/**
*
*/
package com.aiw.ck.controller.role;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
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.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.aiw.ck.controller.BaseController;
import com.aiw.ck.data.Res;
import com.aiw.ck.data.TreeGrid;
import com.aiw.ck.model.role.Function;
import com.aiw.ck.service.role.FunctionService;
import com.aiw.ck.util.StrUtil;
import com.google.gson.Gson;
/**
* @author sfit0512
*
*/
@RestController
public class FuncController extends BaseController {
Logger log = Logger.getLogger(FuncController.class);
@Autowired
private FunctionService funcService;
Gson gson = new Gson();
@RequestMapping(value = "/func/allTree", method = RequestMethod.POST)
@ResponseBody
public String getFuncsTree(HttpServletRequest request,
HttpServletResponse response) throws Exception {
List<Function> list = funcService.getFuncs();
if(list.size()>0){
String ret = gson.toJson(list);
ret = ret.replace("funcName", "text");
return ret;
}
return FAIL;
}
/**
* 分页查询功能
* @return
*/
@RequestMapping(value = "/func/getFuncQueryPage", method = RequestMethod.GET)
@ResponseBody
public String getFuncQueryPage(@RequestParam("page") int index,@RequestParam("rows") int size) throws Exception {
List<Function> list = funcService.getFuncQueryPage(index, size);
if (list.size()>0) {
long total = funcService.getTotalCount();
Map<String, Object> ret = new HashMap<String, Object>();
ret.put("total", total);
ret.put("rows", list);
return gson.toJson(ret);
} else {
return FAIL;
}
}
/**
* 获取角色权限树
* @param request
* @param response
* @return
* @throws Exception
*/
@RequestMapping(value = "/func/roleTree", method = RequestMethod.POST)
@ResponseBody
public String getFuncsTreeByRole(HttpServletRequest request,
HttpServletResponse response) throws Exception {
try {
String roleId = request.getParameter("roleId");
if (StrUtil.notBlank(roleId)) {
Gson gson = new Gson();
List<Function> list = funcService.getFuncsByRoleTree(Long.parseLong(roleId));
if(list.size()>0){
String ret = gson.toJson(list);
ret = ret.replace("funcName", "text");
return ret;
}
}
} catch (Exception e) {
// TODO: handle exception
log.error("FuncController 的方法 getFuncsTreeByRole 执行出错,原因:" + e, e);
}
return FAIL;
}
/**
* 获取角色权限
* @param request
* @param response
* @return
* @throws Exception
*/
@RequestMapping(value = "/func/getFuncsByRole", method = RequestMethod.POST)
@ResponseBody
public String getFuncsByRole(HttpServletRequest request,
HttpServletResponse response) throws Exception {
try {
//获取登录用户id
Long userId = (Long)request.getSession().getAttribute("userId");
if (userId>0) {
Gson gson = new Gson();
List<Function> list = funcService.getFuncsByRole(userId);
if(list.size()>0){
String ret = gson.toJson(list);
return ret;
}
}
} catch (Exception e) {
// TODO: handle exception
log.error("FuncController 的方法 getFuncsByRole 执行出错,原因:" + e, e);
}
return FAIL;
}
/**
*
* @param request
* @param response
* @return
* @throws Exception
*/
@RequestMapping(value = "/func/all", method = RequestMethod.GET)
@ResponseBody
public String getFuncs(HttpServletRequest request,
HttpServletResponse response) throws Exception {
Gson gson = new Gson();
try {
//List<Function> list = funcService.getFunctions();
List<Function> list = funcService.getFuncs();
TreeGrid<Function> treeGrid = new TreeGrid<Function>();
treeGrid.setTotal(String.valueOf(list.size()));
treeGrid.setRows(list);
if(!list.isEmpty()){
String ret = gson.toJson(treeGrid);
return ret;
}
} catch (Exception e) {
// TODO: handle exception
log.error("FuncController 的方法 getFuncs 执行出错,原因:" + e, e);
}
return FAIL;
}
/**
*
* @param request
* @param response
* @return
* @throws Exception
*/
@RequestMapping(value = "/func/add", method = RequestMethod.POST)
@ResponseBody
public Res addFunc(HttpServletRequest request,
HttpServletResponse response) throws Exception {
try {
String funcName = request.getParameter("funcName");
String parentId = request.getParameter("parentId");
String url = request.getParameter("url");
Function func = new Function();
func.setFuncName(funcName);
if (StrUtil.notBlank(parentId)) {
func.setParentId(Long.parseLong(parentId));
}
func.setUrl(url);
func.setIsDelete('0');
int ret = funcService.addFunc(func);
if(ret>0){
return success();
}
} catch (Exception e) {
// TODO: handle exception
log.error("FuncController 的方法 addFunc 执行出错,原因:" + e, e);
}
return fail();
}
/**
*
* @param request
* @param response
* @return
* @throws Exception
*/
@RequestMapping(value = "/func/update", method = RequestMethod.POST)
@ResponseBody
public Res updateFunc(HttpServletRequest request,
HttpServletResponse response) throws Exception {
int ret = -1;
try {
String funcName = request.getParameter("funcName");
String parentId = request.getParameter("parentId");
String url = request.getParameter("url");
String isDelete = request.getParameter("isDelete");
String id = request.getParameter("id");
//
if("".equals(parentId)){
parentId = "0";
}
Function func = new Function();
func.setFuncName(funcName);
func.setParentId(Long.parseLong(parentId));
func.setUrl(url);
func.setIsDelete(isDelete.charAt(0));
func.setId(Long.parseLong(id));
ret = funcService.updateFunc(func);
} catch (Exception e) {
// TODO: handle exception
log.error("FuncController 的方法 updateFunc 执行出错,原因:" + e, e);
}
if(ret>0){
return success();
}
return fail();
}
/**
*
* @param request
* @param response
* @return
* @throws Exception
*/
@RequestMapping(value = "/func/del", method = RequestMethod.POST)
@ResponseBody
public Res deleteFunc(HttpServletRequest request,
HttpServletResponse response) throws Exception {
try {
String id = request.getParameter("id");
int ret = funcService.deleteFunc(Long.parseLong(id));
if(ret>0){
return success();
}
} catch (Exception e) {
// TODO: handle exception
log.error("FuncController 的方法 deleteFunc 执行出错,原因:" + e, e);
}
return fail();
}
/**
* 角色权限添加
* @param request
* @param response
* @return
* @throws Exception
*/
@RequestMapping(value = "/roleFunc/add", method = RequestMethod.GET)
@ResponseBody
public Res addRoleFunc(HttpServletRequest request,
HttpServletResponse response) throws Exception {
try {
String nodes = request.getParameter("nodes");
String roleId = request.getParameter("roleId");
Function func = new Function();
if (StrUtil.notBlank(nodes)) {
func.setFuncName(nodes);
}
if (StrUtil.notBlank(roleId)) {
func.setRoleId(Long.parseLong(roleId));
}
int ret = funcService.addRoleFunction(func);
if(ret>0){
return success();
}
} catch (Exception e) {
// TODO: handle exception
log.error("FuncController 的方法 addRoleFunc 执行出错,原因:" + e, e);
}
return 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);
}
}
/**
*
*/
package com.aiw.ck.service.role;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.aiw.base.AiwSpringService;
import com.aiw.ck.data.WebConstants;
import com.aiw.ck.mapper.role.FunctionMapper;
import com.aiw.ck.mapper.user.UserMapper;
import com.aiw.ck.model.role.Function;
import com.aiw.ck.util.StrUtil;
/**
* 功能权限管理
* @author sfit0512
*
*/
@Service
public class FunctionService extends AiwSpringService{
@Autowired
private FunctionMapper functionMapper;
@Autowired
private UserMapper userMapper;
/**
* 分页查询功能列表
* @return
*/
public List<Function> getFuncQueryPage(int index,int size){
if(index >0 && size >0){
HashMap<String, Integer> page = new HashMap<String, Integer>();
page.put("pageIndex", (index-1)*size);
page.put("pageSize", size);
List<Function> list = functionMapper.getFuncsQueryPage(page);
if(list.isEmpty()){
return null;
}else {
List<Function> newList = getTree(list);
return newList;
}
}else {
return null;
}
}
/**
* 获取所有记录数,用于分页显示
* @return
*/
public long getTotalCount(){
return functionMapper.getTotalCount();
}
/**
* 查询所有功能列表
* @return
*/
public List<Function> getFuncs(){
List<Function> list = functionMapper.getFuncs();
List<Function> newList = getTree(list);
return newList;
}
/**
* 根据角色查询功能列表
* @param roleId
* @return
*/
public List<Function> getFuncsByRole(long userId){
//查询用户角色
List<Function> list = new ArrayList<Function>();
List<Function> funcList = functionMapper.getFuncsByRole(userId);
if(funcList!=null &&!funcList.isEmpty()){
for(Function func:funcList){
boolean existFlg = false;
for(Function retFunc:list){
if(retFunc.getId()==func.getId()){
existFlg = true;
break;
}
}
if(!existFlg){
list.add(func);
}
}
}
return list;
}
/**
* 根据角色查询功能列表
* @param roleId
* @return
*/
public List<Function> getFuncsByRoleTree(long roleId){
//获取用户权限
List<Function> list = functionMapper.getFuncsByRole(roleId);
//获取全部权限
List<Function> listall = functionMapper.getFuncs();
for (Function function : list) {
for (Function function2 : listall) {
if (function.getId() == function2.getId()) {
boolean isParent = false;
for (Function function3 : listall) {
if (function3.getParentId()==function.getId()) {
isParent = true;
}
}
if (!isParent) {
function2.setChecked(WebConstants.CHECKDE_TRUE);
}
}
}
}
List<Function> newList = getTree(listall);
return newList;
}
/**
* 转成树形集合
* @param list
* @return
*/
public List<Function> getTree(List<Function> list){
List<Function> nodeList = new ArrayList<Function>();
for (Function f : list) {
boolean mark = false;
for (Function f2 : list) {
if (f.getParentId() == f2.getId()) {
mark = true;
if (f2.getChildren() == null) {
f2.setChildren(new ArrayList<Function>());
}
f2.getChildren().add(f);
break;
}
}
if (!mark) {
nodeList.add(f);
}
}
return nodeList;
}
/**
* 添加功能
* @param func
* @return
*/
public int addFunc(Function func){
return functionMapper.addFunction(func);
}
/**
* 修改功能
* @param func
* @return
*/
public int updateFunc(Function func){
return functionMapper.updateFunction(func);
}
/**
* 删除功能
* @param id
* @return
*/
public int deleteFunc(long id){
return functionMapper.delFunction(id);
}
/**================角色·权限===============**/
/**
* 根据角色Id查询是否存在角色权限
* @return
*/
public long getRoleFuncCountByRoleId(long roleid){
return functionMapper.getRoleFuncCountByRoleId(roleid);
}
/**
* 添加角色功能
* @param func
* @return
*/
public int addRoleFunction(Function func){
int re = 1;
if (this.getRoleFuncCountByRoleId(func.getRoleId())>0) {
//先删除权限
re = this.delRoleFunction(func.getRoleId());
}
if (re > 0) {
String fucString = func.getFuncName();
if (StrUtil.notBlank(fucString)) {
String[] id = fucString.split(",");
String[] ids = array_unique(id);
for (int i = 0; i < ids.length; i++) {
func.setId(Long.parseLong(ids[i]));
re = functionMapper.addRoleFunction(func);
if (re<=0) {
re = -1;
break;
}
}
}
}
return re;
}
//去除数组中重复的记录
public static String[] array_unique(String[] a) {
// array_unique
List<String> list = new LinkedList<String>();
for(int i = 0; i < a.length; i++) {
if(!list.contains(a[i])) {
list.add(a[i]);
}
}
return (String[])list.toArray(new String[list.size()]);
}
/**
* 删除角色功能
* @param id
* @return
*/
public int delRoleFunction(long id){
return functionMapper.delRoleFunction(id);
}
public List<Function> findFunsByUserId(long userId){
return functionMapper.findFunsByUserId(userId);
}
}
5.mapper.java
package com.aiw.ck.mapper.role;
import java.util.HashMap;
import java.util.List;
import com.aiw.base.AiwMyBaitsMapper;
import com.aiw.ck.model.role.Role;
public interface RoleMapper extends AiwMyBaitsMapper {
/**
* 查询所有角色
* @return
*/
public List<Role> getRoles();
/**
* 分页查询角色
* @return
*/
public List<Role> getRolesQueryPage(HashMap<String, Integer> page);
/**
* 获取所有记录数,用于分页显示
* @return
*/
public long getTotalCount();
/**
* 添加角色
* @param Role
* @return
*/
public int addRole(Role Role);
/**
* 修改角色
* @param role
* @return
*/
public int updateRole(Role role);
/**
* 删除角色
* @param role
* @return
*/
public int delRole(long id);
}
package com.aiw.ck.mapper.role;
import java.util.HashMap;
import java.util.List;
import com.aiw.base.AiwMyBaitsMapper;
import com.aiw.ck.model.role.Function;
public interface FunctionMapper extends AiwMyBaitsMapper {
/**
* 分页查询功
* @return
*/
public List<Function> getFuncsQueryPage(HashMap<String, Integer> page);
public List<Function> findFunsByUserId(long userId);
/**
* 获取所有记录数,用于分页显示
* @return
*/
public long getTotalCount();
/**
* 查询功能列表
* @return
*/
public List<Function> getFuncs();
/**
* 查询功能列表
* @return
*/
public List<Function> getParentFunc();
/**
* 查询某角色拥有的权限
* @param roleId
* @return
*/
public List<Function> getFuncsByRole(long roleId);
/**
* 查询某角色拥有的权限
* @param roleId
* @return
*/
public List<Function> getFuncsByRoleTree(long roleId);
/**
* 查询父功能下的子功能
* @param id
* @return
*/
public List<Function> getChildFunc(long id);
/**
* 增加功能
* @param func
* @return
*/
public int addFunction(Function func);
/**
* 修改功能
* @param func
* @return
*/
public int updateFunction(Function func);
/**
* 删除功能
* @param id
* @return
*/
public int delFunction(long id);
/**================角色·权限===============**/
/**
* 根据角色Id查询是否存在角色权限
* @return
*/
public long getRoleFuncCountByRoleId(long roleid);
/**
* 增加角色功能
* @param func
* @return
*/
public int addRoleFunction(Function func);
/**
* 删除角色功能
* @param roleid
* @return
*/
public int delRoleFunction(long roleid);
}
6.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>
<?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.aiw.ck.mapper.role.FunctionMapper">
<!-- 分页查询功能 -->
<select id="getFuncsQueryPage" resultType="com.aiw.ck.model.role.Function" parameterType="hashmap">
select func_id as id,func_name as funcName,
date_format(create_tm,'%Y-%c-%d %H:%i:%s') as
createTm,date_format(modified_tm,'%Y-%c-%d %H:%i:%s')
as modifiedTm,parent_id as parentId,url,is_delete as isDelete from functions
order by func_id desc
limit #{pageIndex},#{pageSize}
</select>
<!-- 查询记录的总数,用于分页显示 -->
<select id="getTotalCount" resultType="long">
select count(0) from functions
</select>
<!-- 查询所有功能 -->
<select id="getFuncs" resultType="com.aiw.ck.model.role.Function">
select func_id as
id,func_name as funcName,date_format(create_tm,'%Y-%c-%d %H:%i:%s') as
createTm,date_format(modified_tm,'%Y-%c-%d %H:%i:%s')
as modifiedTm,parent_id as parentId,url,is_delete as isDelete
from functions
where is_delete = 0
</select>
<select id="getFuncsByRole" resultType="com.aiw.ck.model.role.Function">
select f.func_id as
id,f.func_name as funcName,date_format(f.create_tm,'%Y-%c-%d %H:%i:%s') as
createTm,date_format(f.modified_tm,'%Y-%c-%d %H:%i:%s')
as modifiedTm,f.parent_id as parentId,f.url,f.is_delete as isDelete from functions f,
role_functions rf
where f.func_id = rf.func_id and f.is_delete = 0 and rf.role_id = #{roleId,jdbcType=BIGINT};
</select>
<!-- 查询所有父节点功能 -->
<select id="getParentFunc" resultType="com.aiw.ck.model.role.Function">
select func_id as
id,func_name as funcName,date_format(create_tm,'%Y-%c-%d %H:%i:%s') as
createTm,date_format(modified_tm,'%Y-%c-%d %H:%i:%s')
as modifiedTm,parent_id as parentId,url,is_delete as isDelete from functions
where parent_id = 0;
</select>
<!-- 查询父功能下的所有子功能 -->
<select id="getChildFunc" resultType="com.aiw.ck.model.role.Function">
select
func_id as
id,func_name as funcName,date_format(create_tm,'%Y-%c-%d %H:%i:%s') as
createTm,date_format(modified_tm,'%Y-%c-%d %H:%i:%s')
as modifiedTm,parent_id as parentId,url,is_delete as isDelete
from functions
where parent_id = #{id,jdbcType=BIGINT};
</select>
<!-- 添加功能 -->
<insert id="addFunction">
insert into
functions(FUNC_NAME,CREATE_TM,MODIFIED_TM,PARENT_ID,URL,IS_DELETE)
values(
#{funcName,jdbcType=VARCHAR},
now(),
now(),
#{parentId,jdbcType=BIGINT},
#{url,jdbcType=VARCHAR},
#{isDelete,jdbcType=CHAR}
)
</insert>
<!-- 修改功能 -->
<update id="updateFunction">
update functions set
FUNC_NAME=#{funcName,jdbcType=VARCHAR},
MODIFIED_TM = now(),
PARENT_ID =
#{parentId,jdbcType=BIGINT},
URL = #{url,jdbcType=VARCHAR},
IS_DELETE =
#{isDelete,jdbcType=CHAR}
where FUNC_ID = #{id,jdbcType=BIGINT}
</update>
<!-- 删除功能 -->
<delete id="delFunction">
<!-- delete from Function where FUNC_ID =
#{id,jdbcType=BIGINT} -->
update functions set IS_DELETE = 1 where FUNC_ID = #{id,jdbcType=BIGINT}
</delete>
<select id="findFunsByUserId" resultType="com.aiw.ck.model.role.Function" parameterType="long">
select * from role_functions f where exists (
select 'x' from user_roles u where user_id=#{userId,jdbcType=BIGINT} and u.ROLES_IDS=f.role_id)
</select>
<!-- 查询角色权限功能 -->
<select id="getRoleFuncCountByRoleId" resultType="long" parameterType="long">
select count(0) from role_functions where role_id = #{roleId,jdbcType=BIGINT}
</select>
<!-- 添加角色权限功能 -->
<insert id="addRoleFunction" parameterType="com.aiw.ck.model.role.Function">
insert into
role_functions(role_id,CREATE_TM,func_id)
values(
#{roleId,jdbcType=BIGINT},
now(),
#{id,jdbcType=BIGINT}
)
</insert>
<!-- 删除角色权限功能 -->
<delete id="delRoleFunction">
delete from role_functions where role_id = #{roleId,jdbcType=BIGINT}
</delete>
</mapper>
7.model
public class Function extends AiwModel{
/**
* serialVersionUID
*/
private static final long serialVersionUID = -6294898482009409941L;
/** 主键自增 */
private long id;
/** 角色名称 */
private String funcName;
/** 修改时间 */
private String modifiedTm;
/** 创建时间 */
private String createTm;
/** 父节点 */
private long parentId;
/** 功能路径 */
private String url;
/** 是否禁用 0:正常 1:禁用 */
private char isDelete;
/** 角色id */
private long roleId;
/**是否选中 */
private String checked;
private List<Function> children;
public class Role extends AiwModel{
/**
* serialVersionUID
*/
private static final long serialVersionUID = -7891764967712489994L;
/** 主键自增 */
private long id;
/** 角色名称*/
private String roleName;
/** 创建时间*/
private String createTm;
/** 是否禁用 0:正常 1:禁用*/
private char isDelete;
8.mysql
CREATE TABLE `users` (
`user_id` bigint(20) NOT NULL AUTO_INCREMENT,
`user_icon` varchar(300) DEFAULT NULL,
`reg_source` varchar(10) NOT NULL COMMENT '注册来源:weixin,zfb,qq,mobile',
`user_type` varchar(10) NOT NULL COMMENT '用户类型:SYS管理员,COMMON普通用户,SUPPLIER供应商务',
`reg_tm` date NOT NULL,
`user_state` char(1) NOT NULL COMMENT '用户状态:1有效 ,0冻结 2审核中',
`user_pwd` varchar(100) NOT NULL,
`nick_name` varchar(100) NOT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表\r\n';
alter table users add user_name varchar(200) not null comment '用户名';
alter table users add unique index idx_uq_user_name(user_name);
alter table users add column audit_state varchar(10) default 'INIT' comment '审核状态 OK审核通过 INIT未审核 FAILD审核失败';
alter table users add column audit_user varchar(100) comment '审核人用户名';
alter table users add column audit_tm datetime comment '审核时间';
CREATE TABLE `functions` (
`FUNC_ID` bigint(32) NOT NULL AUTO_INCREMENT,
`FUNC_NAME` varchar(200) DEFAULT NULL COMMENT '功能名称',
`CREATE_TM` datetime DEFAULT NULL COMMENT '创建时间',
`MODIFIED_TM` datetime DEFAULT NULL,
`PARENT_ID` varchar(32) DEFAULT NULL,
`URL` varchar(400) DEFAULT NULL COMMENT '功能路径',
`IS_DELETE` char(1) DEFAULT NULL COMMENT '是否禁用',
PRIMARY KEY (`FUNC_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='功能列表';
CREATE TABLE `roles` (
`ROLE_ID` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '主键自增',
`ROLE_NAME` varchar(200) NOT NULL COMMENT '角色名称',
`CREATE_TM` datetime NOT NULL COMMENT '创建时间',
`IS_DELETE` char(1) DEFAULT NULL,
PRIMARY KEY (`ROLE_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='角色表';
CREATE TABLE `role_functions` (
`role_id` bigint(32) NOT NULL,
`func_id` bigint(32) NOT NULL,
`create_tm` datetime DEFAULT NULL,
PRIMARY KEY (`role_id`,`func_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `user_roles` (
`USER_ID` bigint(32) unsigned NOT NULL DEFAULT '0' COMMENT '用户ID',
`ROLES_IDS` varchar(50) DEFAULT NULL COMMENT '用户角色',
PRIMARY KEY (`USER_ID`,`ROLES_IDS`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户角色表';
9.testdata
INSERT INTO `users` (`user_id`, `user_icon`, `reg_source`, `user_type`, `reg_tm`, `user_state`, `user_pwd`, `nick_name`, `user_name`) VALUES (1, 'Koala.jpg', 'weixin', 'SYS', '2015-08-02', '1', 'E10ADC3949BA59ABBE56E057F20F883E', 'admin', 'admin');
INSERT INTO `user_roles` (`USER_ID`, `ROLES_IDS`) VALUES (1, '1');
INSERT INTO `roles` (`ROLE_ID`, `ROLE_NAME`, `CREATE_TM`, `IS_DELETE`)
VALUES (1, '管理员', '2015-08-02 13:59:30', '0');
INSERT INTO `functions` (`FUNC_ID`, `FUNC_NAME`, `CREATE_TM`, `MODIFIED_TM`, `PARENT_ID`, `URL`, `IS_DELETE`) VALUES (10000, '系统管理', '2015-08-02 13:59:56', '2015-08-02 13:59:56', '0', '', '0');
INSERT INTO `functions` (`FUNC_ID`, `FUNC_NAME`, `CREATE_TM`, `MODIFIED_TM`, `PARENT_ID`, `URL`, `IS_DELETE`) VALUES (10001, '角色管理', '2015-08-02 14:01:39', '2015-08-02 14:01:39', '10000', 'html/admin/role.html', '0');
INSERT INTO `functions` (`FUNC_ID`, `FUNC_NAME`, `CREATE_TM`, `MODIFIED_TM`, `PARENT_ID`, `URL`, `IS_DELETE`) VALUES (10002, '权限管理', '2015-08-02 14:01:57', '2015-08-02 14:01:57', '10000', 'html/admin/function.html', '0');
INSERT INTO `functions` (`FUNC_ID`, `FUNC_NAME`, `CREATE_TM`, `MODIFIED_TM`, `PARENT_ID`, `URL`, `IS_DELETE`) VALUES (10003, '查看系统域', '2015-08-02 14:02:20', '2015-09-09 18:35:18', '10000', 'html/admin/domain.html', '0');
INSERT INTO `functions` (`FUNC_ID`, `FUNC_NAME`, `CREATE_TM`, `MODIFIED_TM`, `PARENT_ID`, `URL`, `IS_DELETE`) VALUES (10004, '系统常量管理', '2015-09-08 20:50:50', '2015-09-08 20:52:52', '10000', 'html/systemconstant/systemconstant.html', '0');
INSERT INTO `functions` (`FUNC_ID`, `FUNC_NAME`, `CREATE_TM`, `MODIFIED_TM`, `PARENT_ID`, `URL`, `IS_DELETE`) VALUES (10005, '用户管理', '2015-08-02 14:02:46', '2015-08-02 14:02:46', '0', '', '0');
INSERT INTO `functions` (`FUNC_ID`, `FUNC_NAME`, `CREATE_TM`, `MODIFIED_TM`, `PARENT_ID`, `URL`, `IS_DELETE`) VALUES (10006, '用户管理', '2015-08-02 14:02:52', '2015-08-02 14:02:52', '10005', 'html/user/users.html', '0');
INSERT INTO `functions` (`FUNC_ID`, `FUNC_NAME`, `CREATE_TM`, `MODIFIED_TM`, `PARENT_ID`, `URL`, `IS_DELETE`) VALUES (10007, '供应商管理', '2015-08-02 14:03:09', '2015-08-02 14:03:09', '10005', 'html/user/suppliers.html', '0');
INSERT INTO `functions` (`FUNC_ID`, `FUNC_NAME`, `CREATE_TM`, `MODIFIED_TM`, `PARENT_ID`, `URL`, `IS_DELETE`) VALUES (10008, '供应商信息管理', '2015-08-02 14:03:33', '2015-08-02 14:03:33', '10005', 'html/user/suppliersInfo.html', '1');
INSERT INTO `functions` (`FUNC_ID`, `FUNC_NAME`, `CREATE_TM`, `MODIFIED_TM`, `PARENT_ID`, `URL`, `IS_DELETE`) VALUES (10009, '用户地址管理', '2015-09-14 13:51:50', '2015-09-14 13:51:50', '10005', 'html/user/userAddress.html', '0');
INSERT INTO `functions` (`FUNC_ID`, `FUNC_NAME`, `CREATE_TM`, `MODIFIED_TM`, `PARENT_ID`, `URL`, `IS_DELETE`) VALUES (10010, '日常审核管理', '2015-09-11 17:35:37', '2015-09-11 17:35:37', '0', '', '0');
INSERT INTO `functions` (`FUNC_ID`, `FUNC_NAME`, `CREATE_TM`, `MODIFIED_TM`, `PARENT_ID`, `URL`, `IS_DELETE`) VALUES (10011, '用户审核', '2015-09-11 17:35:57', '2015-09-13 09:40:34', '10010', 'html/audit/userAudit.html', '0');
INSERT INTO `functions` (`FUNC_ID`, `FUNC_NAME`, `CREATE_TM`, `MODIFIED_TM`, `PARENT_ID`, `URL`, `IS_DELETE`) VALUES (10012, '供应商审核', '2015-09-11 17:36:52', '2015-09-11 17:36:52', '10010', 'html/audit/suppliersAudit.html', '0');
INSERT INTO `functions` (`FUNC_ID`, `FUNC_NAME`, `CREATE_TM`, `MODIFIED_TM`, `PARENT_ID`, `URL`, `IS_DELETE`) VALUES (10013, '分销单审核', '2015-09-13 12:24:26', '2015-09-13 12:26:35', '10010', 'html/audit/fxGoodsAudit.html', '0');
INSERT INTO `functions` (`FUNC_ID`, `FUNC_NAME`, `CREATE_TM`, `MODIFIED_TM`, `PARENT_ID`, `URL`, `IS_DELETE`) VALUES (20000, '订单管理', '2015-08-02 14:03:54', '2015-08-02 14:03:54', '0', '', '0');
INSERT INTO `functions` (`FUNC_ID`, `FUNC_NAME`, `CREATE_TM`, `MODIFIED_TM`, `PARENT_ID`, `URL`, `IS_DELETE`) VALUES (20001, '订单管理', '2015-08-02 14:04:36', '2015-09-13 15:45:07', '20000', 'html/order/ckOrder.html', '0');
INSERT INTO `functions` (`FUNC_ID`, `FUNC_NAME`, `CREATE_TM`, `MODIFIED_TM`, `PARENT_ID`, `URL`, `IS_DELETE`) VALUES (20002, '分销单管理', '2015-09-13 13:47:25', '2015-09-13 13:47:25', '20004', 'html/goods/fxGoods.html', '0');
INSERT INTO `functions` (`FUNC_ID`, `FUNC_NAME`, `CREATE_TM`, `MODIFIED_TM`, `PARENT_ID`, `URL`, `IS_DELETE`) VALUES (20003, '产品管理', '2015-09-10 17:07:51', '2015-09-10 17:07:51', '0', '', '0');
INSERT INTO `functions` (`FUNC_ID`, `FUNC_NAME`, `CREATE_TM`, `MODIFIED_TM`, `PARENT_ID`, `URL`, `IS_DELETE`) VALUES (20004, '分销单管理', '2015-09-10 17:08:05', '2015-09-10 17:08:05', '0', '', '0');
INSERT INTO `functions` (`FUNC_ID`, `FUNC_NAME`, `CREATE_TM`, `MODIFIED_TM`, `PARENT_ID`, `URL`, `IS_DELETE`) VALUES (20005, '结算管理', '2015-09-10 17:08:16', '2015-09-10 17:08:16', '0', '', '0');
INSERT INTO `functions` (`FUNC_ID`, `FUNC_NAME`, `CREATE_TM`, `MODIFIED_TM`, `PARENT_ID`, `URL`, `IS_DELETE`) VALUES (20006, '产品类别管理', '2015-09-15 11:03:14', '2015-09-15 11:03:14', '20003', 'html/catsdomain/ckCats.html', '0');
INSERT INTO `functions` (`FUNC_ID`, `FUNC_NAME`, `CREATE_TM`, `MODIFIED_TM`, `PARENT_ID`, `URL`, `IS_DELETE`) VALUES (20007, '产品属性管理', '2015-09-15 18:02:09', '2015-09-15 18:02:09', '20003', 'html/catsdomain/prodDomain.html', '0');
INSERT INTO `functions` (`FUNC_ID`, `FUNC_NAME`, `CREATE_TM`, `MODIFIED_TM`, `PARENT_ID`, `URL`, `IS_DELETE`) VALUES (20008, '产品信息管理', '2015-09-15 18:02:09', '2015-09-15 18:02:09', '20003', 'html/ckprods/ckProds.html', '0');
INSERT INTO `role_functions` (`role_id`, `func_id`, `create_tm`) VALUES (1, 10000, '2015-09-15 18:02:27');
INSERT INTO `role_functions` (`role_id`, `func_id`, `create_tm`) VALUES (1, 10001, '2015-09-15 18:02:27');
INSERT INTO `role_functions` (`role_id`, `func_id`, `create_tm`) VALUES (1, 10002, '2015-09-15 18:02:27');
INSERT INTO `role_functions` (`role_id`, `func_id`, `create_tm`) VALUES (1, 10003, '2015-09-15 18:02:27');
INSERT INTO `role_functions` (`role_id`, `func_id`, `create_tm`) VALUES (1, 10004, '2015-09-15 18:02:27');
INSERT INTO `role_functions` (`role_id`, `func_id`, `create_tm`) VALUES (1, 10005, '2015-09-15 18:02:27');
INSERT INTO `role_functions` (`role_id`, `func_id`, `create_tm`) VALUES (1, 10006, '2015-09-15 18:02:27');
INSERT INTO `role_functions` (`role_id`, `func_id`, `create_tm`) VALUES (1, 10007, '2015-09-15 18:02:27');
INSERT INTO `role_functions` (`role_id`, `func_id`, `create_tm`) VALUES (1, 10009, '2015-09-15 18:02:27');
INSERT INTO `role_functions` (`role_id`, `func_id`, `create_tm`) VALUES (1, 10010, '2015-09-15 18:02:27');
INSERT INTO `role_functions` (`role_id`, `func_id`, `create_tm`) VALUES (1, 10011, '2015-09-15 18:02:27');
INSERT INTO `role_functions` (`role_id`, `func_id`, `create_tm`) VALUES (1, 10012, '2015-09-15 18:02:27');
INSERT INTO `role_functions` (`role_id`, `func_id`, `create_tm`) VALUES (1, 10013, '2015-09-15 18:02:27');
INSERT INTO `role_functions` (`role_id`, `func_id`, `create_tm`) VALUES (1, 20000, '2015-09-15 18:02:27');
INSERT INTO `role_functions` (`role_id`, `func_id`, `create_tm`) VALUES (1, 20001, '2015-09-15 18:02:27');
INSERT INTO `role_functions` (`role_id`, `func_id`, `create_tm`) VALUES (1, 20002, '2015-09-15 18:02:27');
INSERT INTO `role_functions` (`role_id`, `func_id`, `create_tm`) VALUES (1, 20003, '2015-09-15 18:02:27');
INSERT INTO `role_functions` (`role_id`, `func_id`, `create_tm`) VALUES (1, 20004, '2015-09-15 18:02:27');
INSERT INTO `role_functions` (`role_id`, `func_id`, `create_tm`) VALUES (1, 20005, '2015-09-15 18:02:27');
INSERT INTO `role_functions` (`role_id`, `func_id`, `create_tm`) VALUES (1, 20006, '2015-09-15 18:02:27');
INSERT INTO `role_functions` (`role_id`, `func_id`, `create_tm`) VALUES (1, 20007, '2015-09-15 18:02:27');