SSH-BOS项目:功能权限管理

FunctionAction:

package com.xushuai.bos.web.action;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import com.xushuai.bos.entity.Function;
import com.xushuai.bos.service.FunctionService;
import com.xushuai.bos.utils.BOSUtils;

@Controller("functionAction")
@Scope("prototype")
public class FunctionAction extends BaseAction<Function> {
	
	@Autowired
	@Qualifier("functionService")
	private FunctionService functionService;
	public void setFunctionService(FunctionService functionService) {
		this.functionService = functionService;
	}
	
	//接收需要删除的ID值
	private String ids;
	public String getIds() {
		return ids;
	}
	public void setIds(String ids) {
		this.ids = ids;
	}

	/**
	 * 异步加载所有父节点
	 * @return
	 */
	public String ajaxList(){
		//调用service#findAll()
		List<Function> list = functionService.findAll();
		
		BOSUtils.writerJson(list, new String[]{"parentFunction","roles"});
		
		return NONE;
	}
	
	/**
	 * 新增功能权限
	 * @return
	 */
	public String add(){
		//调用service#save(model)
		functionService.save(model);
		
		return LIST;
	}
	
	/**
	 * 分页查询功能权限信息
	 * @return
	 */
	public String pageQuery(){
		/*
		 * 由于Fcuntion对象和分页参数中的page重名。
		 * 造成了分页参数无法正常接收,需要手动设置
		 */
		pageBean.setCurrentPage(Integer.parseInt(model.getPage()));
		
		functionService.pageQuery(pageBean);
		BOSUtils.writerJson(pageBean, new String[]{"children","roles","currentPage","pageSize","criteria"});
		
		return NONE;
	}
	
	/**
	 * 删除指定功能权限(可以为多个)
	 * @return
	 */
	public String delete(){
		String[] strings = ids.split(",");
		functionService.delete(strings);
		
		return LIST;
	}
	
	/**
	 * 修改指定的权限信息
	 * @return
	 */
	public String edit(){
		functionService.edit(model);
		
		return LIST;
	}
	
}

FunctionService、FunctionServiceImpl:

package com.xushuai.bos.service;

import java.util.List;

import com.xushuai.bos.entity.Function;
import com.xushuai.bos.utils.PageBean;

public interface FunctionService {

	/**
	 * 加载所有权限信息
	 * @return
	 */
	List<Function> findAll();

	/**
	 * 新增功能权限
	 * @param model
	 */
	void save(Function model);

	/**
	 * 分页查询功能权限信息
	 * @param pageBean
	 */
	void pageQuery(PageBean pageBean);

	/**
	 * 删除指定功能权限(可以为多个)
	 * @param strings
	 */
	void delete(String[] ids);

	/**
	 * 修改指定的权限信息
	 * @param model
	 */
	void edit(Function model);

}
package com.xushuai.bos.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.xushuai.bos.dao.FunctionDao;
import com.xushuai.bos.entity.Function;
import com.xushuai.bos.service.FunctionService;
import com.xushuai.bos.utils.PageBean;

@Service("functionService")
@Transactional
public class FunctionServiceImpl implements FunctionService {
	
	@Autowired
	@Qualifier("functionDao")
	private FunctionDao functionDao;
	public void setFunctionDao(FunctionDao functionDao) {
		this.functionDao = functionDao;
	}


	@Override
	public List<Function> findAll() {
		return functionDao.findAll();
	}


	@Override
	public void save(Function model) {
		//健壮性校验
		Function parentFunction = model.getParentFunction();
		if(parentFunction != null && parentFunction.getId().equals("")){
			//如果父功能点ID为空字符串,将其设置为null
			model.setParentFunction(null);
		}
		functionDao.save(model);
	}


	@Override
	public void pageQuery(PageBean pageBean) {
		functionDao.findByPage(pageBean);
	}


	@Override
	public void delete(String[] ids) {
		Function function = null;
		for (String id : ids) {
			function = functionDao.findById(id);
			if(function != null)
				functionDao.delete(function);
		}
	}


	@Override
	public void edit(Function model) {
		Function _function = functionDao.findById(model.getId());
		if(_function != null){
			_function.setCode(model.getCode());
			_function.setDescription(model.getDescription());
			_function.setGeneratemenu(model.getGeneratemenu());
			_function.setName(model.getName());
			_function.setPage(model.getPage());
			_function.setParentFunction(model.getParentFunction());
			_function.setZindex(model.getZindex());
			//保存修改后的权限对象
			functionDao.save(_function);
		}
	}

}

FunctionDaoImpl(重写方法):

	@Override
	public List<Function> findAll() {
		String hql = "FROM Function f WHERE f.parentFunction IS NULL";
		return (List<Function>) this.getHibernateTemplate().find(hql);
	}

Struts.xml(新增配置):

		<!-- 功能权限管理模块 -->
		<action name="FunctionAction_*" class="functionAction" method="{1}">
			<result name="list">/WEB-INF/pages/admin/function.jsp</result>
		</action>

