Browse Source

封装im-client

master
xie.bx 3 years ago
parent
commit
430db0f890
  1. 1
      .gitignore
  2. 6
      im-client/pom.xml
  3. 4
      im-client/src/main/java/com/bx/imclient/IMClient.java
  4. 2
      im-client/src/main/java/com/bx/imclient/annotation/IMListener.java
  5. 2
      im-client/src/main/java/com/bx/imclient/listener/MessageListener.java
  6. 4
      im-client/src/main/java/com/bx/imclient/listener/MessageListenerMulticaster.java
  7. 16
      im-client/src/main/java/com/bx/imclient/sender/IMSender.java
  8. 6
      im-client/src/main/java/com/bx/imclient/task/PullSendResultGroupMessageTask.java
  9. 6
      im-client/src/main/java/com/bx/imclient/task/PullSendResultPrivateMessageTask.java
  10. 4
      im-commom/pom.xml
  11. 2
      im-commom/src/main/java/com/bx/imcommon/contant/Constant.java
  12. 2
      im-commom/src/main/java/com/bx/imcommon/contant/RedisKey.java
  13. 2
      im-commom/src/main/java/com/bx/imcommon/enums/FileType.java
  14. 2
      im-commom/src/main/java/com/bx/imcommon/enums/IMCmdType.java
  15. 2
      im-commom/src/main/java/com/bx/imcommon/enums/ListenerType.java
  16. 2
      im-commom/src/main/java/com/bx/imcommon/enums/MessageStatus.java
  17. 2
      im-commom/src/main/java/com/bx/imcommon/enums/MessageType.java
  18. 2
      im-commom/src/main/java/com/bx/imcommon/enums/SendResultType.java
  19. 4
      im-commom/src/main/java/com/bx/imcommon/model/im/GroupMessageInfo.java
  20. 2
      im-commom/src/main/java/com/bx/imcommon/model/im/HeartbeatInfo.java
  21. 2
      im-commom/src/main/java/com/bx/imcommon/model/im/IMRecvInfo.java
  22. 2
      im-commom/src/main/java/com/bx/imcommon/model/im/LoginInfo.java
  23. 4
      im-commom/src/main/java/com/bx/imcommon/model/im/PrivateMessageInfo.java
  24. 2
      im-commom/src/main/java/com/bx/imcommon/model/im/SendInfo.java
  25. 4
      im-commom/src/main/java/com/bx/imcommon/model/im/SendResult.java
  26. 2
      im-commom/src/main/java/com/bx/imcommon/serializer/DateToLongSerializer.java
  27. 2
      im-commom/src/main/java/com/bx/imcommon/util/SpringContextHolder.java
  28. 4
      im-platform/pom.xml
  29. 2
      im-platform/src/main/java/com/bx/implatform/controller/GroupMessageController.java
  30. 2
      im-platform/src/main/java/com/bx/implatform/controller/PrivateMessageController.java
  31. 16
      im-platform/src/main/java/com/bx/implatform/listener/GroupMessageListener.java
  32. 25
      im-platform/src/main/java/com/bx/implatform/listener/PrivateMessageListener.java
  33. 2
      im-platform/src/main/java/com/bx/implatform/service/IGroupMessageService.java
  34. 2
      im-platform/src/main/java/com/bx/implatform/service/IPrivateMessageService.java
  35. 15
      im-platform/src/main/java/com/bx/implatform/service/impl/GroupMessageServiceImpl.java
  36. 19
      im-platform/src/main/java/com/bx/implatform/service/impl/PrivateMessageServiceImpl.java
  37. 2
      im-platform/src/main/java/com/bx/implatform/service/impl/UserServiceImpl.java
  38. 2
      im-platform/src/main/java/com/bx/implatform/service/thirdparty/FileService.java
  39. 6
      im-server/pom.xml
  40. 8
      im-server/src/main/java/com/bx/imserver/task/PullUnreadGroupMessageTask.java
  41. 8
      im-server/src/main/java/com/bx/imserver/task/PullUnreadPrivateMessageTask.java
  42. 8
      im-server/src/main/java/com/bx/imserver/websocket/WebSocketHandler.java
  43. 2
      im-server/src/main/java/com/bx/imserver/websocket/WebsocketServer.java
  44. 2
      im-server/src/main/java/com/bx/imserver/websocket/endecode/MessageProtocolDecoder.java
  45. 2
      im-server/src/main/java/com/bx/imserver/websocket/endecode/MessageProtocolEncoder.java
  46. 14
      im-server/src/main/java/com/bx/imserver/websocket/processor/GroupMessageProcessor.java
  47. 10
      im-server/src/main/java/com/bx/imserver/websocket/processor/HeartbeatProcessor.java
  48. 10
      im-server/src/main/java/com/bx/imserver/websocket/processor/LoginProcessor.java
  49. 14
      im-server/src/main/java/com/bx/imserver/websocket/processor/PrivateMessageProcessor.java
  50. 4
      im-server/src/main/java/com/bx/imserver/websocket/processor/ProcessorFactory.java
  51. 4
      pom.xml

