Selaa lähdekoodia

Merge branch 'master' of http://git.dayaedu.com/yonge/mec

yonge 4 vuotta sitten
vanhempi
commit
7b5b48b77c

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImUserFriendDao.java

@@ -36,4 +36,6 @@ public interface ImUserFriendDao extends BaseDAO<Long, ImUserFriend> {
 	 * @param teacherId
 	 */
 	void batchInsert(@Param("teachers") Set<BasicUserDto> teachers, @Param("teacherId") Integer teacherId);
+
+	void insertByBasicUser(@Param("basicUserDto") BasicUserDto basicUserDto, @Param("teacherId") Integer teacherId);
 }

+ 3 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupMemberServiceImpl.java

@@ -100,7 +100,7 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 			throw new BizException("加入群组失败:群组[{}]不存在", imGroupId);
 		}
 		//检查用户是否已存在
-		List<Integer> existUserIdList = imGroupMemberDao.queryByImGroupIdAndUserId(imGroupId.toString(), userRoleMap.keySet().stream().map(Objects::toString)
+		List<Integer> existUserIdList = imGroupMemberDao.queryByImGroupIdAndUserId(imGroupId.toString(), userRoleMap.keySet().stream().filter(Objects::nonNull).map(Objects::toString)
 		.collect(Collectors.joining(","))).stream().map(e -> e.getUserId()).collect(Collectors.toList());
 
 		Date date = new Date();
@@ -111,7 +111,7 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 		Map<Integer, String> nameIdMap= MapUtil.convertIntegerMap(teacherDao.queryUserNameByIdList(new ArrayList<>(userRoleMap.keySet())));
 		for (Entry<Integer, String> entry : userRoleMap.entrySet()) {
 			
-			if(existUserIdList.contains(entry.getKey())){
+			if(existUserIdList.contains(entry.getKey())||Objects.isNull(entry.getKey())){
 				continue;
 			}
 
@@ -212,4 +212,4 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 		return true;
 	}
 
-}
+}

+ 8 - 244
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImUserFriendServiceImpl.java

@@ -10,6 +10,7 @@ import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.service.TeacherService;
 import com.ym.mec.util.collection.MapUtil;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 
 import com.ym.mec.biz.dal.dto.ImUserFriendDto;
@@ -41,15 +42,13 @@ public class ImUserFriendServiceImpl extends BaseServiceImpl<Long, ImUserFriend>
 	@Autowired
 	private TeacherDao teacherDao;
 	@Autowired
-	private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
-	@Autowired
-	private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
-	@Autowired
 	private CourseScheduleDao courseScheduleDao;
 	@Autowired
 	private StudentRegistrationDao studentRegistrationDao;
 	@Autowired
 	private ClassGroupDao classGroupDao;
+	@Autowired
+	private RedisTemplate<String,String> redisTemplate;
 
 	@Override
 	public BaseDAO<Long, ImUserFriend> getDAO() {
@@ -104,11 +103,12 @@ public class ImUserFriendServiceImpl extends BaseServiceImpl<Long, ImUserFriend>
 
 	@Override
 	public List<ImUserFriendDto> queryFriendListByUserId(Integer userId, String search) {
-		List<ImUserFriendDto> imUserFriendDtos = imUserFriendDao.queryFriendListByUserId(userId, search);
-		if(imUserFriendDtos.size() == 0){
-			return teacherService.queryGroupStudents1(userId,search);
+		String syncImUserFriendKey = "syncImUserFriend:" + userId;
+		if(redisTemplate.hasKey(syncImUserFriendKey)){
+			return imUserFriendDao.queryFriendListByUserId(userId, search);
+		}else {
+			return teacherService.queryGroupStudents1(userId,null);
 		}
-		return imUserFriendDtos;
 	}
 
 	@Override
@@ -296,240 +296,4 @@ public class ImUserFriendServiceImpl extends BaseServiceImpl<Long, ImUserFriend>
 			batchInsert(imUserFriends);
 		}
 	}
