oa_09

提供人员管理、模块管理、角色管理、用户管理相关的代码。

同时,需注意,在分页中实现了动态更改每页显示行数的功能(请参考机构管理的实例)


package com.bjsxt.oa.manager.impl;

import com.bjsxt.oa.PagerModel;
import com.bjsxt.oa.manager.ModuleManager;
import com.bjsxt.oa.manager.SystemException;
import com.bjsxt.oa.model.Module;

public class ModuleManagerImpl extends AbstractManager implements ModuleManager {

public void addModule(Module module, int parentId) {
if(parentId != 0){
module.setParent(findModule(parentId));
}
getHibernateTemplate().save(module);
}

public void delModule(int moduleId) {
Module module = findModule(moduleId);
if(module.getChildren().size() > 0){
throw new SystemException("模块【"+module.getName()+"】存在有子模块,不允许删除!");
}

getHibernateTemplate().delete(module);
}

public Module findModule(int moduleId) {
return (Module)getHibernateTemplate().load(Module.class,moduleId);
}

public PagerModel searchModules(int parentId) {

String hql = "select m from Module m";

if(parentId == 0){
//返回顶级模块列表
hql = hql + " where m.parent is null";

}else{
hql = hql + " where m.parent.id = "+parentId;
}

return searchPaginated(hql);
}

public void updateModule(Module module, int parentId) {
if(parentId != 0){
module.setParent(findModule(parentId));
}
getHibernateTemplate().update(module);
}

}



package com.bjsxt.oa.manager.impl;

import com.bjsxt.oa.PagerModel;
import com.bjsxt.oa.manager.PersonManager;
import com.bjsxt.oa.model.Organization;
import com.bjsxt.oa.model.Person;

public class PersonManagerImpl extends AbstractManager implements PersonManager {

public void addPerson(Person person, int orgId) {
if(orgId != 0){
person.setOrg((Organization)this.getHibernateTemplate().load(Organization.class, orgId));
}
getHibernateTemplate().save(person);
}

public void delPerson(int personId) {
getHibernateTemplate().delete(findPerson(personId));
}

public Person findPerson(int personId) {

return (Person)getHibernateTemplate().load(Person.class, personId);
}

public PagerModel searchPersons() {

return searchPaginated("from Person");
}

public void updatePerson(Person person, int orgId) {
if(orgId != 0){
person.setOrg((Organization)this.getHibernateTemplate().load(Organization.class, orgId));
}
getHibernateTemplate().update(person);
}

public PagerModel searchPersons(int orgId) {
return searchPaginated("select p from Person p where p.org.id = "+orgId);
}
}



package com.bjsxt.oa.manager.impl;

import com.bjsxt.oa.PagerModel;
import com.bjsxt.oa.manager.RoleManager;
import com.bjsxt.oa.model.Role;

public class RoleManagerImpl extends AbstractManager implements RoleManager {

public void addRole(Role role) {
getHibernateTemplate().save(role);
}

public void delRole(int roleId) {
getHibernateTemplate().delete(findRole(roleId));
}

public Role findRole(int roleId) {
return (Role)getHibernateTemplate().load(Role.class, roleId);
}

public PagerModel searchRoles() {
return searchPaginated("from Role");
}

public void updateRole(Role role) {
getHibernateTemplate().update(role);
}

}



package com.bjsxt.oa.manager.impl;

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

import com.bjsxt.oa.PagerModel;
import com.bjsxt.oa.manager.SystemException;
import com.bjsxt.oa.manager.UserManager;
import com.bjsxt.oa.model.Person;
import com.bjsxt.oa.model.Role;
import com.bjsxt.oa.model.User;
import com.bjsxt.oa.model.UsersRoles;