1
.gitignore

@ -7,3 +7,4 @@
/im-platform/src/main/resources/logback-prod.xml
/im-server/src/main/resources/application-prod.yml
/im-server/src/main/resources/logback-prod.xml
/im-commom/im-commom.iml

6
im-client/pom.xml

@ -5,7 +5,7 @@
<parent>
<artifactId>box-im</artifactId>
<groupId>com.bx</groupId>
<version>1.0.0</version>
<version>1.1.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
@ -14,8 +14,8 @@
<dependencies>
<dependency>
<groupId>com.bx</groupId>
<artifactId>commom</artifactId>
<version>1.0.0</version>
<artifactId>im-commom</artifactId>
<version>1.1.0</version>
</dependency>
<!-- 引入redis -->
<dependency>

4
im-client/src/main/java/com/bx/imclient/IMClient.java

@ -1,7 +1,7 @@
package com.bx.imclient;
import com.bx.common.model.im.GroupMessageInfo;
import com.bx.common.model.im.PrivateMessageInfo;
import com.bx.imcommon.model.im.GroupMessageInfo;
import com.bx.imcommon.model.im.PrivateMessageInfo;
import com.bx.imclient.listener.MessageListenerMulticaster;
import com.bx.imclient.sender.IMSender;
import org.springframework.beans.factory.annotation.Autowired;

2
im-client/src/main/java/com/bx/imclient/annotation/IMListener.java

@ -1,6 +1,6 @@
package com.bx.imclient.annotation;
import com.bx.common.enums.ListenerType;
import com.bx.imcommon.enums.ListenerType;
import org.springframework.stereotype.Component;
import java.lang.annotation.ElementType;

2
im-client/src/main/java/com/bx/imclient/listener/MessageListener.java