-//
-//	@Override
-//	@Transactional(rollbackFor = Exception.class)
-//	public void classGroupAddStudent(Integer classGroupId, Set<Integer> studentIds) {
-//		ClassGroup classGroup = classGroupDao.get(classGroupId);
-//		//获取关联的老师
-//		Set<Integer> teacherIds = classGroupTeacherMapperDao.queryTeacherIdsByClassGroupId(classGroupId);
-//
-//		GroupType groupType = classGroup.getGroupType();
-//		saveImUserFriends(studentIds,teacherIds,groupType,classGroup.getMusicGroupId());
-//
-//	}
-//
-//	@Override
-//	@Transactional(rollbackFor = Exception.class)
-//	public void classGroupChangeTeacher(Integer classGroupId, Integer teacherId) {
-//		Set<Integer> studentIds = new HashSet<>();
-//		Set<Integer> educations = new HashSet<>();
-//
-//		ClassGroup classGroup = classGroupDao.get(classGroupId);
-//		List<ImUserFriend> imUserFriends = new ArrayList<>();
-//		//获取班级关联的学员
-//		List<ClassGroupStudentMapper> studentMappers = classGroupStudentMapperDao.findAllByClassGroup(classGroupId.longValue());
-//		studentIds.addAll(studentMappers.stream().map(e->e.getUserId()).collect(Collectors.toSet()));
-//
-//		MusicGroup musicGroup = new MusicGroup();
-//		Map<Integer,String> studentSubjectName = new HashMap<>();
-//		studentIds.add(teacherId);
-//		//获取老师声部
-//		Map<Integer, String> teacherSubjectNameMap = MapUtil.convertIntegerMap(teacherDao.querySubjectNameByIdList(new ArrayList<>(studentIds)));
-//
-//		GroupType groupType = classGroup.getGroupType();
-//		if(groupType == MUSIC){
-//			//获取当前学员声部
-//			studentSubjectName = MapUtil.convertMybatisMap(studentRegistrationDao.getStudentSubjectNameByStuIds(musicGroup.getId(),studentIds));
-//			//关联乐团管理人员通讯录
-//			musicGroup = musicGroupDao.get(classGroup.getMusicGroupId());
-//			studentIds.add(musicGroup.getDirectorUserId());
-//			studentIds.add(musicGroup.getEducationalTeacherId());
-//			studentIds.add(musicGroup.getTeamTeacherId());
-//			educations.add(musicGroup.getDirectorUserId());
-//			educations.add(musicGroup.getEducationalTeacherId());
-//			educations.add(musicGroup.getTeamTeacherId());
-//		}else if(groupType == VIP){
-//			VipGroup vipGroup = vipGroupDao.get(Long.parseLong(classGroup.getMusicGroupId()));
-//			studentIds.add(vipGroup.getEducationalTeacherId());
-//			educations.add(vipGroup.getEducationalTeacherId());
-//		}else if(groupType == PRACTICE){
-//			PracticeGroup practiceGroup = practiceGroupDao.get(Long.parseLong(classGroup.getMusicGroupId()));
-//			studentIds.add(practiceGroup.getEducationalTeacherId());
-//			educations.add(practiceGroup.getEducationalTeacherId());
-//		}
-//		educations.removeAll(Collections.singleton(null));
-//		studentIds.removeAll(Collections.singleton(null));
-//		//获取通讯录昵称
-//		Map<Integer, String> nameIdMap = MapUtil.convertIntegerMap(teacherDao.queryNameByIdList(new ArrayList<>(studentIds)));
-//		for (Integer studentId : studentIds) {
-//			if(teacherId == studentId){
-//				continue;
-//			}
-//			//老师关联的学员、教务
-//			ImUserFriend imUserFriend = new ImUserFriend();
-//			imUserFriend.setUserId(teacherId);
-//			imUserFriend.setFriendId(studentId);
-//			imUserFriend.setFriendNickname(nameIdMap.get(studentId));
-//			imUserFriend.setMemo(musicGroup.getName());
-//			imUserFriend.setTags(teacherSubjectNameMap.get(studentId));
-//			imUserFriends.add(imUserFriend);
-//			//学员、教务关联的老师
-//			ImUserFriend imUserFriend1 = new ImUserFriend();
-//			imUserFriend1.setUserId(studentId);
-//			imUserFriend1.setFriendId(teacherId);
-//			imUserFriend1.setFriendNickname(nameIdMap.get(teacherId));
-//			imUserFriend1.setMemo(musicGroup.getName());
-//			imUserFriend1.setTags(studentSubjectName.get(teacherId));
-//			imUserFriends.add(imUserFriend1);
-//
-//			for (Integer education : educations) {
-//				if(studentId == education){
-//					continue;
-//				}
-//				//教务关联的学员
-//				ImUserFriend imUserFriend2 = new ImUserFriend();
-//				imUserFriend2.setUserId(education);
-//				imUserFriend2.setFriendId(studentId);
-//				imUserFriend2.setFriendNickname(nameIdMap.get(studentId));
-//				imUserFriend2.setMemo(musicGroup.getName());
-//				imUserFriend2.setTags(studentSubjectName.get(studentId));
-//				imUserFriends.add(imUserFriend2);
-//				//学员关联的教务
-//				ImUserFriend imUserFriend3 = new ImUserFriend();
-//				imUserFriend3.setUserId(studentId);
-//				imUserFriend3.setFriendId(education);
-//				imUserFriend3.setFriendNickname(nameIdMap.get(education));
-//				imUserFriend3.setMemo(musicGroup.getName());
-//				imUserFriend3.setTags(teacherSubjectNameMap.get(education));
-//				imUserFriends.add(imUserFriend3);
-//			}
-//		}
-//		if(imUserFriends.size() > 0){
-//			batchInsert(imUserFriends);
-//		}
-//	}
-//
-//	@Override
-//	@Transactional(rollbackFor = Exception.class)
-//	public void groupChangeEducation(String groupId, Integer educationId, GroupType groupType) {
-//		Set<Integer> studentIds = new HashSet<>();
-//		List<ImUserFriend> imUserFriends = new ArrayList<>();
-//		//获取班级关联的学员
-//		List<ClassGroupStudentInfoDto> studentMappers = classGroupStudentMapperDao.findByGroupOrClassGroup(groupId, groupType, null);
-//		studentIds.addAll(studentMappers.stream().map(e->e.getUserId()).collect(Collectors.toSet()));
-//		//获取班级关联的老师
-//		List<ClassGroupTeacherMapper> classGroupTeacherMappers = classGroupTeacherMapperDao.findAllByMusicGroup(groupId,groupType,null);
-//		studentIds.addAll(classGroupTeacherMappers.stream().map(e->e.getUserId()).collect(Collectors.toSet()));
-//		//获取课程关联的老师
-//		List<CourseScheduleTeacherSalary> teacherSalaries = courseScheduleTeacherSalaryDao.findByGroup(groupId, groupType.getCode());
-//		studentIds.addAll(teacherSalaries.stream().map(e->e.getUserId()).collect(Collectors.toSet()));
-//		studentIds.add(educationId);
-//
-//		//获取通讯录昵称
-//		Map<Integer, String> nameIdMap = MapUtil.convertIntegerMap(teacherDao.queryNameByIdList(new ArrayList<>(studentIds)));
-//		//获取老师声部
-//		Map<Integer, String> teacherSubjectNameMap = MapUtil.convertIntegerMap(teacherDao.querySubjectNameByIdList(new ArrayList<>(studentIds)));
-//		for (Integer studentId : studentIds) {
-//			if(educationId == studentId){
-//				continue;
-//			}
-//			//教务关联的老师、学员
-//			ImUserFriend imUserFriend = new ImUserFriend();
-//			imUserFriend.setUserId(educationId);
-//			imUserFriend.setFriendId(studentId);
-//			imUserFriend.setFriendNickname(nameIdMap.get(studentId));
-//			imUserFriend.setTags(teacherSubjectNameMap.get(studentId));
-//			imUserFriends.add(imUserFriend);
-//			//学员老师关联教务
-//			ImUserFriend imUserFriend1 = new ImUserFriend();
-//			imUserFriend1.setUserId(studentId);
-//			imUserFriend1.setFriendId(educationId);
-//			imUserFriend1.setFriendNickname(nameIdMap.get(educationId));
-//			imUserFriends.add(imUserFriend1);
-//		}
-//		if(imUserFriends.size() > 0){
-//			batchInsert(imUserFriends);
-//		}
-//	}
-//
-//	@Override
-//	@Transactional(rollbackFor = Exception.class)
-//	public void courseScheduleChangeTeacher(Long courseScheduleId, Integer teacherId) {
-//		Set<Integer> studentIds = new HashSet<>();
-//		Set<Integer> educations = new HashSet<>();
-//		List<ImUserFriend> imUserFriends = new ArrayList<>();
-//		CourseSchedule courseSchedule = courseScheduleDao.get(courseScheduleId);
-//		//获取课程上关联的学员
-//		List<CourseScheduleStudentPayment> studentPayments = courseScheduleStudentPaymentDao.findByCourseSchedule(courseScheduleId);
-//		studentIds.addAll(studentPayments.stream().map(e->e.getUserId()).collect(Collectors.toSet()));
-//		studentIds.add(teacherId);
-//		//学员声部列表
-//		Map<Integer,String> studentSubjectName = new HashMap<>();
-//		MusicGroup musicGroup = new MusicGroup();
-//		GroupType groupType = courseSchedule.getGroupType();
-//		if(groupType == MUSIC){
-//			musicGroupDao.get(courseSchedule.getMusicGroupId());
-//			//获取学员声部列表
-//			studentSubjectName = MapUtil.convertMybatisMap(studentRegistrationDao.getStudentSubjectNameByStuIds(musicGroup.getId(),studentIds));
-//			//关联乐团管理人员通讯录
-//			musicGroup = musicGroupDao.get(courseSchedule.getMusicGroupId());
-//			studentIds.add(musicGroup.getDirectorUserId());
-//			studentIds.add(musicGroup.getEducationalTeacherId());
-//			studentIds.add(musicGroup.getTeamTeacherId());
-//			educations.add(musicGroup.getDirectorUserId());
-//			educations.add(musicGroup.getEducationalTeacherId());
-//			educations.add(musicGroup.getTeamTeacherId());
-//		}else if(groupType == VIP){
-//			VipGroup vipGroup = vipGroupDao.get(Long.parseLong(courseSchedule.getMusicGroupId()));
-//			educations.add(vipGroup.getEducationalTeacherId());
-//			studentIds.add(vipGroup.getEducationalTeacherId());
-//		}else if(groupType == PRACTICE){
-//			PracticeGroup practiceGroup = practiceGroupDao.get(Long.parseLong(courseSchedule.getMusicGroupId()));
-//			studentIds.add(practiceGroup.getEducationalTeacherId());
-//			educations.add(practiceGroup.getEducationalTeacherId());
-//		}
-//		educations.removeAll(Collections.singleton(null));
-//		studentIds.removeAll(Collections.singleton(null));
-//		//获取通讯录昵称
-//		Map<Integer, String> nameIdMap = MapUtil.convertIntegerMap(teacherDao.queryNameByIdList(new ArrayList<>(studentIds)));
-//		//获取老师声部
-//		Map<Integer, String> teacherSubjectNameMap = MapUtil.convertIntegerMap(teacherDao.querySubjectNameByIdList(new ArrayList<>(studentIds)));
-//		for (Integer studentId : studentIds) {
-//			if(teacherId == studentId){
-//				continue;
-//			}
-//			//老师关联的学员和教务
-//			ImUserFriend imUserFriend = new ImUserFriend();
-//			imUserFriend.setUserId(teacherId);
-//			imUserFriend.setFriendId(studentId);
-//			imUserFriend.setFriendNickname(nameIdMap.get(studentId));
-//			imUserFriend.setMemo(musicGroup.getName());
-//			imUserFriend.setTags(studentSubjectName.get(studentId));
-//			imUserFriends.add(imUserFriend);
-//			//学员关联的老师、教务关联老师
-//			ImUserFriend imUserFriend1 = new ImUserFriend();
-//			imUserFriend1.setUserId(studentId);
-//			imUserFriend1.setFriendId(teacherId);
-//			imUserFriend1.setFriendNickname(nameIdMap.get(teacherId));
-//			imUserFriend1.setMemo(musicGroup.getName());
-//			imUserFriend1.setTags(teacherSubjectNameMap.get(teacherId));
-//			imUserFriends.add(imUserFriend1);
-//			for (Integer education : educations) {
-//				if(studentId == education){
-//					continue;
-//				}
-//				//学员关联教务
-//				ImUserFriend imUserFriend2 = new ImUserFriend();
-//				imUserFriend2.setUserId(studentId);
-//				imUserFriend2.setFriendId(education);
-//				imUserFriend2.setFriendNickname(nameIdMap.get(education));
-//				imUserFriend2.setMemo(musicGroup.getName());
-//				imUserFriend2.setTags(teacherSubjectNameMap.get(education));
-//				imUserFriends.add(imUserFriend2);
-//				//教务关联学员
-//				ImUserFriend imUserFriend3 = new ImUserFriend();
-//				imUserFriend3.setUserId(education);
-//				imUserFriend3.setFriendId(studentId);
-//				imUserFriend3.setFriendNickname(nameIdMap.get(studentId));
-//				imUserFriend3.setMemo(musicGroup.getName());
-//				imUserFriend3.setTags(studentSubjectName.get(studentId));
-//				imUserFriends.add(imUserFriend3);
-//			}
-//		}
-//		if(imUserFriends.size() > 0){
-//			batchInsert(imUserFriends);
-//		}
-//	}
-
 }

