|
|
@@ -470,7 +470,7 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
|
|
|
for (Integer organId : organIds) {
|
|
|
List<EmployeeLevelDto> levelDtoList = organIdMap.get(organId);
|
|
|
for (EmployeeLevelDto employeeLevelDto : levelDtoList) {
|
|
|
- if (Objects.equals(employeeLevelDto.getLevelUserId(), employeeLevelDto.getTransferUserId())) {
|
|
|
+ if (employeeLevelDto.getLevelUserId() == employeeLevelDto.getTransferUserId()) {
|
|
|
throw new BizException("交接人校验失败,请重新填写");
|
|
|
}
|
|
|
userIds.add(employeeLevelDto.getTransferUserId());
|
|
|
@@ -482,8 +482,6 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
|
|
|
cooperationOrganDao.batchUpdateEduId(employeeLevelDto.getTransferUserId(), levelUserId, organId);
|
|
|
//教务老师所需加入的群组
|
|
|
educationGroupModels.addAll(classGroupDao.queryEducationGroups(employeeLevelDto.getTransferUserId(), levelUserId, organId));
|
|
|
- //获取当前用户所在的衔接群
|
|
|
- educationGroupModels.addAll(imGroupDao.queryUserGroupList(employeeLevelDto.getTransferUserId(),levelUserId,"乐团主管",organId));
|
|
|
break;
|
|
|
case "teamTeacher":
|
|
|
//运营主管所需加入的群组
|
|
|
@@ -497,13 +495,12 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- if (CollectionUtils.isNotEmpty(educationGroupModels)) {
|
|
|
- CompletableFuture.runAsync(()->{
|
|
|
- Date date = new Date();
|
|
|
- Map<Integer, String> realNameMap = MapUtil.convertIntegerMap(teacherDao.queryNameByIdList(new ArrayList<>(userIds)));
|
|
|
- //❤️用户加群
|
|
|
- List<com.ym.mec.biz.dal.entity.ImGroupMember> imGroupMemberList = new ArrayList<>();
|
|
|
- List<GroupModel> groupModelList = new ArrayList<>();
|
|
|
+ Date date = new Date();
|
|
|
+ if (educationGroupModels.size() > 0) {
|
|
|
+ Map<Integer, String> realNameMap = MapUtil.convertIntegerMap(teacherDao.queryNameByIdList(new ArrayList<>(userIds)));
|
|
|
+ //❤️用户加群
|
|
|
+ List<com.ym.mec.biz.dal.entity.ImGroupMember> imGroupMemberList = new ArrayList<>();
|
|
|
+ List<GroupModel> groupModelList = new ArrayList<>();
|
|
|
|
|
|
List<ImGroupMemberWrapper.ImGroupMember> groupMembers = Lists.newArrayList();
|
|
|
for (ImGroupModel imGroupModel : educationGroupModels) {
|
|
|
@@ -524,20 +521,20 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
|
|
|
GroupModel groupModel = new GroupModel(imGroupModel.getId(), new GroupMember[]{groupMember}, imGroupModel.getName());
|
|
|
groupModelList.add(groupModel);
|
|
|
|
|
|
- // 腾讯云IM用户加群
|
|
|
- groupMembers.add(ImGroupMemberWrapper.ImGroupMember.builder()
|
|
|
- .groupId(imGroupModel.getId())
|
|
|
- .roleType(imGroupModel.getUserRole())
|
|
|
- .isAdmin(false)
|
|
|
- .userId(Long.valueOf(userId))
|
|
|
- .imUserId(userId)
|
|
|
- .groupRoleType(imGroupMember.getGroupRoleType())
|
|
|
- .nickname(realNameMap.get(imGroupMember.getUserId()))
|
|
|
- .updateTime(DateTime.now().toDate())
|
|
|
- .createTime(DateTime.now().toDate())
|
|
|
- .build());
|
|
|
- }
|
|
|
- imGroupMemberService.batchInsert(imGroupMemberList);
|
|
|
+ // 腾讯云IM用户加群
|
|
|
+ groupMembers.add(ImGroupMemberWrapper.ImGroupMember.builder()
|
|
|
+ .groupId(imGroupModel.getId())
|
|
|
+ .roleType(imGroupModel.getUserRole())
|
|
|
+ .isAdmin(false)
|
|
|
+ .userId(Long.valueOf(userId))
|
|
|
+ .imUserId(userId)
|
|
|
+ .groupRoleType(imGroupMember.getGroupRoleType())
|
|
|
+ .nickname(realNameMap.get(imGroupMember.getUserId()))
|
|
|
+ .updateTime(DateTime.now().toDate())
|
|
|
+ .createTime(DateTime.now().toDate())
|
|
|
+ .build());
|
|
|
+ }
|
|
|
+ imGroupMemberService.batchInsert(imGroupMemberList);
|
|
|
|
|
|
if (RongCloudImPlugin.PLUGIN_NAME.equals(imPluginContext.defaultService())) {
|
|
|
// 融云IM用户加群
|
|
|
@@ -573,99 +570,103 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
|
|
|
}
|
|
|
}
|
|
|
//原有员工退群
|
|
|
- CompletableFuture.runAsync(() ->{
|
|
|
- List<ImGroupModel> groupModels = classGroupDao.queryTeacherQuitGroups(levelUserId);
|
|
|
- //原有员工退预报名群
|
|
|
- groupModels.addAll(classGroupDao.queryQuitApplyGroups(levelUserId));
|
|
|
- //获取当前用户所在的衔接群
|
|
|
- groupModels.addAll(imGroupDao.queryUserGroupList(levelUserId,levelUserId,"乐团主管",null));
|
|
|
- if (CollectionUtils.isNotEmpty(groupModels)) {
|
|
|
- List<com.ym.mec.biz.dal.entity.ImGroupMember> imGroupMemberList = new ArrayList<>();
|
|
|
- // 融支IM用户退群
|
|
|
- List<GroupModel> groupModelList = new ArrayList<>();
|
|
|
- // 腾讯云IM用户退群
|
|
|
- List<GroupMemberWrapper.ImGroupMember> imGroupMembers = Lists.newArrayList();
|
|
|
- for (ImGroupModel imGroupModel : groupModels) {
|
|
|
- com.ym.mec.biz.dal.entity.ImGroupMember imGroupMember = new com.ym.mec.biz.dal.entity.ImGroupMember();
|
|
|
- imGroupMember.setImGroupId(imGroupModel.getId());
|
|
|
- imGroupMember.setUserId(Integer.parseInt(imGroupModel.getMemberList().get(0).getId()));
|
|
|
- imGroupMemberList.add(imGroupMember);
|
|
|
-
|
|
|
- GroupMember groupMember = new GroupMember(imGroupMember.getUserId().toString(), imGroupModel.getId());
|
|
|
- GroupModel groupModel = new GroupModel(imGroupModel.getId(), new GroupMember[]{groupMember}, imGroupModel.getName());
|
|
|
- groupModelList.add(groupModel);
|
|
|
-
|
|
|
- // 腾讯云
|
|
|
- imGroupMembers.add(GroupMemberWrapper.ImGroupMember.builder()
|
|
|
- .groupId(imGroupModel.getId())
|
|
|
- .userId(imGroupMember.getUserId().longValue())
|
|
|
- .imUserId(imGroupMember.getUserId().toString())
|
|
|
- .build());
|
|
|
- }
|
|
|
- imGroupMemberService.batchDeleteByGroupIdAndUserId(imGroupMemberList);
|
|
|
- // 用户批量退出群组
|
|
|
- if (RongCloudImPlugin.PLUGIN_NAME.equals(imPluginContext.defaultService())) {
|
|
|
- // 融云退群
|
|
|
- imFeignService.groupBatchQuit(groupModelList);
|
|
|
- } else {
|
|
|
- // 腾讯云退群
|
|
|
- if (org.apache.commons.collections.CollectionUtils.isNotEmpty(imGroupMembers)) {
|
|
|
-
|
|
|
- Map<String, List<GroupMemberWrapper.ImGroupMember>> groupMembers = imGroupMembers.stream()
|
|
|
- .collect(Collectors.groupingBy(GroupMemberWrapper.ImGroupMember::getGroupId));
|
|
|
-
|
|
|
- for (Map.Entry<String, List<GroupMemberWrapper.ImGroupMember>> entry : groupMembers.entrySet()) {
|
|
|
-
|
|
|
- try {
|
|
|
- // 用户退群
|
|
|
- imGroupCoreService.groupQuit(entry.getValue(), entry.getKey());
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("腾讯云IM用户退群失败,groupId:{}, members={}", entry.getKey(), JSON.toJSONString(entry.getValue()), e);
|
|
|
- }
|
|
|
+ List<ImGroupModel> groupModels = classGroupDao.queryTeacherQuitGroups(levelUserId);
|
|
|
+ //原有员工退预报名群
|
|
|
+ groupModels.addAll(classGroupDao.queryQuitApplyGroups(levelUserId));
|
|
|
+ if (groupModels.size() > 0) {
|
|
|
+ List<com.ym.mec.biz.dal.entity.ImGroupMember> imGroupMemberList = new ArrayList<>();
|
|
|
+ // 融支IM用户退群
|
|
|
+ List<GroupModel> groupModelList = new ArrayList<>();
|
|
|
+ // 腾讯云IM用户退群
|
|
|
+ List<GroupMemberWrapper.ImGroupMember> imGroupMembers = Lists.newArrayList();
|
|
|
+ for (ImGroupModel imGroupModel : groupModels) {
|
|
|
+ com.ym.mec.biz.dal.entity.ImGroupMember imGroupMember = new com.ym.mec.biz.dal.entity.ImGroupMember();
|
|
|
+ imGroupMember.setImGroupId(imGroupModel.getId());
|
|
|
+ imGroupMember.setUserId(Integer.parseInt(imGroupModel.getMemberList().get(0).getId()));
|
|
|
+ imGroupMemberList.add(imGroupMember);
|
|
|
+
|
|
|
+ GroupMember groupMember = new GroupMember(imGroupMember.getUserId().toString(), imGroupModel.getId());
|
|
|
+ GroupModel groupModel = new GroupModel(imGroupModel.getId(), new GroupMember[]{groupMember}, imGroupModel.getName());
|
|
|
+ groupModelList.add(groupModel);
|
|
|
+
|
|
|
+ // 腾讯云
|
|
|
+ imGroupMembers.add(GroupMemberWrapper.ImGroupMember.builder()
|
|
|
+ .groupId(imGroupModel.getId())
|
|
|
+ .userId(imGroupMember.getUserId().longValue())
|
|
|
+ .imUserId(imGroupMember.getUserId().toString())
|
|
|
+ .build());
|
|
|
+ }
|
|
|
+ imGroupMemberService.batchDeleteByGroupIdAndUserId(imGroupMemberList);
|
|
|
+ // 用户批量退出群组
|
|
|
+ if (RongCloudImPlugin.PLUGIN_NAME.equals(imPluginContext.defaultService())) {
|
|
|
+ // 融云退群
|
|
|
+ imFeignService.groupBatchQuit(groupModelList);
|
|
|
+ } else {
|
|
|
+ // 腾讯云退群
|
|
|
+ if (org.apache.commons.collections.CollectionUtils.isNotEmpty(imGroupMembers)) {
|
|
|
+
|
|
|
+ Map<String, List<GroupMemberWrapper.ImGroupMember>> groupMembers = imGroupMembers.stream()
|
|
|
+ .collect(Collectors.groupingBy(GroupMemberWrapper.ImGroupMember::getGroupId));
|
|
|
+
|
|
|
+ for (Map.Entry<String, List<GroupMemberWrapper.ImGroupMember>> entry : groupMembers.entrySet()) {
|
|
|
+
|
|
|
+ try {
|
|
|
+ // 用户退群
|
|
|
+ imGroupCoreService.groupQuit(entry.getValue(), entry.getKey());
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("腾讯云IM用户退群失败,groupId:{}, members={}", entry.getKey(), JSON.toJSONString(entry.getValue()), e);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- });
|
|
|
+
|
|
|
+ }
|
|
|
//更换教务老师等数据
|
|
|
employeeDao.employeeLevel(employeeLevelDtos);
|
|
|
//新增离职时间
|
|
|
employeeDao.updateUserDemissionDate(levelUserId);
|
|
|
//冻结用户
|
|
|
employeeDao.updateUserLock(levelUserId, 1);
|
|
|
- //用户退出登陆
|
|
|
- sysUserFeignService.exitByPhone("SYSTEM", teacherDao.getUser(levelUserId).getPhone());
|
|
|
- CompletableFuture.runAsync(() -> {
|
|
|
+ ExecutorService executor = Executors.newCachedThreadPool();
|
|
|
+ CompletableFuture<Boolean> refreshUserFriend = CompletableFuture.supplyAsync(() -> {
|
|
|
//获取用户担任教务老师、维修技师的所有乐团列表
|
|
|
List<String> musicGroupIds = employeeDao.queryMusicGroupIdByUserId(levelUserId);
|
|
|
//获取用户担任教务老师的所有网管课列表
|
|
|
List<String> practiceGroupIds = employeeDao.queryPracticeGroupIdByUserId(levelUserId);
|
|
|
//获取用户担任教务老师的所有VIP课列表
|
|
|
List<String> vipGroupIds = employeeDao.queryVipGroupIdByUserId(levelUserId);
|
|
|
- if (CollectionUtils.isNotEmpty(musicGroupIds)) {
|
|
|
+ boolean refreshFlag = false;
|
|
|
+ if (musicGroupIds.size() > 0) {
|
|
|
for (String musicGroupId : musicGroupIds) {
|
|
|
imUserFriendService.refreshGroupImUserFriend(musicGroupId, GroupType.MUSIC);
|
|
|
}
|
|
|
+ refreshFlag = true;
|
|
|
}
|
|
|
- if (CollectionUtils.isNotEmpty(practiceGroupIds)) {
|
|
|
+ if (practiceGroupIds.size() > 0) {
|
|
|
for (String musicGroupId : practiceGroupIds) {
|
|
|
imUserFriendService.refreshGroupImUserFriend(musicGroupId, GroupType.PRACTICE);
|
|
|
}
|
|
|
+ refreshFlag = true;
|
|
|
}
|
|
|
- if (CollectionUtils.isNotEmpty(vipGroupIds)) {
|
|
|
+ if (vipGroupIds.size() > 0) {
|
|
|
for (String musicGroupId : vipGroupIds) {
|
|
|
imUserFriendService.refreshGroupImUserFriend(musicGroupId, GroupType.VIP);
|
|
|
}
|
|
|
+ refreshFlag = true;
|
|
|
}
|
|
|
- if (CollectionUtils.isNotEmpty(musicGroupIds) || CollectionUtils.isNotEmpty(practiceGroupIds) || CollectionUtils.isNotEmpty(vipGroupIds)) {
|
|
|
+ return refreshFlag;
|
|
|
+ }, executor);
|
|
|
+ Boolean join = refreshUserFriend.join();
|
|
|
+ if (join) {
|
|
|
+ refreshUserFriend.thenRun(() -> {
|
|
|
//更新群成员数量
|
|
|
imGroupDao.updateMemberNum();
|
|
|
//删除重复的群成员
|
|
|
imGroupMemberService.delRepeat();
|
|
|
- }
|
|
|
- }, exportExecutorService);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ executor.shutdown();
|
|
|
}
|
|
|
-
|
|
|
@Override
|
|
|
public List<Integer> queryUserRole(Integer sysUserId) {
|
|
|
return employeeDao.queryUserRole(sysUserId);
|