From 9ec85a5bdd8ef35174c4e295d557ae81dd418ce2 Mon Sep 17 00:00:00 2001 From: zy_Java <654600784@qq.com> Date: Thu, 12 Aug 2021 00:31:31 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9F=A5=E8=AF=A2=E8=A7=92?= =?UTF-8?q?=E8=89=B2=E6=A0=8F=E7=9A=84=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ccsens/common/bean/vo/CRoleVo.java | 6 +- .../ccsens/common/persist/dao/ProRoleDao.java | 31 + .../common/service/IProRoleService.java | 2 + .../ccsens/common/service/ProRoleService.java | 752 ++++++++++-------- .../main/resources/mapper_dao/ProRoleDao.xml | 73 ++ tall/src/main/resources/application-dev.yml | 2 +- .../com/ccsens/util/cron/NatureConstant.java | 5 +- .../com/ccsens/util/cron/NatureToDate.java | 21 +- 8 files changed, 535 insertions(+), 357 deletions(-) diff --git a/common/src/main/java/com/ccsens/common/bean/vo/CRoleVo.java b/common/src/main/java/com/ccsens/common/bean/vo/CRoleVo.java index fc811368..9e95b3e8 100644 --- a/common/src/main/java/com/ccsens/common/bean/vo/CRoleVo.java +++ b/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 diff --git a/common/src/main/java/com/ccsens/common/persist/dao/ProRoleDao.java b/common/src/main/java/com/ccsens/common/persist/dao/ProRoleDao.java index 7a3b4a54..9b0e55e4 100644 --- a/common/src/main/java/com/ccsens/common/persist/dao/ProRoleDao.java +++ b/common/src/main/java/com/ccsens/common/persist/dao/ProRoleDao.java @@ -64,4 +64,35 @@ public interface ProRoleDao extends ProRoleMapper { * @return 角色列表 */ List findAllRoleById(@Param("roleId") Long roleId); + + /** + * 根据userId查询项目下所属的角色 + * @param projectId + * @param userId + * @return + */ + List queryRoleByUserId(@Param("projectId")Long projectId, @Param("userId")Long userId); + + /** + * 不是关注者,查询可见角色 + * @param projectId + * @param userRoleList + * @return + */ + List notAttentionQueryRole(@Param("projectId")Long projectId, @Param("userRoleList")List userRoleList); + + /** + * 是关注者,查询可见角色 + * @param projectId + * @return + */ + List attentionQueryRole(@Param("projectId")Long projectId); + + /** + * 查询用户配置的角色栏信息 + * @param projectId + * @param userId + * @return + */ + List queryShowByUserAndProject(@Param("projectId")Long projectId, @Param("userId")Long userId); } diff --git a/common/src/main/java/com/ccsens/common/service/IProRoleService.java b/common/src/main/java/com/ccsens/common/service/IProRoleService.java index d44e05bc..4d363ea7 100644 --- a/common/src/main/java/com/ccsens/common/service/IProRoleService.java +++ b/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); } diff --git a/common/src/main/java/com/ccsens/common/service/ProRoleService.java b/common/src/main/java/com/ccsens/common/service/ProRoleService.java index 145087c0..5cf486c5 100644 --- a/common/src/main/java/com/ccsens/common/service/ProRoleService.java +++ b/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 visibleList = new ArrayList<>(); - //不显示的角色 - List invisibleList = new ArrayList<>(); - //查询当前用户所属的角色的list - List roleIds = new ArrayList<>(); - //对自己不可见的角色的list - List roleIds1 = new ArrayList<>(); - //判断是否是关注者 用户不是项目下的成员 并且 用户是成员但不属于任何角色 就是关注者 - // 判断用户是成员但是不属于任何角色 在成员表下查询到 成员信息 - ProMemberExample proMemberExample = new ProMemberExample(); - proMemberExample.createCriteria().andUserIdEqualTo(userId).andProjectIdEqualTo(param.getProjectId()); - List proMembers = proMemberMapper.selectByExample(proMemberExample); //默认一个 - //判断用户是不是项目下的成员 - List proRoles = new ArrayList<>(); - //排序后的 - List proRoles1 = new ArrayList<>(); - if (CollectionUtil.isNotEmpty(proMembers)) { - //判断用户是成员是不是有角色 通过成员id来判断 - ProRoleMemberExample proRoleMemberExample = new ProRoleMemberExample(); - proRoleMemberExample.createCriteria().andMemberIdEqualTo(proMembers.get(0).getId()); - List proRoleMembers = proRoleMemberMapper.selectByExample(proRoleMemberExample); - if (CollectionUtil.isNotEmpty(proRoleMembers)) { - //用户不是关注者 否 不是才是关注者 - //用户有角色 角色是那个 查询当前用户所属的角色 - Long roleId1 = 0L; - //List roleIds =null; //查询当前用户所属的角色 - for (ProRoleMember proRoleMember : proRoleMembers) { - Long roleId = proRoleMember.getRoleId();//查询当前用户所属的角色 后端 前端 - roleIds.add(roleId); - ProRoleRepulsionExample proRoleRepulsionExample = new ProRoleRepulsionExample(); - proRoleRepulsionExample.createCriteria().andRepulsionRoleIdEqualTo(roleId); - List 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 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 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 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 iterator = proRoles.iterator(); - while (iterator.hasNext()) { - ProRole proRole = iterator.next(); - //查看是否设置不可见 - ProRoleRepulsionExample proRoleRepulsionExample = new ProRoleRepulsionExample(); - proRoleRepulsionExample.createCriteria().andRepulsionRoleIdEqualTo(proRole.getId()); - List proRoleRepulsions = proRoleRepulsionMapper.selectByExample(proRoleRepulsionExample); - if (proRoleRepulsions.size()!=0) { - //查到就是设置过了 移除 - iterator.remove(); - } - } - Iterator 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 iterator = proRoles.iterator(); - while (iterator.hasNext()) { - ProRole proRole = iterator.next(); - //查看是否设置不可见 - ProRoleRepulsionExample proRoleRepulsionExample = new ProRoleRepulsionExample(); - proRoleRepulsionExample.createCriteria().andRepulsionRoleIdEqualTo(proRole.getId()); - List proRoleRepulsions = proRoleRepulsionMapper.selectByExample(proRoleRepulsionExample); - if (proRoleRepulsions.size()!=0) { - //查到就是设置过了 移除 - iterator.remove(); - } - } - Iterator 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 proRoleShows = proRoleShowMapper.selectByExample(proRoleShowExample); - //循环所有的角色,判断是否在配置信息内 将角色信息放入“显示角色”的数组内 将角色放入“隐藏角色"数组 - if (proRoleShows.size()!=0) { //配置过的 - //通过 - Iterator 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 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 visibleList = new ArrayList<>(); +// //不显示的角色 +// List invisibleList = new ArrayList<>(); +// //查询当前用户所属的角色的list +// List roleIds = new ArrayList<>(); +// //对自己不可见的角色的list +// List roleIds1 = new ArrayList<>(); +// //判断是否是关注者 用户不是项目下的成员 并且 用户是成员但不属于任何角色 就是关注者 +// // 判断用户是成员但是不属于任何角色 在成员表下查询到 成员信息 +// ProMemberExample proMemberExample = new ProMemberExample(); +// proMemberExample.createCriteria().andUserIdEqualTo(userId).andProjectIdEqualTo(param.getProjectId()); +// List proMembers = proMemberMapper.selectByExample(proMemberExample); //默认一个 +// //判断用户是不是项目下的成员 +// List proRoles = new ArrayList<>(); +// //排序后的 +// List proRoles1 = new ArrayList<>(); +// if (CollectionUtil.isNotEmpty(proMembers)) { +// //判断用户是成员是不是有角色 通过成员id来判断 +// ProRoleMemberExample proRoleMemberExample = new ProRoleMemberExample(); +// proRoleMemberExample.createCriteria().andMemberIdEqualTo(proMembers.get(0).getId()); +// List proRoleMembers = proRoleMemberMapper.selectByExample(proRoleMemberExample); +// if (CollectionUtil.isNotEmpty(proRoleMembers)) { +// //用户不是关注者 否 不是才是关注者 +// //用户有角色 角色是那个 查询当前用户所属的角色 +// Long roleId1 = 0L; +// //List roleIds =null; //查询当前用户所属的角色 +// for (ProRoleMember proRoleMember : proRoleMembers) { +// Long roleId = proRoleMember.getRoleId();//查询当前用户所属的角色 后端 前端 +// roleIds.add(roleId); +// ProRoleRepulsionExample proRoleRepulsionExample = new ProRoleRepulsionExample(); +// proRoleRepulsionExample.createCriteria().andRepulsionRoleIdEqualTo(roleId); +// List 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 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 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 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 iterator = proRoles.iterator(); +// while (iterator.hasNext()) { +// ProRole proRole = iterator.next(); +// //查看是否设置不可见 +// ProRoleRepulsionExample proRoleRepulsionExample = new ProRoleRepulsionExample(); +// proRoleRepulsionExample.createCriteria().andRepulsionRoleIdEqualTo(proRole.getId()); +// List proRoleRepulsions = proRoleRepulsionMapper.selectByExample(proRoleRepulsionExample); +// if (proRoleRepulsions.size()!=0) { +// //查到就是设置过了 移除 +// iterator.remove(); +// } +// } +// Iterator 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 iterator = proRoles.iterator(); +// while (iterator.hasNext()) { +// ProRole proRole = iterator.next(); +// //查看是否设置不可见 +// ProRoleRepulsionExample proRoleRepulsionExample = new ProRoleRepulsionExample(); +// proRoleRepulsionExample.createCriteria().andRepulsionRoleIdEqualTo(proRole.getId()); +// List proRoleRepulsions = proRoleRepulsionMapper.selectByExample(proRoleRepulsionExample); +// if (proRoleRepulsions.size()!=0) { +// //查到就是设置过了 移除 +// iterator.remove(); +// } +// } +// Iterator 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 proRoleShows = proRoleShowMapper.selectByExample(proRoleShowExample); +// //循环所有的角色,判断是否在配置信息内 将角色信息放入“显示角色”的数组内 将角色放入“隐藏角色"数组 +// if (proRoleShows.size()!=0) { //配置过的 +// //通过 +// Iterator 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 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 visibleList = new ArrayList<>(); + List invisibleList = new ArrayList<>(); + + //查询当前用户在项目下的角色,没有则算作关注者 + List userRoleList = proRoleDao.queryRoleByUserId(param.getProjectId(),userId); + //查询用户可见的角色 + List roleInfoList; + if(CollectionUtil.isNotEmpty(userRoleList)){ + //不是关注者,查询可见的角色(完全屏蔽才不可见) + roleInfoList = proRoleDao.notAttentionQueryRole(param.getProjectId(),userRoleList); + }else { + //是关注者查询可见的角色(未设置过对谁不可见信息的角色) + roleInfoList = proRoleDao.attentionQueryRole(param.getProjectId()); + } + //查询配置信息 + List 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; + } } diff --git a/common/src/main/resources/mapper_dao/ProRoleDao.xml b/common/src/main/resources/mapper_dao/ProRoleDao.xml index 1bbc077f..c9735455 100644 --- a/common/src/main/resources/mapper_dao/ProRoleDao.xml +++ b/common/src/main/resources/mapper_dao/ProRoleDao.xml @@ -122,5 +122,78 @@ AND id = #{roleId} ) + + + + \ No newline at end of file diff --git a/tall/src/main/resources/application-dev.yml b/tall/src/main/resources/application-dev.yml index ffad2822..42d3b8c1 100644 --- a/tall/src/main/resources/application-dev.yml +++ b/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 diff --git a/util/src/main/java/com/ccsens/util/cron/NatureConstant.java b/util/src/main/java/com/ccsens/util/cron/NatureConstant.java index d5afb4c3..e7284d8a 100644 --- a/util/src/main/java/com/ccsens/util/cron/NatureConstant.java +++ b/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 = "每月(最后|第)一个工作日"; + } diff --git a/util/src/main/java/com/ccsens/util/cron/NatureToDate.java b/util/src/main/java/com/ccsens/util/cron/NatureToDate.java index d008f7b7..269b4e34 100644 --- a/util/src/main/java/com/ccsens/util/cron/NatureToDate.java +++ b/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 generateDates(String nature, Date startDate, Date endDate) { - - if (StringUtil.isEmpty(nature)) { + public static List 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);