+ 18 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java

@@ -27,6 +27,7 @@ import com.ym.mec.util.idcard.IdcardValidator;
 
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
@@ -73,6 +74,8 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 	private StudentDao studentDao;
 	@Autowired
 	private ImUserFriendDao imUserFriendDao;
+	@Autowired
+	private RedisTemplate<String,String> redisTemplate;
 
 
 	@Override
@@ -328,11 +331,24 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 		if(studentIds.size() > 0){
 			basicUserDtos.addAll(teacherDao.queryTeacherBaseInfo(studentIds,search));
 		}
+
+		String syncImUserFriendKey = "syncImUserFriend:" + teacherId;
 		if(basicUserDtos.size() > 0){
-			//批量新增
-			imUserFriendDao.batchInsert(basicUserDtos,teacherId);
+			for (BasicUserDto basicUserDto : basicUserDtos) {
+				if(basicUserDto.getUserId().equals(teacherId)){
+					continue;
+				}
+				// 检查是否已经是好友
+				ImUserFriend userFriend = imUserFriendDao.query(teacherId, basicUserDto.getUserId());
+				if (userFriend != null) {
+					continue;
+				}
+				imUserFriendDao.insertByBasicUser(basicUserDto,teacherId);
+			}
+			redisTemplate.opsForValue().setIfAbsent(syncImUserFriendKey,teacherId.toString());
 			return imUserFriendDao.queryFriendListByUserId(teacherId, search);
 		}
+		redisTemplate.opsForValue().setIfAbsent(syncImUserFriendKey,teacherId.toString());
 		return new ArrayList<>();
 	}
 

+ 4 - 0
mec-biz/src/main/resources/config/mybatis/ImUserFriendMapper.xml

@@ -47,6 +47,10 @@
 			(#{teacherId},#{item.userId},#{item.name},#{item.subjectName},#{item.musicGroupName},NOW(),NOW())
 		</foreach>
 	</insert>
+	<insert id="insertByBasicUser">
+		INSERT INTO im_user_friend (user_id_,friend_id_,friend_nickname_,tags_,memo_,create_time_,update_time_)
+		VALUES (#{teacherId},#{basicUserDto.userId},#{basicUserDto.name},#{basicUserDto.subjectName},#{basicUserDto.musicGroupName},NOW(),NOW())
+	</insert>
 
 	<!-- 根据主键查询一条记录 -->
 	<update id="update" parameterType="com.ym.mec.biz.dal.entity.ImUserFriend">