Browse Source

修改查询角色栏的接口

tall3
zy_Java 4 years ago
parent
commit
9ec85a5bdd
  1. 6
      common/src/main/java/com/ccsens/common/bean/vo/CRoleVo.java
  2. 31
      common/src/main/java/com/ccsens/common/persist/dao/ProRoleDao.java
  3. 2
      common/src/main/java/com/ccsens/common/service/IProRoleService.java
  4. 752
      common/src/main/java/com/ccsens/common/service/ProRoleService.java
  5. 73
      common/src/main/resources/mapper_dao/ProRoleDao.xml
  6. 2
      tall/src/main/resources/application-dev.yml
  7. 5
      util/src/main/java/com/ccsens/util/cron/NatureConstant.java
  8. 21
      util/src/main/java/com/ccsens/util/cron/NatureToDate.java

6
common/src/main/java/com/ccsens/common/bean/vo/CRoleVo.java

@ -26,13 +26,13 @@ public class CRoleVo {
@ApiModelProperty("角色id")
private Long id;
@ApiModelProperty("是否是项目经理 0否 1是")
private Long pm;
private int pm;
@ApiModelProperty("是否是自己所属的角色 0否 1是")
private Long mine;
private int mine;
@ApiModelProperty("角色名")
private String name;
@ApiModelProperty("排序")
private Long sequence;
private int sequence;
}
@Data

31
common/src/main/java/com/ccsens/common/persist/dao/ProRoleDao.java

@ -64,4 +64,35 @@ public interface ProRoleDao extends ProRoleMapper {
* @return 角色列表
*/
List<CRoleVo.AllRole> findAllRoleById(@Param("roleId") Long roleId);
/**
* 根据userId查询项目下所属的角色
* @param projectId
* @param userId
* @return
*/
List<ProRole> queryRoleByUserId(@Param("projectId")Long projectId, @Param("userId")Long userId);
/**
* 不是关注者查询可见角色
* @param projectId
* @param userRoleList
* @return
*/
List<CRoleVo.RoleInfo> notAttentionQueryRole(@Param("projectId")Long projectId, @Param("userRoleList")List<ProRole> userRoleList);
/**
* 是关注者查询可见角色
* @param projectId
* @return
*/
List<CRoleVo.RoleInfo> attentionQueryRole(@Param("projectId")Long projectId);
/**
* 查询用户配置的角色栏信息
* @param projectId
* @param userId
* @return
*/
List<Long> queryShowByUserAndProject(@Param("projectId")Long projectId, @Param("userId")Long userId);
}

2
common/src/main/java/com/ccsens/common/service/IProRoleService.java

@ -8,4 +8,6 @@ public interface IProRoleService {
CRoleVo.QueryRole QueryShowRole(CRoleDto.QueryRoleById param, Long userId);
void updateShowRole(CRoleDto.UpdateRoleShow param, Long userId);
CRoleVo.QueryRole queryShowRole(CRoleDto.QueryRoleById param, Long userId);
}

752
common/src/main/java/com/ccsens/common/service/ProRoleService.java

@ -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;
}
}

73
common/src/main/resources/mapper_dao/ProRoleDao.xml

@ -122,5 +122,78 @@
AND id = #{roleId}
)
</select>
<select id="queryRoleByUserId" resultType="com.ccsens.common.bean.po.ProRole">
SELECT
r.id,
r.`name`
FROM
t_pro_role r
LEFT JOIN t_pro_role_member rm on rm.role_id = r.id
LEFT JOIN t_pro_member m on m.id = rm.member_id
WHERE
r.project_id = #{projectId}
and m.user_id = #{userId}
and r.rec_status = 0
and rm.rec_status = 0
and m.rec_status = 0
</select>
<select id="notAttentionQueryRole" resultType="com.ccsens.common.bean.vo.CRoleVo$RoleInfo">
SELECT
r.id,
r.`name`,
if(l.`level` = 0,0,1) as pm,
if(r.id in
<foreach collection="userRoleList" index="index" item="item" open="(" separator="," close=")">
#{item.id}
</foreach>
,1,0) as mine
FROM
t_pro_role r
LEFT JOIN t_label l on r.label_id = l.id
LEFT JOIN t_pro_role_repulsion rr on r.id = rr.role_id and rr.rec_status = 0
WHERE
r.project_id = #{projectId}
and r.rec_status = 0
and l.`level` &lt; 2
and l.rec_status = 0
and
(
rr.repulsion_role_id in
<foreach collection="userRoleList" index="index" item="item" open="(" separator="," close=")">
#{item.id}
</foreach>
or
rr.id is null
)
GROUP BY r.id
</select>
<select id="attentionQueryRole" resultType="com.ccsens.common.bean.vo.CRoleVo$RoleInfo">
SELECT
r.id,
r.`name`,
if(l.`level` = 0,0,1) as pm,
0 as mine
FROM
t_pro_role r
LEFT JOIN t_label l on r.label_id = l.id
LEFT JOIN t_pro_role_repulsion rr on r.id = rr.role_id and rr.rec_status = 0
WHERE
r.project_id = #{projectId}
and r.rec_status = 0
and l.`level` &lt; 2
and l.rec_status = 0
and rr.id is null
GROUP BY r.id
</select>
<select id="queryShowByUserAndProject" resultType="java.lang.Long">
SELECT
*
FROM
t_pro_role_show
WHERE
project_id = #{projectId}
and user_id = #{userId}
</select>
</mapper>

2
tall/src/main/resources/application-dev.yml

@ -11,7 +11,7 @@ spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
rabbitmq:
host: 192.168.0.99
host: dd.tall.wiki
#host: 127.0.0.1
password: 111111
port: 5672

5
util/src/main/java/com/ccsens/util/cron/NatureConstant.java

@ -53,9 +53,8 @@ public class NatureConstant {
public static final String WORKDAY_TIMME = "工作日([0-9"+CHINESE_NUM+"]*)点?小?时?";
public static final String WORKDAY_MONTH = "每月(最后|第)一个工作日";
}

21
util/src/main/java/com/ccsens/util/cron/NatureToDate.java

@ -46,6 +46,7 @@ public class NatureToDate {
// System.out.println("第1天:" + generateDates("第1天", start, end));
// System.out.println("每40分钟:" + generateDates("每40分钟", start, end));
// System.out.println("每月15号下午5点:" + generateDates("每月15号下午5点", start, end));
System.out.println("每月最后一个工作日:" + generateDates("每月最后一个工作日", start, end));
// log.info("周一到周五 8点-9点: " + generateDates("周一到周五 18点", start, end));
// log.info("每年3月5号前: " + generateDates("每年03月05号前", start, end));
@ -63,9 +64,7 @@ public class NatureToDate {
* @param endDate
* @return
*/
public static List<CronConstant.TaskDate> generateDates(String nature, Date startDate, Date endDate) {
if (StringUtil.isEmpty(nature)) {
public static List<CronConstant.TaskDate> generateDates(String nature, Date startDate, Date endDate) { if (StringUtil.isEmpty(nature)) {
// TODO
throw new BaseException("重复内容为空");
}
@ -145,6 +144,9 @@ public class NatureToDate {
int num = CronConstant.CronExpression.getNum(numStr);
CronConstant.TaskDate taskDate = getTaskDate(startDate, endDate, Calendar.YEAR, num-1, 1);
taskDates.add(taskDate);
return taskDates;
} else if(StringUtil.isMatch(nature, NatureConstant.WORKDAY_MONTH)){
return taskDates;
}
@ -266,11 +268,14 @@ public class NatureToDate {
} else if (StringUtil.isMatch(nature, NatureConstant.WEEK_EVERY)){
String[] natureArr = nature.split(NatureConstant.SPACE);
} else if (nature.contains(NatureConstant.WORK_DAY)) {
//工作日
split[0] = nature.replaceAll("工作日","周1");
split[1] = nature.replaceAll("工作日","周6");
} else if (StringUtil.isMatch(nature, NatureConstant.BEFORE_YEAR_MONTH_DAY)){
}
// else if (nature.contains(NatureConstant.WORK_DAY)) {
//// //工作日
// split[0] = nature.replaceAll("工作日","周1");
// split[1] = nature.replaceAll("工作日","周6");
//
// }
else if (StringUtil.isMatch(nature, NatureConstant.BEFORE_YEAR_MONTH_DAY)){
//每年X月X号前
split[0] = "每年1月1号";
split[1] = nature.substring(0, nature.length() - 1);

Loading…
Cancel
Save