public class UserManagerImpl extends AbstractManager implements UserManager {

public void addOrUpdateUserRole(int userId, int roleId, int orderNo) {
//首先根据userId和roleId,判断这两者之间是否已建立关联
UsersRoles ur = findUsersRoles(userId, roleId);
if(ur == null){
ur = new UsersRoles();
ur.setRole((Role)getHibernateTemplate().load(Role.class, roleId));
ur.setUser((User)getHibernateTemplate().load(User.class, userId));
ur.setOrderNo(orderNo);
getHibernateTemplate().save(ur);
return;
}

ur.setOrderNo(orderNo);
getHibernateTemplate().update(ur);
}

public void addUser(User user, int personId) {
if(personId == 0){
throw new SystemException("建立用户帐号时,人员信息不允许为空");
}
user.setPerson((Person)getHibernateTemplate().load(Person.class, personId));
user.setCreateTime(new Date());
getHibernateTemplate().save(user);
}

public void delUser(int userId) {
getHibernateTemplate().delete(findUser(userId));
}

public void delUserRole(int userId, int roleId) {
getHibernateTemplate().delete(findUsersRoles(userId, roleId));
}

public User findUser(int userId) {
return (User)getHibernateTemplate().load(User.class, userId);
}

public User login(String username, String password) {

User user = (User)getSession()
.createQuery("select u from com.bjsxt.oa.model.User u where u.username = ?")
.setParameter(0, username)
.uniqueResult();

if(user == null){
throw new SystemException("没有这个用户");
}

if(!user.getPassword().equals(password)){
throw new SystemException("密码错误!");
}

if(user.getExpireTime() != null){

//现在时间
Calendar now = Calendar.getInstance();

//失效时间
Calendar expireTime = Calendar.getInstance();
expireTime.setTime(user.getExpireTime());

//如果现在在失效时间之后
if(now.after(expireTime)){
throw new SystemException("用户帐号已失效!");
}
}

return user;
}

public List searchUserRoles(int userId) {
return getHibernateTemplate().find("select ur from UsersRoles ur " +
"where ur.user.id = ? order by ur.orderNo",userId);
}

public PagerModel searchUsers() {

return searchPaginated("from com.bjsxt.oa.model.User");
}

public void updateUser(User user, int personId) {
if(personId == 0){
throw new SystemException("更新用户帐号时,人员信息不允许为空");
}
user.setPerson((Person)getHibernateTemplate().load(Person.class, personId));
getHibernateTemplate().update(user);
}

//本方法被【AdminRoleAssignmentHandler】所使用
public List searchUsersOfRole(String roleName) {
String hql = "select u.username from UsersRoles ur " +
"join ur.user u join ur.role r where r.name = ? ";
return getHibernateTemplate().find(hql,roleName);
}

private UsersRoles findUsersRoles(int userId,int roleId){
return (UsersRoles)getSession().createQuery(
"select ur from UsersRoles ur where " +
"ur.role.id = ? and ur.user.id = ?"
)
.setParameter(0, roleId)
.setParameter(1, userId)
.uniqueResult();
}

}



