|
|
@ -1,5 +1,6 @@ |
|
|
|
package com.ccsens.common.service; |
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollectionUtil; |
|
|
|
import cn.hutool.core.lang.Snowflake; |
|
|
|
import cn.hutool.core.util.ObjectUtil; |
|
|
|
import cn.hutool.core.util.StrUtil; |
|
|
@ -56,6 +57,7 @@ public class ProRoleService implements IProRoleService { |
|
|
|
RoleVo.RoleInfo RoleInfo = new RoleVo.RoleInfo(); |
|
|
|
//不显示的角色
|
|
|
|
List<RoleVo.RoleInfo> invisibleList = new ArrayList<>(); |
|
|
|
List<RoleVo.RoleInfo> invisibleList1 = new ArrayList<>(); |
|
|
|
//查询当前用户所属的角色的list
|
|
|
|
List<Long> roleIds = new ArrayList<>(); |
|
|
|
//对自己不可见的角色的list
|
|
|
@ -69,12 +71,12 @@ public class ProRoleService implements IProRoleService { |
|
|
|
List<ProRole> proRoles = new ArrayList<>(); |
|
|
|
//排序后的
|
|
|
|
List<ProRole> proRoles1 = new ArrayList<>(); |
|
|
|
if (proMembers.size()!=0) { |
|
|
|
if (CollectionUtil.isNotEmpty(proMembers)) { |
|
|
|
//判断用户是成员是不是有角色 通过成员id来判断
|
|
|
|
ProRoleMemberExample proRoleMemberExample = new ProRoleMemberExample(); |
|
|
|
proRoleMemberExample.createCriteria().andMemberIdEqualTo(proMembers.get(0).getId()); |
|
|
|
List<ProRoleMember> proRoleMembers = proRoleMemberMapper.selectByExample(proRoleMemberExample); |
|
|
|
if (ObjectUtil.isNotNull(proRoleMembers)) { |
|
|
|
if (CollectionUtil.isNotEmpty(proRoleMembers)) { |
|
|
|
//用户不是关注者 否 不是才是关注者
|
|
|
|
//用户有角色 角色是那个 查询当前用户所属的角色
|
|
|
|
Long roleId1 = 0L; |
|
|
@ -83,7 +85,7 @@ public class ProRoleService implements IProRoleService { |
|
|
|
Long roleId = proRoleMember.getRoleId();//查询当前用户所属的角色 后端 前端
|
|
|
|
roleIds.add(roleId); |
|
|
|
ProRoleRepulsionExample proRoleRepulsionExample = new ProRoleRepulsionExample(); |
|
|
|
proRoleRepulsionExample.createCriteria().andRoleIdEqualTo(roleId); |
|
|
|
proRoleRepulsionExample.createCriteria().andRepulsionRoleIdEqualTo(roleId); |
|
|
|
List<ProRoleRepulsion> proRoleRepulsions = proRoleRepulsionMapper.selectByExample(proRoleRepulsionExample); |
|
|
|
for (ProRoleRepulsion proRoleRepulsion : proRoleRepulsions) { |
|
|
|
roleId1 = proRoleRepulsion.getRoleId();//对自己不可见的角色
|
|
|
@ -110,7 +112,6 @@ public class ProRoleService implements IProRoleService { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//进行排序 把项目经理拿出来
|
|
|
|
Iterator<ProRole> iterator5 = proRoles.iterator(); |
|
|
|
while (iterator5.hasNext()) { |
|
|
@ -121,7 +122,6 @@ public class ProRoleService implements IProRoleService { |
|
|
|
iterator5.remove(); //把项目经理角色拿出去
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/*for (int i = 0; i < proRoles.size(); i++) { |
|
|
|
String PM = labelDao.queryIsPm(proRoles.get(i).getLabelId()); |
|
|
|
if (StrUtil.isNotEmpty(PM)) { //是项目经理
|
|
|
@ -162,228 +162,155 @@ public class ProRoleService implements IProRoleService { |
|
|
|
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)) { |
|
|
|
/*for (ProRole proRole : proRoles) { |
|
|
|
ProRoleRepulsionExample proRoleRepulsionExample = new ProRoleRepulsionExample(); |
|
|
|
proRoleRepulsionExample.createCriteria().andRoleIdEqualTo(proRole.getId()); |
|
|
|
List<ProRoleRepulsion> proRoleRepulsions = proRoleRepulsionMapper.selectByExample(proRoleRepulsionExample); |
|
|
|
if (ObjectUtil.isNotNull(proRoleRepulsions)) { |
|
|
|
//查到就是设置过了 移除
|
|
|
|
proRoles.remove(proRole); |
|
|
|
} |
|
|
|
}*/ |
|
|
|
|
|
|
|
Iterator<ProRole> iterator = proRoles.iterator(); |
|
|
|
while (iterator.hasNext()) { |
|
|
|
ProRole proRole = iterator.next(); |
|
|
|
//查看是否设置不可见
|
|
|
|
ProRoleRepulsionExample proRoleRepulsionExample = new ProRoleRepulsionExample(); |
|
|
|
proRoleRepulsionExample.createCriteria().andRoleIdEqualTo(proRole.getId()); |
|
|
|
proRoleRepulsionExample.createCriteria().andRepulsionRoleIdEqualTo(proRole.getId()); |
|
|
|
List<ProRoleRepulsion> proRoleRepulsions = proRoleRepulsionMapper.selectByExample(proRoleRepulsionExample); |
|
|
|
if (proRoleRepulsions.size()!=0) { |
|
|
|
//查到就是设置过了 移除
|
|
|
|
iterator.remove(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//进行排序 把项目经理拿出来
|
|
|
|
/*for (int i = 0; i < proRoles.size(); i++) { |
|
|
|
String PM = labelDao.queryIsPm(proRoles.get(i).getLabelId()); |
|
|
|
if (StrUtil.isNotEmpty(PM)) { //是项目经理
|
|
|
|
ProRole proRole = proRoles.get(i); |
|
|
|
proRoles1.add(proRole); |
|
|
|
proRoles.remove(proRole); //把项目经理角色拿出去
|
|
|
|
} |
|
|
|
}*/ |
|
|
|
|
|
|
|
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); |
|
|
|
proRoles.remove(proRole); //把项目经理角色拿出去
|
|
|
|
iterator1.remove(); //把项目经理角色拿出去
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//进行排序 把我的角色拿出来 本来就没有我的角色 不需要判断
|
|
|
|
/*for (int i = 0; i < proRoles.size(); i++) { |
|
|
|
//是否是mine 判断是不是自己的角色// 0否 1是
|
|
|
|
if(!roleIds.isEmpty()){ |
|
|
|
for (Long roleId : roleIds) { |
|
|
|
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++) { |
|
|
|
//是否是mine 判断是不是自己的角色// 0否 1是
|
|
|
|
if(!roleIds.isEmpty()){ |
|
|
|
Iterator<Long> iterator2 = roleIds.iterator(); |
|
|
|
while (iterator2.hasNext()) { |
|
|
|
Long roleId = iterator2.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)); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//根据项目id和userId查询当前用户配置的角色栏信息
|
|
|
|
ProRoleShowExample proRoleShowExample = new ProRoleShowExample(); |
|
|
|
proRoleShowExample.createCriteria().andProjectIdEqualTo(param.getProjectId()).andUserIdEqualTo(userId); |
|
|
|
List<ProRoleShow> proRoleShows = proRoleShowMapper.selectByExample(proRoleShowExample); |
|
|
|
//循环所有的角色,判断是否在配置信息内 将角色信息放入“显示角色”的数组内 将角色放入“隐藏角色"数组
|
|
|
|
if (proRoleShows.size()!=0) { |
|
|
|
for (int i = 0; i < proRoles1.size(); i++) { |
|
|
|
for (ProRoleShow proRoleShow : proRoleShows) { |
|
|
|
Long roleId = proRoleShow.getRoleId(); //配置信息的id
|
|
|
|
Long id = proRoles1.get(i).getId(); //项目下的角色
|
|
|
|
if(roleId.equals(id)){ //一样就是配置过
|
|
|
|
RoleVo.RoleInfo RoleInfo1 = new RoleVo.RoleInfo(); |
|
|
|
RoleInfo1.setId(proRoles1.get(i).getId()); |
|
|
|
RoleInfo1.setName(proRoles1.get(i).getName()); |
|
|
|
//是否是pm 0否 1 是 //通过标签来定义 5 和 2 34是
|
|
|
|
//通过角色表里面的标签id 去 标签表查询 label_type_id =5 在去标签类型表查5 和 level =2
|
|
|
|
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); |
|
|
|
} else { |
|
|
|
RoleInfo1.setMine(0L); |
|
|
|
} |
|
|
|
} |
|
|
|
}else { |
|
|
|
RoleInfo1.setMine(0L); |
|
|
|
} |
|
|
|
//排序
|
|
|
|
RoleInfo1.setSequence(Long.valueOf(proRoleShow.getSequence())); |
|
|
|
visibleList.add(RoleInfo1); |
|
|
|
|
|
|
|
}else{ |
|
|
|
//未配置过了
|
|
|
|
RoleVo.RoleInfo RoleInfo1 = new RoleVo.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是
|
|
|
|
for (Long roleId1 : roleIds) { |
|
|
|
Long id1 = proRoles1.get(i).getId(); |
|
|
|
if (roleId1.equals(id1)) { |
|
|
|
RoleInfo1.setMine(1L); |
|
|
|
} else { |
|
|
|
RoleInfo1.setMine(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); |
|
|
|
} else { |
|
|
|
RoleInfo1.setMine(0L); |
|
|
|
} |
|
|
|
} |
|
|
|
}else { |
|
|
|
RoleInfo1.setMine(0L); |
|
|
|
} |
|
|
|
//排序
|
|
|
|
RoleInfo1.setSequence((long) i+1); |
|
|
|
invisibleList.add(RoleInfo1); |
|
|
|
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(); |
|
|
|
} |
|
|
|
} |
|
|
|
/*ProRoleShowExample proRoleShowExample1 = new ProRoleShowExample(); |
|
|
|
proRoleShowExample.createCriteria().andRoleIdEqualTo(proRoles1.get(i).getId()).andProjectIdEqualTo(param.getProjectId()).andUserIdEqualTo(userId); |
|
|
|
List<ProRoleShow> proRoleShows1 = proRoleShowMapper.selectByExample(proRoleShowExample1);*/ |
|
|
|
/*if (ObjectUtil.isNotNull(proRoleShows1)) { |
|
|
|
//配置过了 将角色信总放入“显示角色"的数组内
|
|
|
|
RoleVo.RoleInfo RoleInfo1 = new RoleVo.RoleInfo(); |
|
|
|
RoleInfo1.setId(proRoles1.get(i).getId()); |
|
|
|
RoleInfo1.setName(proRoles1.get(i).getName()); |
|
|
|
//是否是pm 0否 1 是 //通过标签来定义 5 和 2 34是
|
|
|
|
//通过角色表里面的标签id 去 标签表查询 label_type_id =5 在去标签类型表查5 和 level =2
|
|
|
|
String PM = labelDao.queryIsPm(proRoles1.get(i).getLabelId()); |
|
|
|
if (StrUtil.isNotEmpty(PM)) { //是
|
|
|
|
RoleInfo.setPm(1L); |
|
|
|
} else { |
|
|
|
RoleInfo.setPm(0L); |
|
|
|
} |
|
|
|
|
|
|
|
//是否是mine 判断是不是自己的角色// 0否 1是
|
|
|
|
for (Long roleId : roleIds) { |
|
|
|
Long id = proRoles1.get(i).getId(); |
|
|
|
if (roleId.equals(id)) { |
|
|
|
} |
|
|
|
//proRoles1里面就是没有设置过的
|
|
|
|
for (int i = 0; i < proRoles1.size(); i++) { |
|
|
|
RoleVo.RoleInfo RoleInfo1 = new RoleVo.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); |
|
|
|
} else { |
|
|
|
RoleInfo1.setMine(0L); |
|
|
|
} |
|
|
|
} |
|
|
|
//排序
|
|
|
|
RoleInfo1.setSequence(Long.valueOf(proRoleShows1.get(0).getSequence())); |
|
|
|
visibleList.add(RoleInfo1); |
|
|
|
|
|
|
|
}else { |
|
|
|
RoleInfo1.setMine(0L); |
|
|
|
} |
|
|
|
//排序
|
|
|
|
RoleInfo1.setSequence((long) i+1); |
|
|
|
invisibleList.add(RoleInfo1); |
|
|
|
} |
|
|
|
//proRoleShows里面就是设置过的
|
|
|
|
for (ProRoleShow proRoleShow : proRoleShows) { |
|
|
|
ProRoleExample proRoleExample = new ProRoleExample(); |
|
|
|
proRoleExample.createCriteria().andIdEqualTo(proRoleShow.getRoleId()); |
|
|
|
List<ProRole> proRoles2 = proRoleMapper.selectByExample(proRoleExample); |
|
|
|
RoleVo.RoleInfo RoleInfo1 = new RoleVo.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 { |
|
|
|
//未配置过了
|
|
|
|
RoleInfo.setId(proRoles1.get(i).getId()); |
|
|
|
RoleInfo.setName(proRoles1.get(i).getName()); |
|
|
|
//是否是pm
|
|
|
|
String PM = labelDao.queryIsPm(proRoles1.get(i).getLabelId()); |
|
|
|
if (StrUtil.isNotEmpty(PM)) { //是
|
|
|
|
RoleInfo.setPm(1L); |
|
|
|
} else { |
|
|
|
RoleInfo.setPm(0L); |
|
|
|
} |
|
|
|
//是否是mine 判断是不是自己的角色// 0否 1是
|
|
|
|
for (Long roleId : roleIds) { |
|
|
|
Long id = proRoles1.get(i).getId(); |
|
|
|
if (roleId.equals(id)) { |
|
|
|
RoleInfo.setMine(1L); |
|
|
|
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); |
|
|
|
} else { |
|
|
|
RoleInfo.setMine(0L); |
|
|
|
RoleInfo1.setMine(0L); |
|
|
|
} |
|
|
|
} |
|
|
|
//排序
|
|
|
|
RoleInfo.setSequence((long) i); |
|
|
|
invisibleList.add(RoleInfo); |
|
|
|
}*/ |
|
|
|
}else { |
|
|
|
RoleInfo1.setMine(0L); |
|
|
|
} |
|
|
|
//排序
|
|
|
|
RoleInfo1.setSequence(Long.valueOf(proRoleShow.getSequence())); |
|
|
|
visibleList.add(RoleInfo1); |
|
|
|
} |
|
|
|
} else { |
|
|
|
//循环查询到的角色,放入“显示角色”的数组内 数组长度大于等于5
|
|
|
@ -413,7 +340,6 @@ public class ProRoleService implements IProRoleService { |
|
|
|
}else { |
|
|
|
RoleInfo1.setMine(0L); |
|
|
|
} |
|
|
|
|
|
|
|
//排序
|
|
|
|
RoleInfo1.setSequence((long) i+1); |
|
|
|
visibleList.add(RoleInfo1); |
|
|
@ -421,7 +347,6 @@ public class ProRoleService implements IProRoleService { |
|
|
|
} |
|
|
|
|
|
|
|
if (proRoles1.size() >= 6) { |
|
|
|
|
|
|
|
for (int i = 0; i < 5; i++) { |
|
|
|
RoleVo.RoleInfo RoleInfo1 = new RoleVo.RoleInfo(); |
|
|
|
RoleInfo1.setId(proRoles1.get(i).getId()); |
|
|
|