|
|
@ -51,348 +51,348 @@ public class ProRoleService implements IProRoleService { |
|
|
|
@Override |
|
|
|
public CRoleVo.QueryRole QueryShowRole(CRoleDto.QueryRoleById param, Long userId) { |
|
|
|
CRoleVo.QueryRole role = new CRoleVo.QueryRole(); |
|
|
|
//角色显示的角色
|
|
|
|
List<CRoleVo.RoleInfo> visibleList = new ArrayList<>(); |
|
|
|
//不显示的角色
|
|
|
|
List<CRoleVo.RoleInfo> invisibleList = new ArrayList<>(); |
|
|
|
//查询当前用户所属的角色的list
|
|
|
|
List<Long> roleIds = new ArrayList<>(); |
|
|
|
//对自己不可见的角色的list
|
|
|
|
List<Long> roleIds1 = new ArrayList<>(); |
|
|
|
//判断是否是关注者 用户不是项目下的成员 并且 用户是成员但不属于任何角色 就是关注者
|
|
|
|
// 判断用户是成员但是不属于任何角色 在成员表下查询到 成员信息
|
|
|
|
ProMemberExample proMemberExample = new ProMemberExample(); |
|
|
|
proMemberExample.createCriteria().andUserIdEqualTo(userId).andProjectIdEqualTo(param.getProjectId()); |
|
|
|
List<ProMember> proMembers = proMemberMapper.selectByExample(proMemberExample); //默认一个
|
|
|
|
//判断用户是不是项目下的成员
|
|
|
|
List<ProRole> proRoles = new ArrayList<>(); |
|
|
|
//排序后的
|
|
|
|
List<ProRole> proRoles1 = new ArrayList<>(); |
|
|
|
if (CollectionUtil.isNotEmpty(proMembers)) { |
|
|
|
//判断用户是成员是不是有角色 通过成员id来判断
|
|
|
|
ProRoleMemberExample proRoleMemberExample = new ProRoleMemberExample(); |
|
|
|
proRoleMemberExample.createCriteria().andMemberIdEqualTo(proMembers.get(0).getId()); |
|
|
|
List<ProRoleMember> proRoleMembers = proRoleMemberMapper.selectByExample(proRoleMemberExample); |
|
|
|
if (CollectionUtil.isNotEmpty(proRoleMembers)) { |
|
|
|
//用户不是关注者 否 不是才是关注者
|
|
|
|
//用户有角色 角色是那个 查询当前用户所属的角色
|
|
|
|
Long roleId1 = 0L; |
|
|
|
//List<Long> roleIds =null; //查询当前用户所属的角色
|
|
|
|
for (ProRoleMember proRoleMember : proRoleMembers) { |
|
|
|
Long roleId = proRoleMember.getRoleId();//查询当前用户所属的角色 后端 前端
|
|
|
|
roleIds.add(roleId); |
|
|
|
ProRoleRepulsionExample proRoleRepulsionExample = new ProRoleRepulsionExample(); |
|
|
|
proRoleRepulsionExample.createCriteria().andRepulsionRoleIdEqualTo(roleId); |
|
|
|
List<ProRoleRepulsion> proRoleRepulsions = proRoleRepulsionMapper.selectByExample(proRoleRepulsionExample); |
|
|
|
for (ProRoleRepulsion proRoleRepulsion : proRoleRepulsions) { |
|
|
|
roleId1 = proRoleRepulsion.getRoleId();//对自己不可见的角色
|
|
|
|
//判断对自己不可见的角色是不是我的角色
|
|
|
|
roleIds1.add(roleId1); //前端
|
|
|
|
} |
|
|
|
} |
|
|
|
//查询项目下的所有角色 去除不可见角色 通过项目id查找角色id
|
|
|
|
ProRoleExample proRoleExample = new ProRoleExample(); |
|
|
|
proRoleExample.createCriteria().andProjectIdEqualTo(param.getProjectId()); |
|
|
|
proRoles = proRoleMapper.selectByExample(proRoleExample); //前端 后端 UI
|
|
|
|
//在一个集合里面 去除另外一个集合 1 2 3 1 2
|
|
|
|
Iterator<ProRole> iterator7 = proRoles.iterator(); |
|
|
|
while (iterator7.hasNext()) { |
|
|
|
ProRole proRole = iterator7.next(); |
|
|
|
if(roleIds1.size()> 0){ //不可见的角色大于0
|
|
|
|
for (int i = 0; i < roleIds1.size(); i++) { |
|
|
|
int size = roleIds.size(); //当前用户只有一个角色
|
|
|
|
if(size == 1){ |
|
|
|
if (proRole.getId().equals(roleIds1.get(i))) { |
|
|
|
iterator7.remove(); //去除不可见角色
|
|
|
|
} |
|
|
|
}else { |
|
|
|
//不可见角色没有
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
//进行排序 把项目经理拿出来
|
|
|
|
Iterator<ProRole> iterator5 = proRoles.iterator(); |
|
|
|
while (iterator5.hasNext()) { |
|
|
|
ProRole proRole = iterator5.next(); |
|
|
|
String PM = labelDao.queryIsPm(proRole.getLabelId()); |
|
|
|
if (StrUtil.isNotEmpty(PM)) { //是项目经理
|
|
|
|
proRoles1.add(proRole); |
|
|
|
iterator5.remove(); //把项目经理角色拿出去
|
|
|
|
} |
|
|
|
} |
|
|
|
//进行排序 把我的角色拿出来
|
|
|
|
for (int i = 0; i < proRoles.size(); i++) { |
|
|
|
//是否是mine 判断是不是自己的角色// 0否 1是
|
|
|
|
if(!roleIds.isEmpty()){ |
|
|
|
Iterator<Long> iterator6 = roleIds.iterator(); |
|
|
|
while (iterator6.hasNext()) { |
|
|
|
Long roleId = iterator6.next(); |
|
|
|
Long id = proRoles.get(i).getId(); |
|
|
|
if (roleId.equals(id)) { |
|
|
|
proRoles1.add(proRoles.get(i)); |
|
|
|
proRoles.remove(proRoles.get(i)); //把我的角色拿出去
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
//进行排序 把其他角色拿出来
|
|
|
|
for (int i = 0; i < proRoles.size(); i++) { |
|
|
|
proRoles1.add(proRoles.get(i)); |
|
|
|
} |
|
|
|
|
|
|
|
}else{ //用户是游客 是 查询所有 未设置对谁不可见信息 的角色 通过角色id去查找 role_id
|
|
|
|
ProRoleExample proRoleExample = new ProRoleExample(); |
|
|
|
proRoleExample.createCriteria().andProjectIdEqualTo(param.getProjectId()); |
|
|
|
proRoles = proRoleMapper.selectByExample(proRoleExample); |
|
|
|
if (ObjectUtil.isNotNull(proRoles)) { |
|
|
|
Iterator<ProRole> iterator = proRoles.iterator(); |
|
|
|
while (iterator.hasNext()) { |
|
|
|
ProRole proRole = iterator.next(); |
|
|
|
//查看是否设置不可见
|
|
|
|
ProRoleRepulsionExample proRoleRepulsionExample = new ProRoleRepulsionExample(); |
|
|
|
proRoleRepulsionExample.createCriteria().andRepulsionRoleIdEqualTo(proRole.getId()); |
|
|
|
List<ProRoleRepulsion> proRoleRepulsions = proRoleRepulsionMapper.selectByExample(proRoleRepulsionExample); |
|
|
|
if (proRoleRepulsions.size()!=0) { |
|
|
|
//查到就是设置过了 移除
|
|
|
|
iterator.remove(); |
|
|
|
} |
|
|
|
} |
|
|
|
Iterator<ProRole> iterator1 = proRoles.iterator(); |
|
|
|
while (iterator1.hasNext()) { |
|
|
|
ProRole proRole = iterator1.next(); |
|
|
|
String PM = labelDao.queryIsPm(proRole.getLabelId()); |
|
|
|
if (StrUtil.isNotEmpty(PM)) { //是项目经理
|
|
|
|
proRoles1.add(proRole); |
|
|
|
iterator1.remove(); //把项目经理角色拿出去
|
|
|
|
} |
|
|
|
} |
|
|
|
//进行排序 把我的角色拿出来 本来就没有我的角色 不需要判断
|
|
|
|
//进行排序 把其他角色拿出来
|
|
|
|
for (int i = 0; i < proRoles.size(); i++) { |
|
|
|
proRoles1.add(proRoles.get(i)); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} else { //用户是游客 是 查询所有 未设置对谁不可见信息 的角色 通过角色id去查找 role_id
|
|
|
|
ProRoleExample proRoleExample = new ProRoleExample(); |
|
|
|
proRoleExample.createCriteria().andProjectIdEqualTo(param.getProjectId()); |
|
|
|
proRoles = proRoleMapper.selectByExample(proRoleExample); |
|
|
|
if (ObjectUtil.isNotNull(proRoles)) { |
|
|
|
Iterator<ProRole> iterator = proRoles.iterator(); |
|
|
|
while (iterator.hasNext()) { |
|
|
|
ProRole proRole = iterator.next(); |
|
|
|
//查看是否设置不可见
|
|
|
|
ProRoleRepulsionExample proRoleRepulsionExample = new ProRoleRepulsionExample(); |
|
|
|
proRoleRepulsionExample.createCriteria().andRepulsionRoleIdEqualTo(proRole.getId()); |
|
|
|
List<ProRoleRepulsion> proRoleRepulsions = proRoleRepulsionMapper.selectByExample(proRoleRepulsionExample); |
|
|
|
if (proRoleRepulsions.size()!=0) { |
|
|
|
//查到就是设置过了 移除
|
|
|
|
iterator.remove(); |
|
|
|
} |
|
|
|
} |
|
|
|
Iterator<ProRole> iterator1 = proRoles.iterator(); |
|
|
|
while (iterator1.hasNext()) { |
|
|
|
ProRole proRole = iterator1.next(); |
|
|
|
String PM = labelDao.queryIsPm(proRole.getLabelId()); |
|
|
|
if (StrUtil.isNotEmpty(PM)) { //是项目经理
|
|
|
|
proRoles1.add(proRole); |
|
|
|
iterator1.remove(); //把项目经理角色拿出去
|
|
|
|
} |
|
|
|
} |
|
|
|
//进行排序 把我的角色拿出来 本来就没有我的角色 不需要判断
|
|
|
|
//进行排序 把其他角色拿出来
|
|
|
|
for (int i = 0; i < proRoles.size(); i++) { |
|
|
|
proRoles1.add(proRoles.get(i)); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//根据项目id和userId查询当前用户配置的角色栏信息
|
|
|
|
ProRoleShowExample proRoleShowExample = new ProRoleShowExample(); |
|
|
|
proRoleShowExample.createCriteria().andProjectIdEqualTo(param.getProjectId()).andUserIdEqualTo(userId); |
|
|
|
List<ProRoleShow> proRoleShows = proRoleShowMapper.selectByExample(proRoleShowExample); |
|
|
|
//循环所有的角色,判断是否在配置信息内 将角色信息放入“显示角色”的数组内 将角色放入“隐藏角色"数组
|
|
|
|
if (proRoleShows.size()!=0) { //配置过的
|
|
|
|
//通过
|
|
|
|
Iterator<ProRole> iterator = proRoles1.iterator(); |
|
|
|
while (iterator.hasNext()) { |
|
|
|
ProRole proRole = iterator.next(); |
|
|
|
//用户下的角色id 去除 proRoleShows下的
|
|
|
|
Long id = proRole.getId(); |
|
|
|
for (int i = 0; i < proRoleShows.size(); i++) { |
|
|
|
Long roleId = proRoleShows.get(i).getRoleId(); |
|
|
|
if(id.equals(roleId)){ |
|
|
|
iterator.remove(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
//proRoles1里面就是没有设置过的
|
|
|
|
for (int i = 0; i < proRoles1.size(); i++) { |
|
|
|
CRoleVo.RoleInfo RoleInfo1 = new CRoleVo.RoleInfo(); |
|
|
|
RoleInfo1.setId(proRoles1.get(i).getId()); |
|
|
|
RoleInfo1.setName(proRoles1.get(i).getName()); |
|
|
|
//是否是pm
|
|
|
|
String PM = labelDao.queryIsPm(proRoles1.get(i).getLabelId()); |
|
|
|
if (StrUtil.isNotEmpty(PM)) { //是
|
|
|
|
RoleInfo1.setPm(1L); |
|
|
|
} else { |
|
|
|
RoleInfo1.setPm(0L); |
|
|
|
} |
|
|
|
//是否是mine 判断是不是自己的角色// 0否 1是
|
|
|
|
if(roleIds.size()!=0){ |
|
|
|
for (Long roleId1 : roleIds) { |
|
|
|
Long id1 = proRoles1.get(i).getId(); |
|
|
|
if (roleId1.equals(id1)) { |
|
|
|
RoleInfo1.setMine(1L); |
|
|
|
break; |
|
|
|
} else { |
|
|
|
RoleInfo1.setMine(0L); |
|
|
|
} |
|
|
|
} |
|
|
|
}else { |
|
|
|
RoleInfo1.setMine(0L); |
|
|
|
} |
|
|
|
//排序
|
|
|
|
RoleInfo1.setSequence((long) i+1); |
|
|
|
invisibleList.add(RoleInfo1); |
|
|
|
} |
|
|
|
//proRoleShows里面就是设置过的 设置过的里面id是否设置了不可见
|
|
|
|
for (ProRoleShow proRoleShow : proRoleShows) { |
|
|
|
ProRoleExample proRoleExample = new ProRoleExample(); |
|
|
|
proRoleExample.createCriteria().andIdEqualTo(proRoleShow.getRoleId()); |
|
|
|
List<ProRole> proRoles2 = proRoleMapper.selectByExample(proRoleExample); |
|
|
|
CRoleVo.RoleInfo RoleInfo1 = new CRoleVo.RoleInfo(); |
|
|
|
RoleInfo1.setId(proRoles2.get(0).getId()); |
|
|
|
RoleInfo1.setName(proRoles2.get(0).getName()); |
|
|
|
//是否是pm 0否 1 是 //通过标签来定义 5 和 2 34是
|
|
|
|
//通过角色表里面的标签id 去 标签表查询 label_type_id =5 在去标签类型表查5 和 level =2
|
|
|
|
String PM = labelDao.queryIsPm(proRoles2.get(0).getLabelId()); |
|
|
|
if (StrUtil.isNotEmpty(PM)) { //是
|
|
|
|
RoleInfo1.setPm(1L); |
|
|
|
} else { |
|
|
|
RoleInfo1.setPm(0L); |
|
|
|
} |
|
|
|
//是否是mine 判断是不是自己的角色// 0否 1是
|
|
|
|
if(roleIds.size()!=0){ |
|
|
|
for (Long roleId1 : roleIds) { |
|
|
|
Long id1 = proRoles2.get(0).getId(); |
|
|
|
if (roleId1.equals(id1)) { |
|
|
|
RoleInfo1.setMine(1L); |
|
|
|
break; |
|
|
|
} else { |
|
|
|
RoleInfo1.setMine(0L); |
|
|
|
} |
|
|
|
} |
|
|
|
}else { |
|
|
|
RoleInfo1.setMine(0L); |
|
|
|
} |
|
|
|
//排序
|
|
|
|
RoleInfo1.setSequence(Long.valueOf(proRoleShow.getSequence())); |
|
|
|
visibleList.add(RoleInfo1); |
|
|
|
} |
|
|
|
} else { |
|
|
|
//循环查询到的角色,放入“显示角色”的数组内 数组长度大于等于5
|
|
|
|
if(proRoles1.size()<6){ |
|
|
|
for (int i = 0; i < proRoles1.size(); i++) { |
|
|
|
CRoleVo.RoleInfo RoleInfo1 = new CRoleVo.RoleInfo(); |
|
|
|
RoleInfo1.setId(proRoles1.get(i).getId()); |
|
|
|
RoleInfo1.setName(proRoles1.get(i).getName()); |
|
|
|
//是否是pm
|
|
|
|
String PM = labelDao.queryIsPm(proRoles1.get(i).getLabelId()); |
|
|
|
if (StrUtil.isNotEmpty(PM)) { //是
|
|
|
|
RoleInfo1.setPm(1L); |
|
|
|
} else { |
|
|
|
RoleInfo1.setPm(0L); |
|
|
|
} |
|
|
|
//是否是mine 判断是不是自己的角色// 0否 1是
|
|
|
|
if(roleIds.size()!=0){ |
|
|
|
for (Long roleId : roleIds) { |
|
|
|
Long id = proRoles1.get(i).getId(); |
|
|
|
if (roleId.equals(id)) { |
|
|
|
RoleInfo1.setMine(1L); |
|
|
|
break; |
|
|
|
} else { |
|
|
|
RoleInfo1.setMine(0L); |
|
|
|
} |
|
|
|
} |
|
|
|
}else { |
|
|
|
RoleInfo1.setMine(0L); |
|
|
|
} |
|
|
|
//排序
|
|
|
|
RoleInfo1.setSequence((long) i+1); |
|
|
|
visibleList.add(RoleInfo1); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (proRoles1.size() >= 6) { |
|
|
|
for (int i = 0; i < 5; i++) { |
|
|
|
CRoleVo.RoleInfo RoleInfo1 = new CRoleVo.RoleInfo(); |
|
|
|
RoleInfo1.setId(proRoles1.get(i).getId()); |
|
|
|
RoleInfo1.setName(proRoles1.get(i).getName()); |
|
|
|
//是否是pm
|
|
|
|
String PM = labelDao.queryIsPm(proRoles1.get(i).getLabelId()); |
|
|
|
if (StrUtil.isNotEmpty(PM)) { //是
|
|
|
|
RoleInfo1.setPm(1L); |
|
|
|
} else { |
|
|
|
RoleInfo1.setPm(0L); |
|
|
|
} |
|
|
|
//是否是mine 判断是不是自己的角色// 0否 1是
|
|
|
|
if(roleIds.size()!=0){ |
|
|
|
for (Long roleId : roleIds) { |
|
|
|
Long id = proRoles1.get(i).getId(); |
|
|
|
if (roleId.equals(id)) { |
|
|
|
RoleInfo1.setMine(1L); |
|
|
|
break; |
|
|
|
} else { |
|
|
|
RoleInfo1.setMine(0L); |
|
|
|
} |
|
|
|
} |
|
|
|
}else { |
|
|
|
RoleInfo1.setMine(0L); |
|
|
|
} |
|
|
|
|
|
|
|
//排序
|
|
|
|
RoleInfo1.setSequence((long) i+1); |
|
|
|
visibleList.add(RoleInfo1); |
|
|
|
} |
|
|
|
|
|
|
|
//将剩下的角色放入“隐藏角色”数组
|
|
|
|
for (int i = 5; i < proRoles1.size(); i++) { |
|
|
|
CRoleVo.RoleInfo RoleInfo1 = new CRoleVo.RoleInfo(); |
|
|
|
RoleInfo1.setId(proRoles1.get(i).getId()); |
|
|
|
RoleInfo1.setName(proRoles1.get(i).getName()); |
|
|
|
//是否是pm
|
|
|
|
String PM = labelDao.queryIsPm(proRoles1.get(i).getLabelId()); |
|
|
|
if (StrUtil.isNotEmpty(PM)) { //是
|
|
|
|
RoleInfo1.setPm(1L); |
|
|
|
} else { |
|
|
|
RoleInfo1.setPm(0L); |
|
|
|
} |
|
|
|
//是否是mine 判断是不是自己的角色// 0否 1是
|
|
|
|
if(roleIds.size()!=0){ |
|
|
|
for (Long roleId : roleIds) { |
|
|
|
Long id = proRoles1.get(i).getId(); |
|
|
|
if (roleId.equals(id)) { |
|
|
|
RoleInfo1.setMine(1L); |
|
|
|
break; |
|
|
|
} else { |
|
|
|
RoleInfo1.setMine(0L); |
|
|
|
} |
|
|
|
} |
|
|
|
}else { |
|
|
|
RoleInfo1.setMine(0L); |
|
|
|
} |
|
|
|
//排序
|
|
|
|
RoleInfo1.setSequence((long) (i-4)); //5-4
|
|
|
|
invisibleList.add(RoleInfo1); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
role.setInvisibleList(invisibleList); |
|
|
|
role.setVisibleList(visibleList); |
|
|
|
// //角色显示的角色
|
|
|
|
// List<CRoleVo.RoleInfo> visibleList = new ArrayList<>();
|
|
|
|
// //不显示的角色
|
|
|
|
// List<CRoleVo.RoleInfo> invisibleList = new ArrayList<>();
|
|
|
|
// //查询当前用户所属的角色的list
|
|
|
|
// List<Long> roleIds = new ArrayList<>();
|
|
|
|
// //对自己不可见的角色的list
|
|
|
|
// List<Long> roleIds1 = new ArrayList<>();
|
|
|
|
// //判断是否是关注者 用户不是项目下的成员 并且 用户是成员但不属于任何角色 就是关注者
|
|
|
|
// // 判断用户是成员但是不属于任何角色 在成员表下查询到 成员信息
|
|
|
|
// ProMemberExample proMemberExample = new ProMemberExample();
|
|
|
|
// proMemberExample.createCriteria().andUserIdEqualTo(userId).andProjectIdEqualTo(param.getProjectId());
|
|
|
|
// List<ProMember> proMembers = proMemberMapper.selectByExample(proMemberExample); //默认一个
|
|
|
|
// //判断用户是不是项目下的成员
|
|
|
|
// List<ProRole> proRoles = new ArrayList<>();
|
|
|
|
// //排序后的
|
|
|
|
// List<ProRole> proRoles1 = new ArrayList<>();
|
|
|
|
// if (CollectionUtil.isNotEmpty(proMembers)) {
|
|
|
|
// //判断用户是成员是不是有角色 通过成员id来判断
|
|
|
|
// ProRoleMemberExample proRoleMemberExample = new ProRoleMemberExample();
|
|
|
|
// proRoleMemberExample.createCriteria().andMemberIdEqualTo(proMembers.get(0).getId());
|
|
|
|
// List<ProRoleMember> proRoleMembers = proRoleMemberMapper.selectByExample(proRoleMemberExample);
|
|
|
|
// if (CollectionUtil.isNotEmpty(proRoleMembers)) {
|
|
|
|
// //用户不是关注者 否 不是才是关注者
|
|
|
|
// //用户有角色 角色是那个 查询当前用户所属的角色
|
|
|
|
// Long roleId1 = 0L;
|
|
|
|
// //List<Long> roleIds =null; //查询当前用户所属的角色
|
|
|
|
// for (ProRoleMember proRoleMember : proRoleMembers) {
|
|
|
|
// Long roleId = proRoleMember.getRoleId();//查询当前用户所属的角色 后端 前端
|
|
|
|
// roleIds.add(roleId);
|
|
|
|
// ProRoleRepulsionExample proRoleRepulsionExample = new ProRoleRepulsionExample();
|
|
|
|
// proRoleRepulsionExample.createCriteria().andRepulsionRoleIdEqualTo(roleId);
|
|
|
|
// List<ProRoleRepulsion> proRoleRepulsions = proRoleRepulsionMapper.selectByExample(proRoleRepulsionExample);
|
|
|
|
// for (ProRoleRepulsion proRoleRepulsion : proRoleRepulsions) {
|
|
|
|
// roleId1 = proRoleRepulsion.getRoleId();//对自己不可见的角色
|
|
|
|
// //判断对自己不可见的角色是不是我的角色
|
|
|
|
// roleIds1.add(roleId1); //前端
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// //查询项目下的所有角色 去除不可见角色 通过项目id查找角色id
|
|
|
|
// ProRoleExample proRoleExample = new ProRoleExample();
|
|
|
|
// proRoleExample.createCriteria().andProjectIdEqualTo(param.getProjectId());
|
|
|
|
// proRoles = proRoleMapper.selectByExample(proRoleExample); //前端 后端 UI
|
|
|
|
// //在一个集合里面 去除另外一个集合 1 2 3 1 2
|
|
|
|
// Iterator<ProRole> iterator7 = proRoles.iterator();
|
|
|
|
// while (iterator7.hasNext()) {
|
|
|
|
// ProRole proRole = iterator7.next();
|
|
|
|
// if(roleIds1.size()> 0){ //不可见的角色大于0
|
|
|
|
// for (int i = 0; i < roleIds1.size(); i++) {
|
|
|
|
// int size = roleIds.size(); //当前用户只有一个角色
|
|
|
|
// if(size == 1){
|
|
|
|
// if (proRole.getId().equals(roleIds1.get(i))) {
|
|
|
|
// iterator7.remove(); //去除不可见角色
|
|
|
|
// }
|
|
|
|
// }else {
|
|
|
|
// //不可见角色没有
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// //进行排序 把项目经理拿出来
|
|
|
|
// Iterator<ProRole> iterator5 = proRoles.iterator();
|
|
|
|
// while (iterator5.hasNext()) {
|
|
|
|
// ProRole proRole = iterator5.next();
|
|
|
|
// String PM = labelDao.queryIsPm(proRole.getLabelId());
|
|
|
|
// if (StrUtil.isNotEmpty(PM)) { //是项目经理
|
|
|
|
// proRoles1.add(proRole);
|
|
|
|
// iterator5.remove(); //把项目经理角色拿出去
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// //进行排序 把我的角色拿出来
|
|
|
|
// for (int i = 0; i < proRoles.size(); i++) {
|
|
|
|
// //是否是mine 判断是不是自己的角色// 0否 1是
|
|
|
|
// if(!roleIds.isEmpty()){
|
|
|
|
// Iterator<Long> iterator6 = roleIds.iterator();
|
|
|
|
// while (iterator6.hasNext()) {
|
|
|
|
// Long roleId = iterator6.next();
|
|
|
|
// Long id = proRoles.get(i).getId();
|
|
|
|
// if (roleId.equals(id)) {
|
|
|
|
// proRoles1.add(proRoles.get(i));
|
|
|
|
// proRoles.remove(proRoles.get(i)); //把我的角色拿出去
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// }
|
|
|
|
// //进行排序 把其他角色拿出来
|
|
|
|
// for (int i = 0; i < proRoles.size(); i++) {
|
|
|
|
// proRoles1.add(proRoles.get(i));
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// }else{ //用户是游客 是 查询所有 未设置对谁不可见信息 的角色 通过角色id去查找 role_id
|
|
|
|
// ProRoleExample proRoleExample = new ProRoleExample();
|
|
|
|
// proRoleExample.createCriteria().andProjectIdEqualTo(param.getProjectId());
|
|
|
|
// proRoles = proRoleMapper.selectByExample(proRoleExample);
|
|
|
|
// if (ObjectUtil.isNotNull(proRoles)) {
|
|
|
|
// Iterator<ProRole> iterator = proRoles.iterator();
|
|
|
|
// while (iterator.hasNext()) {
|
|
|
|
// ProRole proRole = iterator.next();
|
|
|
|
// //查看是否设置不可见
|
|
|
|
// ProRoleRepulsionExample proRoleRepulsionExample = new ProRoleRepulsionExample();
|
|
|
|
// proRoleRepulsionExample.createCriteria().andRepulsionRoleIdEqualTo(proRole.getId());
|
|
|
|
// List<ProRoleRepulsion> proRoleRepulsions = proRoleRepulsionMapper.selectByExample(proRoleRepulsionExample);
|
|
|
|
// if (proRoleRepulsions.size()!=0) {
|
|
|
|
// //查到就是设置过了 移除
|
|
|
|
// iterator.remove();
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// Iterator<ProRole> iterator1 = proRoles.iterator();
|
|
|
|
// while (iterator1.hasNext()) {
|
|
|
|
// ProRole proRole = iterator1.next();
|
|
|
|
// String PM = labelDao.queryIsPm(proRole.getLabelId());
|
|
|
|
// if (StrUtil.isNotEmpty(PM)) { //是项目经理
|
|
|
|
// proRoles1.add(proRole);
|
|
|
|
// iterator1.remove(); //把项目经理角色拿出去
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// //进行排序 把我的角色拿出来 本来就没有我的角色 不需要判断
|
|
|
|
// //进行排序 把其他角色拿出来
|
|
|
|
// for (int i = 0; i < proRoles.size(); i++) {
|
|
|
|
// proRoles1.add(proRoles.get(i));
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// } else { //用户是游客 是 查询所有 未设置对谁不可见信息 的角色 通过角色id去查找 role_id
|
|
|
|
// ProRoleExample proRoleExample = new ProRoleExample();
|
|
|
|
// proRoleExample.createCriteria().andProjectIdEqualTo(param.getProjectId());
|
|
|
|
// proRoles = proRoleMapper.selectByExample(proRoleExample);
|
|
|
|
// if (ObjectUtil.isNotNull(proRoles)) {
|
|
|
|
// Iterator<ProRole> iterator = proRoles.iterator();
|
|
|
|
// while (iterator.hasNext()) {
|
|
|
|
// ProRole proRole = iterator.next();
|
|
|
|
// //查看是否设置不可见
|
|
|
|
// ProRoleRepulsionExample proRoleRepulsionExample = new ProRoleRepulsionExample();
|
|
|
|
// proRoleRepulsionExample.createCriteria().andRepulsionRoleIdEqualTo(proRole.getId());
|
|
|
|
// List<ProRoleRepulsion> proRoleRepulsions = proRoleRepulsionMapper.selectByExample(proRoleRepulsionExample);
|
|
|
|
// if (proRoleRepulsions.size()!=0) {
|
|
|
|
// //查到就是设置过了 移除
|
|
|
|
// iterator.remove();
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// Iterator<ProRole> iterator1 = proRoles.iterator();
|
|
|
|
// while (iterator1.hasNext()) {
|
|
|
|
// ProRole proRole = iterator1.next();
|
|
|
|
// String PM = labelDao.queryIsPm(proRole.getLabelId());
|
|
|
|
// if (StrUtil.isNotEmpty(PM)) { //是项目经理
|
|
|
|
// proRoles1.add(proRole);
|
|
|
|
// iterator1.remove(); //把项目经理角色拿出去
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// //进行排序 把我的角色拿出来 本来就没有我的角色 不需要判断
|
|
|
|
// //进行排序 把其他角色拿出来
|
|
|
|
// for (int i = 0; i < proRoles.size(); i++) {
|
|
|
|
// proRoles1.add(proRoles.get(i));
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
//
|
|
|
|
// //根据项目id和userId查询当前用户配置的角色栏信息
|
|
|
|
// ProRoleShowExample proRoleShowExample = new ProRoleShowExample();
|
|
|
|
// proRoleShowExample.createCriteria().andProjectIdEqualTo(param.getProjectId()).andUserIdEqualTo(userId);
|
|
|
|
// List<ProRoleShow> proRoleShows = proRoleShowMapper.selectByExample(proRoleShowExample);
|
|
|
|
// //循环所有的角色,判断是否在配置信息内 将角色信息放入“显示角色”的数组内 将角色放入“隐藏角色"数组
|
|
|
|
// if (proRoleShows.size()!=0) { //配置过的
|
|
|
|
// //通过
|
|
|
|
// Iterator<ProRole> iterator = proRoles1.iterator();
|
|
|
|
// while (iterator.hasNext()) {
|
|
|
|
// ProRole proRole = iterator.next();
|
|
|
|
// //用户下的角色id 去除 proRoleShows下的
|
|
|
|
// Long id = proRole.getId();
|
|
|
|
// for (int i = 0; i < proRoleShows.size(); i++) {
|
|
|
|
// Long roleId = proRoleShows.get(i).getRoleId();
|
|
|
|
// if(id.equals(roleId)){
|
|
|
|
// iterator.remove();
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// //proRoles1里面就是没有设置过的
|
|
|
|
// for (int i = 0; i < proRoles1.size(); i++) {
|
|
|
|
// CRoleVo.RoleInfo RoleInfo1 = new CRoleVo.RoleInfo();
|
|
|
|
// RoleInfo1.setId(proRoles1.get(i).getId());
|
|
|
|
// RoleInfo1.setName(proRoles1.get(i).getName());
|
|
|
|
// //是否是pm
|
|
|
|
// String PM = labelDao.queryIsPm(proRoles1.get(i).getLabelId());
|
|
|
|
// if (StrUtil.isNotEmpty(PM)) { //是
|
|
|
|
// RoleInfo1.setPm(1L);
|
|
|
|
// } else {
|
|
|
|
// RoleInfo1.setPm(0L);
|
|
|
|
// }
|
|
|
|
// //是否是mine 判断是不是自己的角色// 0否 1是
|
|
|
|
// if(roleIds.size()!=0){
|
|
|
|
// for (Long roleId1 : roleIds) {
|
|
|
|
// Long id1 = proRoles1.get(i).getId();
|
|
|
|
// if (roleId1.equals(id1)) {
|
|
|
|
// RoleInfo1.setMine(1L);
|
|
|
|
// break;
|
|
|
|
// } else {
|
|
|
|
// RoleInfo1.setMine(0L);
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// }else {
|
|
|
|
// RoleInfo1.setMine(0L);
|
|
|
|
// }
|
|
|
|
// //排序
|
|
|
|
// RoleInfo1.setSequence((long) i+1);
|
|
|
|
// invisibleList.add(RoleInfo1);
|
|
|
|
// }
|
|
|
|
// //proRoleShows里面就是设置过的 设置过的里面id是否设置了不可见
|
|
|
|
// for (ProRoleShow proRoleShow : proRoleShows) {
|
|
|
|
// ProRoleExample proRoleExample = new ProRoleExample();
|
|
|
|
// proRoleExample.createCriteria().andIdEqualTo(proRoleShow.getRoleId());
|
|
|
|
// List<ProRole> proRoles2 = proRoleMapper.selectByExample(proRoleExample);
|
|
|
|
// CRoleVo.RoleInfo RoleInfo1 = new CRoleVo.RoleInfo();
|
|
|
|
// RoleInfo1.setId(proRoles2.get(0).getId());
|
|
|
|
// RoleInfo1.setName(proRoles2.get(0).getName());
|
|
|
|
// //是否是pm 0否 1 是 //通过标签来定义 5 和 2 34是
|
|
|
|
// //通过角色表里面的标签id 去 标签表查询 label_type_id =5 在去标签类型表查5 和 level =2
|
|
|
|
// String PM = labelDao.queryIsPm(proRoles2.get(0).getLabelId());
|
|
|
|
// if (StrUtil.isNotEmpty(PM)) { //是
|
|
|
|
// RoleInfo1.setPm(1L);
|
|
|
|
// } else {
|
|
|
|
// RoleInfo1.setPm(0L);
|
|
|
|
// }
|
|
|
|
// //是否是mine 判断是不是自己的角色// 0否 1是
|
|
|
|
// if(roleIds.size()!=0){
|
|
|
|
// for (Long roleId1 : roleIds) {
|
|
|
|
// Long id1 = proRoles2.get(0).getId();
|
|
|
|
// if (roleId1.equals(id1)) {
|
|
|
|
// RoleInfo1.setMine(1L);
|
|
|
|
// break;
|
|
|
|
// } else {
|
|
|
|
// RoleInfo1.setMine(0L);
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// }else {
|
|
|
|
// RoleInfo1.setMine(0L);
|
|
|
|
// }
|
|
|
|
// //排序
|
|
|
|
// RoleInfo1.setSequence(Long.valueOf(proRoleShow.getSequence()));
|
|
|
|
// visibleList.add(RoleInfo1);
|
|
|
|
// }
|
|
|
|
// } else {
|
|
|
|
// //循环查询到的角色,放入“显示角色”的数组内 数组长度大于等于5
|
|
|
|
// if(proRoles1.size()<6){
|
|
|
|
// for (int i = 0; i < proRoles1.size(); i++) {
|
|
|
|
// CRoleVo.RoleInfo RoleInfo1 = new CRoleVo.RoleInfo();
|
|
|
|
// RoleInfo1.setId(proRoles1.get(i).getId());
|
|
|
|
// RoleInfo1.setName(proRoles1.get(i).getName());
|
|
|
|
// //是否是pm
|
|
|
|
// String PM = labelDao.queryIsPm(proRoles1.get(i).getLabelId());
|
|
|
|
// if (StrUtil.isNotEmpty(PM)) { //是
|
|
|
|
// RoleInfo1.setPm(1L);
|
|
|
|
// } else {
|
|
|
|
// RoleInfo1.setPm(0L);
|
|
|
|
// }
|
|
|
|
// //是否是mine 判断是不是自己的角色// 0否 1是
|
|
|
|
// if(roleIds.size()!=0){
|
|
|
|
// for (Long roleId : roleIds) {
|
|
|
|
// Long id = proRoles1.get(i).getId();
|
|
|
|
// if (roleId.equals(id)) {
|
|
|
|
// RoleInfo1.setMine(1L);
|
|
|
|
// break;
|
|
|
|
// } else {
|
|
|
|
// RoleInfo1.setMine(0L);
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// }else {
|
|
|
|
// RoleInfo1.setMine(0L);
|
|
|
|
// }
|
|
|
|
// //排序
|
|
|
|
// RoleInfo1.setSequence((long) i+1);
|
|
|
|
// visibleList.add(RoleInfo1);
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// if (proRoles1.size() >= 6) {
|
|
|
|
// for (int i = 0; i < 5; i++) {
|
|
|
|
// CRoleVo.RoleInfo RoleInfo1 = new CRoleVo.RoleInfo();
|
|
|
|
// RoleInfo1.setId(proRoles1.get(i).getId());
|
|
|
|
// RoleInfo1.setName(proRoles1.get(i).getName());
|
|
|
|
// //是否是pm
|
|
|
|
// String PM = labelDao.queryIsPm(proRoles1.get(i).getLabelId());
|
|
|
|
// if (StrUtil.isNotEmpty(PM)) { //是
|
|
|
|
// RoleInfo1.setPm(1L);
|
|
|
|
// } else {
|
|
|
|
// RoleInfo1.setPm(0L);
|
|
|
|
// }
|
|
|
|
// //是否是mine 判断是不是自己的角色// 0否 1是
|
|
|
|
// if(roleIds.size()!=0){
|
|
|
|
// for (Long roleId : roleIds) {
|
|
|
|
// Long id = proRoles1.get(i).getId();
|
|
|
|
// if (roleId.equals(id)) {
|
|
|
|
// RoleInfo1.setMine(1L);
|
|
|
|
// break;
|
|
|
|
// } else {
|
|
|
|
// RoleInfo1.setMine(0L);
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// }else {
|
|
|
|
// RoleInfo1.setMine(0L);
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// //排序
|
|
|
|
// RoleInfo1.setSequence((long) i+1);
|
|
|
|
// visibleList.add(RoleInfo1);
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// //将剩下的角色放入“隐藏角色”数组
|
|
|
|
// for (int i = 5; i < proRoles1.size(); i++) {
|
|
|
|
// CRoleVo.RoleInfo RoleInfo1 = new CRoleVo.RoleInfo();
|
|
|
|
// RoleInfo1.setId(proRoles1.get(i).getId());
|
|
|
|
// RoleInfo1.setName(proRoles1.get(i).getName());
|
|
|
|
// //是否是pm
|
|
|
|
// String PM = labelDao.queryIsPm(proRoles1.get(i).getLabelId());
|
|
|
|
// if (StrUtil.isNotEmpty(PM)) { //是
|
|
|
|
// RoleInfo1.setPm(1L);
|
|
|
|
// } else {
|
|
|
|
// RoleInfo1.setPm(0L);
|
|
|
|
// }
|
|
|
|
// //是否是mine 判断是不是自己的角色// 0否 1是
|
|
|
|
// if(roleIds.size()!=0){
|
|
|
|
// for (Long roleId : roleIds) {
|
|
|
|
// Long id = proRoles1.get(i).getId();
|
|
|
|
// if (roleId.equals(id)) {
|
|
|
|
// RoleInfo1.setMine(1L);
|
|
|
|
// break;
|
|
|
|
// } else {
|
|
|
|
// RoleInfo1.setMine(0L);
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// }else {
|
|
|
|
// RoleInfo1.setMine(0L);
|
|
|
|
// }
|
|
|
|
// //排序
|
|
|
|
// RoleInfo1.setSequence((long) (i-4)); //5-4
|
|
|
|
// invisibleList.add(RoleInfo1);
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// role.setInvisibleList(invisibleList);
|
|
|
|
// role.setVisibleList(visibleList);
|
|
|
|
return role; |
|
|
|
} |
|
|
|
|
|
|
@ -428,4 +428,72 @@ public class ProRoleService implements IProRoleService { |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
public CRoleVo.QueryRole queryShowRole(CRoleDto.QueryRoleById param, Long userId) { |
|
|
|
//返回的对象
|
|
|
|
CRoleVo.QueryRole queryRole = new CRoleVo.QueryRole(); |
|
|
|
List<CRoleVo.RoleInfo> visibleList = new ArrayList<>(); |
|
|
|
List<CRoleVo.RoleInfo> invisibleList = new ArrayList<>(); |
|
|
|
|
|
|
|
//查询当前用户在项目下的角色,没有则算作关注者
|
|
|
|
List<ProRole> userRoleList = proRoleDao.queryRoleByUserId(param.getProjectId(),userId); |
|
|
|
//查询用户可见的角色
|
|
|
|
List<CRoleVo.RoleInfo> roleInfoList; |
|
|
|
if(CollectionUtil.isNotEmpty(userRoleList)){ |
|
|
|
//不是关注者,查询可见的角色(完全屏蔽才不可见)
|
|
|
|
roleInfoList = proRoleDao.notAttentionQueryRole(param.getProjectId(),userRoleList); |
|
|
|
}else { |
|
|
|
//是关注者查询可见的角色(未设置过对谁不可见信息的角色)
|
|
|
|
roleInfoList = proRoleDao.attentionQueryRole(param.getProjectId()); |
|
|
|
} |
|
|
|
//查询配置信息
|
|
|
|
List<Long> showRoleList = proRoleDao.queryShowByUserAndProject(param.getProjectId(),userId); |
|
|
|
if(CollectionUtil.isNotEmpty(showRoleList)){ |
|
|
|
for (Long showRoleId : showRoleList) { |
|
|
|
//循环配置内的信息去匹配角色列表,来确定角色该放在什么地方
|
|
|
|
for (CRoleVo.RoleInfo roleInfo : roleInfoList) { |
|
|
|
if(showRoleId.equals(roleInfo.getId())){ |
|
|
|
//和配置内的信息相同则放入展示角色列表
|
|
|
|
visibleList.add(roleInfo); |
|
|
|
//同时删除数组内的信息
|
|
|
|
roleInfoList.remove(roleInfo); |
|
|
|
//跳出循环,开始配置信息内的下一个
|
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
//剩下的角色全部放在不可见角色列表
|
|
|
|
invisibleList.addAll(roleInfoList); |
|
|
|
}else { |
|
|
|
//没有配置信息则按默认规则
|
|
|
|
if (CollectionUtil.isNotEmpty(roleInfoList)) { |
|
|
|
//循环所有角色
|
|
|
|
for (CRoleVo.RoleInfo roleInfo : roleInfoList) { |
|
|
|
//如果是项目经理,放入展示的角色
|
|
|
|
if (roleInfo.getPm() == 1) { |
|
|
|
visibleList.add(roleInfo); |
|
|
|
continue; |
|
|
|
} |
|
|
|
//是用户所属的角色,放入展示的角色列表
|
|
|
|
if (roleInfo.getMine() == 1) { |
|
|
|
visibleList.add(roleInfo); |
|
|
|
continue; |
|
|
|
} else { |
|
|
|
//不是用户所属的角色,但展示角色列表数量不足五个,
|
|
|
|
if (visibleList.size() < 5) { |
|
|
|
visibleList.add(roleInfo); |
|
|
|
continue; |
|
|
|
} |
|
|
|
} |
|
|
|
//不满足上面条件的,放入不展示的角色列表
|
|
|
|
invisibleList.add(roleInfo); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
queryRole.setVisibleList(visibleList); |
|
|
|
queryRole.setInvisibleList(invisibleList); |
|
|
|
return queryRole; |
|
|
|
} |
|
|
|
} |
|
|
|