@ -1,7 +1,7 @@
package com.bx.imclient.listener;
import com.bx.common.model.im.SendResult;
import com.bx.imcommon.model.im.SendResult;
public interface MessageListener {

4
im-client/src/main/java/com/bx/imclient/listener/MessageListenerMulticaster.java

@ -1,8 +1,8 @@
package com.bx.imclient.listener;
import com.bx.common.enums.ListenerType;
import com.bx.common.model.im.SendResult;
import com.bx.imcommon.enums.ListenerType;
import com.bx.imcommon.model.im.SendResult;
import com.bx.imclient.annotation.IMListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

16
im-client/src/main/java/com/bx/imclient/sender/IMSender.java

@ -1,13 +1,13 @@
package com.bx.imclient.sender;
import com.bx.common.contant.RedisKey;
import com.bx.common.enums.IMCmdType;
import com.bx.common.enums.ListenerType;
import com.bx.common.enums.SendResultType;
import com.bx.common.model.im.GroupMessageInfo;
import com.bx.common.model.im.IMRecvInfo;
import com.bx.common.model.im.PrivateMessageInfo;
import com.bx.common.model.im.SendResult;
import com.bx.imcommon.contant.RedisKey;
import com.bx.imcommon.enums.IMCmdType;
import com.bx.imcommon.enums.ListenerType;
import com.bx.imcommon.enums.SendResultType;
import com.bx.imcommon.model.im.GroupMessageInfo;
import com.bx.imcommon.model.im.IMRecvInfo;
import com.bx.imcommon.model.im.PrivateMessageInfo;
import com.bx.imcommon.model.im.SendResult;
import com.bx.imclient.listener.MessageListenerMulticaster;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;

6
im-client/src/main/java/com/bx/imclient/task/PullSendResultGroupMessageTask.java

@ -1,8 +1,8 @@
package com.bx.imclient.task;
import com.bx.common.contant.RedisKey;
import com.bx.common.enums.ListenerType;
import com.bx.common.model.im.SendResult;
import com.bx.imcommon.contant.RedisKey;
import com.bx.imcommon.enums.ListenerType;
import com.bx.imcommon.model.im.SendResult;
import com.bx.imclient.listener.MessageListenerMulticaster;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;

6
im-client/src/main/java/com/bx/imclient/task/PullSendResultPrivateMessageTask.java

@ -1,8 +1,8 @@
package com.bx.imclient.task;
import com.bx.common.contant.RedisKey;
import com.bx.common.enums.ListenerType;
import com.bx.common.model.im.SendResult;
import com.bx.imcommon.contant.RedisKey;
import com.bx.imcommon.enums.ListenerType;
import com.bx.imcommon.model.im.SendResult;
import com.bx.imclient.listener.MessageListenerMulticaster;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;

4
commom/pom.xml → im-commom/pom.xml

@ -5,10 +5,10 @@
<parent>
<artifactId>box-im</artifactId>
<groupId>com.bx</groupId>
<version>1.0.0</version>
<version>1.1.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>commom</artifactId>
<artifactId>im-commom</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>

2
commom/src/main/java/com/bx/common/contant/Constant.java → im-commom/src/main/java/com/bx/imcommon/contant/Constant.java

@ -1,4 +1,4 @@
package com.bx.common.contant;
package com.bx.imcommon.contant;
public class Constant {

2
commom/src/main/java/com/bx/common/contant/RedisKey.java → im-commom/src/main/java/com/bx/imcommon/contant/RedisKey.java

@ -1,4 +1,4 @@
package com.bx.common.contant;
package com.bx.imcommon.contant;
public class RedisKey {

2
commom/src/main/java/com/bx/common/enums/FileType.java → im-commom/src/main/java/com/bx/imcommon/enums/FileType.java

@ -1,4 +1,4 @@
package com.bx.common.enums;
package com.bx.imcommon.enums;
public enum FileType {

2
commom/src/main/java/com/bx/common/enums/IMCmdType.java → im-commom/src/main/java/com/bx/imcommon/enums/IMCmdType.java

@ -1,4 +1,4 @@
package com.bx.common.enums;
package com.bx.imcommon.enums;
public enum IMCmdType {

2
commom/src/main/java/com/bx/common/enums/ListenerType.java → im-commom/src/main/java/com/bx/imcommon/enums/ListenerType.java

@ -1,4 +1,4 @@
package com.bx.common.enums;
package com.bx.imcommon.enums;
public enum ListenerType {

2
commom/src/main/java/com/bx/common/enums/MessageStatus.java → im-commom/src/main/java/com/bx/imcommon/enums/MessageStatus.java

@ -1,4 +1,4 @@
package com.bx.common.enums;
package com.bx.imcommon.enums;
public enum MessageStatus {

2
commom/src/main/java/com/bx/common/enums/MessageType.java → im-commom/src/main/java/com/bx/imcommon/enums/MessageType.java

@ -1,4 +1,4 @@
package com.bx.common.enums;
package com.bx.imcommon.enums;
public enum MessageType {

2
commom/src/main/java/com/bx/common/enums/SendResultType.java → im-commom/src/main/java/com/bx/imcommon/enums/SendResultType.java

@ -1,4 +1,4 @@
package com.bx.common.enums;
package com.bx.imcommon.enums;
public enum SendResultType {

4
commom/src/main/java/com/bx/common/model/im/GroupMessageInfo.java → im-commom/src/main/java/com/bx/imcommon/model/im/GroupMessageInfo.java

@ -1,6 +1,6 @@
package com.bx.common.model.im;
package com.bx.imcommon.model.im;
import com.bx.common.serializer.DateToLongSerializer;
import com.bx.imcommon.serializer.DateToLongSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import lombok.Data;

2
commom/src/main/java/com/bx/common/model/im/HeartbeatInfo.java → im-commom/src/main/java/com/bx/imcommon/model/im/HeartbeatInfo.java

@ -1,4 +1,4 @@
package com.bx.common.model.im;
package com.bx.imcommon.model.im;
import lombok.Data;

2
commom/src/main/java/com/bx/common/model/im/IMRecvInfo.java → im-commom/src/main/java/com/bx/imcommon/model/im/IMRecvInfo.java

@ -1,4 +1,4 @@
package com.bx.common.model.im;
package com.bx.imcommon.model.im;
import lombok.Data;

2
commom/src/main/java/com/bx/common/model/im/LoginInfo.java → im-commom/src/main/java/com/bx/imcommon/model/im/LoginInfo.java

@ -1,4 +1,4 @@
package com.bx.common.model.im;
package com.bx.imcommon.model.im;
import lombok.Data;

4
commom/src/main/java/com/bx/common/model/im/PrivateMessageInfo.java → im-commom/src/main/java/com/bx/imcommon/model/im/PrivateMessageInfo.java

@ -1,6 +1,6 @@
package com.bx.common.model.im;
package com.bx.imcommon.model.im;
import com.bx.common.serializer.DateToLongSerializer;
import com.bx.imcommon.serializer.DateToLongSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import lombok.Data;

2
commom/src/main/java/com/bx/common/model/im/SendInfo.java → im-commom/src/main/java/com/bx/imcommon/model/im/SendInfo.java

@ -1,4 +1,4 @@
package com.bx.common.model.im;
package com.bx.imcommon.model.im;
import lombok.Data;

4
commom/src/main/java/com/bx/common/model/im/SendResult.java → im-commom/src/main/java/com/bx/imcommon/model/im/SendResult.java

@ -1,6 +1,6 @@
package com.bx.common.model.im;
package com.bx.imcommon.model.im;
import com.bx.common.enums.SendResultType;
import com.bx.imcommon.enums.SendResultType;
import lombok.Data;
@Data

2
commom/src/main/java/com/bx/common/serializer/DateToLongSerializer.java → im-commom/src/main/java/com/bx/imcommon/serializer/DateToLongSerializer.java

@ -1,4 +1,4 @@
package com.bx.common.serializer;
package com.bx.imcommon.serializer;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonToken;

2
commom/src/main/java/com/bx/common/util/SpringContextHolder.java → im-commom/src/main/java/com/bx/imcommon/util/SpringContextHolder.java

@ -1,4 +1,4 @@
package com.bx.common.util;
package com.bx.imcommon.util;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;

4
im-platform/pom.xml

@ -5,7 +5,7 @@
<parent>
<artifactId>box-im</artifactId>
<groupId>com.bx</groupId>
<version>1.0.0</version>
<version>1.1.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
@ -16,7 +16,7 @@
<dependency>
<groupId>com.bx</groupId>
<artifactId>im-client</artifactId>
<version>1.0.0</version>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>

2
im-platform/src/main/java/com/bx/implatform/controller/GroupMessageController.java

@ -1,7 +1,7 @@
package com.bx.implatform.controller;
import com.bx.common.model.im.GroupMessageInfo;
import com.bx.imcommon.model.im.GroupMessageInfo;
import com.bx.implatform.result.Result;
import com.bx.implatform.result.ResultUtils;
import com.bx.implatform.service.IGroupMessageService;

2
im-platform/src/main/java/com/bx/implatform/controller/PrivateMessageController.java

@ -1,7 +1,7 @@
package com.bx.implatform.controller;
import com.bx.common.model.im.PrivateMessageInfo;
import com.bx.imcommon.model.im.PrivateMessageInfo;
import com.bx.implatform.result.Result;
import com.bx.implatform.result.ResultUtils;
import com.bx.implatform.service.IPrivateMessageService;

16
im-platform/src/main/java/com/bx/implatform/listener/GroupMessageListener.java

@ -1,9 +1,10 @@
package com.bx.implatform.listener;
import com.bx.common.enums.ListenerType;
import com.bx.common.enums.MessageType;
import com.bx.common.model.im.GroupMessageInfo;
import com.bx.common.model.im.SendResult;
import com.bx.imcommon.enums.ListenerType;
import com.bx.imcommon.enums.MessageType;
import com.bx.imcommon.enums.SendResultType;
import com.bx.imcommon.model.im.GroupMessageInfo;
import com.bx.imcommon.model.im.SendResult;
import com.bx.imclient.annotation.IMListener;
import com.bx.imclient.listener.MessageListener;
import com.bx.implatform.contant.RedisKey;
@ -26,9 +27,12 @@ public class GroupMessageListener implements MessageListener {
// 提示类数据不记录
return;
}
// 保存该用户已拉取的最大消息id
String key = RedisKey.IM_GROUP_READED_POSITION + messageInfo.getGroupId()+":"+result.getRecvId();
redisTemplate.opsForValue().set(key,messageInfo.getId());
if(result.getResult().equals(SendResultType.SUCCESS)) {
String key = RedisKey.IM_GROUP_READED_POSITION + messageInfo.getGroupId() + ":" + result.getRecvId();
redisTemplate.opsForValue().set(key, messageInfo.getId());
}
}
}

25
im-platform/src/main/java/com/bx/implatform/listener/PrivateMessageListener.java

@ -1,11 +1,12 @@
package com.bx.implatform.listener;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.bx.common.enums.ListenerType;
import com.bx.common.enums.MessageStatus;
import com.bx.common.enums.MessageType;
import com.bx.common.model.im.PrivateMessageInfo;
import com.bx.common.model.im.SendResult;
import com.bx.imcommon.enums.ListenerType;
import com.bx.imcommon.enums.MessageStatus;
import com.bx.imcommon.enums.MessageType;
import com.bx.imcommon.enums.SendResultType;
import com.bx.imcommon.model.im.PrivateMessageInfo;
import com.bx.imcommon.model.im.SendResult;
import com.bx.imclient.annotation.IMListener;
import com.bx.imclient.listener.MessageListener;
import com.bx.implatform.entity.PrivateMessage;
@ -29,12 +30,14 @@ public class PrivateMessageListener implements MessageListener {
return;
}
// 更新消息状态
UpdateWrapper<PrivateMessage> updateWrapper = new UpdateWrapper<>();
updateWrapper.lambda().eq(PrivateMessage::getId,messageInfo.getId())
.eq(PrivateMessage::getStatus, MessageStatus.UNREAD.getCode())
.set(PrivateMessage::getStatus, MessageStatus.ALREADY_READ.getCode());
privateMessageService.update(updateWrapper);
log.info("消息已读,消息id:{},发送者:{},接收者:{}",messageInfo.getId(),messageInfo.getSendId(),messageInfo.getRecvId());
if(result.getResult().equals(SendResultType.SUCCESS)){
UpdateWrapper<PrivateMessage> updateWrapper = new UpdateWrapper<>();
updateWrapper.lambda().eq(PrivateMessage::getId,messageInfo.getId())
.eq(PrivateMessage::getStatus, MessageStatus.UNREAD.getCode())
.set(PrivateMessage::getStatus, MessageStatus.ALREADY_READ.getCode());
privateMessageService.update(updateWrapper);
log.info("消息已读,消息id:{},发送者:{},接收者:{}",messageInfo.getId(),messageInfo.getSendId(),messageInfo.getRecvId());
}
}
}

2
im-platform/src/main/java/com/bx/implatform/service/IGroupMessageService.java

@ -1,7 +1,7 @@
package com.bx.implatform.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bx.common.model.im.GroupMessageInfo;
import com.bx.imcommon.model.im.GroupMessageInfo;
import com.bx.implatform.entity.GroupMessage;
import com.bx.implatform.vo.GroupMessageVO;

2
im-platform/src/main/java/com/bx/implatform/service/IPrivateMessageService.java

@ -1,7 +1,7 @@
package com.bx.implatform.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bx.common.model.im.PrivateMessageInfo;
import com.bx.imcommon.model.im.PrivateMessageInfo;
import com.bx.implatform.entity.PrivateMessage;
import com.bx.implatform.vo.PrivateMessageVO;

15
im-platform/src/main/java/com/bx/implatform/service/impl/GroupMessageServiceImpl.java

@ -2,10 +2,10 @@ package com.bx.implatform.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bx.common.contant.Constant;
import com.bx.common.enums.MessageStatus;
import com.bx.common.enums.MessageType;
import com.bx.common.model.im.GroupMessageInfo;
import com.bx.imcommon.contant.Constant;
import com.bx.imcommon.enums.MessageStatus;
import com.bx.imcommon.enums.MessageType;
import com.bx.imcommon.model.im.GroupMessageInfo;
import com.bx.imclient.IMClient;
import com.bx.implatform.contant.RedisKey;
import com.bx.implatform.entity.Group;
@ -76,7 +76,7 @@ public class GroupMessageServiceImpl extends ServiceImpl<GroupMessageMapper, Gro
this.save(msg);
// 群发
GroupMessageInfo msgInfo = BeanUtils.copyProperties(msg, GroupMessageInfo.class);
this.sendMessage(userIds,msgInfo);
imClient.sendGroupMessage(userIds,msgInfo);
log.info("发送群聊消息,发送id:{},群聊id:{},内容:{}",userId,vo.getGroupId(),vo.getContent());
return msg.getId();
}
@ -117,7 +117,7 @@ public class GroupMessageServiceImpl extends ServiceImpl<GroupMessageMapper, Gro
String content = String.format("'%s'撤回了一条消息",member.getAliasName());
msgInfo.setContent(content);
msgInfo.setSendTime(new Date());
this.sendMessage(userIds,msgInfo);
imClient.sendGroupMessage(userIds,msgInfo);
log.info("撤回群聊消息,发送id:{},群聊id:{},内容:{}",userId,msg.getGroupId(),msg.getContent());
}
@ -198,7 +198,4 @@ public class GroupMessageServiceImpl extends ServiceImpl<GroupMessageMapper, Gro
return messageInfos;
}
private void sendMessage(List<Long> userIds, GroupMessageInfo msgInfo){
imClient.sendGroupMessage(userIds,msgInfo);
}
}

19
im-platform/src/main/java/com/bx/implatform/service/impl/PrivateMessageServiceImpl.java

@ -2,11 +2,11 @@ package com.bx.implatform.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bx.common.contant.Constant;
import com.bx.common.contant.RedisKey;
import com.bx.common.enums.MessageStatus;
import com.bx.common.enums.MessageType;
import com.bx.common.model.im.PrivateMessageInfo;
import com.bx.imcommon.contant.Constant;
import com.bx.imcommon.contant.RedisKey;
import com.bx.imcommon.enums.MessageStatus;
import com.bx.imcommon.enums.MessageType;
import com.bx.imcommon.model.im.PrivateMessageInfo;
import com.bx.imclient.IMClient;
import com.bx.implatform.entity.PrivateMessage;
import com.bx.implatform.enums.ResultCode;
@ -88,7 +88,7 @@ public class PrivateMessageServiceImpl extends ServiceImpl<PrivateMessageMapper,
msgInfo.setType(MessageType.TIP.getCode());
msgInfo.setSendTime(new Date());
msgInfo.setContent("对方撤回了一条消息");
imClient.sendPrivateMessage(userId,msgInfo);
imClient.sendPrivateMessage(msgInfo.getRecvId(),msgInfo);
log.info("撤回私聊消息,发送id:{},接收id:{},内容:{}", msg.getSendId(), msg.getRecvId(), msg.getContent());
}
@ -148,13 +148,14 @@ public class PrivateMessageServiceImpl extends ServiceImpl<PrivateMessageMapper,
List<PrivateMessage> messages = this.list(queryWrapper);
// 上传至redis,等待推送
if (!messages.isEmpty()) {
List<PrivateMessageInfo> infos = messages.stream().map(m -> {
List<PrivateMessageInfo> messageInfos = messages.stream().map(m -> {
PrivateMessageInfo msgInfo = BeanUtils.copyProperties(m, PrivateMessageInfo.class);
return msgInfo;
}).collect(Collectors.toList());
// 推送消息
imClient.sendPrivateMessage(userId,(PrivateMessageInfo[]) infos.toArray());
log.info("拉取未读私聊消息,用户id:{},数量:{}", userId, infos.size());
PrivateMessageInfo[] infoArr = messageInfos.toArray(new PrivateMessageInfo[messageInfos.size()]);
imClient.sendPrivateMessage(userId,infoArr);
log.info("拉取未读私聊消息,用户id:{},数量:{}", userId, infoArr.length);
}
}
}

