|
@@ -1,5 +1,6 @@
|
|
|
package com.yonge.cooleshow.biz.dal.service.impl;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
@@ -13,15 +14,15 @@ import com.yonge.cooleshow.biz.dal.dao.ImUserFriendDao;
|
|
|
import com.yonge.cooleshow.biz.dal.dao.TeacherDao;
|
|
|
import com.yonge.cooleshow.biz.dal.dto.BasicUserInfo;
|
|
|
import com.yonge.cooleshow.biz.dal.entity.ImUserFriend;
|
|
|
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
|
|
|
import com.yonge.cooleshow.biz.dal.enums.MK;
|
|
|
import com.yonge.cooleshow.biz.dal.mapper.SysUserMapper;
|
|
|
import com.yonge.cooleshow.biz.dal.service.ImUserFriendService;
|
|
|
import com.yonge.cooleshow.biz.dal.wrapper.im.CustomerService;
|
|
|
+import com.yonge.cooleshow.biz.dal.wrapper.im.ImUserWrapper;
|
|
|
import com.yonge.toolset.base.exception.BizException;
|
|
|
import io.rong.messages.BaseMessage;
|
|
|
-import io.rong.messages.FileMessage;
|
|
|
import io.rong.messages.ImgMessage;
|
|
|
-import io.rong.messages.ImgTextMessage;
|
|
|
import io.rong.messages.TxtMessage;
|
|
|
import io.rong.models.message.PrivateMessage;
|
|
|
import io.rong.models.message.PushExt;
|
|
@@ -41,11 +42,13 @@ import java.awt.image.BufferedImage;
|
|
|
import java.io.ByteArrayOutputStream;
|
|
|
import java.io.IOException;
|
|
|
import java.net.URL;
|
|
|
+import java.text.MessageFormat;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.Objects;
|
|
|
+import java.util.Optional;
|
|
|
import java.util.Set;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -67,6 +70,8 @@ public class ImUserFriendServiceImpl extends ServiceImpl<ImUserFriendDao, ImUser
|
|
|
private CustomerServiceConfig customerServiceConfig;
|
|
|
@Autowired
|
|
|
private SysUserMapper sysUserMapper;
|
|
|
+ @Autowired
|
|
|
+ private ImUserFriendService imUserFriendService;
|
|
|
|
|
|
@Override
|
|
|
public ImUserFriendDao getDao() {
|
|
@@ -97,11 +102,13 @@ public class ImUserFriendServiceImpl extends ServiceImpl<ImUserFriendDao, ImUser
|
|
|
studentFriend.setFriendNickname(basicUserInfo.getUsername());
|
|
|
}
|
|
|
teacherFriend.setFriendId(studentId);
|
|
|
+ teacherFriend.setFriendType(ClientEnum.STUDENT);
|
|
|
teacherFriend.setUserId(teacherId);
|
|
|
teacherFriend.setCreateTime(now);
|
|
|
teacherFriend.setUpdateTime(now);
|
|
|
|
|
|
studentFriend.setFriendId(teacherId);
|
|
|
+ studentFriend.setFriendType(ClientEnum.TEACHER);
|
|
|
studentFriend.setUserId(studentId);
|
|
|
studentFriend.setCreateTime(now);
|
|
|
studentFriend.setUpdateTime(now);
|
|
@@ -149,13 +156,27 @@ public class ImUserFriendServiceImpl extends ServiceImpl<ImUserFriendDao, ImUser
|
|
|
*
|
|
|
* @param userId 新用户ID
|
|
|
* @param friendIds 好友ID
|
|
|
+ * @param clientType 客户端类型
|
|
|
* @return Integer
|
|
|
*/
|
|
|
@Override
|
|
|
- public Integer registerUserBindCustomerService(Long userId, List<Long> friendIds) {
|
|
|
+ public Integer registerUserBindCustomerService(Long userId, List<Long> friendIds, ClientEnum clientType) {
|
|
|
+
|
|
|
+ // 添加新用户好友,客服默认为老师身份
|
|
|
+ for (Long teacherId : friendIds) {
|
|
|
|
|
|
- // 添加新用户好友
|
|
|
- saveUserFriend(userId, Sets.newHashSet(friendIds));
|
|
|
+ saveUserFriend(teacherId, Sets.newHashSet(userId));
|
|
|
+
|
|
|
+ // 新注册用户为老师身份时,更新好友关系为老师身份
|
|
|
+ if (ClientEnum.TEACHER == clientType) {
|
|
|
+
|
|
|
+ imUserFriendService.lambdaUpdate()
|
|
|
+ .eq(ImUserFriend::getUserId, teacherId)
|
|
|
+ .eq(ImUserFriend::getFriendId, userId)
|
|
|
+ .eq(ImUserFriend::getFriendType, ClientEnum.STUDENT)
|
|
|
+ .set(ImUserFriend::getFriendType, ClientEnum.TEACHER);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
try {
|
|
|
|
|
@@ -298,7 +319,52 @@ public class ImUserFriendServiceImpl extends ServiceImpl<ImUserFriendDao, ImUser
|
|
|
return new String(encoder.encode((baos.toByteArray())));
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 用户IM好友列表
|
|
|
+ *
|
|
|
+ * @param clientType 客户端类型
|
|
|
+ * @param userId 用户ID
|
|
|
+ * @param paramMap Map<String, Object>
|
|
|
+ * @return List<ImUserWrapper.ImUserFriend>
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<ImUserWrapper.ImUserFriend> findUserAllImFriendInfo(ClientEnum clientType, Long userId, Map<String, Object> paramMap) {
|
|
|
+
|
|
|
+ // 用户好友匹配条件
|
|
|
+ Object search = paramMap.get("search");
|
|
|
+
|
|
|
+ // 查询用户好友列表
|
|
|
+ List<ImUserFriend> records = lambdaQuery()
|
|
|
+ .eq(ImUserFriend::getUserId, userId)
|
|
|
+ .and(Objects.nonNull(search) && StringUtils.isNotEmpty(search.toString()),
|
|
|
+ e -> e.eq(ImUserFriend::getFriendId, search).or().like(ImUserFriend::getFriendNickname, search))
|
|
|
+ .orderByDesc(ImUserFriend::getId).list();
|
|
|
+
|
|
|
+ List<ImUserWrapper.ImUserFriend> userFriends = JSON.parseArray(JSON.toJSONString(records), ImUserWrapper.ImUserFriend.class);
|
|
|
+
|
|
|
+ for (ImUserWrapper.ImUserFriend item : userFriends) {
|
|
|
+
|
|
|
+ switch (clientType) {
|
|
|
+ case TEACHER:
|
|
|
+ {
|
|
|
+ // 老师查询学生好友
|
|
|
+ item.friendType(Optional.ofNullable(item.getFriendType()).orElse(ClientEnum.STUDENT))
|
|
|
+ .setImFriendId(MessageFormat.format("{0}:{1}", String.valueOf(item.getFriendId()), ClientEnum.STUDENT.name()));
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case STUDENT:
|
|
|
+ {
|
|
|
+ // 查询学生老师好友
|
|
|
+ item.friendType(Optional.ofNullable(item.getFriendType()).orElse(ClientEnum.TEACHER))
|
|
|
+ .setImFriendId(MessageFormat.format("{0}", String.valueOf(item.getFriendId())));
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
-
|
|
|
+ return userFriends;
|
|
|
+ }
|
|
|
}
|
|
|
|