|
@@ -1,19 +1,18 @@
|
|
package com.ym.mec.biz.service.impl;
|
|
package com.ym.mec.biz.service.impl;
|
|
|
|
|
|
import java.util.*;
|
|
import java.util.*;
|
|
-import java.util.concurrent.CompletableFuture;
|
|
|
|
-import java.util.concurrent.ExecutorService;
|
|
|
|
-import java.util.concurrent.Executors;
|
|
|
|
-import java.util.function.Consumer;
|
|
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
+import com.google.common.collect.Lists;
|
|
import com.ym.mec.biz.dal.dao.*;
|
|
import com.ym.mec.biz.dal.dao.*;
|
|
-import com.ym.mec.biz.dal.dto.ClassGroupStudentInfoDto;
|
|
|
|
import com.ym.mec.biz.dal.entity.*;
|
|
import com.ym.mec.biz.dal.entity.*;
|
|
import com.ym.mec.biz.dal.enums.GroupType;
|
|
import com.ym.mec.biz.dal.enums.GroupType;
|
|
|
|
+import com.ym.mec.biz.dal.enums.school.ESchoolStaffType;
|
|
|
|
+import com.ym.mec.biz.dal.mapper.SchoolStaffMapper;
|
|
import com.ym.mec.biz.dal.wrapper.ImGroupWrapper;
|
|
import com.ym.mec.biz.dal.wrapper.ImGroupWrapper;
|
|
import com.ym.mec.biz.service.TeacherService;
|
|
import com.ym.mec.biz.service.TeacherService;
|
|
import com.ym.mec.util.collection.MapUtil;
|
|
import com.ym.mec.util.collection.MapUtil;
|
|
|
|
+import org.apache.commons.collections.CollectionUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.data.redis.core.RedisTemplate;
|
|
import org.springframework.data.redis.core.RedisTemplate;
|
|
@@ -31,178 +30,210 @@ import static com.ym.mec.biz.dal.enums.GroupType.*;
|
|
@Service
|
|
@Service
|
|
public class ImUserFriendServiceImpl extends BaseServiceImpl<Long, ImUserFriend> implements ImUserFriendService {
|
|
public class ImUserFriendServiceImpl extends BaseServiceImpl<Long, ImUserFriend> implements ImUserFriendService {
|
|
|
|
|
|
- @Autowired
|
|
|
|
- private ImUserFriendDao imUserFriendDao;
|
|
|
|
- @Autowired
|
|
|
|
- private TeacherService teacherService;
|
|
|
|
- @Autowired
|
|
|
|
- private ClassGroupTeacherMapperDao classGroupTeacherMapperDao;
|
|
|
|
- @Autowired
|
|
|
|
- private ClassGroupStudentMapperDao classGroupStudentMapperDao;
|
|
|
|
- @Autowired
|
|
|
|
- private MusicGroupDao musicGroupDao;
|
|
|
|
- @Autowired
|
|
|
|
- private VipGroupDao vipGroupDao;
|
|
|
|
- @Autowired
|
|
|
|
- private PracticeGroupDao practiceGroupDao;
|
|
|
|
- @Autowired
|
|
|
|
- private TeacherDao teacherDao;
|
|
|
|
- @Autowired
|
|
|
|
- private CourseScheduleDao courseScheduleDao;
|
|
|
|
- @Autowired
|
|
|
|
- private StudentRegistrationDao studentRegistrationDao;
|
|
|
|
- @Autowired
|
|
|
|
- private ClassGroupDao classGroupDao;
|
|
|
|
- @Autowired
|
|
|
|
- private RedisTemplate<String,String> redisTemplate;
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public BaseDAO<Long, ImUserFriend> getDAO() {
|
|
|
|
- return imUserFriendDao;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public boolean addFriend(Integer userId, Integer friendUserId, String nickname, String memo) {
|
|
|
|
- // 检查是否已经是好友
|
|
|
|
- ImUserFriend userFriend = imUserFriendDao.query(userId, friendUserId);
|
|
|
|
- if (userFriend != null) {
|
|
|
|
- throw new BizException("好友已存在");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- Date date = new Date();
|
|
|
|
-
|
|
|
|
- userFriend = new ImUserFriend();
|
|
|
|
- userFriend.setFriendId(friendUserId);
|
|
|
|
- userFriend.setUserId(friendUserId);
|
|
|
|
- userFriend.setFriendNickname(nickname);
|
|
|
|
- userFriend.setMemo(memo);
|
|
|
|
- userFriend.setCreateTime(date);
|
|
|
|
- userFriend.setUpdateTime(date);
|
|
|
|
- imUserFriendDao.insert(userFriend);
|
|
|
|
-
|
|
|
|
- return true;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public boolean deleteFriend(Integer userId, Integer friendUserId) {
|
|
|
|
- ImUserFriend userFriend = imUserFriendDao.query(userId, friendUserId);
|
|
|
|
- if (userFriend == null) {
|
|
|
|
- throw new BizException("好友不存在");
|
|
|
|
- }
|
|
|
|
- imUserFriendDao.delete(userFriend.getId());
|
|
|
|
- return true;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public boolean updateFriendNickname(Integer userId, Integer friendUserId, String nickname, String memo) {
|
|
|
|
- ImUserFriend userFriend = imUserFriendDao.query(userId, friendUserId);
|
|
|
|
- if (userFriend == null) {
|
|
|
|
- throw new BizException("好友不存在");
|
|
|
|
- }
|
|
|
|
- Date date = new Date();
|
|
|
|
- userFriend.setFriendNickname(nickname);
|
|
|
|
- userFriend.setMemo(memo);
|
|
|
|
- userFriend.setUpdateTime(date);
|
|
|
|
- imUserFriendDao.update(userFriend);
|
|
|
|
-
|
|
|
|
- return true;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public List<ImUserFriendDto> queryFriendListByUserId(Integer userId, String search) {
|
|
|
|
- String syncImUserFriendKey = "syncImUserFriend:" + userId;
|
|
|
|
- if(redisTemplate.hasKey(syncImUserFriendKey)){
|
|
|
|
- return imUserFriendDao.queryFriendListByUserId(userId, search);
|
|
|
|
- }else {
|
|
|
|
- return teacherService.queryGroupStudents1(userId,null);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public ImUserFriendDto queryFriendDetail(Integer userId, Integer friendUserId) {
|
|
|
|
- return imUserFriendDao.queryFriendDetail(userId, friendUserId);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public void batchInsert(List<ImUserFriend> imUserFriends) {
|
|
|
|
- for (ImUserFriend imUserFriend : imUserFriends) {
|
|
|
|
- if(imUserFriend.getUserId() == imUserFriend.getFriendId()){
|
|
|
|
- continue;
|
|
|
|
- }
|
|
|
|
- // 检查是否已经是好友
|
|
|
|
- ImUserFriend userFriend = imUserFriendDao.query(imUserFriend.getUserId(), imUserFriend.getFriendId());
|
|
|
|
- if (userFriend != null) {
|
|
|
|
- continue;
|
|
|
|
- }
|
|
|
|
- imUserFriendDao.insert(imUserFriend);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
|
- public void refreshCourseImUserFriend(Long courseId) {
|
|
|
|
- CourseSchedule courseSchedule = courseScheduleDao.get(courseId);
|
|
|
|
- //获取班级关联的老师列表
|
|
|
|
- Set<Integer> teacherIds = classGroupTeacherMapperDao.queryTeacherIdsByClassGroupId(courseSchedule.getClassGroupId(),null,null);
|
|
|
|
- //获取班级关联的学员列表
|
|
|
|
- Set<Integer> studentIds = classGroupStudentMapperDao.queryStudentIdsByClassGroupId(courseSchedule.getClassGroupId(),null,null);
|
|
|
|
- ClassGroup classGroup = classGroupDao.get(courseSchedule.getClassGroupId());
|
|
|
|
- if(classGroup == null){
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
- GroupType groupType = classGroup.getGroupType();
|
|
|
|
- List<ImUserFriend> imUserFriends = saveImUserFriends(studentIds, teacherIds, groupType, classGroup.getMusicGroupId());
|
|
|
|
- if(imUserFriends.size() > 0){
|
|
|
|
- batchInsert(imUserFriends);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
|
- public void refreshClassImUserFriend(Integer classGroupId) {
|
|
|
|
- //获取班级关联的老师列表
|
|
|
|
- Set<Integer> teacherIds = classGroupTeacherMapperDao.queryTeacherIdsByClassGroupId(classGroupId,null,null);
|
|
|
|
- //获取班级关联的学员列表
|
|
|
|
- Set<Integer> studentIds = classGroupStudentMapperDao.queryStudentIdsByClassGroupId(classGroupId,null,null);
|
|
|
|
- ClassGroup classGroup = classGroupDao.get(classGroupId);
|
|
|
|
- GroupType groupType = classGroup.getGroupType();
|
|
|
|
- List<ImUserFriend> imUserFriends = saveImUserFriends(studentIds, teacherIds, groupType, classGroup.getMusicGroupId());
|
|
|
|
- if(imUserFriends.size() > 0){
|
|
|
|
- batchInsert(imUserFriends);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
|
- public void refreshGroupImUserFriend(String musicGroupId,GroupType groupType) {
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private ImUserFriendDao imUserFriendDao;
|
|
|
|
+ @Autowired
|
|
|
|
+ private TeacherService teacherService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private ClassGroupTeacherMapperDao classGroupTeacherMapperDao;
|
|
|
|
+ @Autowired
|
|
|
|
+ private ClassGroupStudentMapperDao classGroupStudentMapperDao;
|
|
|
|
+ @Autowired
|
|
|
|
+ private MusicGroupDao musicGroupDao;
|
|
|
|
+ @Autowired
|
|
|
|
+ private VipGroupDao vipGroupDao;
|
|
|
|
+ @Autowired
|
|
|
|
+ private PracticeGroupDao practiceGroupDao;
|
|
|
|
+ @Autowired
|
|
|
|
+ private TeacherDao teacherDao;
|
|
|
|
+ @Autowired
|
|
|
|
+ private CourseScheduleDao courseScheduleDao;
|
|
|
|
+ @Autowired
|
|
|
|
+ private StudentRegistrationDao studentRegistrationDao;
|
|
|
|
+ @Autowired
|
|
|
|
+ private ClassGroupDao classGroupDao;
|
|
|
|
+ @Autowired
|
|
|
|
+ private RedisTemplate<String,String> redisTemplate;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private SchoolStaffMapper schoolStaffMapper;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private ImGroupMemberDao imGroupMemberDao;
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public BaseDAO<Long, ImUserFriend> getDAO() {
|
|
|
|
+ return imUserFriendDao;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public boolean addFriend(Integer userId, Integer friendUserId, String nickname, String memo) {
|
|
|
|
+ // 检查是否已经是好友
|
|
|
|
+ ImUserFriend userFriend = imUserFriendDao.query(userId, friendUserId);
|
|
|
|
+ if (userFriend != null) {
|
|
|
|
+ throw new BizException("好友已存在");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ Date date = new Date();
|
|
|
|
+
|
|
|
|
+ userFriend = new ImUserFriend();
|
|
|
|
+ userFriend.setFriendId(friendUserId);
|
|
|
|
+ userFriend.setUserId(friendUserId);
|
|
|
|
+ userFriend.setFriendNickname(nickname);
|
|
|
|
+ userFriend.setMemo(memo);
|
|
|
|
+ userFriend.setCreateTime(date);
|
|
|
|
+ userFriend.setUpdateTime(date);
|
|
|
|
+ imUserFriendDao.insert(userFriend);
|
|
|
|
+
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public boolean deleteFriend(Integer userId, Integer friendUserId) {
|
|
|
|
+ ImUserFriend userFriend = imUserFriendDao.query(userId, friendUserId);
|
|
|
|
+ if (userFriend == null) {
|
|
|
|
+ throw new BizException("好友不存在");
|
|
|
|
+ }
|
|
|
|
+ imUserFriendDao.delete(userFriend.getId());
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public boolean updateFriendNickname(Integer userId, Integer friendUserId, String nickname, String memo) {
|
|
|
|
+ ImUserFriend userFriend = imUserFriendDao.query(userId, friendUserId);
|
|
|
|
+ if (userFriend == null) {
|
|
|
|
+ throw new BizException("好友不存在");
|
|
|
|
+ }
|
|
|
|
+ Date date = new Date();
|
|
|
|
+ userFriend.setFriendNickname(nickname);
|
|
|
|
+ userFriend.setMemo(memo);
|
|
|
|
+ userFriend.setUpdateTime(date);
|
|
|
|
+ imUserFriendDao.update(userFriend);
|
|
|
|
+
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public List<ImUserFriendDto> queryFriendListByUserId(Integer userId, String search) {
|
|
|
|
+ String syncImUserFriendKey = "syncImUserFriend:" + userId;
|
|
|
|
+ if(redisTemplate.hasKey(syncImUserFriendKey)){
|
|
|
|
+ return imUserFriendDao.queryFriendListByUserId(userId, search);
|
|
|
|
+ }else {
|
|
|
|
+ return teacherService.queryGroupStudents1(userId,null);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public ImUserFriendDto queryFriendDetail(Integer userId, Integer friendUserId) {
|
|
|
|
+ return imUserFriendDao.queryFriendDetail(userId, friendUserId);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void batchInsert(List<ImUserFriend> imUserFriends) {
|
|
|
|
+ for (ImUserFriend imUserFriend : imUserFriends) {
|
|
|
|
+ if(imUserFriend.getUserId() == imUserFriend.getFriendId()){
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ // 检查是否已经是好友
|
|
|
|
+ ImUserFriend userFriend = imUserFriendDao.query(imUserFriend.getUserId(), imUserFriend.getFriendId());
|
|
|
|
+ if (userFriend != null) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ imUserFriendDao.insert(imUserFriend);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public void refreshCourseImUserFriend(Long courseId) {
|
|
|
|
+ CourseSchedule courseSchedule = courseScheduleDao.get(courseId);
|
|
|
|
+ //获取班级关联的老师列表
|
|
|
|
+ Set<Integer> teacherIds = classGroupTeacherMapperDao.queryTeacherIdsByClassGroupId(courseSchedule.getClassGroupId(),null,null);
|
|
|
|
+ //获取班级关联的学员列表
|
|
|
|
+ Set<Integer> studentIds = classGroupStudentMapperDao.queryStudentIdsByClassGroupId(courseSchedule.getClassGroupId(),null,null);
|
|
|
|
+ ClassGroup classGroup = classGroupDao.get(courseSchedule.getClassGroupId());
|
|
|
|
+ if(classGroup == null){
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ GroupType groupType = classGroup.getGroupType();
|
|
|
|
+ List<ImUserFriend> imUserFriends = saveImUserFriends(studentIds, teacherIds, groupType, classGroup.getMusicGroupId());
|
|
|
|
+ if(imUserFriends.size() > 0){
|
|
|
|
+ batchInsert(imUserFriends);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public void refreshClassImUserFriend(Integer classGroupId) {
|
|
|
|
+ //获取班级关联的老师列表
|
|
|
|
+ Set<Integer> teacherIds = classGroupTeacherMapperDao.queryTeacherIdsByClassGroupId(classGroupId,null,null);
|
|
|
|
+ //获取班级关联的学员列表
|
|
|
|
+ Set<Integer> studentIds = classGroupStudentMapperDao.queryStudentIdsByClassGroupId(classGroupId,null,null);
|
|
|
|
+ ClassGroup classGroup = classGroupDao.get(classGroupId);
|
|
|
|
+ GroupType groupType = classGroup.getGroupType();
|
|
|
|
+ List<ImUserFriend> imUserFriends = saveImUserFriends(studentIds, teacherIds, groupType, classGroup.getMusicGroupId());
|
|
|
|
+ if(imUserFriends.size() > 0){
|
|
|
|
+ batchInsert(imUserFriends);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public void refreshGroupImUserFriend(String musicGroupId,GroupType groupType) {
|
|
// ExecutorService executor = Executors.newCachedThreadPool();
|
|
// ExecutorService executor = Executors.newCachedThreadPool();
|
|
// CompletableFuture.runAsync(()->{
|
|
// CompletableFuture.runAsync(()->{
|
|
- List<ClassGroup> classGroups = classGroupDao.queryClassGroups(musicGroupId, groupType.getCode());
|
|
|
|
- List<ImUserFriend> imUserFriends = new ArrayList<>();
|
|
|
|
- classGroups.forEach(e->{
|
|
|
|
- //获取班级关联的老师列表
|
|
|
|
- Set<Integer> teacherIds = classGroupTeacherMapperDao.queryTeacherIdsByClassGroupId(e.getId(),null,null);
|
|
|
|
- //获取班级关联的学员列表
|
|
|
|
- Set<Integer> studentIds = classGroupStudentMapperDao.queryStudentIdsByClassGroupId(e.getId(),null,null);
|
|
|
|
- imUserFriends.addAll(saveImUserFriends(studentIds,teacherIds,groupType,musicGroupId));
|
|
|
|
- });
|
|
|
|
- if(imUserFriends.size() > 0){
|
|
|
|
- batchInsert(imUserFriends);
|
|
|
|
- }
|
|
|
|
- //更新用户朋友昵称是空的历史数据(线上没有发现这种问题)
|
|
|
|
- imUserFriendDao.updateNullNickName();
|
|
|
|
|
|
+ List<ClassGroup> classGroups = classGroupDao.queryClassGroups(musicGroupId, groupType==null?null:groupType.getCode());
|
|
|
|
+ List<ImUserFriend> imUserFriends = new ArrayList<>();
|
|
|
|
+ classGroups.forEach(e->{
|
|
|
|
+ //获取班级关联的老师列表
|
|
|
|
+ Set<Integer> teacherIds = classGroupTeacherMapperDao.queryTeacherIdsByClassGroupId(e.getId(),null,null);
|
|
|
|
+ //获取班级关联的学员列表
|
|
|
|
+ Set<Integer> studentIds = classGroupStudentMapperDao.queryStudentIdsByClassGroupId(e.getId(),null,null);
|
|
|
|
+ imUserFriends.addAll(saveImUserFriends(studentIds,teacherIds,groupType,musicGroupId));
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
|
|
|
|
+ // 更新学校端乐团主管的群好友列表
|
|
|
|
+ if (musicGroup.getCooperationOrganId() != null) {
|
|
|
|
+ // 获取乐团主管
|
|
|
|
+ List<SchoolStaff> schoolStaffs = schoolStaffMapper.getByCoopIdAndType(musicGroup.getCooperationOrganId(), ESchoolStaffType.ORCHESTRA_LEADER);
|
|
|
|
+
|
|
|
|
+ if (CollectionUtils.isNotEmpty(schoolStaffs)) {
|
|
|
|
+ SchoolStaff schoolStaff = schoolStaffs.get(0);
|
|
|
|
+ // 获取乐团群的人员列表
|
|
|
|
+ List<ImGroupMember> memberList = imGroupMemberDao.getByGroupId(musicGroupId);
|
|
|
|
+ if (CollectionUtils.isNotEmpty(memberList)) {
|
|
|
|
+ Long staffUserId = schoolStaff.getUserId();
|
|
|
|
+
|
|
|
|
+ Set<Integer> userIds = memberList.stream().map(o -> o.getUserId())
|
|
|
|
+ .collect(Collectors.toSet());
|
|
|
|
+ userFriends(imUserFriends, musicGroup.getName(), staffUserId, userIds);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ // 更新学校端好友列表
|
|
|
|
+ if (musicGroup.getCooperationOrganId() != null) {
|
|
|
|
+ imUserFriends.addAll(schoolStaffFriend(musicGroup.getCooperationOrganId()));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ if(imUserFriends.size() > 0){
|
|
|
|
+ batchInsert(imUserFriends);
|
|
|
|
+ }
|
|
|
|
+ //更新用户朋友昵称是空的历史数据(线上没有发现这种问题)
|
|
|
|
+ imUserFriendDao.updateNullNickName();
|
|
// },executor);
|
|
// },executor);
|
|
// executor.shutdown();
|
|
// executor.shutdown();
|
|
- }
|
|
|
|
|
|
+ }
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public List<ImUserFriendDto> queryFriendListByUserIdV2(Integer userId, String search, String musicGroupId, Integer subjectId, Boolean vipFlag) {
|
|
public List<ImUserFriendDto> queryFriendListByUserIdV2(Integer userId, String search, String musicGroupId, Integer subjectId, Boolean vipFlag) {
|
|
// 逻辑过于复杂 拿出数据后筛选
|
|
// 逻辑过于复杂 拿出数据后筛选
|
|
return imUserFriendDao.queryFriendListByUserIdV2(userId, search,musicGroupId,subjectId,vipFlag);
|
|
return imUserFriendDao.queryFriendListByUserIdV2(userId, search,musicGroupId,subjectId,vipFlag);
|
|
|
|
|
|
-
|
|
|
|
-
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -221,110 +252,163 @@ public class ImUserFriendServiceImpl extends BaseServiceImpl<Long, ImUserFriend>
|
|
}
|
|
}
|
|
|
|
|
|
public List<ImUserFriend> saveImUserFriends(Set<Integer> studentIds,Set<Integer> teacherIds,GroupType groupType,String musicGroupId){
|
|
public List<ImUserFriend> saveImUserFriends(Set<Integer> studentIds,Set<Integer> teacherIds,GroupType groupType,String musicGroupId){
|
|
- List<ImUserFriend> imUserFriends = new ArrayList<>();
|
|
|
|
- Set<Integer> educationIds = new HashSet<>();
|
|
|
|
- Integer repairUserId = null;
|
|
|
|
- String repairUserName = null;
|
|
|
|
- MusicGroup musicGroup = new MusicGroup();
|
|
|
|
- //获取当前学员声部
|
|
|
|
- Map<Integer,String> studentSubjectName = new HashMap<>();
|
|
|
|
- Map<Integer, String> teacherSubjectNameMap = new HashMap<>();
|
|
|
|
- if(teacherIds.size() > 0){
|
|
|
|
- teacherSubjectNameMap = MapUtil.convertIntegerMap(teacherDao.querySubjectNameByIdList(new ArrayList<>(teacherIds)));
|
|
|
|
- }
|
|
|
|
- if(groupType == MUSIC){
|
|
|
|
- //学员关联乐团管理人员通讯录
|
|
|
|
- musicGroup = musicGroupDao.get(musicGroupId);
|
|
|
|
- educationIds.add(musicGroup.getDirectorUserId());
|
|
|
|
- educationIds.add(musicGroup.getEducationalTeacherId());
|
|
|
|
- educationIds.add(musicGroup.getTeamTeacherId());
|
|
|
|
- if(musicGroup.getRepairUserId() != null){
|
|
|
|
- repairUserId = musicGroup.getRepairUserId();
|
|
|
|
- repairUserName = teacherDao.queryNameById(repairUserId);
|
|
|
|
- }
|
|
|
|
- if(studentIds.size() > 0){
|
|
|
|
- studentSubjectName = MapUtil.convertMybatisMap(studentRegistrationDao.getStudentSubjectNameByStuIds(musicGroup.getId(),studentIds));
|
|
|
|
- }
|
|
|
|
- }else if(groupType == VIP){
|
|
|
|
- VipGroup vipGroup = vipGroupDao.get(Long.parseLong(musicGroupId));
|
|
|
|
- educationIds.add(vipGroup.getEducationalTeacherId());
|
|
|
|
- }else if(groupType == PRACTICE){
|
|
|
|
- PracticeGroup practiceGroup = practiceGroupDao.get(Long.parseLong(musicGroupId));
|
|
|
|
- educationIds.add(practiceGroup.getEducationalTeacherId());
|
|
|
|
- }
|
|
|
|
- studentIds.removeAll(Collections.singleton(null));
|
|
|
|
- teacherIds.removeAll(Collections.singleton(null));
|
|
|
|
- educationIds.removeAll(Collections.singleton(null));
|
|
|
|
- Map<Integer, String> usernameMap = new HashMap<>();
|
|
|
|
- if(studentIds.size() > 0){
|
|
|
|
- usernameMap = MapUtil.convertMybatisMap(teacherDao.queryUserNameByIdList(new ArrayList<>(studentIds)));
|
|
|
|
- }
|
|
|
|
- Map<Integer, String> teacherRealNameMap = new HashMap<>();
|
|
|
|
- if(teacherIds.size() > 0){
|
|
|
|
- teacherRealNameMap = MapUtil.convertMybatisMap(teacherDao.queryUserNameByIdList(new ArrayList<>(teacherIds)));
|
|
|
|
- }
|
|
|
|
- Map<Integer, String> educationRealNameMap = new HashMap<>();
|
|
|
|
- if(educationIds.size() > 0){
|
|
|
|
- educationRealNameMap = MapUtil.convertMybatisMap(teacherDao.queryUserNameByIdList(new ArrayList<>(educationIds)));
|
|
|
|
- }
|
|
|
|
- //老师关联教务、学员
|
|
|
|
- for (Integer teacherId : teacherIds) {
|
|
|
|
- //老师关联学员
|
|
|
|
- this.addImUserFriend(studentIds,studentSubjectName,usernameMap,musicGroup.getName(),teacherId,imUserFriends);
|
|
|
|
- //老师关联教务
|
|
|
|
- this.addImUserFriend(educationIds,null,educationRealNameMap,null,teacherId,imUserFriends);
|
|
|
|
- }
|
|
|
|
- //教务关联的老师、学员
|
|
|
|
- for (Integer educationId : educationIds) {
|
|
|
|
- //教务关联学员
|
|
|
|
- this.addImUserFriend(studentIds,studentSubjectName,usernameMap,musicGroup.getName(),educationId,imUserFriends);
|
|
|
|
- //教务关联老师
|
|
|
|
- this.addImUserFriend(teacherIds,teacherSubjectNameMap,teacherRealNameMap,musicGroup.getName(),educationId,imUserFriends);
|
|
|
|
- }
|
|
|
|
- //学员关联的老师、教务、维修技师
|
|
|
|
- for (Integer studentId : studentIds) {
|
|
|
|
- //学员关联的老师
|
|
|
|
- this.addImUserFriend(teacherIds,teacherSubjectNameMap,teacherRealNameMap,musicGroup.getName(),studentId,imUserFriends);
|
|
|
|
- //学员关联的教务
|
|
|
|
- this.addImUserFriend(educationIds,null,educationRealNameMap,null,studentId,imUserFriends);
|
|
|
|
- //学员关联维修技师
|
|
|
|
- if(repairUserId != null){
|
|
|
|
- if(repairUserId == studentId){
|
|
|
|
- continue;
|
|
|
|
- }
|
|
|
|
- ImUserFriend imUserFriend = new ImUserFriend();
|
|
|
|
- imUserFriend.setUserId(studentId);
|
|
|
|
- imUserFriend.setFriendId(repairUserId);
|
|
|
|
- imUserFriend.setFriendNickname(repairUserName);
|
|
|
|
- imUserFriend.setMemo(musicGroup.getName());
|
|
|
|
- imUserFriend.setTags("维修技师");
|
|
|
|
- imUserFriends.add(imUserFriend);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- //维修技师关联学员
|
|
|
|
- if(repairUserId != null){
|
|
|
|
- this.addImUserFriend(studentIds,studentSubjectName,usernameMap,musicGroup.getName(),repairUserId,imUserFriends);
|
|
|
|
- }
|
|
|
|
- return imUserFriends;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public void addImUserFriend(Set<Integer> friendUserIds,Map<Integer,String> tagsMap,
|
|
|
|
- Map<Integer,String> nameMap,String memo,Integer userId,List<ImUserFriend> imUserFriends){
|
|
|
|
- if(friendUserIds != null && friendUserIds.size() > 0){
|
|
|
|
- for (Integer friendId : friendUserIds) {
|
|
|
|
- if(userId == friendId){
|
|
|
|
- continue;
|
|
|
|
- }
|
|
|
|
- ImUserFriend imUserFriend = new ImUserFriend();
|
|
|
|
- imUserFriend.setUserId(userId);
|
|
|
|
- imUserFriend.setFriendId(friendId);
|
|
|
|
- imUserFriend.setFriendNickname(nameMap.get(friendId));
|
|
|
|
- imUserFriend.setMemo(memo);
|
|
|
|
- if(tagsMap != null){
|
|
|
|
- imUserFriend.setTags(tagsMap.get(friendId));
|
|
|
|
- }
|
|
|
|
- imUserFriends.add(imUserFriend);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ List<ImUserFriend> imUserFriends = new ArrayList<>();
|
|
|
|
+ Set<Integer> educationIds = new HashSet<>();
|
|
|
|
+ Integer repairUserId = null;
|
|
|
|
+ String repairUserName = null;
|
|
|
|
+ MusicGroup musicGroup = new MusicGroup();
|
|
|
|
+ //获取当前学员声部
|
|
|
|
+ Map<Integer,String> studentSubjectName = new HashMap<>();
|
|
|
|
+ Map<Integer, String> teacherSubjectNameMap = new HashMap<>();
|
|
|
|
+ if(teacherIds.size() > 0){
|
|
|
|
+ teacherSubjectNameMap = MapUtil.convertIntegerMap(teacherDao.querySubjectNameByIdList(new ArrayList<>(teacherIds)));
|
|
|
|
+ }
|
|
|
|
+ if(groupType == MUSIC){
|
|
|
|
+ //学员关联乐团管理人员通讯录
|
|
|
|
+ musicGroup = musicGroupDao.get(musicGroupId);
|
|
|
|
+ educationIds.add(musicGroup.getDirectorUserId());
|
|
|
|
+ educationIds.add(musicGroup.getEducationalTeacherId());
|
|
|
|
+ educationIds.add(musicGroup.getTeamTeacherId());
|
|
|
|
+ if(musicGroup.getRepairUserId() != null){
|
|
|
|
+ repairUserId = musicGroup.getRepairUserId();
|
|
|
|
+ repairUserName = teacherDao.queryNameById(repairUserId);
|
|
|
|
+ }
|
|
|
|
+ if(studentIds.size() > 0){
|
|
|
|
+ studentSubjectName = MapUtil.convertMybatisMap(studentRegistrationDao.getStudentSubjectNameByStuIds(musicGroup.getId(),studentIds));
|
|
|
|
+ }
|
|
|
|
+ }else if(groupType == VIP){
|
|
|
|
+ VipGroup vipGroup = vipGroupDao.get(Long.parseLong(musicGroupId));
|
|
|
|
+ educationIds.add(vipGroup.getEducationalTeacherId());
|
|
|
|
+ }else if(groupType == PRACTICE){
|
|
|
|
+ PracticeGroup practiceGroup = practiceGroupDao.get(Long.parseLong(musicGroupId));
|
|
|
|
+ educationIds.add(practiceGroup.getEducationalTeacherId());
|
|
|
|
+ }
|
|
|
|
+ studentIds.removeAll(Collections.singleton(null));
|
|
|
|
+ teacherIds.removeAll(Collections.singleton(null));
|
|
|
|
+ educationIds.removeAll(Collections.singleton(null));
|
|
|
|
+ Map<Integer, String> usernameMap = new HashMap<>();
|
|
|
|
+ if(studentIds.size() > 0){
|
|
|
|
+ usernameMap = MapUtil.convertMybatisMap(teacherDao.queryUserNameByIdList(new ArrayList<>(studentIds)));
|
|
|
|
+ }
|
|
|
|
+ Map<Integer, String> teacherRealNameMap = new HashMap<>();
|
|
|
|
+ if(teacherIds.size() > 0){
|
|
|
|
+ teacherRealNameMap = MapUtil.convertMybatisMap(teacherDao.queryUserNameByIdList(new ArrayList<>(teacherIds)));
|
|
|
|
+ }
|
|
|
|
+ Map<Integer, String> educationRealNameMap = new HashMap<>();
|
|
|
|
+ if(educationIds.size() > 0){
|
|
|
|
+ educationRealNameMap = MapUtil.convertMybatisMap(teacherDao.queryUserNameByIdList(new ArrayList<>(educationIds)));
|
|
|
|
+ }
|
|
|
|
+ //老师关联教务、学员
|
|
|
|
+ for (Integer teacherId : teacherIds) {
|
|
|
|
+ //老师关联学员
|
|
|
|
+ this.addImUserFriend(studentIds,studentSubjectName,usernameMap,musicGroup.getName(),teacherId,imUserFriends);
|
|
|
|
+ //老师关联教务
|
|
|
|
+ this.addImUserFriend(educationIds,null,educationRealNameMap,null,teacherId,imUserFriends);
|
|
|
|
+ }
|
|
|
|
+ //教务关联的老师、学员
|
|
|
|
+ for (Integer educationId : educationIds) {
|
|
|
|
+ //教务关联学员
|
|
|
|
+ this.addImUserFriend(studentIds,studentSubjectName,usernameMap,musicGroup.getName(),educationId,imUserFriends);
|
|
|
|
+ //教务关联老师
|
|
|
|
+ this.addImUserFriend(teacherIds,teacherSubjectNameMap,teacherRealNameMap,musicGroup.getName(),educationId,imUserFriends);
|
|
|
|
+ }
|
|
|
|
+ //学员关联的老师、教务、维修技师
|
|
|
|
+ for (Integer studentId : studentIds) {
|
|
|
|
+ //学员关联的老师
|
|
|
|
+ this.addImUserFriend(teacherIds,teacherSubjectNameMap,teacherRealNameMap,musicGroup.getName(),studentId,imUserFriends);
|
|
|
|
+ //学员关联的教务
|
|
|
|
+ this.addImUserFriend(educationIds,null,educationRealNameMap,null,studentId,imUserFriends);
|
|
|
|
+ //学员关联维修技师
|
|
|
|
+ if(repairUserId != null){
|
|
|
|
+ if(repairUserId == studentId){
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ ImUserFriend imUserFriend = new ImUserFriend();
|
|
|
|
+ imUserFriend.setUserId(studentId);
|
|
|
|
+ imUserFriend.setFriendId(repairUserId);
|
|
|
|
+ imUserFriend.setFriendNickname(repairUserName);
|
|
|
|
+ imUserFriend.setMemo(musicGroup.getName());
|
|
|
|
+ imUserFriend.setTags("维修技师");
|
|
|
|
+ imUserFriends.add(imUserFriend);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //维修技师关联学员
|
|
|
|
+ if(repairUserId != null){
|
|
|
|
+ this.addImUserFriend(studentIds,studentSubjectName,usernameMap,musicGroup.getName(),repairUserId,imUserFriends);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return imUserFriends;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private List<ImUserFriend> schoolStaffFriend(Integer coopId) {
|
|
|
|
+ List<ImUserFriend> imUserFriends = new ArrayList<>();
|
|
|
|
+ Map<Integer, String> usernameMap;
|
|
|
|
+ // 获取乐团主管
|
|
|
|
+ List<SchoolStaff> schoolStaffs = schoolStaffMapper.getByCoopIdAndType(coopId,null);
|
|
|
|
+
|
|
|
|
+ if (CollectionUtils.isNotEmpty(schoolStaffs)) {
|
|
|
|
+
|
|
|
|
+ Set<Integer> userIds = schoolStaffs.stream().map(o -> o.getUserId().intValue())
|
|
|
|
+ .collect(Collectors.toSet());
|
|
|
|
+ usernameMap = MapUtil.convertMybatisMap(teacherDao.queryUserNameByIdList(new ArrayList<>(userIds)));
|
|
|
|
+
|
|
|
|
+ // 设置好友关系
|
|
|
|
+ for (Integer userId : userIds) {
|
|
|
|
+ this.addImUserFriend(userIds, null, usernameMap, null, userId, imUserFriends);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return imUserFriends;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 刷新学校端好友列表
|
|
|
|
+ *
|
|
|
|
+ * @param coopId 合作商id
|
|
|
|
+ */
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ @Override
|
|
|
|
+ public void refreshSchoolStaffFriend(Integer coopId) {
|
|
|
|
+ List<ImUserFriend> imUserFriends = schoolStaffFriend(coopId);
|
|
|
|
+
|
|
|
|
+ if(imUserFriends.size() > 0){
|
|
|
|
+ batchInsert(imUserFriends);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ private void userFriends(List<ImUserFriend> imUserFriends, String musicGroupName, Long userId, Set<Integer> userIds) {
|
|
|
|
+ Map<Integer, String> usernameMap;
|
|
|
|
+ if (CollectionUtils.isNotEmpty(userIds)) {
|
|
|
|
+ usernameMap = MapUtil.convertMybatisMap(teacherDao.queryUserNameByIdList(new ArrayList<>(userIds)));
|
|
|
|
+
|
|
|
|
+ // 设置好友关系
|
|
|
|
+ this.addImUserFriend(userIds,null,usernameMap, musicGroupName, userId.intValue(), imUserFriends);
|
|
|
|
+
|
|
|
|
+ for (Integer user : userIds) {
|
|
|
|
+ // 设置好友关系
|
|
|
|
+ this.addImUserFriend(new HashSet<>(Lists.newArrayList(
|
|
|
|
+ userId.intValue())),null,usernameMap, musicGroupName,user, imUserFriends);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void addImUserFriend(Set<Integer> friendUserIds,Map<Integer,String> tagsMap,
|
|
|
|
+ Map<Integer,String> nameMap,String memo,Integer userId,List<ImUserFriend> imUserFriends){
|
|
|
|
+ if(friendUserIds != null && friendUserIds.size() > 0){
|
|
|
|
+ for (Integer friendId : friendUserIds) {
|
|
|
|
+ if(userId == friendId){
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ ImUserFriend imUserFriend = new ImUserFriend();
|
|
|
|
+ imUserFriend.setUserId(userId);
|
|
|
|
+ imUserFriend.setFriendId(friendId);
|
|
|
|
+ imUserFriend.setFriendNickname(nameMap.get(friendId));
|
|
|
|
+ imUserFriend.setMemo(memo);
|
|
|
|
+ if(tagsMap != null){
|
|
|
|
+ imUserFriend.setTags(tagsMap.get(friendId));
|
|
|
|
+ }
|
|
|
|
+ imUserFriends.add(imUserFriend);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|