2
im-platform/src/main/java/com/bx/implatform/service/impl/UserServiceImpl.java

@ -2,7 +2,7 @@ package com.bx.implatform.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bx.common.contant.RedisKey;
import com.bx.imcommon.contant.RedisKey;
import com.bx.implatform.entity.Friend;
import com.bx.implatform.entity.GroupMember;
import com.bx.implatform.entity.User;

2
im-platform/src/main/java/com/bx/implatform/service/thirdparty/FileService.java

@ -1,6 +1,6 @@
package com.bx.implatform.service.thirdparty;
import com.bx.common.enums.FileType;
import com.bx.imcommon.enums.FileType;
import com.bx.implatform.contant.Constant;
import com.bx.implatform.enums.ResultCode;
import com.bx.implatform.exception.GlobalException;

6
im-server/pom.xml

@ -5,7 +5,7 @@
<parent>
<artifactId>box-im</artifactId>
<groupId>com.bx</groupId>
<version>1.0.0</version>
<version>1.1.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
@ -15,8 +15,8 @@
<dependencies>
<dependency>
<groupId>com.bx</groupId>
<artifactId>commom</artifactId>
<version>1.0.0</version>
<artifactId>im-commom</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>

8
im-server/src/main/java/com/bx/imserver/task/PullUnreadGroupMessageTask.java

