| | |
| | | package com.vci.frameworkcore.compatibility.impl; |
| | | |
| | | import com.vci.corba.common.PLException; |
| | | import com.vci.corba.common.data.UserEntityInfo; |
| | | import com.vci.corba.omd.data.BusinessObject; |
| | | import com.vci.frameworkcore.compatibility.SmRoleQueryServiceI; |
| | | import com.vci.frameworkcore.constant.FrameWorkBtmTypeConstant; |
| | | import com.vci.frameworkcore.enumpck.RoleClassifyEnum; |
| | | import com.vci.frameworkcore.enumpck.RoleControlAreaEnum; |
| | | import com.vci.frameworkcore.model.SmRoleForPlatform1; |
| | | import com.vci.frameworkcore.pagemodel.OrgDepartmentVO; |
| | | import com.vci.frameworkcore.pagemodel.SmRoleVO; |
| | | import com.vci.omd.utils.ObjectTool; |
| | | import com.vci.starter.web.constant.QueryOptionConstant; |
| | | import com.vci.starter.web.exception.VciBaseException; |
| | | import com.vci.starter.web.pagemodel.DataGrid; |
| | |
| | | import com.vci.starter.web.wrapper.VciQueryWrapperForDO; |
| | | import com.vci.web.properties.WebProperties; |
| | | import com.vci.web.service.WebBoServiceI; |
| | | import com.vci.web.util.Func; |
| | | import com.vci.web.util.PlatformClientUtil; |
| | | import com.vci.web.util.WebUtil; |
| | | import org.apache.commons.lang3.StringUtils; |
| | |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | import java.util.*; |
| | | import java.util.function.Function; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST; |
| | |
| | | private WebBoServiceI boService; |
| | | |
| | | /** |
| | | * 平台调用客户端 |
| | | */ |
| | | @Autowired |
| | | private PlatformClientUtil platformClientUtil; |
| | | |
| | | /** |
| | | * 根据角色主键获取角色的信息 |
| | | * @param roleOid 角色主键 |
| | | * @return 角色的显示对象,如果角色不存在则返回null,不会抛出异常 |
| | |
| | | } |
| | | return platformRole2SmRoleVO(role); |
| | | } |
| | | |
| | | /** |
| | | * 批量获取角色的信息 (根据角色主键) |
| | | * @param roleOidCollections 角色主键的集合,可以超过1000个 |
| | |
| | | }); |
| | | return platformRole2SmRoleVOs(roles); |
| | | } |
| | | |
| | | /** |
| | | * 获取角色的列表,默认会以角色名升序排列,角色的编辑页面列表不要使用这个接口 |
| | | * @param queryMap 查询条件 |
| | |
| | | * @throws VciBaseException 参数为空的时候会抛出异常 |
| | | */ |
| | | @Override |
| | | public DataGrid<SmRoleVO> gridRoles(Map<String, String> queryMap, |
| | | PageHelper pageHelper) throws VciBaseException { |
| | | public DataGrid<SmRoleVO> gridRoles(Map<String, String> queryMap, PageHelper pageHelper) throws VciBaseException { |
| | | if(pageHelper == null){ |
| | | pageHelper = new PageHelper(-1); |
| | | } |
| | | pageHelper.addDefaultAsc("plname"); |
| | | VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(queryMap,SmRoleForPlatform1.class,pageHelper); |
| | | //我们不能显示三员和管理员的角色 |
| | | queryWrapper.eq("pltype","2"); |
| | | //queryWrapper.eq("pltype","2"); |
| | | List<SmRoleForPlatform1> roleForPlatform1s = boService.selectByQueryWrapper(queryWrapper, SmRoleForPlatform1.class); |
| | | DataGrid<SmRoleVO> dataGrid = new DataGrid<>(); |
| | | if(!CollectionUtils.isEmpty(roleForPlatform1s)){ |
| | |
| | | } |
| | | return dataGrid; |
| | | } |
| | | |
| | | /** |
| | | * 根据角色主键获取角色的姓名 |
| | | * @param roleOid 角色主键 |
| | |
| | | WebUtil.alertNotNull(roleOid,"角色主键"); |
| | | return getRoleByRoleOid(roleOid).getName(); |
| | | } |
| | | |
| | | /** |
| | | * 根据用户主键获取关联的角色 |
| | | * @param userOid 用户主键 |
| | |
| | | } |
| | | return platformRole2SmRoleVOs(roles); |
| | | } |
| | | |
| | | /** |
| | | * 根据用户主键获取关联的角色 |
| | | * @param userOid 用户主键 |
| | |
| | | } |
| | | return gridRoles(queryMap,pageHelper); |
| | | } |
| | | |
| | | /** |
| | | * 获取未关联某个用户的角色 |
| | | * @param userOid 用户主键 |
| | |
| | | Map<String, String> queryMap) { |
| | | return listRoleByUserOid(userOid,queryMap,true); |
| | | } |
| | | |
| | | /** |
| | | * 获取未关联某个用户的角色 |
| | | * @param userOid 用户主键 |
| | |
| | | Map<String, String> queryMap, PageHelper pageHelper) { |
| | | return gridRoleByUserOid(userOid,queryMap,pageHelper,true); |
| | | } |
| | | |
| | | /** |
| | | * 批量根据用户的主键来获取角色 |
| | | * @param userOidCollection 用户主键集合 |
| | |
| | | if(!CollectionUtils.isEmpty(roleVOS)){ |
| | | roleVOList.addAll(roleVOS); |
| | | String sql = "select pluseruid,plroleuid from pluserrole where pluseruid in (" + WebUtil.toInSql(userOids.toArray(new String[0])) + ")"; |
| | | List<com.vci.client.bof.ClientBusinessObject> cbos = boService.queryBySql(sql, null); |
| | | List<BusinessObject> cbos = boService.queryBySql(sql, null); |
| | | if(!CollectionUtils.isEmpty(cbos)){ |
| | | cbos.stream().forEach(cbo->{ |
| | | String userOid = cbo.getAttributeValue("pluseruid"); |
| | | String userOid = ObjectTool.getNewBOAttributeValue(cbo,"pluseruid"); |
| | | List<String> roleOids = userRoleOidMap.getOrDefault(userOid,new ArrayList<>()); |
| | | roleOids.add(cbo.getAttributeValue("plroleuid")); |
| | | roleOids.add(ObjectTool.getNewBOAttributeValue(cbo,"plroleuid")); |
| | | userRoleOidMap.put(userOid,roleOids); |
| | | }); |
| | | } |
| | | } |
| | | }); |
| | | if(!CollectionUtils.isEmpty(roleVOList)){ |
| | | Map<String, SmRoleVO> roleVOMap = roleVOList.stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)); |
| | | //这儿应该对roleVOList做一次去重处理,因为肯定会有重复的角色被查出来 |
| | | Map<String, SmRoleVO> roleVOMap = roleVOList.stream() |
| | | .collect(Collectors.toMap(SmRoleVO::getOid, Function.identity(), (existing, replacement) -> existing)); |
| | | //Map<String, SmRoleVO> roleVOMap = roleVOList.stream().collect(Collectors.toMap(s -> s.getOid(), t -> t)); |
| | | Map<String, List<SmRoleVO>> userRoleVOMap = new HashMap<>(); |
| | | userRoleOidMap.forEach((userOid,roleOids)->{ |
| | | List<SmRoleVO> roleVOS = new ArrayList<>(); |
| | |
| | | } |
| | | return new HashMap<>(); |
| | | } |
| | | |
| | | /** |
| | | * 根据权限主键获取关联的角色 |
| | | * @param functionOid 权限主键 |
| | |
| | | if(!CollectionUtils.isEmpty(roleVOS)){ |
| | | roleVOList.addAll(roleVOS); |
| | | String sql = "select plroleoid,plfuncoid from plroleright where plfuncoid in (" + WebUtil.toInSql(userOids.toArray(new String[0])) + ")"; |
| | | List<com.vci.client.bof.ClientBusinessObject> cbos = boService.queryBySql(sql, null); |
| | | List<BusinessObject> cbos = boService.queryBySql(sql, null); |
| | | if(!CollectionUtils.isEmpty(cbos)){ |
| | | cbos.stream().forEach(cbo->{ |
| | | String funcOid = cbo.getAttributeValue("plfuncoid"); |
| | | String funcOid = ObjectTool.getBOAttributeValue(cbo,"plfuncoid"); |
| | | List<String> roleOids = funcRoleOidMap.getOrDefault(funcOid,new ArrayList<>()); |
| | | roleOids.add(cbo.getAttributeValue("plroleoid")); |
| | | roleOids.add(ObjectTool.getBOAttributeValue(cbo,"plroleoid")); |
| | | funcRoleOidMap.put(funcOid,roleOids); |
| | | }); |
| | | } |
| | |
| | | } |
| | | return new HashMap<>(); |
| | | } |
| | | |
| | | /** |
| | | * 参照角色的列表,三员管理的三个角色不会显示 |
| | | * @param queryMap 查询条件 |
| | |
| | | //老平台没有生效状态 |
| | | return gridRoles(queryMap, pageHelper); |
| | | } |
| | | |
| | | /** |
| | | * 角色的树形展示,常用于角色选择用户的页面使用 |
| | | * @param treeQueryObject 树查询对象 |
| | |
| | | } |
| | | |
| | | /** |
| | | * 该方法只支持一次只允许单个用户分配多个角色,一对多 |
| | | * @param userOid |
| | | * @param roleIds |
| | | * @return |
| | | */ |
| | | @Override |
| | | public boolean saveRights(String userOid, String[] roleIds) throws PLException { |
| | | VciBaseUtil.alertNotNull(userOid,"用户主键"); |
| | | //roleIds允许为空,为空时清空当前用户的权限 |
| | | return platformClientUtil.getFrameworkService().saveRights(roleIds,new String[]{userOid},new UserEntityInfo()); |
| | | } |
| | | |
| | | /** |
| | | * 角色的转换,默认全部是bs控制的角色 |
| | | * @param roleForPlatform1List 原平台的角色 |
| | | * @return 角色的显示对象 |