diff --git a/com.actionsoft.apps.coe.pal.cooperation/lib/com.actionsoft.apps.coe.pal.cooperation.jar b/com.actionsoft.apps.coe.pal.cooperation/lib/com.actionsoft.apps.coe.pal.cooperation.jar index 9f69bfb6..0ef0fa1b 100644 Binary files a/com.actionsoft.apps.coe.pal.cooperation/lib/com.actionsoft.apps.coe.pal.cooperation.jar and b/com.actionsoft.apps.coe.pal.cooperation/lib/com.actionsoft.apps.coe.pal.cooperation.jar differ diff --git a/com.actionsoft.apps.coe.pal.cooperation/src/com/actionsoft/apps/coe/pal/cooperation/dto/CooperationManageListTeamMemberDto.java b/com.actionsoft.apps.coe.pal.cooperation/src/com/actionsoft/apps/coe/pal/cooperation/dto/CooperationManageListTeamMemberDto.java index 3a190ad5..72eaf52e 100644 --- a/com.actionsoft.apps.coe.pal.cooperation/src/com/actionsoft/apps/coe/pal/cooperation/dto/CooperationManageListTeamMemberDto.java +++ b/com.actionsoft.apps.coe.pal.cooperation/src/com/actionsoft/apps/coe/pal/cooperation/dto/CooperationManageListTeamMemberDto.java @@ -2,6 +2,9 @@ package com.actionsoft.apps.coe.pal.cooperation.dto; import org.apache.xpath.operations.Bool; +import java.util.ArrayList; +import java.util.List; + /** * @Description 小组成员 * @Created by sunlh @@ -21,6 +24,8 @@ public class CooperationManageListTeamMemberDto { private String roleId; private String roleName; private int roleType; + private List roleTypes = new ArrayList<>(); + private List roleIds = new ArrayList<>(); public CooperationManageListTeamMemberDto() { } @@ -97,8 +102,26 @@ public class CooperationManageListTeamMemberDto { this.roleName = roleName; } + public void addRoleName(String roleName) { + this.roleName = this.roleName == null ? roleName : this.roleName + ","+ roleName; + } + + public List getRoleTypes() { + return roleTypes; + } + + public void setRoleTypes(List roleTypes) { + this.roleTypes = roleTypes; + } + public int getRoleType() { - return roleType; + int num = 3; + for (Integer roleType : this.roleTypes) { + if (num > roleType){ + num = roleType; + } + } + return num; } public void setRoleType(int roleType) { @@ -113,4 +136,11 @@ public class CooperationManageListTeamMemberDto { this.close = close; } + public List getRoleIds() { + return roleIds; + } + + public void setRoleIds(List roleIds) { + this.roleIds = roleIds; + } } diff --git a/com.actionsoft.apps.coe.pal.cooperation/src/com/actionsoft/apps/coe/pal/cooperation/web/CooperationWeb.java b/com.actionsoft.apps.coe.pal.cooperation/src/com/actionsoft/apps/coe/pal/cooperation/web/CooperationWeb.java index d879f749..56bf1f60 100644 --- a/com.actionsoft.apps.coe.pal.cooperation/src/com/actionsoft/apps/coe/pal/cooperation/web/CooperationWeb.java +++ b/com.actionsoft.apps.coe.pal.cooperation/src/com/actionsoft/apps/coe/pal/cooperation/web/CooperationWeb.java @@ -582,11 +582,16 @@ public class CooperationWeb extends ActionWeb { Map roleMap = new HashMap<>(); + Map userMap = new HashMap<>(); List members = api.queryCooperationTeamMemberList(teamId); for (CoeCooperationMemberModel member : members) { UserModel user = SDK.getORGAPI().getUser(member.getUserId()); if (user != null) { - CooperationManageListTeamMemberDto dto = new CooperationManageListTeamMemberDto(); + CooperationManageListTeamMemberDto dto = userMap.get(user.getUID()); + if (null == dto){ + dto = new CooperationManageListTeamMemberDto(); + } + dto.setUserName(user.getUserName()); dto.setClose(user.isClosed()); dto.setEmail(user.getEmail()); @@ -595,20 +600,23 @@ public class CooperationWeb extends ActionWeb { dto.setTeamId(teamId); dto.setTeamName(team.getTeamName()); dto.setUserId(member.getUserId()); - //Todo: 新权限多角色设置 + //新权限多角色设置 dto.setRoleId(member.getRoleId()); + dto.getRoleIds().add(member.getRoleId()); CoeCooperationRoleModel role; if (roleMap.containsKey(member.getRoleId())) { role = roleMap.get(member.getRoleId()); } else { - role = api.queryCooperationRoleByUser(teamId, member.getUserId()); + role = api.queryCooperationRole(member.getRoleId()); roleMap.put(role.getId(), role); } - dto.setRoleName(role.getRoleName()); - dto.setRoleType(role.getRoleType()); - detailDto.getMembers().add(dto); + dto.addRoleName(role.getRoleName()); + dto.getRoleTypes().add(role.getRoleType()); + userMap.put(user.getUID(),dto); } } + detailDto.getMembers().addAll(userMap.values()); + detailDto.getMembers().sort((c1, c2)-> { int index = c1.getRoleType() - c2.getRoleType(); if (index != 0) { @@ -684,6 +692,8 @@ public class CooperationWeb extends ActionWeb { if (team == null) { return ResponseObject.newErrResponse("保存失败,小组不存在").toString(); } + Timestamp now = new Timestamp(System.currentTimeMillis()); + List memberList = new ArrayList<>(); boolean isOlderVersion = SDK.getAppAPI().getPropertyBooleanValue("com.actionsoft.apps.coe.pal", "IsOlderVersion", true); if (isOlderVersion){ // 查询当前设置的角色 @@ -706,7 +716,12 @@ public class CooperationWeb extends ActionWeb { } } for (int i = 0; i < userIds.size(); i++) { - api.updateCooperationUserRole(teamId, userIds.getString(i), roleId, _uc.getUID()); + //删除原有角色 + api.removeCooperationMemeber(teamId,userIds.getString(i)); + CoeCooperationMemberModel memberModel = new CoeCooperationMemberModel(UUIDGener.getUUID(),teamId,userIds.getString(i),roleId,_uc.getUID(),now,_uc.getUID(),now); + memberList.add(memberModel); + //重新添加多角色 + api.createCooperationMemebers(memberList); } }else { //设置多角色的校验 @@ -729,15 +744,14 @@ public class CooperationWeb extends ActionWeb { if (!flag) { return ResponseObject.newErrResponse("不允许修改,小组中必须至少存在一位管理员用户").toString(); } + }else { + break; } } //设置多角色 - Timestamp now = new Timestamp(System.currentTimeMillis()); for (int i = 0; i < userIds.size(); i++) { //删除原有角色 api.removeCooperationMemeber(teamId,userIds.getString(i)); - - List memberList = new ArrayList<>(); for (int j = 0; j < roleIds.size(); j++) { String roleId = roleIds.getString(j); CoeCooperationMemberModel memberModel = new CoeCooperationMemberModel(UUIDGener.getUUID(),teamId,userIds.getString(i),roleId,_uc.getUID(),now,_uc.getUID(),now);