@ -1,9 +1,9 @@
package com.bx.imserver.task;
import com.bx.common.contant.RedisKey;
import com.bx.common.enums.IMCmdType;
import com.bx.common.model.im.GroupMessageInfo;
import com.bx.common.model.im.IMRecvInfo;
import com.bx.imcommon.contant.RedisKey;
import com.bx.imcommon.enums.IMCmdType;
import com.bx.imcommon.model.im.GroupMessageInfo;
import com.bx.imcommon.model.im.IMRecvInfo;
import com.bx.imserver.websocket.WebsocketServer;
import com.bx.imserver.websocket.processor.MessageProcessor;
import com.bx.imserver.websocket.processor.ProcessorFactory;

8
im-server/src/main/java/com/bx/imserver/task/PullUnreadPrivateMessageTask.java

@ -1,10 +1,10 @@
package com.bx.imserver.task;
import com.bx.common.contant.RedisKey;
import com.bx.common.enums.IMCmdType;
import com.bx.common.model.im.IMRecvInfo;
import com.bx.common.model.im.PrivateMessageInfo;
import com.bx.imcommon.contant.RedisKey;
import com.bx.imcommon.enums.IMCmdType;
import com.bx.imcommon.model.im.IMRecvInfo;
import com.bx.imcommon.model.im.PrivateMessageInfo;
import com.bx.imserver.websocket.WebsocketServer;
import com.bx.imserver.websocket.processor.MessageProcessor;
import com.bx.imserver.websocket.processor.ProcessorFactory;

