⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 managingroleauthservice.java

📁 公司自己开发的工作流引擎
💻 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 + -