Browse Source

通讯录数据同步

zouxuan 4 years ago
parent
commit
db6e7c4d4f

+ 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);
 }

+ 8 - 8
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

+ 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},#{item.userId},#{item.name},#{item.subjectName},#{item.musicGroupName},NOW(),NOW())
+	</insert>
 
 	<!-- 根据主键查询一条记录 -->
 	<update id="update" parameterType="com.ym.mec.biz.dal.entity.ImUserFriend">