8
im-server/src/main/java/com/bx/imserver/websocket/WebSocketHandler.java

@ -1,9 +1,9 @@
package com.bx.imserver.websocket;
import com.bx.common.contant.RedisKey;
import com.bx.common.enums.IMCmdType;
import com.bx.common.model.im.SendInfo;
import com.bx.common.util.SpringContextHolder;
import com.bx.imcommon.contant.RedisKey;
import com.bx.imcommon.enums.IMCmdType;
import com.bx.imcommon.model.im.SendInfo;
import com.bx.imcommon.util.SpringContextHolder;
import com.bx.imserver.websocket.processor.MessageProcessor;
import com.bx.imserver.websocket.processor.ProcessorFactory;
import io.netty.channel.ChannelHandlerContext;

2
im-server/src/main/java/com/bx/imserver/websocket/WebsocketServer.java

@ -1,6 +1,6 @@
package com.bx.imserver.websocket;
import com.bx.common.contant.RedisKey;
import com.bx.imcommon.contant.RedisKey;
import com.bx.imserver.websocket.endecode.MessageProtocolDecoder;
import com.bx.imserver.websocket.endecode.MessageProtocolEncoder;
import io.netty.bootstrap.ServerBootstrap;

2
im-server/src/main/java/com/bx/imserver/websocket/endecode/MessageProtocolDecoder.java

