diff --git a/tall/src/main/java/com/ccsens/tall/bean/dto/RoleDto.java b/tall/src/main/java/com/ccsens/tall/bean/dto/RoleDto.java index 0573485a..ef59f4b5 100644 --- a/tall/src/main/java/com/ccsens/tall/bean/dto/RoleDto.java +++ b/tall/src/main/java/com/ccsens/tall/bean/dto/RoleDto.java @@ -41,7 +41,7 @@ public class RoleDto { @ApiModelProperty("角色id") private Long roleId; @ApiModelProperty("成员Id") - private Long memberId; + private List memberId; } @Data diff --git a/tall/src/main/java/com/ccsens/tall/service/ProRoleService.java b/tall/src/main/java/com/ccsens/tall/service/ProRoleService.java index 89b7fa86..b56daa16 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ProRoleService.java +++ b/tall/src/main/java/com/ccsens/tall/service/ProRoleService.java @@ -647,56 +647,104 @@ public class ProRoleService implements IProRoleService { @Override public ProjectVo.RoleInfo saveMemberByRole(Long currentUserId, RoleDto.SaveMember saveMember) { - //检查成员是否为空 - ProMember member = proMemberDao.selectByPrimaryKey(saveMember.getMemberId()); - if (ObjectUtil.isNull(member)) { - throw new BaseException(CodeEnum.NOT_MEMBER); + ProRole role = proRoleDao.selectByPrimaryKey(saveMember.getRoleId()); + if (ObjectUtil.isNull(role)) { + throw new BaseException(CodeEnum.ROLE_NOT_FOUND); } //检查角色是否为PM 是的话则需要更高权限 boolean isPm = isPmByRoleId(saveMember.getRoleId()); //检查当前用户的权限是否可以修改 - int power = selectPowerByRoleName(currentUserId, member.getProjectId()); + int power = selectPowerByRoleName(currentUserId, role.getProjectId()); if ((isPm && power < WebConstant.ROLE_POWER.ADMIN_POWER.value) || (!isPm && power < WebConstant.ROLE_POWER.OPERATION_POWER.value)) { throw new BaseException(CodeEnum.NOT_POWER); } - //添加成员与角色关联信息 - ProMemberRole proMemberRole = new MemberRoleDto(); - proMemberRole.setId(snowflake.nextId()); - proMemberRole.setRoleId(saveMember.getRoleId()); - proMemberRole.setMemberId(member.getId()); - memberRoleDao.insertSelective(proMemberRole); + if(CollectionUtil.isNotEmpty(saveMember.getMemberId())){ + //删除以前关联的成员 + ProMemberRoleExample memberRoleExample = new ProMemberRoleExample(); + memberRoleExample.createCriteria().andRoleIdEqualTo(saveMember.getRoleId()); + List memberRoleList = memberRoleDao.selectByExample(memberRoleExample); + if(CollectionUtil.isNotEmpty(memberRoleList)){ + memberRoleList.forEach(proMemberRole -> { + proMemberRole.setRecStatus((byte) 2); + memberRoleDao.updateByPrimaryKeySelective(proMemberRole); + }); + } + //添加当前新关联的成员 + saveMember.getMemberId().forEach(memberId -> { + //添加成员与角色关联信息 + ProMemberRole proMemberRole = new MemberRoleDto(); + proMemberRole.setId(snowflake.nextId()); + proMemberRole.setRoleId(saveMember.getRoleId()); + proMemberRole.setMemberId(memberId); + memberRoleDao.insertSelective(proMemberRole); + }); + } + + +// //检查成员是否为空 +// ProMember member = proMemberDao.selectByPrimaryKey(saveMember.getMemberId()); +// if (ObjectUtil.isNull(member)) { +// throw new BaseException(CodeEnum.NOT_MEMBER); +// } +// +// //添加成员与角色关联信息 +// ProMemberRole proMemberRole = new MemberRoleDto(); +// proMemberRole.setId(snowflake.nextId()); +// proMemberRole.setRoleId(saveMember.getRoleId()); +// proMemberRole.setMemberId(member.getId()); +// memberRoleDao.insertSelective(proMemberRole); return getRoleInfoByRoleId(saveMember.getRoleId()); } @Override public void deleteMemberByRole(Long currentUserId, RoleDto.SaveMember saveMember) { - //检查参数是否正确 - ProMember member = proMemberDao.selectByPrimaryKey(saveMember.getMemberId()); - if (ObjectUtil.isNull(member)) { - throw new BaseException(CodeEnum.NOT_MEMBER); + ProRole role = proRoleDao.selectByPrimaryKey(saveMember.getRoleId()); + if (ObjectUtil.isNull(role)) { + throw new BaseException(CodeEnum.ROLE_NOT_FOUND); } //检查被操作的角色是否是项目PM boolean isPm = isPmByRoleId(saveMember.getRoleId()); //检查当前用户的权限是否可以修改 - int power = selectPowerByRoleName(currentUserId, member.getProjectId()); + int power = selectPowerByRoleName(currentUserId, role.getProjectId()); if ((isPm && power < WebConstant.ROLE_POWER.ADMIN_POWER.value) || (!isPm && power < WebConstant.ROLE_POWER.OPERATION_POWER.value)) { throw new BaseException(CodeEnum.NOT_POWER); } - //删除角色与成员的关联信息 - ProMemberRoleExample memberRoleExample = new ProMemberRoleExample(); - memberRoleExample.createCriteria().andRoleIdEqualTo(saveMember.getRoleId()).andMemberIdEqualTo(member.getId()); - List memberRoleList = memberRoleDao.selectByExample(memberRoleExample); - if (CollectionUtil.isEmpty(memberRoleList)) { - throw new BaseException(CodeEnum.NOT_MEMBER); - } - for (ProMemberRole memberRole : memberRoleList) { - memberRole.setRecStatus((byte) 2); - memberRoleDao.updateByPrimaryKeySelective(memberRole); + if(CollectionUtil.isNotEmpty(saveMember.getMemberId())){ + saveMember.getMemberId().forEach(memberId -> { + //删除角色与成员的关联信息 + ProMemberRoleExample memberRoleExample = new ProMemberRoleExample(); + memberRoleExample.createCriteria().andRoleIdEqualTo(saveMember.getRoleId()).andMemberIdEqualTo(memberId); + List memberRoleList = memberRoleDao.selectByExample(memberRoleExample); + if (CollectionUtil.isEmpty(memberRoleList)) { + throw new BaseException(CodeEnum.NOT_MEMBER); + } + for (ProMemberRole memberRole : memberRoleList) { + memberRole.setRecStatus((byte) 2); + memberRoleDao.updateByPrimaryKeySelective(memberRole); + } + }); } + +// //检查参数是否正确 +// ProMember member = proMemberDao.selectByPrimaryKey(saveMember.getMemberId()); +// if (ObjectUtil.isNull(member)) { +// throw new BaseException(CodeEnum.NOT_MEMBER); +// } +// +// //删除角色与成员的关联信息 +// ProMemberRoleExample memberRoleExample = new ProMemberRoleExample(); +// memberRoleExample.createCriteria().andRoleIdEqualTo(saveMember.getRoleId()).andMemberIdEqualTo(member.getId()); +// List memberRoleList = memberRoleDao.selectByExample(memberRoleExample); +// if (CollectionUtil.isEmpty(memberRoleList)) { +// throw new BaseException(CodeEnum.NOT_MEMBER); +// } +// for (ProMemberRole memberRole : memberRoleList) { +// memberRole.setRecStatus((byte) 2); +// memberRoleDao.updateByPrimaryKeySelective(memberRole); +// } } @Override -// public TaskVo.ProTaskInfo queryByProjectVirtualRole(RoleDto.ProjectId projectId) { public List queryByProjectVirtualRole(RoleDto.ProjectId projectId) { TaskVo.ProTaskInfo proTaskInfo = new TaskVo.ProTaskInfo(); List taskList = new ArrayList<>(); @@ -850,13 +898,15 @@ public class ProRoleService implements IProRoleService { //获取经理得id ProRoleExample proRoleExample=new ProRoleExample(); proRoleExample.createCriteria().andRecStatusEqualTo((byte)0).andNameEqualTo(WebConstant.ROLE_NAME.PM.value).andParentIdEqualTo(0L).andProjectIdEqualTo(param.getParam().getProjectId()); - //一级角色项目经理 - List jili=proRoleMapper.selectByExample(proRoleExample).stream().map(action->action.getId()).collect(Collectors.toList()); - //二级角色项目经理 - ProRoleExample proRoleExample1=new ProRoleExample(); - proRoleExample1.createCriteria().andRecStatusEqualTo((byte)0).andParentIdIn(jili); - List proRoles = proRoleMapper.selectByExample(proRoleExample1); - List jili1=proRoles.stream().map(action->action.getId()).collect(Collectors.toList()); +// //一级角色项目经理 +// List jili=proRoleMapper.selectByExample(proRoleExample).stream().map(action->action.getId()).collect(Collectors.toList()); +// //二级角色项目经理 +// ProRoleExample proRoleExample1=new ProRoleExample(); +// proRoleExample1.createCriteria().andRecStatusEqualTo((byte)0).andParentIdIn(jili); +// List proRoles = proRoleMapper.selectByExample(proRoleExample1); +// List jili1=proRoles.stream().map(action->action.getId()).collect(Collectors.toList()); + + List jili1 = proRoleDao.getPmByByProjectId(param.getParam().getProjectId()); if(param.getParam().getIsShow()){ //展示的 增加的 不需要考虑是否为经理 @@ -866,7 +916,6 @@ public class ProRoleService implements IProRoleService { if((proMemberRoleShows.size()+param.getParam().getRoleIds().size())>10){ throw new BaseException(CodeEnum.CHAOGUOSHI); }else { - if(param.getParam().getRoleIds().size()>0){ //查一下目前最大得排序是多少 Integer[] seq=new Integer[]{proMemberRoleShows.stream().mapToInt(action->action.getSequence()).max().getAsInt()}; diff --git a/tall/src/main/resources/application.yml b/tall/src/main/resources/application.yml index b5408a3a..ebc544af 100644 --- a/tall/src/main/resources/application.yml +++ b/tall/src/main/resources/application.yml @@ -1,5 +1,5 @@ spring: profiles: - active: dev - include: util-dev,common + active: test + include: util-test,common