页面(funciton.jsp、function_add.jsp):

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<!-- 导入jquery核心类库 -->
<script type="text/javascript"
	src="${pageContext.request.contextPath }/js/jquery-1.8.3.js"></script>
<!-- 导入easyui类库 -->
<link rel="stylesheet" type="text/css"
	href="${pageContext.request.contextPath }/js/easyui/themes/default/easyui.css">
<link rel="stylesheet" type="text/css"
	href="${pageContext.request.contextPath }/js/easyui/themes/icon.css">
<link rel="stylesheet" type="text/css"
	href="${pageContext.request.contextPath }/js/easyui/ext/portal.css">
<link rel="stylesheet" type="text/css"
	href="${pageContext.request.contextPath }/css/default.css">	
<script type="text/javascript"
	src="${pageContext.request.contextPath }/js/easyui/jquery.easyui.min.js"></script>
<script type="text/javascript"
	src="${pageContext.request.contextPath }/js/easyui/ext/jquery.portal.js"></script>
<script type="text/javascript"
	src="${pageContext.request.contextPath }/js/easyui/ext/jquery.cookie.js"></script>
<script
	src="${pageContext.request.contextPath }/js/easyui/locale/easyui-lang-zh_CN.js"
	type="text/javascript"></script>
<script type="text/javascript">


	
	$(function(){
		$("#grid").datagrid({
			toolbar : [
				{
					id : 'add',
					text : '添加权限',
					iconCls : 'icon-add',
					handler : function(){
						location.href='${pageContext.request.contextPath}/page_admin_function_add.action';
					}
				},
				{
					id : 'delete',
					text : '删除权限',
					iconCls : 'icon-cancel',
					handler : function(){
						var rows = $("#grid").datagrid('getSelections');
						if(rows.length == 0){
							$.messager.alert('提示信息','请选择您要删除的功能权限','warning');
						}else{
							$.messager.confirm('提示信息','确定要执行删除操作吗?',function(r){
								if(r){
									//定义一个数组,存放要删除功能的ID值
									Array :arr = new Array();
									for(var i = 0; i < rows.length; i++){
										//将需要删除的权限ID添加到数组中
										arr.push(rows[i].id);
									}
									//将数组格式化成一个字符串,用逗号分隔每个ID值
									var ids = arr.join(",");
									location.href = "FunctionAction_delete.action?ids=" + ids;
								}
							});
						}
					}
				},
				{
					id : 'clear',
					text : '取消选中',
					handler : function(){
						$("#grid").datagrid('clearSelections');
					}
				}
			],
			url : 'FunctionAction_pageQuery.action',
			pageList: [15,20,28],
			pageSize: 28,
			pagination : true,
			fit:true,
			onDblClickRow : doDblClickRow,
			columns : [[
			  {
				  field : 'id',
				  title : '编号',
				  checkbox:true
			  },
			  {
				  field : 'code',
				  title : '关键字',
				  width : 200
			  },
			  {
				  field : 'name',
				  title : '名称',
				  width : 200
			  },  
			  {
				  field : 'description',
				  title : '描述',
				  width : 200,
				  formatter : function(data,row, index){
				   	  if(data==""){
						  return "无";
					  }else{
						  return ""+data;
					  }
				  }
			  },  
			  {
				  field : 'generatemenu',
				  title : '是否生成菜单',
				  width : 100,
				  formatter : function(data,row, index){
				   	  if(data=="1"){
						  return "生成";
					  }else{
						  return "不生成";
					  }
				  }
			  },  
			  {
				  field : 'zindex',
				  title : '优先级',
				  width : 100
			  },  
			  {
				  field : 'page',
				  title : '路径',
				  width : 250
			  }
			]]
		});
		
		// 修改权限窗口
		$('#editFunctionWindow').window({
	        title: '编辑权限',
	        width: 1000,
	        modal: true,
	        shadow: true,
	        closed: true,
	        height: 800,
	        resizable:false
	    });
		//修改按钮绑定事件
		$("#edit").click(function(){
			alert(1);
			var formFlag = $("#editFunctionForm").form('validate');
			if(formFlag){
				$("#editFunctionForm").submit();
			}
		})
		
	});
	
;
	
	//编辑功能权限信息
	function doDblClickRow(rowIndex, rowData){
		$("#editFunctionWindow").window('open');
		$("#editFunctionForm").form('load',rowData);
		//回显父功能点
		if(rowData.parentFunction.id != null){
			$("#parentFunction").combobox('setText',rowData.parentFunction.name);
			$("#parentFunction").combobox('setValue',rowData.parentFunction.id);
		}
	}


	
	
</script>	
</head>
<body class="easyui-layout">
<div data-options="region:'center'">
	<table id="grid"></table>
