小组多角色保存微调,小组成员列表获取处理多角色显示问题

This commit is contained in:
anhc 2022-07-05 11:16:20 +08:00
parent b364c72041
commit 01ac0da1f6
3 changed files with 55 additions and 11 deletions

View File

@ -2,6 +2,9 @@ package com.actionsoft.apps.coe.pal.cooperation.dto;
import org.apache.xpath.operations.Bool; import org.apache.xpath.operations.Bool;
import java.util.ArrayList;
import java.util.List;
/** /**
* @Description 小组成员 * @Description 小组成员
* @Created by sunlh * @Created by sunlh
@ -21,6 +24,8 @@ public class CooperationManageListTeamMemberDto {
private String roleId; private String roleId;
private String roleName; private String roleName;
private int roleType; private int roleType;
private List<Integer> roleTypes = new ArrayList<>();
private List<String> roleIds = new ArrayList<>();
public CooperationManageListTeamMemberDto() { public CooperationManageListTeamMemberDto() {
} }
@ -97,8 +102,26 @@ public class CooperationManageListTeamMemberDto {
this.roleName = roleName; this.roleName = roleName;
} }
public void addRoleName(String roleName) {
this.roleName = this.roleName == null ? roleName : this.roleName + ","+ roleName;
}
public List<Integer> getRoleTypes() {
return roleTypes;
}
public void setRoleTypes(List<Integer> roleTypes) {
this.roleTypes = roleTypes;
}
public int getRoleType() { 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) { public void setRoleType(int roleType) {
@ -113,4 +136,11 @@ public class CooperationManageListTeamMemberDto {
this.close = close; this.close = close;
} }
public List<String> getRoleIds() {
return roleIds;
}
public void setRoleIds(List<String> roleIds) {
this.roleIds = roleIds;
}
} }

View File

@ -582,11 +582,16 @@ public class CooperationWeb extends ActionWeb {
Map<String, CoeCooperationRoleModel> roleMap = new HashMap<>(); Map<String, CoeCooperationRoleModel> roleMap = new HashMap<>();
Map<String,CooperationManageListTeamMemberDto> userMap = new HashMap<>();
List<CoeCooperationMemberModel> members = api.queryCooperationTeamMemberList(teamId); List<CoeCooperationMemberModel> members = api.queryCooperationTeamMemberList(teamId);
for (CoeCooperationMemberModel member : members) { for (CoeCooperationMemberModel member : members) {
UserModel user = SDK.getORGAPI().getUser(member.getUserId()); UserModel user = SDK.getORGAPI().getUser(member.getUserId());
if (user != null) { if (user != null) {
CooperationManageListTeamMemberDto dto = new CooperationManageListTeamMemberDto(); CooperationManageListTeamMemberDto dto = userMap.get(user.getUID());
if (null == dto){
dto = new CooperationManageListTeamMemberDto();
}
dto.setUserName(user.getUserName()); dto.setUserName(user.getUserName());
dto.setClose(user.isClosed()); dto.setClose(user.isClosed());
dto.setEmail(user.getEmail()); dto.setEmail(user.getEmail());
@ -595,20 +600,23 @@ public class CooperationWeb extends ActionWeb {
dto.setTeamId(teamId); dto.setTeamId(teamId);
dto.setTeamName(team.getTeamName()); dto.setTeamName(team.getTeamName());
dto.setUserId(member.getUserId()); dto.setUserId(member.getUserId());
//Todo: 新权限多角色设置 //新权限多角色设置
dto.setRoleId(member.getRoleId()); dto.setRoleId(member.getRoleId());
dto.getRoleIds().add(member.getRoleId());
CoeCooperationRoleModel role; CoeCooperationRoleModel role;
if (roleMap.containsKey(member.getRoleId())) { if (roleMap.containsKey(member.getRoleId())) {
role = roleMap.get(member.getRoleId()); role = roleMap.get(member.getRoleId());
} else { } else {
role = api.queryCooperationRoleByUser(teamId, member.getUserId()); role = api.queryCooperationRole(member.getRoleId());
roleMap.put(role.getId(), role); roleMap.put(role.getId(), role);
} }
dto.setRoleName(role.getRoleName()); dto.addRoleName(role.getRoleName());
dto.setRoleType(role.getRoleType()); dto.getRoleTypes().add(role.getRoleType());
detailDto.getMembers().add(dto); userMap.put(user.getUID(),dto);
} }
} }
detailDto.getMembers().addAll(userMap.values());
detailDto.getMembers().sort((c1, c2)-> { detailDto.getMembers().sort((c1, c2)-> {
int index = c1.getRoleType() - c2.getRoleType(); int index = c1.getRoleType() - c2.getRoleType();
if (index != 0) { if (index != 0) {
@ -684,6 +692,8 @@ public class CooperationWeb extends ActionWeb {
if (team == null) { if (team == null) {
return ResponseObject.newErrResponse("保存失败,小组不存在").toString(); return ResponseObject.newErrResponse("保存失败,小组不存在").toString();
} }
Timestamp now = new Timestamp(System.currentTimeMillis());
List<CoeCooperationMemberModel> memberList = new ArrayList<>();
boolean isOlderVersion = SDK.getAppAPI().getPropertyBooleanValue("com.actionsoft.apps.coe.pal", "IsOlderVersion", true); boolean isOlderVersion = SDK.getAppAPI().getPropertyBooleanValue("com.actionsoft.apps.coe.pal", "IsOlderVersion", true);
if (isOlderVersion){ if (isOlderVersion){
// 查询当前设置的角色 // 查询当前设置的角色
@ -706,7 +716,12 @@ public class CooperationWeb extends ActionWeb {
} }
} }
for (int i = 0; i < userIds.size(); i++) { 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 { }else {
//设置多角色的校验 //设置多角色的校验
@ -729,15 +744,14 @@ public class CooperationWeb extends ActionWeb {
if (!flag) { if (!flag) {
return ResponseObject.newErrResponse("不允许修改,小组中必须至少存在一位管理员用户").toString(); return ResponseObject.newErrResponse("不允许修改,小组中必须至少存在一位管理员用户").toString();
} }
}else {
break;
} }
} }
//设置多角色 //设置多角色
Timestamp now = new Timestamp(System.currentTimeMillis());
for (int i = 0; i < userIds.size(); i++) { for (int i = 0; i < userIds.size(); i++) {
//删除原有角色 //删除原有角色
api.removeCooperationMemeber(teamId,userIds.getString(i)); api.removeCooperationMemeber(teamId,userIds.getString(i));
List<CoeCooperationMemberModel> memberList = new ArrayList<>();
for (int j = 0; j < roleIds.size(); j++) { for (int j = 0; j < roleIds.size(); j++) {
String roleId = roleIds.getString(j); String roleId = roleIds.getString(j);
CoeCooperationMemberModel memberModel = new CoeCooperationMemberModel(UUIDGener.getUUID(),teamId,userIds.getString(i),roleId,_uc.getUID(),now,_uc.getUID(),now); CoeCooperationMemberModel memberModel = new CoeCooperationMemberModel(UUIDGener.getUUID(),teamId,userIds.getString(i),roleId,_uc.getUID(),now,_uc.getUID(),now);