@ -1,6 +1,6 @@
package com.bx.imserver.websocket.endecode;
import com.bx.common.model.im.SendInfo;
import com.bx.imcommon.model.im.SendInfo;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToMessageDecoder;

2
im-server/src/main/java/com/bx/imserver/websocket/endecode/MessageProtocolEncoder.java

@ -1,6 +1,6 @@
package com.bx.imserver.websocket.endecode;
import com.bx.common.model.im.SendInfo;
import com.bx.imcommon.model.im.SendInfo;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToMessageEncoder;

14
im-server/src/main/java/com/bx/imserver/websocket/processor/GroupMessageProcessor.java

@ -1,12 +1,12 @@
package com.bx.imserver.websocket.processor;
import com.bx.common.contant.RedisKey;
import com.bx.common.enums.IMCmdType;
import com.bx.common.enums.SendResultType;
import com.bx.common.model.im.GroupMessageInfo;
import com.bx.common.model.im.IMRecvInfo;
import com.bx.common.model.im.SendInfo;
import com.bx.common.model.im.SendResult;
import com.bx.imcommon.contant.RedisKey;
import com.bx.imcommon.enums.IMCmdType;
import com.bx.imcommon.enums.SendResultType;
import com.bx.imcommon.model.im.GroupMessageInfo;
import com.bx.imcommon.model.im.IMRecvInfo;
import com.bx.imcommon.model.im.SendInfo;
import com.bx.imcommon.model.im.SendResult;
import com.bx.imserver.websocket.WebsocketChannelCtxHolder;
import io.netty.channel.ChannelHandlerContext;
import lombok.extern.slf4j.Slf4j;

