新版权限用户变更多角色保存调整

This commit is contained in:
anhc 2022-07-05 09:28:34 +08:00
parent e21de7c0fc
commit 5f017cd828
2 changed files with 61 additions and 18 deletions

View File

@ -679,33 +679,76 @@ public class CooperationWeb extends ActionWeb {
// 基础信息 // 基础信息
String teamId = dataObj.getString("teamId"); String teamId = dataObj.getString("teamId");
JSONArray userIds = dataObj.getJSONArray("userIds"); JSONArray userIds = dataObj.getJSONArray("userIds");
String roleId = dataObj.getString("roleId");
CoeCooperationAPIManager api = CoeCooperationAPIManager.getInstance(); CoeCooperationAPIManager api = CoeCooperationAPIManager.getInstance();
CoeCooperationTeamModel team = api.queryCooperationTeamById(teamId); CoeCooperationTeamModel team = api.queryCooperationTeamById(teamId);
if (team == null) { if (team == null) {
return ResponseObject.newErrResponse("保存失败,小组不存在").toString(); return ResponseObject.newErrResponse("保存失败,小组不存在").toString();
} }
// 查询当前设置的角色 boolean isOlderVersion = SDK.getAppAPI().getPropertyBooleanValue("com.actionsoft.apps.coe.pal", "IsOlderVersion", true);
CoeCooperationRoleDao roleDao = new CoeCooperationRoleDao(); if (isOlderVersion){
CoeCooperationRoleModel role = roleDao.getInstance(roleId); // 查询当前设置的角色
// 如果当前设置的角色不是管理员查询其他用户是否有管理员角色小组中必须有至少一位管理员用户 String roleId = dataObj.getString("roleId");
if (role.getRoleType() != CoeCooperationConst.ROLE_TYPE_MANAGER) { CoeCooperationRoleDao roleDao = new CoeCooperationRoleDao();
// 查询其他用户的角色是否有管理员 CoeCooperationRoleModel role = roleDao.getInstance(roleId);
boolean flag = false; // 如果当前设置的角色不是管理员查询其他用户是否有管理员角色小组中必须有至少一位管理员用户
List<String> adminUsers = api.queryCooperationAdminUsers(teamId); if (role.getRoleType() != CoeCooperationConst.ROLE_TYPE_MANAGER) {
for (String adminUser : adminUsers) { // 查询其他用户的角色是否有管理员
if (!userIds.contains(adminUser)) { boolean flag = false;
flag = true; List<String> adminUsers = api.queryCooperationAdminUsers(teamId);
break; for (String adminUser : adminUsers) {
if (!userIds.contains(adminUser)) {
flag = true;
break;
}
}
if (!flag) {
return ResponseObject.newErrResponse("不允许修改,小组中必须至少存在一位管理员用户").toString();
} }
} }
if (!flag) { for (int i = 0; i < userIds.size(); i++) {
return ResponseObject.newErrResponse("不允许修改,小组中必须至少存在一位管理员用户").toString(); api.updateCooperationUserRole(teamId, userIds.getString(i), roleId, _uc.getUID());
}
}else {
//设置多角色的校验
JSONArray roleIds = dataObj.getJSONArray("roleId");
CoeCooperationRoleDao roleDao = new CoeCooperationRoleDao();
for (int i = 0; i < roleIds.size(); i++) {
String roleId = roleIds.getString(i);
CoeCooperationRoleModel role = roleDao.getInstance(roleId);
// 如果当前设置的角色不是管理员查询其他用户是否有管理员角色小组中必须有至少一位管理员用户
if (role.getRoleType() != CoeCooperationConst.ROLE_TYPE_MANAGER) {
// 查询其他用户的角色是否有管理员
boolean flag = false;
List<String> adminUsers = api.queryCooperationAdminUsers(teamId);
for (String adminUser : adminUsers) {
if (!userIds.contains(adminUser)) {
flag = true;
break;
}
}
if (!flag) {
return ResponseObject.newErrResponse("不允许修改,小组中必须至少存在一位管理员用户").toString();
}
}
}
//设置多角色
Timestamp now = new Timestamp(System.currentTimeMillis());
for (int i = 0; i < userIds.size(); i++) {
//删除原有角色
api.removeCooperationMemeber(teamId,userIds.getString(i));
List<CoeCooperationMemberModel> 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);
memberList.add(memberModel);
}
//重新添加多角色
api.createCooperationMemebers(memberList);
} }
} }
for (int i = 0; i < userIds.size(); i++) { //更新用户权限缓存
api.updateCooperationUserRole(teamId, userIds.getString(i), roleId, _uc.getUID()); CooperationCache.updateTeamInfo(teamId);
}
return ro.toString(); return ro.toString();
} }