</div>


	<!-- 编辑权限信息 -->
	<div class="easyui-window" title="对权限信息进行修改" id="editFunctionWindow" 
			collapsible="false" minimizable="false" maximizable="false" style="top:20px;left:200px">
		<div region="north" style="height:31px;overflow:hidden;" split="false" border="false" >
			<div class="datagrid-toolbar">
				<a id="edit" icon="icon-edit" href="#" class="easyui-linkbutton" plain="true" >修改</a>
			</div>
		</div>
		
		<div data-options="region:'center'">
			<form id="editFunctionForm" action="FunctionAction_edit.action" method="post">
				 <input type="hidden" name="id"/>
				<table class="table-edit" width="80%" align="center">
					<tr class="title">
						<td colspan="2">功能权限信息</td>
					</tr>
					<tr>
						<td width="200">关键字</td>
						<td>
							<input type="text" name="code" class="easyui-validatebox" data-options="required:true" />						
						</td>
					</tr>
					<tr>
						<td>名称</td>
						<td><input type="text" name="name" class="easyui-validatebox" data-options="required:true" /></td>
					</tr>
					<tr>
						<td>访问路径</td>
						<td><input type="text" name="page"  /></td>
					</tr>
					<tr>
						<td>是否生成菜单</td>
						<td>
							<select name="generatemenu" class="easyui-combobox">
								<option value="0">不生成</option>
								<option value="1">生成</option>
							</select>
						</td>
					</tr>
					<tr>
						<td>优先级</td>
						<td>
							<input type="text" name="zindex" class="easyui-numberbox" data-options="required:true" />
						</td>
					</tr>
					<tr>
						<td>父功能点</td>
						<td>
							<input id="parentFunction" name="parentFunction.id" class="easyui-combotree" data-options="url:'FunctionAction_ajaxList.action'" style="width:200px"/>
						</td>
					</tr>
					<tr>
						<td>描述</td>
						<td>
							<textarea name="description" rows="4" cols="60"></textarea>
						</td>
					</tr>
					</table>
			</form>
		</div>
	</div>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<!-- 导入jquery核心类库 -->
<script type="text/javascript"
	src="${pageContext.request.contextPath }/js/jquery-1.8.3.js"></script>
<!-- 导入easyui类库 -->
<link rel="stylesheet" type="text/css"
	href="${pageContext.request.contextPath }/js/easyui/themes/default/easyui.css">
<link rel="stylesheet" type="text/css"
	href="${pageContext.request.contextPath }/js/easyui/themes/icon.css">
<link rel="stylesheet" type="text/css"
	href="${pageContext.request.contextPath }/js/easyui/ext/portal.css">
<link rel="stylesheet" type="text/css"
	href="${pageContext.request.contextPath }/css/default.css">	
<script type="text/javascript"
	src="${pageContext.request.contextPath }/js/easyui/jquery.easyui.min.js"></script>
<script type="text/javascript"
	src="${pageContext.request.contextPath }/js/easyui/ext/jquery.portal.js"></script>
<script type="text/javascript"
	src="${pageContext.request.contextPath }/js/easyui/ext/jquery.cookie.js"></script>
<script
	src="${pageContext.request.contextPath }/js/easyui/locale/easyui-lang-zh_CN.js"
	type="text/javascript"></script>
<script type="text/javascript">
	$(function(){
		// 点击保存
		$('#save').click(function(){
			var formFlag = $("#functionForm").form('validate');
			if(formFlag){
				$("#functionForm").submit();
			}
		});
	});
</script>	
</head>
<body class="easyui-layout">
<div data-options="region:'north'">
	<div class="datagrid-toolbar">
		<a id="save" icon="icon-save" href="#" class="easyui-linkbutton" plain="true" >保存</a>
	</div>
</div>
<div data-options="region:'center'">
	<form id="functionForm" action="FunctionAction_add.action" method="post">
				<table class="table-edit" width="80%" align="center">
					<tr class="title">
						<td colspan="2">功能权限信息</td>
					</tr>
					<tr>
						<td width="200">关键字</td>
						<td>
							<input type="text" name="code" class="easyui-validatebox" data-options="required:true" />						
						</td>
					</tr>
					<tr>
						<td>名称</td>
						<td><input type="text" name="name" class="easyui-validatebox" data-options="required:true" /></td>
					</tr>
					<tr>
						<td>访问路径</td>
						<td><input type="text" name="page"  /></td>
					</tr>
					<tr>
						<td>是否生成菜单</td>
						<td>
							<select name="generatemenu" class="easyui-combobox">
								<option value="0">不生成</option>
								<option value="1">生成</option>
							</select>
						</td>
					</tr>
					<tr>
						<td>优先级</td>
						<td>
							<input type="text" name="zindex" class="easyui-numberbox" data-options="required:true" />
						</td>
					</tr>
					<tr>
						<td>父功能点</td>
						<td>
							<input name="parentFunction.id" class="easyui-combotree" data-options="url:'FunctionAction_ajaxList.action'" style="width:200px"/>
						</td>
					</tr>
					<tr>
						<td>描述</td>
						<td>
							<textarea name="description" rows="4" cols="60"></textarea>
						</td>
					</tr>
					</table>
			</form>
</div>
</body>
</html>



猜你喜欢

转载自blog.csdn.net/qq1031893936/article/details/79994067