📄 managingroledao.java
字号:
* @param operationList List 操作权限列表(String...)
* @throws SQLException
*/
public void addRoleOperation(String roleId,String managingRoleId,
List operationList)
throws SQLException{
String sql= "insert into wf_managed_operation_auth "+
"select role_managedRole_id as role_managed_id,? as operation_id,"+
"'1' as operation_value from wf_role_manage_role "+
"where role_id = ? and managed_role_id = ?";
try{
conn=WorkflowDBConnectionManager.getInstance().getConnection();
ptmt=conn.prepareStatement(sql);
if(operationList!=null&&operationList.size()>0){
for(int i=0;i<operationList.size();i++){
ptmt.setString(1,(String)operationList.get(i));
ptmt.setString(2,managingRoleId);
ptmt.setString(3,roleId);
ptmt.addBatch();
}
ptmt.executeBatch();
}
}
catch(SQLException sqle){
logger.debug("\n=========添加角色的操作授权失败(roleId = "+roleId+
"\tmanagingRoleId = "+managingRoleId+")==========");
sqle.printStackTrace();
throw sqle;
}
finally{
WorkflowDBConnectionManager.getInstance().close(rowset);
WorkflowDBConnectionManager.getInstance().close(ptmt,false);
WorkflowDBConnectionManager.getInstance().close(conn);
}
}
/**
* 按角色类型查询所有角色
*
* @param areaId String 区域ID
* @param roleType String 角色类型
* @return List
* @throws Exception
*/
public List getRoleTree(String areaId,String roleType)
throws Exception{
List roleList=new ArrayList();
String sql=null;
if("oracle".equalsIgnoreCase(DB_TYPE)){
sql = "select wf_role.*,FUNC_QUERY_ROLE_HAS_CHILDREN(role_id) as has_children " +
"from wf_role where role_type = ? and role_state = 1";
}else{
sql = "select wf_role.*,dbo.FUNC_QUERY_ROLE_HAS_CHILDREN(role_id) as has_children " +
"from wf_role where role_type = ? and role_state = 1";
}
try{
conn=WorkflowDBConnectionManager.getInstance().getConnection();
ptmt=conn.prepareStatement(sql);
ptmt.setString(1,roleType);
rowset=ptmt.executeQuery();
rsToList(rowset,roleList);
}
catch(SQLException sqle){
logger.debug("\n========="+"按角色类型查询角色失败(roleType = "+roleType+
")==========");
sqle.printStackTrace();
throw sqle;
}
finally{
WorkflowDBConnectionManager.getInstance().close(rowset);
WorkflowDBConnectionManager.getInstance().close(ptmt,false);
WorkflowDBConnectionManager.getInstance().close(conn);
}
return roleList;
}
/**
* 根据用户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 roleType,String userId)
throws Exception{
List roleList=new ArrayList();
String sql=null;
if("oracle".equalsIgnoreCase(DB_TYPE)){
sql = "select wf_role.*,FUNC_QUERY_ROLE_HAS_CHILDREN(role_id) as has_children "+
"from wf_role where role_type = ? and (role_id in "+
" (select managed_role_id from wf_role_manage_role a, "+
" (select role_id from wf_org_user_role where user_id = ?) b "+
" where a.role_id = b.role_id) or creator = ?)";
}else{
sql = "select wf_role.*,dbo.FUNC_QUERY_ROLE_HAS_CHILDREN(role_id) as has_children "+
"from wf_role where role_type = ? and (role_id in "+
" (select managed_role_id from wf_role_manage_role a, "+
" (select role_id from wf_org_user_role where user_id = ?) b "+
" where a.role_id = b.role_id) or creator = ?)";
}
try{
conn=WorkflowDBConnectionManager.getInstance().getConnection();
ptmt=conn.prepareStatement(sql);
ptmt.setString(1,roleType);
ptmt.setString(2,userId);
ptmt.setString(3,userId);
rowset=ptmt.executeQuery();
rsToList(rowset,roleList);
}
catch(SQLException sqle){
logger.debug("\n========="+"用户("+userId+")查询角色类型为 "+roleType+
" 的角色失败======");
sqle.printStackTrace();
throw sqle;
}finally{
WorkflowDBConnectionManager.getInstance().close(rowset);
WorkflowDBConnectionManager.getInstance().close(ptmt,false);
WorkflowDBConnectionManager.getInstance().close(conn);
}
return roleList;
}
/**
* 转换ResultSet为List
*/
private void rsToList(ResultSet rowset,List roleList)
throws SQLException{
RoleNodeFormbean roleForm=null;
if(rowset!=null){
while(rowset.next()){
roleForm=new RoleNodeFormbean();
roleForm.setRoleId(rowset.getString("role_id"));
roleForm.setRoleName(rowset.getString("role_name"));
roleForm.setRoleCode(rowset.getString("role_code"));
roleForm.setOrder(rowset.getString("role_order"));
roleForm.setRoleType(rowset.getString("role_type"));
roleForm.setRoleDesc(rowset.getString("role_desc"));
roleForm.setHasChildren(rowset.getString("has_children"));
roleList.add(roleForm);
}
}
}
/**
* 保存管理角色和普通角色的管理关系
*
* @param managedKey String 关系主键
* @param managingRoleId String 管理角色ID
* @param roleId String 普通角色ID
* @return int 成功保存标识,因为已存在的关系不需要重复写入,所以返回0,否则返回1
* @throws Exception
*/
public int saveManagedRole(String managedKey,String managingRoleId,String roleId)
throws Exception{
String sql=null;
if("oracle".equalsIgnoreCase(DB_TYPE)){
sql = "insert into wf_role_manage_role select ? as role_managedRole_id," +
"? as role_id,? as managed_role_id from dual " +
"where not exists(select role_id from wf_role_manage_role where " +
" role_id = ? and managed_role_id = ?)";
}else{
sql = "insert into wf_role_manage_role select top 1 ? as role_managedRole_id," +
"? as role_id,? as managed_role_id from sysobjects " +
"where not exists(select role_id from wf_role_manage_role where " +
" role_id = ? and managed_role_id = ?)";
}
int status = 0;
try{
conn=WorkflowDBConnectionManager.getInstance().getConnection();
ptmt=conn.prepareStatement(sql);
ptmt.setString(1,managedKey);
ptmt.setString(2,managingRoleId);
ptmt.setString(3,roleId);
ptmt.setString(4,managingRoleId);
ptmt.setObject(5,roleId);
status = ptmt.executeUpdate();
return status;
}catch(Exception e){
e.printStackTrace();
throw e;
}finally{
WorkflowDBConnectionManager.getInstance().close(rowset);
WorkflowDBConnectionManager.getInstance().close(ptmt,false);
WorkflowDBConnectionManager.getInstance().close(conn);
}
}
/**
* 保存新增管理关系(管理角色和普通角色)的操作权限
*
* @param managedKey String 关系主键
* @param operationList List 操作权限列表(String...)
* @throws SQLException
*/
public void saveRoleAuthedOperation(String managedKey,List operationList)
throws SQLException{
String sql = "insert into wf_managed_operation_auth(role_managed_id," +
"operation_id,operation_value) values(?,?,'1')";
try{
conn=WorkflowDBConnectionManager.getInstance().getConnection();
ptmt=conn.prepareStatement(sql);
for(int j=0;j<operationList.size();j++){
ptmt.setString(1,managedKey);
ptmt.setObject(2,operationList.get(j));
ptmt.addBatch();
}
ptmt.executeBatch();
}catch(SQLException sqle){
logger.debug("\n=========保存角色操作授权时出错======");
sqle.printStackTrace();
throw sqle;
}
finally{
WorkflowDBConnectionManager.getInstance().close(rowset);
WorkflowDBConnectionManager.getInstance().close(ptmt,false);
WorkflowDBConnectionManager.getInstance().close(conn);
}
}
/**
* 获取角色列表中所有角色的全父角色ID(即该角色的父角色ID,父角色的父角色ID,以此类推)的Set
*
* @param roleIdList List 角色ID列表(String...)
* @return Set
* @throws SQLException
*/
public Set getRoleParentIdSet(List roleIdList)
throws SQLException{
String sql=null;
if("oracle".equalsIgnoreCase(DB_TYPE)){
sql = "select FUNC_GET_ROLE_ALL_PARENT_ROLE(?) from wf_role where rownum <2";
}else{
sql = "select top 1 dbo.FUNC_GET_ROLE_ALL_PARENT_ROLE(?) from wf_role";
}
String parentIds=null;
StringTokenizer tokenizer=null;
Set parentIdSet=new HashSet();
try{
conn=WorkflowDBConnectionManager.getInstance().getConnection();
ptmt=conn.prepareStatement(sql);
for(int i=0;i<roleIdList.size();i++){
ptmt.setObject(1,roleIdList.get(i));
rowset=ptmt.executeQuery();
if(rowset.next()){
parentIds=rowset.getString(1);
}
rowset.close();
parentIds=parentIds==null?"":parentIds;
tokenizer=new StringTokenizer(parentIds,",");
while(tokenizer.hasMoreTokens()){
parentIdSet.add(tokenizer.nextToken());
}
}
}
catch(SQLException sqle){
logger.debug("\n=========获取角色的全上级角色ID时出错======");
sqle.printStackTrace();
throw sqle;
}
finally{
WorkflowDBConnectionManager.getInstance().close(rowset);
WorkflowDBConnectionManager.getInstance().close(ptmt,false);
WorkflowDBConnectionManager.getInstance().close(conn);
}
return parentIdSet;
}
public void removeManagedRel(String managingRoleId,String roleId)throws Exception{
String sql = "delete from wf_role_manage_role where role_id = ? and managed_role_id = ?";
try{
conn=WorkflowDBConnectionManager.getInstance().getConnection();
ptmt=conn.prepareStatement(sql);
ptmt.setString(1,managingRoleId);
ptmt.setString(2,roleId);
ptmt.executeUpdate();
}
catch(SQLException sqle){
logger.debug("\n=========删除角色管理关系时出错======");
sqle.printStackTrace();
throw sqle;
}
finally{
WorkflowDBConnectionManager.getInstance().close(rowset);
WorkflowDBConnectionManager.getInstance().close(ptmt,false);
WorkflowDBConnectionManager.getInstance().close(conn);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -