📄 managingroleauthservice.java
字号:
package cn.com.iaspec.workflow.sysmanage.business;
import cn.com.iaspec.workflow.sysmanage.dao.ManagingRoleDAO;
import java.util.List;
import java.util.ArrayList;
import cn.com.iaspec.workflow.client.web.formbean.RoleNodeFormbean;
import java.util.Map;
import java.util.Set;
import cn.com.iaspec.workflow.util.GetTableSequenceId;
import java.util.Arrays;
import cn.com.iaspec.workflow.sysmanage.dao.WfManageRoleAuthorizationDAO;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2005</p>
* <p>Company: IASPEC Technologies</p>
*
* @author leigm
* @version 1.0
*/
public class ManagingRoleAuthService{
/**
* 根据角色ID和用户ID,查询角色目录树
*
* @param areaId String 区域ID
* @param roleId String 角色id
* @param roleType String 角色类型
* @param userId String 用户id
* @param isAdmin boolean 是否是管理员,管理员能见所有角色
* @return List
*/
public List getManagingRoleRoleTree(String areaId,String roleId,
String managingRoleId,String roleType,String userId,boolean isAdmin)
throws Exception{
List roleList = new ArrayList();
ManagingRoleDAO manageDao = new ManagingRoleDAO();
//根结点下所有的管理角色
if("".equals(roleType)){
if(isAdmin)
roleList = manageDao.getAllManagingRoles();
else
roleList = manageDao.getManagingRolesByUsrId(userId);
}
//当前用户能见的当前角色的下一级角色
else{
//相等,说明是管理角色请求所有顶级角色,即role_type = 0 的角色
if(roleId.equals(managingRoleId)){
roleList = manageDao.getManagedRoles("0",managingRoleId,userId);
}else{
roleList = manageDao.getManagedRoles(roleId,managingRoleId,userId);
}
}
return roleList;
}
/**
* 查询角色的详细信息
*
* @param roleId String 角色ID
* @return RoleNodeFormbean
* @throws Exception
*/
public RoleNodeFormbean getRoleInfo(String roleId)throws Exception{
ManagingRoleDAO manageDao = new ManagingRoleDAO();
return manageDao.getRoleInfo(roleId);
}
/**
* 查询附属在某管理角色下的普通角色的操作权限
*
* @param roleId String 普通角色ID
* @param managingRoleId String 管理角色ID
* @return Map
* @throws Exception
*/
public Map getRoleGrantedOprMap(String roleId,String managingRoleId)throws Exception{
ManagingRoleDAO manageDao = new ManagingRoleDAO();
return manageDao.getRoleGrantedOprMap(roleId,managingRoleId);
}
/**
* 为某管理角色管辖下的普通角色添加操作权限
*
* @param roleId String 普通角色ID
* @param managingRoleId String 管理角色ID
* @param operationList List 操作权限列表(String...)
* @throws SQLException
*/
public void addRoleOperation(String roleId,String managingRoleId,List operationList)
throws Exception{
ManagingRoleDAO manageDao = new ManagingRoleDAO();
manageDao.addRoleOperation(roleId,managingRoleId,operationList);
}
/**
* 更新附属在某管理角色下的普通角色的操作权限
*
* @param roleId String 普通角色ID
* @param managingRoleId String 管理角色ID
* @param oprList List 操作权限列表(String..)
* @throws Exception
*/
public void updateRoleOperation(String roleId,String managingRoleId,List operationList)
throws Exception{
ManagingRoleDAO manageDao = new ManagingRoleDAO();
manageDao.delRoleGrantedOperation(roleId,managingRoleId);
manageDao.addRoleOperation(roleId,managingRoleId,operationList);
}
/**
* 根据用户ID和角色ID,查询所有下级角色
*
* @param areaId String
* @param roleId String 角色ID
* @param userId String 用户ID
* @param isAdmin boolean 是否是管理员,管理员能见所有角色
* @return List
* @throws Exception
*/
public List getRoleTree(String areaId,String roleId,String userId, boolean isAdmin)
throws Exception{
ManagingRoleDAO manageDao = new ManagingRoleDAO();
List roleList = null;
if(isAdmin)
roleList = manageDao.getRoleTree(areaId,roleId);
else
roleList = manageDao.getRoleTree(areaId,roleId,userId);
return roleList;
}
/**
* 为某个管理角色增加管辖的普通角色及在这些角色上的操作权限
*
* @param managingRoleId String 管理角色ID
* @param roleIdList List 角色列表(String...)
* @param operationList List 操作权限列表(String...)
* @throws Exception
*/
public void addRole2ManagingRole(String managingRoleId,List roleIdList,List operationList)
throws Exception{
ManagingRoleDAO manageDao = new ManagingRoleDAO();
//保存管理关系及被管辖的普通角色的操作权限
this.saveManagedRole(managingRoleId,roleIdList,operationList);
//获取用户选中的普通角色的所有父角色ID
Set parentIdSet = manageDao.getRoleParentIdSet(roleIdList);
//保存这些父角色与管理角色的管理关系,但这些别管理的普通角色没有任何操作权限
List parentIdList = Arrays.asList(parentIdSet.toArray());
this.saveManagedRole(managingRoleId,parentIdList,null);
}
/**
* 保存管理关系及操作权限
*/
private void saveManagedRole(String managingRoleId,List roleIdList,List operationList)
throws Exception{
ManagingRoleDAO manageDao = new ManagingRoleDAO();
int status = 0;
String roleId = null;
//关系主键
String managedKey = GetTableSequenceId.getTableId("wf_role_manage_role");
for(int i=0;i<roleIdList.size();i++){
roleId=(String)roleIdList.get(i);
//保存管理关系,若关系已存在,则返回0,否则返回1
status = manageDao.saveManagedRole(managedKey,managingRoleId,roleId);
//若成功保存关系,且存在操作权限,则保存相应的操作权限
if(status > 0 && operationList!=null)
manageDao.saveRoleAuthedOperation(managedKey,operationList);
//若保存成功,则更新主键
if(status > 0)
managedKey = GetTableSequenceId.getTableId("wf_role_manage_role");
}
}
/**
* 从管理角色中移出角色管理关系
*
* @param managingRoleId String
* @param roleId String
* @throws Exception
*/
public void removeManagedRel(String managingRoleId,String roleId)throws Exception{
ManagingRoleDAO manageDao = new ManagingRoleDAO();
WfManageRoleAuthorizationDAO authDao = new WfManageRoleAuthorizationDAO();
//移出操作权限
authDao.removeRoleGrantedOpr(managingRoleId,roleId);
//管理关系
manageDao.removeManagedRel(managingRoleId,roleId);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -