|
@@ -1,79 +1,37 @@
|
|
|
package com.ym.mec.biz.service.impl;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Arrays;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.HashSet;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Objects;
|
|
|
-import java.util.Optional;
|
|
|
-import java.util.Set;
|
|
|
-import java.util.concurrent.CompletableFuture;
|
|
|
-import java.util.concurrent.ExecutorService;
|
|
|
-import java.util.concurrent.Executors;
|
|
|
-import java.util.concurrent.TimeUnit;
|
|
|
-import java.util.stream.Collectors;
|
|
|
-
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.google.common.collect.Lists;
|
|
|
import com.microsvc.toolkit.middleware.im.ImPluginContext;
|
|
|
import com.microsvc.toolkit.middleware.im.impl.RongCloudImPlugin;
|
|
|
import com.microsvc.toolkit.middleware.im.message.GroupMemberWrapper;
|
|
|
-import com.ym.mec.biz.dal.dto.SimpleUserDto;
|
|
|
-import com.ym.mec.biz.dal.enums.EFriendRoleType;
|
|
|
-import com.ym.mec.biz.dal.enums.im.ClientEnum;
|
|
|
-import com.ym.mec.biz.dal.enums.im.EImGroupRoleType;
|
|
|
-import com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper;
|
|
|
-import com.ym.mec.biz.dal.wrapper.ImGroupWrapper;
|
|
|
-import com.ym.mec.biz.service.*;
|
|
|
-import com.ym.mec.biz.service.im.ImGroupCoreService;
|
|
|
-import com.ym.mec.common.page.QueryInfo;
|
|
|
-import lombok.extern.slf4j.Slf4j;
|
|
|
-import org.apache.commons.lang3.StringUtils;
|
|
|
-import org.joda.time.DateTime;
|
|
|
-import org.redisson.api.RBucket;
|
|
|
-import org.redisson.api.RedissonClient;
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
-import org.springframework.dao.DuplicateKeyException;
|
|
|
-import org.springframework.security.authentication.LockedException;
|
|
|
-import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
|
|
-import org.springframework.stereotype.Service;
|
|
|
-import org.springframework.transaction.annotation.Transactional;
|
|
|
-import org.springframework.util.CollectionUtils;
|
|
|
-
|
|
|
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.ym.mec.auth.api.client.SysUserFeignService;
|
|
|
import com.ym.mec.auth.api.entity.SysRole;
|
|
|
import com.ym.mec.auth.api.entity.SysUser;
|
|
|
-import com.ym.mec.biz.dal.dao.ClassGroupDao;
|
|
|
-import com.ym.mec.biz.dal.dao.CooperationOrganDao;
|
|
|
-import com.ym.mec.biz.dal.dao.EmployeeDao;
|
|
|
-import com.ym.mec.biz.dal.dao.ImGroupDao;
|
|
|
-import com.ym.mec.biz.dal.dao.OrganizationDao;
|
|
|
-import com.ym.mec.biz.dal.dao.SysEmployeePositionDao;
|
|
|
-import com.ym.mec.biz.dal.dao.SysUserCashAccountDao;
|
|
|
-import com.ym.mec.biz.dal.dao.TeacherDao;
|
|
|
+import com.ym.mec.biz.dal.dao.*;
|
|
|
import com.ym.mec.biz.dal.dto.EmployeeDto;
|
|
|
import com.ym.mec.biz.dal.dto.EmployeeLevelDto;
|
|
|
import com.ym.mec.biz.dal.dto.SysUserDto;
|
|
|
-import com.ym.mec.biz.dal.entity.Employee;
|
|
|
-import com.ym.mec.biz.dal.entity.Organization;
|
|
|
-import com.ym.mec.biz.dal.entity.SysUserCashAccount;
|
|
|
-import com.ym.mec.biz.dal.entity.SysUserTenant;
|
|
|
-import com.ym.mec.biz.dal.entity.TenantInfo;
|
|
|
+import com.ym.mec.biz.dal.entity.*;
|
|
|
+import com.ym.mec.biz.dal.enums.EFriendRoleType;
|
|
|
import com.ym.mec.biz.dal.enums.EmployeeOperateEnum;
|
|
|
import com.ym.mec.biz.dal.enums.GroupType;
|
|
|
import com.ym.mec.biz.dal.enums.ParamEnum;
|
|
|
+import com.ym.mec.biz.dal.enums.im.ClientEnum;
|
|
|
import com.ym.mec.biz.dal.page.EmployeeQueryInfo;
|
|
|
import com.ym.mec.biz.dal.page.UserBasicQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper;
|
|
|
+import com.ym.mec.biz.dal.wrapper.ImGroupWrapper;
|
|
|
+import com.ym.mec.biz.service.*;
|
|
|
+import com.ym.mec.biz.service.im.ImGroupCoreService;
|
|
|
import com.ym.mec.common.dal.BaseDAO;
|
|
|
import com.ym.mec.common.entity.ImGroupModel;
|
|
|
import com.ym.mec.common.entity.ImResult;
|
|
|
import com.ym.mec.common.entity.ImUserModel;
|
|
|
import com.ym.mec.common.exception.BizException;
|
|
|
import com.ym.mec.common.page.PageInfo;
|
|
|
+import com.ym.mec.common.page.QueryInfo;
|
|
|
import com.ym.mec.common.page.WrapperUtil;
|
|
|
import com.ym.mec.common.service.impl.BaseServiceImpl;
|
|
|
import com.ym.mec.common.tenant.TenantContextHolder;
|
|
@@ -81,53 +39,74 @@ import com.ym.mec.im.ImFeignService;
|
|
|
import com.ym.mec.im.entity.GroupMember;
|
|
|
import com.ym.mec.im.entity.GroupModel;
|
|
|
import com.ym.mec.util.collection.MapUtil;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.commons.collections.CollectionUtils;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.joda.time.DateTime;
|
|
|
+import org.redisson.api.RBucket;
|
|
|
+import org.redisson.api.RedissonClient;
|
|
|
+import org.springframework.dao.DuplicateKeyException;
|
|
|
+import org.springframework.security.authentication.LockedException;
|
|
|
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.util.*;
|
|
|
+import java.util.concurrent.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
@Slf4j
|
|
|
@Service
|
|
|
public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> implements EmployeeService {
|
|
|
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private EmployeeDao employeeDao;
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private ImFeignService imFeignService;
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private ImGroupMemberService imGroupMemberService;
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private SysUserFeignService sysUserFeignService;
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private TeacherDao teacherDao;
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private SysUserCashAccountDao sysUserCashAccountDao;
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private ClassGroupDao classGroupDao;
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private ImUserFriendService imUserFriendService;
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private OrganizationDao organizationDao;
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private ImGroupDao imGroupDao;
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private CooperationOrganDao cooperationOrganDao;
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private OaUserService oaUserService;
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private TenantInfoService tenantInfoService;
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private SysEmployeePositionService employeePositionService;
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private SysEmployeePositionDao employeePositionDao;
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private SysUserTenantService sysUserTenantService;
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private RedissonClient redissonClient;
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private ImGroupCoreService imGroupCoreService;
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private ImPluginContext imPluginContext;
|
|
|
-
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private SysUserService sysUserService;
|
|
|
|
|
|
+ private static final ExecutorService exportExecutorService = new ThreadPoolExecutor(
|
|
|
+ 5, 20, 0L, TimeUnit.MILLISECONDS,
|
|
|
+ new LinkedBlockingQueue<>(),
|
|
|
+ Executors.defaultThreadFactory(),
|
|
|
+ new ThreadPoolExecutor.CallerRunsPolicy()
|
|
|
+ );
|
|
|
+
|
|
|
@Override
|
|
|
public BaseDAO<Integer, Employee> getDAO() {
|
|
|
return employeeDao;
|
|
@@ -350,7 +329,7 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public PageInfo queryEmployByOrganId(EmployeeQueryInfo queryInfo) {
|
|
|
+ public PageInfo<EmployeeDto> queryEmployByOrganId(EmployeeQueryInfo queryInfo) {
|
|
|
SysUser user = sysUserFeignService.queryUserInfo();
|
|
|
if (user == null) {
|
|
|
throw new BizException("获取用户信息失败");
|
|
@@ -421,12 +400,14 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
|
|
|
sysUserFeignService.exitByPhone("teacher", sysUser.getPhone());
|
|
|
} else if (sysUser.getUserType().contains("SYSTEM")) {
|
|
|
sysUserFeignService.exitByPhone("system", sysUser.getPhone());
|
|
|
+ sysUserFeignService.exitByPhone("education", sysUser.getPhone());
|
|
|
}
|
|
|
break;
|
|
|
case DEMISSION:
|
|
|
employeeDao.updateUserLock(employeeId, 1);
|
|
|
employeeDao.updateUserDemissionDate(employeeId);
|
|
|
sysUserFeignService.exitByPhone("system", sysUser.getPhone());
|
|
|
+ sysUserFeignService.exitByPhone("education", sysUser.getPhone());
|
|
|
|
|
|
//更新OA信息
|
|
|
oaUserService.delOaUser(employee.getUserId());
|
|
@@ -490,7 +471,7 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
|
|
|
for (Integer organId : organIds) {
|
|
|
List<EmployeeLevelDto> levelDtoList = organIdMap.get(organId);
|
|
|
for (EmployeeLevelDto employeeLevelDto : levelDtoList) {
|
|
|
- if (employeeLevelDto.getLevelUserId() == employeeLevelDto.getTransferUserId()) {
|
|
|
+ if (Objects.equals(employeeLevelDto.getLevelUserId(), employeeLevelDto.getTransferUserId())) {
|
|
|
throw new BizException("交接人校验失败,请重新填写");
|
|
|
}
|
|
|
userIds.add(employeeLevelDto.getTransferUserId());
|
|
@@ -502,6 +483,8 @@ 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":
|
|
|
//运营主管所需加入的群组
|
|
@@ -515,177 +498,175 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- 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) {
|
|
|
- String userId = imGroupModel.getMemberList().get(0).getId();
|
|
|
- com.ym.mec.biz.dal.entity.ImGroupMember imGroupMember = new com.ym.mec.biz.dal.entity.ImGroupMember();
|
|
|
- imGroupMember.setCreateTime(date);
|
|
|
- imGroupMember.setImGroupId(imGroupModel.getId());
|
|
|
- imGroupMember.setIsAdmin(false);
|
|
|
- imGroupMember.setRoleType(imGroupModel.getUserRole());
|
|
|
- if(StringUtils.isNotEmpty(imGroupModel.getUserRole())){
|
|
|
- imGroupMember.setType(EFriendRoleType.getByName(imGroupModel.getUserRole()).name());
|
|
|
+ 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<>();
|
|
|
+
|
|
|
+ List<ImGroupMemberWrapper.ImGroupMember> groupMembers = Lists.newArrayList();
|
|
|
+ for (ImGroupModel imGroupModel : educationGroupModels) {
|
|
|
+ String userId = imGroupModel.getMemberList().get(0).getId();
|
|
|
+ com.ym.mec.biz.dal.entity.ImGroupMember imGroupMember = new com.ym.mec.biz.dal.entity.ImGroupMember();
|
|
|
+ imGroupMember.setCreateTime(date);
|
|
|
+ imGroupMember.setImGroupId(imGroupModel.getId());
|
|
|
+ imGroupMember.setIsAdmin(false);
|
|
|
+ imGroupMember.setRoleType(imGroupModel.getUserRole());
|
|
|
+ if (StringUtils.isNotEmpty(imGroupModel.getUserRole())) {
|
|
|
+ imGroupMember.setType(EFriendRoleType.getByName(imGroupModel.getUserRole()).name());
|
|
|
+ }
|
|
|
+ imGroupMember.setUpdateTime(date);
|
|
|
+ imGroupMember.setUserId(Integer.parseInt(userId));
|
|
|
+ imGroupMember.setNickname(realNameMap.get(imGroupMember.getUserId()));
|
|
|
+ imGroupMemberList.add(imGroupMember);
|
|
|
+ GroupMember groupMember = new GroupMember(userId, imGroupModel.getId());
|
|
|
+ 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());
|
|
|
}
|
|
|
- imGroupMember.setUpdateTime(date);
|
|
|
- imGroupMember.setUserId(Integer.parseInt(userId));
|
|
|
- imGroupMember.setNickname(realNameMap.get(imGroupMember.getUserId()));
|
|
|
- imGroupMemberList.add(imGroupMember);
|
|
|
- GroupMember groupMember = new GroupMember(userId, imGroupModel.getId());
|
|
|
- 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);
|
|
|
+ imGroupMemberService.batchInsert(imGroupMemberList);
|
|
|
|
|
|
- if (RongCloudImPlugin.PLUGIN_NAME.equals(imPluginContext.defaultService())) {
|
|
|
- // 融云IM用户加群
|
|
|
- imFeignService.groupBatchJoin(groupModelList);
|
|
|
- } else {
|
|
|
- // 腾讯云IM用户加群
|
|
|
- if (org.apache.commons.collections.CollectionUtils.isNotEmpty(groupMembers)) {
|
|
|
- Map<String, List<ImGroupMemberWrapper.ImGroupMember>> imGroupMembers = groupMembers.stream()
|
|
|
- .collect(Collectors.groupingBy(ImGroupMemberWrapper.ImGroupMember::getGroupId));
|
|
|
+ if (RongCloudImPlugin.PLUGIN_NAME.equals(imPluginContext.defaultService())) {
|
|
|
+ // 融云IM用户加群
|
|
|
+ imFeignService.groupBatchJoin(groupModelList);
|
|
|
+ } else {
|
|
|
+ // 腾讯云IM用户加群
|
|
|
+ if (org.apache.commons.collections.CollectionUtils.isNotEmpty(groupMembers)) {
|
|
|
+ Map<String, List<ImGroupMemberWrapper.ImGroupMember>> imGroupMembers = groupMembers.stream()
|
|
|
+ .collect(Collectors.groupingBy(ImGroupMemberWrapper.ImGroupMember::getGroupId));
|
|
|
|
|
|
- for (Map.Entry<String, List<ImGroupMemberWrapper.ImGroupMember>> entry : imGroupMembers.entrySet()) {
|
|
|
+ for (Map.Entry<String, List<ImGroupMemberWrapper.ImGroupMember>> entry : imGroupMembers.entrySet()) {
|
|
|
|
|
|
- try {
|
|
|
// 设置用户默认头象
|
|
|
for (ImGroupMemberWrapper.ImGroupMember member : entry.getValue()) {
|
|
|
// member.setAvatar(avatarMap.getOrDefault(member.getUserId().intValue(), ""));
|
|
|
SysUser user = teacherDao.getUser(member.getUserId().intValue());
|
|
|
// 用户头像
|
|
|
member.setAvatar(sysUserService.getImAvatar(user));
|
|
|
- if(StringUtils.isNotEmpty(member.getRoleType())){
|
|
|
- member.setNickname(StringUtils.isEmpty(user.getRealName())?user.getUsername():user.getRealName());
|
|
|
- }else {
|
|
|
- member.setNickname(StringUtils.isEmpty(user.getUsername())?user.getRealName():user.getUsername());
|
|
|
+ if (StringUtils.isNotEmpty(member.getRoleType())) {
|
|
|
+ member.setNickname(StringUtils.isEmpty(user.getRealName()) ? user.getUsername() : user.getRealName());
|
|
|
+ } else {
|
|
|
+ member.setNickname(StringUtils.isEmpty(user.getUsername()) ? user.getRealName() : user.getUsername());
|
|
|
}
|
|
|
}
|
|
|
- // 腾讯云用户加群
|
|
|
- imGroupCoreService.groupMemberJoin(entry.getKey(), entry.getValue());
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("腾讯云IM用户加群失败,groupId:{}, members={}", entry.getKey(), JSON.toJSONString(entry.getValue()), e);
|
|
|
+ try {
|
|
|
+ // 腾讯云用户加群
|
|
|
+ imGroupCoreService.groupMemberJoin(entry.getKey(), entry.getValue());
|
|
|
+ } 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);
|
|
|
+ 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);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- }
|
|
|
+ });
|
|
|
//更换教务老师等数据
|
|
|
employeeDao.employeeLevel(employeeLevelDtos);
|
|
|
//新增离职时间
|
|
|
employeeDao.updateUserDemissionDate(levelUserId);
|
|
|
//冻结用户
|
|
|
employeeDao.updateUserLock(levelUserId, 1);
|
|
|
- ExecutorService executor = Executors.newCachedThreadPool();
|
|
|
- CompletableFuture<Boolean> refreshUserFriend = CompletableFuture.supplyAsync(() -> {
|
|
|
+ //用户退出登陆
|
|
|
+ sysUserFeignService.exitByPhone("system", teacherDao.getUser(levelUserId).getPhone());
|
|
|
+ sysUserFeignService.exitByPhone("education", teacherDao.getUser(levelUserId).getPhone());
|
|
|
+ CompletableFuture.runAsync(() -> {
|
|
|
//获取用户担任教务老师、维修技师的所有乐团列表
|
|
|
List<String> musicGroupIds = employeeDao.queryMusicGroupIdByUserId(levelUserId);
|
|
|
//获取用户担任教务老师的所有网管课列表
|
|
|
List<String> practiceGroupIds = employeeDao.queryPracticeGroupIdByUserId(levelUserId);
|
|
|
//获取用户担任教务老师的所有VIP课列表
|
|
|
List<String> vipGroupIds = employeeDao.queryVipGroupIdByUserId(levelUserId);
|
|
|
- boolean refreshFlag = false;
|
|
|
- if (musicGroupIds.size() > 0) {
|
|
|
+ if (CollectionUtils.isNotEmpty(musicGroupIds)) {
|
|
|
for (String musicGroupId : musicGroupIds) {
|
|
|
imUserFriendService.refreshGroupImUserFriend(musicGroupId, GroupType.MUSIC);
|
|
|
}
|
|
|
- refreshFlag = true;
|
|
|
}
|
|
|
- if (practiceGroupIds.size() > 0) {
|
|
|
+ if (CollectionUtils.isNotEmpty(practiceGroupIds)) {
|
|
|
for (String musicGroupId : practiceGroupIds) {
|
|
|
imUserFriendService.refreshGroupImUserFriend(musicGroupId, GroupType.PRACTICE);
|
|
|
}
|
|
|
- refreshFlag = true;
|
|
|
}
|
|
|
- if (vipGroupIds.size() > 0) {
|
|
|
+ if (CollectionUtils.isNotEmpty(vipGroupIds)) {
|
|
|
for (String musicGroupId : vipGroupIds) {
|
|
|
imUserFriendService.refreshGroupImUserFriend(musicGroupId, GroupType.VIP);
|
|
|
}
|
|
|
- refreshFlag = true;
|
|
|
}
|
|
|
- return refreshFlag;
|
|
|
- }, executor);
|
|
|
- Boolean join = refreshUserFriend.join();
|
|
|
- if (join) {
|
|
|
- refreshUserFriend.thenRun(() -> {
|
|
|
+ if (CollectionUtils.isNotEmpty(musicGroupIds) || CollectionUtils.isNotEmpty(practiceGroupIds) || CollectionUtils.isNotEmpty(vipGroupIds)) {
|
|
|
//更新群成员数量
|
|
|
imGroupDao.updateMemberNum();
|
|
|
//删除重复的群成员
|
|
|
imGroupMemberService.delRepeat();
|
|
|
- });
|
|
|
- }
|
|
|
- executor.shutdown();
|
|
|
+ }
|
|
|
+ }, exportExecutorService);
|
|
|
}
|
|
|
|
|
|
@Override
|