10
im-server/src/main/java/com/bx/imserver/websocket/processor/HeartbeatProcessor.java

@ -1,11 +1,11 @@
package com.bx.imserver.websocket.processor;
import cn.hutool.core.bean.BeanUtil;
import com.bx.common.contant.Constant;
import com.bx.common.contant.RedisKey;
import com.bx.common.enums.IMCmdType;
import com.bx.common.model.im.HeartbeatInfo;
import com.bx.common.model.im.SendInfo;
import com.bx.imcommon.contant.Constant;
import com.bx.imcommon.contant.RedisKey;
import com.bx.imcommon.enums.IMCmdType;
import com.bx.imcommon.model.im.HeartbeatInfo;
import com.bx.imcommon.model.im.SendInfo;
import com.bx.imserver.websocket.WebsocketServer;
import io.netty.channel.ChannelHandlerContext;
import io.netty.util.AttributeKey;

10
im-server/src/main/java/com/bx/imserver/websocket/processor/LoginProcessor.java

@ -1,11 +1,11 @@
package com.bx.imserver.websocket.processor;
import cn.hutool.core.bean.BeanUtil;
import com.bx.common.contant.Constant;
import com.bx.common.contant.RedisKey;
import com.bx.common.enums.IMCmdType;
import com.bx.common.model.im.LoginInfo;
import com.bx.common.model.im.SendInfo;
import com.bx.imcommon.contant.Constant;
import com.bx.imcommon.contant.RedisKey;
import com.bx.imcommon.enums.IMCmdType;
import com.bx.imcommon.model.im.LoginInfo;
import com.bx.imcommon.model.im.SendInfo;
import com.bx.imserver.websocket.WebsocketChannelCtxHolder;
import com.bx.imserver.websocket.WebsocketServer;
import io.netty.channel.ChannelHandlerContext;

14
im-server/src/main/java/com/bx/imserver/websocket/processor/PrivateMessageProcessor.java

@ -1,12 +1,12 @@
package com.bx.imserver.websocket.processor;
import com.bx.common.contant.RedisKey;
import com.bx.common.enums.IMCmdType;
import com.bx.common.enums.SendResultType;
import com.bx.common.model.im.IMRecvInfo;
import com.bx.common.model.im.PrivateMessageInfo;
import com.bx.common.model.im.SendInfo;
import com.bx.common.model.im.SendResult;
import com.bx.imcommon.contant.RedisKey;
import com.bx.imcommon.enums.IMCmdType;
import com.bx.imcommon.enums.SendResultType;
import com.bx.imcommon.model.im.IMRecvInfo;
import com.bx.imcommon.model.im.PrivateMessageInfo;
import com.bx.imcommon.model.im.SendInfo;
import com.bx.imcommon.model.im.SendResult;
import com.bx.imserver.websocket.WebsocketChannelCtxHolder;
import io.netty.channel.ChannelHandlerContext;
import lombok.extern.slf4j.Slf4j;

4
im-server/src/main/java/com/bx/imserver/websocket/processor/ProcessorFactory.java

@ -1,7 +1,7 @@
package com.bx.imserver.websocket.processor;
import com.bx.common.enums.IMCmdType;
import com.bx.common.util.SpringContextHolder;
import com.bx.imcommon.enums.IMCmdType;
import com.bx.imcommon.util.SpringContextHolder;
public class ProcessorFactory {

4
pom.xml

@ -7,12 +7,12 @@
<artifactId>box-im</artifactId>
<groupId>com.bx</groupId>
<packaging>pom</packaging>
<version>1.0.0</version>
<version>1.1.0</version>
<modules>
<module>im-platform</module>
<module>im-server</module>
<module>commom</module>
<module>im-commom</module>
<module>im-client</module>
</modules>

Loading…
Cancel
Save