<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<%@include file="/common/common.jsp" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<link href="style/oa.css" rel="stylesheet" type="text/css">
<script language="javascript" src="script/public.js"></script>
<script type="text/javascript">
function selectPagesize(field){
document.location.href = document.all.firstpageurl.href + "&pagesize="+field.value;
}
</script>
<title>机构管理</title>
</head>
<BODY bgColor=#dee7ff leftMargin=0 background="" topMargin=0 marginheight="0" marginwidth="0">
<center>
<TABLE width="778" border=0 cellPadding=0 cellSpacing=0 borderColor=#ffffff bgColor=#dee7ff style="FONT-SIZE: 10pt">
<TBODY>
<TR height=35>
<TD align=middle width=20 background=images/title_left.gif
bgColor=#dee7ff></TD>
<TD align=middle width=120 background=images/title_left.gif
bgColor=#dee7ff><FONT color=#f7f7f7>机构管理<font color="#FFFFFF"> </font></FONT> </TD>
<TD align=middle width=11 background=images/title_middle.gif
bgColor=#dee7ff><FONT color=#f7f7f7> </FONT> </TD>
<TD align=middle background=images/title_right.gif
bgColor=#dee7ff><FONT color=#f7f7f7> </FONT> </TD>
</TR>
</TBODY>
</TABLE>
<TABLE width="778" border=0 align=center cellPadding=0 cellSpacing=0 borderColor=#ffffff style="FONT-SIZE: 10pt">
<TBODY>
<TR>
<TD width="82%" height=14 align=right vAlign=center noWrap>
</TD>
<TD width="18%" align=right vAlign=center noWrap> </TD>
</TR>
<TR>
<TD height=14 align=right vAlign=center noWrap> <!-- 在这里插入查询表单 -->
</TD>
<TD height=14 align="left" vAlign=center noWrap>
<a href="#" onClick="openWin('org.do?method=addInput&parentId=${orgForm.parentId }','addorg',600,200);">添加机构信息</a>
<a href="org.do?parentId=${ppid }">返回</a>
</TD>
</TR>
<TR>
<TD height=28 colspan="2" align=right vAlign=center noWrap background=images/list_middle.jpg>  
<!-- 可以在这里插入分页导航条 -->
</TD>
</TR>
</TBODY>
</TABLE>
<table width="778" border="0" cellPadding="0" cellSpacing="1" bgcolor="#6386d6">
<!-- 列表标题栏 -->
<tr bgcolor="#EFF3F7" class="TableBody1">
<td width="5%" height="37" align="center"><b>序号</b></td>
<td width="18%" height="37" align="center"><B>机构名称</B></td>
<td width="18%" height="37" align="center"><b>机构编号</b></td>
<td width="18%" height="37" align="center"><b>父机构名称</b></td>
<td width="5%" height="37" align="center"><b>操作</b></td>
</tr>
<!-- 列表数据栏 -->
<c:if test="${!empty pm.datas}">
<c:forEach items="${pm.datas }" var="org">
<tr bgcolor="#EFF3F7" class="TableBody1" onMouseOver="this.bgColor = '#DEE7FF';" onMouseOut="this.bgColor='#EFF3F7';">
<td align="center" vAlign="center">${org.id }</td>
<td align="center" vAlign="center"><a href="org.do?parentId=${org.id }">${org.name }</a></td>
<td align="center" vAlign="center">${org.sn }</td>
<td align="center" vAlign="center">${org.parent.name }</td>
<td align="center" vAlign="center">
<a href="#" onClick="del('org.do?method=del&id=${org.id }')" >删除</a>
</td>
</tr>
</c:forEach>
</c:if>
<!-- 在列表数据为空的时候,要显示的提示信息 -->
<c:if test="${empty pm.datas}">
<tr>
<td colspan="7" align="center" bgcolor="#EFF3F7" class="TableBody1" onMouseOver="this.bgColor = '#DEE7FF';" onMouseOut="this.bgColor='#EFF3F7';">
没有找到相应的记录
</td>
</tr>
</c:if>
</table>
<TABLE width="778" border=0 align=center cellPadding=0 cellSpacing=0 borderColor=#ffffff style="FONT-SIZE: 10pt">
<TBODY>
<TR>
<TD height=28 align=right vAlign=center noWrap background=images/list_middle.jpg>  
<!-- 可以在这里插入分页导航条 -->
<pg:pager items="${pm.total }" url="org.do" maxPageItems="${ps}" export="currentPageNumber=pageNumber">
<pg:param name="parentId"/>
<pg:first>
<a href="${pageUrl }" id="firstpageurl">首页</a> </pg:first>
<pg:prev>
<a href="${pageUrl }">前页</a> </pg:prev>
<pg:pages>
<c:choose>
<c:when test="${currentPageNumber eq pageNumber}">
<font color="red">${pageNumber }</font> </c:when>
<c:otherwise>
<a href="${pageUrl }">${pageNumber }</a> </c:otherwise>
</c:choose>
</pg:pages>
<pg:next>
<a href="${pageUrl }">后页</a> </pg:next>
<pg:last>
<a href="${pageUrl }">尾页</a> </pg:last>
</pg:pager>
<select name="pagesize" onChange="selectPagesize(this)" >
<c:forEach begin="5" end="50" step="5" var="i">
<option value="${i}"
>
<c:if test="${ps eq i }">selected</c:if>
>${i}</option>
</c:forEach>
</select></TD>
</TR>
</TBODY>
</TABLE>
</center>

</body>

</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值