diff --git a/.gitignore b/.gitignore index 083aa4a..10f5a2f 100644 --- a/.gitignore +++ b/.gitignore @@ -7,7 +7,7 @@ /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 +/im-common/im-common.iml /im-uniapp/node_modules/ /im-web/package-lock.json /im-uniapp/unpackage/ diff --git a/db/im-platform.sql b/db/im-platform.sql index ea7bc6a..1e62eca 100644 --- a/db/im-platform.sql +++ b/db/im-platform.sql @@ -49,7 +49,7 @@ create table `im_group`( `notice` varchar(1024) default '' comment '群公告', `is_banned` tinyint(1) default 0 comment '是否被封禁 0:否 1:是', `reason` varchar(255) default '' comment '被封禁原因', - `deleted` tinyint(1) default 0 comment '是否已删除', + `dissolve` tinyint(1) default 0 comment '是否已解散', `created_time` datetime default CURRENT_TIMESTAMP comment '创建时间' )ENGINE=InnoDB CHARSET=utf8mb4 comment '群'; diff --git a/im-client/pom.xml b/im-client/pom.xml index 4634ec7..dbe3d30 100644 --- a/im-client/pom.xml +++ b/im-client/pom.xml @@ -14,7 +14,7 @@ com.bx - im-commom + im-common 3.0.0 diff --git a/im-commom/pom.xml b/im-common/pom.xml similarity index 97% rename from im-commom/pom.xml rename to im-common/pom.xml index 92599d1..3e87e6f 100644 --- a/im-commom/pom.xml +++ b/im-common/pom.xml @@ -8,7 +8,7 @@ 3.0.0 4.0.0 - im-commom + im-common jar diff --git a/im-commom/src/main/java/com/bx/imcommon/contant/IMConstant.java b/im-common/src/main/java/com/bx/imcommon/contant/IMConstant.java similarity index 100% rename from im-commom/src/main/java/com/bx/imcommon/contant/IMConstant.java rename to im-common/src/main/java/com/bx/imcommon/contant/IMConstant.java diff --git a/im-commom/src/main/java/com/bx/imcommon/contant/IMRedisKey.java b/im-common/src/main/java/com/bx/imcommon/contant/IMRedisKey.java similarity index 100% rename from im-commom/src/main/java/com/bx/imcommon/contant/IMRedisKey.java rename to im-common/src/main/java/com/bx/imcommon/contant/IMRedisKey.java diff --git a/im-commom/src/main/java/com/bx/imcommon/enums/IMCmdType.java b/im-common/src/main/java/com/bx/imcommon/enums/IMCmdType.java similarity index 100% rename from im-commom/src/main/java/com/bx/imcommon/enums/IMCmdType.java rename to im-common/src/main/java/com/bx/imcommon/enums/IMCmdType.java diff --git a/im-commom/src/main/java/com/bx/imcommon/enums/IMListenerType.java b/im-common/src/main/java/com/bx/imcommon/enums/IMListenerType.java similarity index 100% rename from im-commom/src/main/java/com/bx/imcommon/enums/IMListenerType.java rename to im-common/src/main/java/com/bx/imcommon/enums/IMListenerType.java diff --git a/im-commom/src/main/java/com/bx/imcommon/enums/IMSendCode.java b/im-common/src/main/java/com/bx/imcommon/enums/IMSendCode.java similarity index 100% rename from im-commom/src/main/java/com/bx/imcommon/enums/IMSendCode.java rename to im-common/src/main/java/com/bx/imcommon/enums/IMSendCode.java diff --git a/im-commom/src/main/java/com/bx/imcommon/enums/IMTerminalType.java b/im-common/src/main/java/com/bx/imcommon/enums/IMTerminalType.java similarity index 100% rename from im-commom/src/main/java/com/bx/imcommon/enums/IMTerminalType.java rename to im-common/src/main/java/com/bx/imcommon/enums/IMTerminalType.java diff --git a/im-commom/src/main/java/com/bx/imcommon/model/IMGroupMessage.java b/im-common/src/main/java/com/bx/imcommon/model/IMGroupMessage.java similarity index 100% rename from im-commom/src/main/java/com/bx/imcommon/model/IMGroupMessage.java rename to im-common/src/main/java/com/bx/imcommon/model/IMGroupMessage.java diff --git a/im-commom/src/main/java/com/bx/imcommon/model/IMHeartbeatInfo.java b/im-common/src/main/java/com/bx/imcommon/model/IMHeartbeatInfo.java similarity index 100% rename from im-commom/src/main/java/com/bx/imcommon/model/IMHeartbeatInfo.java rename to im-common/src/main/java/com/bx/imcommon/model/IMHeartbeatInfo.java diff --git a/im-commom/src/main/java/com/bx/imcommon/model/IMLoginInfo.java b/im-common/src/main/java/com/bx/imcommon/model/IMLoginInfo.java similarity index 100% rename from im-commom/src/main/java/com/bx/imcommon/model/IMLoginInfo.java rename to im-common/src/main/java/com/bx/imcommon/model/IMLoginInfo.java diff --git a/im-commom/src/main/java/com/bx/imcommon/model/IMPrivateMessage.java b/im-common/src/main/java/com/bx/imcommon/model/IMPrivateMessage.java similarity index 100% rename from im-commom/src/main/java/com/bx/imcommon/model/IMPrivateMessage.java rename to im-common/src/main/java/com/bx/imcommon/model/IMPrivateMessage.java diff --git a/im-commom/src/main/java/com/bx/imcommon/model/IMRecvInfo.java b/im-common/src/main/java/com/bx/imcommon/model/IMRecvInfo.java similarity index 100% rename from im-commom/src/main/java/com/bx/imcommon/model/IMRecvInfo.java rename to im-common/src/main/java/com/bx/imcommon/model/IMRecvInfo.java diff --git a/im-commom/src/main/java/com/bx/imcommon/model/IMSendInfo.java b/im-common/src/main/java/com/bx/imcommon/model/IMSendInfo.java similarity index 100% rename from im-commom/src/main/java/com/bx/imcommon/model/IMSendInfo.java rename to im-common/src/main/java/com/bx/imcommon/model/IMSendInfo.java diff --git a/im-commom/src/main/java/com/bx/imcommon/model/IMSendResult.java b/im-common/src/main/java/com/bx/imcommon/model/IMSendResult.java similarity index 100% rename from im-commom/src/main/java/com/bx/imcommon/model/IMSendResult.java rename to im-common/src/main/java/com/bx/imcommon/model/IMSendResult.java diff --git a/im-commom/src/main/java/com/bx/imcommon/model/IMSessionInfo.java b/im-common/src/main/java/com/bx/imcommon/model/IMSessionInfo.java similarity index 100% rename from im-commom/src/main/java/com/bx/imcommon/model/IMSessionInfo.java rename to im-common/src/main/java/com/bx/imcommon/model/IMSessionInfo.java diff --git a/im-commom/src/main/java/com/bx/imcommon/model/IMSystemMessage.java b/im-common/src/main/java/com/bx/imcommon/model/IMSystemMessage.java similarity index 100% rename from im-commom/src/main/java/com/bx/imcommon/model/IMSystemMessage.java rename to im-common/src/main/java/com/bx/imcommon/model/IMSystemMessage.java diff --git a/im-commom/src/main/java/com/bx/imcommon/model/IMUserInfo.java b/im-common/src/main/java/com/bx/imcommon/model/IMUserInfo.java similarity index 100% rename from im-commom/src/main/java/com/bx/imcommon/model/IMUserInfo.java rename to im-common/src/main/java/com/bx/imcommon/model/IMUserInfo.java diff --git a/im-commom/src/main/java/com/bx/imcommon/mq/RedisMQConfig.java b/im-common/src/main/java/com/bx/imcommon/mq/RedisMQConfig.java similarity index 100% rename from im-commom/src/main/java/com/bx/imcommon/mq/RedisMQConfig.java rename to im-common/src/main/java/com/bx/imcommon/mq/RedisMQConfig.java diff --git a/im-commom/src/main/java/com/bx/imcommon/mq/RedisMQConsumer.java b/im-common/src/main/java/com/bx/imcommon/mq/RedisMQConsumer.java similarity index 100% rename from im-commom/src/main/java/com/bx/imcommon/mq/RedisMQConsumer.java rename to im-common/src/main/java/com/bx/imcommon/mq/RedisMQConsumer.java diff --git a/im-commom/src/main/java/com/bx/imcommon/mq/RedisMQListener.java b/im-common/src/main/java/com/bx/imcommon/mq/RedisMQListener.java similarity index 100% rename from im-commom/src/main/java/com/bx/imcommon/mq/RedisMQListener.java rename to im-common/src/main/java/com/bx/imcommon/mq/RedisMQListener.java diff --git a/im-commom/src/main/java/com/bx/imcommon/mq/RedisMQPullTask.java b/im-common/src/main/java/com/bx/imcommon/mq/RedisMQPullTask.java similarity index 93% rename from im-commom/src/main/java/com/bx/imcommon/mq/RedisMQPullTask.java rename to im-common/src/main/java/com/bx/imcommon/mq/RedisMQPullTask.java index ba51bc5..a2ecded 100644 --- a/im-commom/src/main/java/com/bx/imcommon/mq/RedisMQPullTask.java +++ b/im-common/src/main/java/com/bx/imcommon/mq/RedisMQPullTask.java @@ -52,11 +52,6 @@ public class RedisMQPullTask implements CommandLineRunner { public void run() { List datas = new LinkedList<>(); try { - if(redisMQTemplate.isClose()){ - // 如果redis未初始化或已断开,3s后再重新尝试消费 - EXECUTOR.schedule(this, 3, TimeUnit.SECONDS); - return; - } if (consumer.isReady()) { String key = consumer.generateKey(); // 拉取一个批次的数据 @@ -75,6 +70,8 @@ public class RedisMQPullTask implements CommandLineRunner { } } catch (Exception e) { log.error("数据消费异常,队列:{}", queue, e); + // 出现异常,10s后再重新尝试消费 + EXECUTOR.schedule(this, 10, TimeUnit.SECONDS); return; } // 继续消费数据 diff --git a/im-commom/src/main/java/com/bx/imcommon/mq/RedisMQTemplate.java b/im-common/src/main/java/com/bx/imcommon/mq/RedisMQTemplate.java similarity index 71% rename from im-commom/src/main/java/com/bx/imcommon/mq/RedisMQTemplate.java rename to im-common/src/main/java/com/bx/imcommon/mq/RedisMQTemplate.java index c98a036..dbb927b 100644 --- a/im-commom/src/main/java/com/bx/imcommon/mq/RedisMQTemplate.java +++ b/im-common/src/main/java/com/bx/imcommon/mq/RedisMQTemplate.java @@ -2,10 +2,9 @@ package com.bx.imcommon.mq; import org.apache.logging.log4j.util.Strings; import org.springframework.data.redis.connection.RedisConnection; -import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.core.RedisConnectionUtils; import org.springframework.data.redis.core.RedisTemplate; -import java.util.Objects; import java.util.Properties; /** @@ -19,9 +18,10 @@ public class RedisMQTemplate extends RedisTemplate { public String getVersion() { if (version.isEmpty()) { - RedisConnection redisConnection = this.getConnectionFactory().getConnection(); - Properties properties = redisConnection.info(); + RedisConnection connection = RedisConnectionUtils.getConnection(getConnectionFactory()); + Properties properties = connection.info(); version = properties.getProperty("redis_version"); + RedisConnectionUtils.releaseConnection(connection,getConnectionFactory()); } return version; } @@ -41,12 +41,4 @@ public class RedisMQTemplate extends RedisTemplate { return firVersion > 6 || (firVersion == 6 && secVersion >= 2); } - - Boolean isClose(){ - try { - return getConnectionFactory().getConnection().isClosed(); - }catch (Exception e){ - return true; - } - } } diff --git a/im-commom/src/main/java/com/bx/imcommon/serializer/DateToLongSerializer.java b/im-common/src/main/java/com/bx/imcommon/serializer/DateToLongSerializer.java similarity index 100% rename from im-commom/src/main/java/com/bx/imcommon/serializer/DateToLongSerializer.java rename to im-common/src/main/java/com/bx/imcommon/serializer/DateToLongSerializer.java diff --git a/im-commom/src/main/java/com/bx/imcommon/util/CommaTextUtils.java b/im-common/src/main/java/com/bx/imcommon/util/CommaTextUtils.java similarity index 100% rename from im-commom/src/main/java/com/bx/imcommon/util/CommaTextUtils.java rename to im-common/src/main/java/com/bx/imcommon/util/CommaTextUtils.java diff --git a/im-commom/src/main/java/com/bx/imcommon/util/JwtUtil.java b/im-common/src/main/java/com/bx/imcommon/util/JwtUtil.java similarity index 100% rename from im-commom/src/main/java/com/bx/imcommon/util/JwtUtil.java rename to im-common/src/main/java/com/bx/imcommon/util/JwtUtil.java diff --git a/im-commom/src/main/java/com/bx/imcommon/util/ThreadPoolExecutorFactory.java b/im-common/src/main/java/com/bx/imcommon/util/ThreadPoolExecutorFactory.java similarity index 100% rename from im-commom/src/main/java/com/bx/imcommon/util/ThreadPoolExecutorFactory.java rename to im-common/src/main/java/com/bx/imcommon/util/ThreadPoolExecutorFactory.java diff --git a/im-platform/src/main/java/com/bx/implatform/config/TaskSchedulerConfig.java b/im-platform/src/main/java/com/bx/implatform/config/TaskSchedulerConfig.java new file mode 100644 index 0000000..ed14e09 --- /dev/null +++ b/im-platform/src/main/java/com/bx/implatform/config/TaskSchedulerConfig.java @@ -0,0 +1,27 @@ +package com.bx.implatform.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.TaskScheduler; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; + +/** + * @author: Blue + * @date: 2024-09-01 + * @version: 1.0 + */ + +@EnableScheduling +@Configuration +public class TaskSchedulerConfig { + + @Bean + public TaskScheduler taskScheduler() { + ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler(); + taskScheduler.setPoolSize(10); // 设置线程池大小 + taskScheduler.setThreadNamePrefix("scheduled-task-"); + taskScheduler.initialize(); + return taskScheduler; + } +} diff --git a/im-platform/src/main/java/com/bx/implatform/entity/Group.java b/im-platform/src/main/java/com/bx/implatform/entity/Group.java index 86cdd55..06ba349 100644 --- a/im-platform/src/main/java/com/bx/implatform/entity/Group.java +++ b/im-platform/src/main/java/com/bx/implatform/entity/Group.java @@ -65,7 +65,7 @@ public class Group { /** * 是否已删除 */ - private Boolean deleted; + private Boolean dissolve; diff --git a/im-platform/src/main/java/com/bx/implatform/service/impl/GroupMessageServiceImpl.java b/im-platform/src/main/java/com/bx/implatform/service/impl/GroupMessageServiceImpl.java index 25c1e56..66c0c88 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/impl/GroupMessageServiceImpl.java +++ b/im-platform/src/main/java/com/bx/implatform/service/impl/GroupMessageServiceImpl.java @@ -73,11 +73,12 @@ public class GroupMessageServiceImpl extends ServiceImpl implements // 群聊用户id List userIds = groupMemberService.findUserIdsByGroupId(groupId); // 逻辑删除群数据 - group.setDeleted(true); + group.setDissolve(true); this.updateById(group); // 删除成员数据 groupMemberService.removeByGroupId(groupId); @@ -190,7 +190,7 @@ public class GroupServiceImpl extends ServiceImpl implements if (Objects.isNull(group)) { throw new GlobalException("群组不存在"); } - if (group.getDeleted()) { + if (group.getDissolve()) { throw new GlobalException("群组'" + group.getName() + "'已解散"); } if (group.getIsBanned()) { diff --git a/im-platform/src/main/java/com/bx/implatform/service/impl/PrivateMessageServiceImpl.java b/im-platform/src/main/java/com/bx/implatform/service/impl/PrivateMessageServiceImpl.java index a1185b4..8380184 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/impl/PrivateMessageServiceImpl.java +++ b/im-platform/src/main/java/com/bx/implatform/service/impl/PrivateMessageServiceImpl.java @@ -56,11 +56,11 @@ public class PrivateMessageServiceImpl extends ServiceImpl sendMessage = new IMPrivateMessage<>(); diff --git a/im-platform/src/main/java/com/bx/implatform/task/GroupBannedConsumerTask.java b/im-platform/src/main/java/com/bx/implatform/task/consumer/GroupBannedConsumerTask.java similarity index 98% rename from im-platform/src/main/java/com/bx/implatform/task/GroupBannedConsumerTask.java rename to im-platform/src/main/java/com/bx/implatform/task/consumer/GroupBannedConsumerTask.java index baacfba..1fc7f57 100644 --- a/im-platform/src/main/java/com/bx/implatform/task/GroupBannedConsumerTask.java +++ b/im-platform/src/main/java/com/bx/implatform/task/consumer/GroupBannedConsumerTask.java @@ -1,4 +1,4 @@ -package com.bx.implatform.task; +package com.bx.implatform.task.consumer; import com.bx.imclient.IMClient; import com.bx.imcommon.enums.IMTerminalType; diff --git a/im-platform/src/main/java/com/bx/implatform/task/GroupUnbanConsumerTask.java b/im-platform/src/main/java/com/bx/implatform/task/consumer/GroupUnbanConsumerTask.java similarity index 98% rename from im-platform/src/main/java/com/bx/implatform/task/GroupUnbanConsumerTask.java rename to im-platform/src/main/java/com/bx/implatform/task/consumer/GroupUnbanConsumerTask.java index a5adda0..e2c99c2 100644 --- a/im-platform/src/main/java/com/bx/implatform/task/GroupUnbanConsumerTask.java +++ b/im-platform/src/main/java/com/bx/implatform/task/consumer/GroupUnbanConsumerTask.java @@ -1,4 +1,4 @@ -package com.bx.implatform.task; +package com.bx.implatform.task.consumer; import com.bx.imclient.IMClient; import com.bx.imcommon.enums.IMTerminalType; diff --git a/im-platform/src/main/java/com/bx/implatform/task/UserBannedConsumerTask.java b/im-platform/src/main/java/com/bx/implatform/task/consumer/UserBannedConsumerTask.java similarity index 97% rename from im-platform/src/main/java/com/bx/implatform/task/UserBannedConsumerTask.java rename to im-platform/src/main/java/com/bx/implatform/task/consumer/UserBannedConsumerTask.java index 4b792fb..c84b986 100644 --- a/im-platform/src/main/java/com/bx/implatform/task/UserBannedConsumerTask.java +++ b/im-platform/src/main/java/com/bx/implatform/task/consumer/UserBannedConsumerTask.java @@ -1,4 +1,4 @@ -package com.bx.implatform.task; +package com.bx.implatform.task.consumer; import com.bx.imclient.IMClient; import com.bx.imcommon.model.IMSystemMessage; diff --git a/im-platform/src/main/java/com/bx/implatform/task/schedule/ReloadSensitiveWordTask.java b/im-platform/src/main/java/com/bx/implatform/task/schedule/ReloadSensitiveWordTask.java new file mode 100644 index 0000000..2ff15ac --- /dev/null +++ b/im-platform/src/main/java/com/bx/implatform/task/schedule/ReloadSensitiveWordTask.java @@ -0,0 +1,26 @@ +package com.bx.implatform.task.schedule; + +import com.bx.implatform.util.SensitiveFilterUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +/** + * @author: Blue + * @date: 2024-09-01 + * @version: 1.0 + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class ReloadSensitiveWordTask { + + private final SensitiveFilterUtil sensitiveFilterUtil; + + @Scheduled(fixedRate = 60000) + public void run() { + log.info("【定时任务】重新装载敏感词..."); + sensitiveFilterUtil.reload(); + } +} diff --git a/im-platform/src/main/java/com/bx/implatform/util/SensitiveFilterUtil.java b/im-platform/src/main/java/com/bx/implatform/util/SensitiveFilterUtil.java index 0491c14..c3e83d7 100644 --- a/im-platform/src/main/java/com/bx/implatform/util/SensitiveFilterUtil.java +++ b/im-platform/src/main/java/com/bx/implatform/util/SensitiveFilterUtil.java @@ -14,7 +14,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.ScheduledThreadPoolExecutor; -import java.util.concurrent.TimeUnit; /** * 敏感词过滤器——SensitiveFilter @@ -35,7 +34,7 @@ public final class SensitiveFilterUtil { /** * 根节点 */ - private static final TrieNode ROOT_NODE = new TrieNode(); + private static TrieNode ROOT_NODE = new TrieNode(); /** * 线程池 @@ -86,41 +85,41 @@ public final class SensitiveFilterUtil { * @date 2023/12/4 11:18 */ @PostConstruct - public void init() { - // 每120s装载一次敏感词 - EXECUTOR_SERVICE.scheduleAtFixedRate(() -> { - List keywords = sensitiveWordService.findAllEnabledWords(); - keywords.forEach(keyword->{ - if(StrUtil.isNotEmpty(keyword)){ - // 添加到前缀树 - addKeyword(keyword); - } - }); - },0,120, TimeUnit.SECONDS); + public void reload() { + // 使用copy on write的方式,防止出现并发问题 + TrieNode newNode = new TrieNode(); + List keywords = sensitiveWordService.findAllEnabledWords(); + keywords.forEach(keyword -> { + if (StrUtil.isNotEmpty(keyword)) { + // 添加到前缀树 + addKeyword(newNode,keyword); + } + }); + ROOT_NODE = newNode; } /** * 3、将一个敏感词添加到前缀树中 * + * @param node * @param keyword * @author NXY * @date 2023/12/4 11:15 */ - private void addKeyword(String keyword) { - TrieNode tempNode = ROOT_NODE; + private void addKeyword(TrieNode node, String keyword) { for (int i = 0; i < keyword.length(); i++) { char c = keyword.charAt(i); - TrieNode subNode = tempNode.getSubNode(c); + TrieNode subNode = node.getSubNode(c); if (subNode == null) { // 初始化子节点 subNode = new TrieNode(); - tempNode.addSubNode(c, subNode); + node.addSubNode(c, subNode); } // 指向子节点,进入下一轮循环 - tempNode = subNode; + node = subNode; // 设置结束标识 if (i == keyword.length() - 1) { - tempNode.setKeywordEnd(true); + node.setKeywordEnd(true); } } } @@ -195,9 +194,9 @@ public final class SensitiveFilterUtil { /** * 判断是否为符号 ——特殊符号 * + * @return boolean * @author NXY * @date 2023/12/4 11:17 - * @return boolean */ private boolean isSymbol(Character c) { // 0x2E80~0x9FFF 是东亚文字范围 diff --git a/im-platform/src/main/java/com/bx/implatform/vo/GroupVO.java b/im-platform/src/main/java/com/bx/implatform/vo/GroupVO.java index 002c4c4..61abfa3 100644 --- a/im-platform/src/main/java/com/bx/implatform/vo/GroupVO.java +++ b/im-platform/src/main/java/com/bx/implatform/vo/GroupVO.java @@ -44,8 +44,8 @@ public class GroupVO { @Schema(description = "群名备注") private String remarkGroupName; - @Schema(description = "是否已删除") - private Boolean deleted; + @Schema(description = "是否已解散") + private Boolean dissolve; @Schema(description = "是否已退出") private Boolean quit; diff --git a/im-server/pom.xml b/im-server/pom.xml index 2e6edbf..f53f68a 100644 --- a/im-server/pom.xml +++ b/im-server/pom.xml @@ -15,7 +15,7 @@ com.bx - im-commom + im-common 3.0.0 diff --git a/im-server/src/main/java/com/bx/imserver/netty/processor/ProcessorFactory.java b/im-server/src/main/java/com/bx/imserver/netty/processor/ProcessorFactory.java index 117334c..f68e0f9 100644 --- a/im-server/src/main/java/com/bx/imserver/netty/processor/ProcessorFactory.java +++ b/im-server/src/main/java/com/bx/imserver/netty/processor/ProcessorFactory.java @@ -6,27 +6,14 @@ import com.bx.imserver.util.SpringContextHolder; public class ProcessorFactory { public static AbstractMessageProcessor createProcessor(IMCmdType cmd) { - AbstractMessageProcessor processor = null; - switch (cmd) { - case LOGIN: - processor = SpringContextHolder.getApplicationContext().getBean(LoginProcessor.class); - break; - case HEART_BEAT: - processor = SpringContextHolder.getApplicationContext().getBean(HeartbeatProcessor.class); - break; - case PRIVATE_MESSAGE: - processor = SpringContextHolder.getApplicationContext().getBean(PrivateMessageProcessor.class); - break; - case GROUP_MESSAGE: - processor = SpringContextHolder.getApplicationContext().getBean(GroupMessageProcessor.class); - break; - case SYSTEM_MESSAGE: - processor = SpringContextHolder.getApplicationContext().getBean(SystemMessageProcessor.class); - break; - default: - break; - } - return processor; + return switch (cmd) { + case LOGIN->SpringContextHolder.getApplicationContext().getBean(LoginProcessor.class); + case HEART_BEAT -> SpringContextHolder.getApplicationContext().getBean(HeartbeatProcessor.class); + case PRIVATE_MESSAGE->SpringContextHolder.getApplicationContext().getBean(PrivateMessageProcessor.class); + case GROUP_MESSAGE->SpringContextHolder.getApplicationContext().getBean(GroupMessageProcessor.class); + case SYSTEM_MESSAGE->SpringContextHolder.getApplicationContext().getBean(SystemMessageProcessor.class); + default -> null; + }; } } diff --git a/im-server/src/main/java/com/bx/imserver/netty/processor/SystemMessageProcessor.java b/im-server/src/main/java/com/bx/imserver/netty/processor/SystemMessageProcessor.java index 2020252..01d93c2 100644 --- a/im-server/src/main/java/com/bx/imserver/netty/processor/SystemMessageProcessor.java +++ b/im-server/src/main/java/com/bx/imserver/netty/processor/SystemMessageProcessor.java @@ -26,27 +26,29 @@ public class SystemMessageProcessor extends AbstractMessageProcessor @Override public void process(IMRecvInfo recvInfo) { - IMUserInfo receiver = recvInfo.getReceivers().get(0); - log.info("接收到系统消息,接收者:{},内容:{}", receiver.getId(), recvInfo.getData()); - try { - ChannelHandlerContext channelCtx = UserChannelCtxMap.getChannelCtx(receiver.getId(), receiver.getTerminal()); - if (!Objects.isNull(channelCtx)) { - // 推送消息到用户 - IMSendInfo sendInfo = new IMSendInfo<>(); - sendInfo.setCmd(IMCmdType.SYSTEM_MESSAGE.code()); - sendInfo.setData(recvInfo.getData()); - channelCtx.channel().writeAndFlush(sendInfo); - // 消息发送成功确认 - sendResult(recvInfo, IMSendCode.SUCCESS); - } else { + log.info("接收到系统消息,接收用户数量:{},内容:{}", recvInfo.getReceivers().size(), recvInfo.getData()); + for (IMUserInfo receiver : recvInfo.getReceivers()) { + try { + ChannelHandlerContext channelCtx = + UserChannelCtxMap.getChannelCtx(receiver.getId(), receiver.getTerminal()); + if (!Objects.isNull(channelCtx)) { + // 推送消息到用户 + IMSendInfo sendInfo = new IMSendInfo<>(); + sendInfo.setCmd(IMCmdType.SYSTEM_MESSAGE.code()); + sendInfo.setData(recvInfo.getData()); + channelCtx.channel().writeAndFlush(sendInfo); + // 消息发送成功确认 + sendResult(recvInfo, IMSendCode.SUCCESS); + } else { + // 消息推送失败确认 + sendResult(recvInfo, IMSendCode.NOT_FIND_CHANNEL); + log.error("未找到channel,接收者:{},内容:{}", receiver.getId(), recvInfo.getData()); + } + } catch (Exception e) { // 消息推送失败确认 - sendResult(recvInfo, IMSendCode.NOT_FIND_CHANNEL); - log.error("未找到channel,接收者:{},内容:{}",receiver.getId(), recvInfo.getData()); + sendResult(recvInfo, IMSendCode.UNKONW_ERROR); + log.error("发送异常,,接收者:{},内容:{}", receiver.getId(), recvInfo.getData(), e); } - } catch (Exception e) { - // 消息推送失败确认 - sendResult(recvInfo, IMSendCode.UNKONW_ERROR); - log.error("发送异常,,接收者:{},内容:{}", receiver.getId(), recvInfo.getData(), e); } } diff --git a/im-uniapp/manifest.json b/im-uniapp/manifest.json index d69c7ad..bad16f3 100644 --- a/im-uniapp/manifest.json +++ b/im-uniapp/manifest.json @@ -2,8 +2,8 @@ "name" : "盒子IM", "appid" : "__UNI__69DD57A", "description" : "", - "versionName" : "1.0.7", - "versionCode" : 107, + "versionName" : "3.0.0", + "versionCode" : 300, "transformPx" : false, /* 5+App特有相关 */ "app-plus" : { @@ -54,7 +54,8 @@ "privacyDescription" : { "NSMicrophoneUsageDescription" : "", "NSCameraUsageDescription" : "" - } + }, + "idfa" : false }, /* SDK配置 */ "sdkConfigs" : { diff --git a/pom.xml b/pom.xml index a00400d..fc2b886 100644 --- a/pom.xml +++ b/pom.xml @@ -17,7 +17,7 @@ im-platform im-server - im-commom + im-common im-client