给角色分配组织下的用户原创
金蝶云社区-熊嘉强
熊嘉强
7人赞赏了该文章 1399次浏览 未经作者许可,禁止转载编辑于2021年03月20日 12:08:14

1,需求背景:需要动态的在后人给不同角色分配不同组织下的用户

2,实现方案:利用PermissionServiceHelper帮助类来分配,在后台去处理

3,具体实现:

      案例需求:现有管理员角色和开发者角色,同属于一个组织下,需要根据人员类型去对应的角色下分配这些用户。

image.png

     具体代码:


/**
 * 给通用角色roleType分配组织partnerOrgId下的用户userIds
 * 
 * @param roleType:通用角色的编码
 * @param partnerOrgId:组织ID
 * @param userIds:用户ID
 */
private static void assignRole(String roleType, Long partnerOrgId, List<Long> userIds) {
// 查询通用角色单据数据
QFilter roleFilter = new QFilter("number", QCP.equals, roleType);
DynamicObject roleAdminDy = BusinessDataServiceHelper.loadSingle("perm_role",
"id,number,name,bizdomain,roletype,group", new QFilter[] { roleFilter });
String roleId = roleAdminDy.getString("id");
String dimType = "DIM_ORG";
Map<Long, List<Long>> assignInfo = new HashMap<Long, List<Long>>();
assignInfo.put(partnerOrgId, userIds);
Map<Long, Boolean> dimObjInfo = new HashMap<>();
dimObjInfo.put(partnerOrgId, true);
boolean ifAdd = true;
String source = "2";
/**
 * roleId:角色ID dimType: 隔离维度类型(如bos_org, bcm_model等任意基础资料类型)
 * assignInfo:键是隔离维度对象ID(如组织ID)的集合,值是用户ID dimObjInfo: dimObjInfo
 * 键是隔离维度对象ID(如组织ID),值是“是否包含下级”;可以传null,传null意味着默认所有组织都“不包含下级”。
 * ifAdd:是否添加,如果是true,则为添加,false为删除;为false时,参数“orgInfo”没有意义,传null即可。
 * source:记录权限来源:1为直接分配、2为通用角色分配、3为业务角色分配(若值为空,默认为2) bizRoleId:记录来源的业务角色,可为空
 */
boolean roleSyns = PermissionServiceHelper.roleAssignOrgUser(roleId, dimType, assignInfo, dimObjInfo, ifAdd, source, null);
log.info("------分配角色结果------:" + roleSyns);
}



赞 7