Browse Source

群数据补录

liujc 1 year ago
parent
commit
3073ddc619

+ 20 - 13
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImGroupServiceImpl.java

@@ -75,6 +75,7 @@ import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.joda.time.DateTime;
 import org.redisson.api.RBucket;
 import org.redisson.api.RedissonClient;
 import org.slf4j.Logger;
@@ -1351,17 +1352,17 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
         String fansIcon = sysConfigService.findConfigValue(SysConfigConstant.ICON_FANS_GROUP_DEFAULT);
         String courseIcon = sysConfigService.findConfigValue(SysConfigConstant.ICON_COURSE_GROUP_DEFAULT);
         String defaultHeard = sysConfigService.findConfigValue(SysConfigConstant.DEFAULT_HEARD);
-        for (ImGroup imGroup : records) {
-
-            log.info("群销毁开始:{}", imGroup.getId());
-            // 先删除群组
-            try {
-                // 解散群
-                imPluginContext.getPluginService().groupDismiss(imGroup.getId(), new ArrayList<>());
-            } catch (Exception e) {
-                log.error(String.format("群迁移删除群聊失败:%s", e.getMessage()), e);
-            }
-        }
+//        for (ImGroup imGroup : records) {
+//
+//            log.info("群销毁开始:{}", imGroup.getId());
+//            // 先删除群组
+//            try {
+//                // 解散群
+//                imPluginContext.getPluginService().groupDismiss(imGroup.getId(), new ArrayList<>());
+//            } catch (Exception e) {
+//                log.error(String.format("群迁移删除群聊失败:%s", e.getMessage()), e);
+//            }
+//        }
         for (ImGroup imGroup : records) {
 
             log.info("群迁移开始:{}", imGroup.getId());
@@ -1375,7 +1376,12 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
 
             List<ImGroupMember> memberList = imGroupMemberService.lambdaQuery()
                     .eq(ImGroupMember::getGroupId, imGroup.getId())
+                    .le(ImGroupMember::getCreateTime,imGroup.getCreateTime())
                     .list();
+            if (CollectionUtils.isEmpty(memberList)) {
+                continue;
+            }
+            log.info("群数据补录,群ID:{},补录人数:{}", imGroup.getId(), memberList.size());
             ImGroupMember admin = memberList.stream().filter(ImGroupMember::getIsAdmin).findFirst().orElse(null);
             if (admin == null) {
                 log.info("群主不存在,groupId:{}",imGroup.getId());
@@ -1402,7 +1408,7 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
                 importGroup.setCreateTime(imGroup.getCreateTime().getTime() / 1000);
 
                 register(admin.getUserId(), imGroup.getId(), admin.getAvatar(), true, ClientEnum.TEACHER);
-                imPluginContext.getPluginService().importGroup(importGroup);
+//                imPluginContext.getPluginService().importGroup(importGroup);
 
                 List<ImGroupMember> groupMembers = memberList.stream()
                         .filter(next -> !next.getIsAdmin()).collect(Collectors.toList());
@@ -1420,6 +1426,7 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
                 }
                 MessageWrapper.ImportGroupMember importGroupMember = new MessageWrapper.ImportGroupMember();
                 importGroupMember.setGroupId(imGroup.getId());
+                Date date = new DateTime(imGroup.getCreateTime()).plusSeconds(3).toDate();
                 List<MessageWrapper.ImportGroupMemberData> members =
                         groupMembers.stream().map(next -> {
                             MessageWrapper.ImportGroupMemberData data = new MessageWrapper.ImportGroupMemberData();
@@ -1427,7 +1434,7 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
                                     ImGroupMemberRoleType.STUDENT.equals(next.getRoleType()) ?
                                             ClientEnum.STUDENT.name() :
                                             ClientEnum.TEACHER.name()));
-                            data.setJoinTime(next.getCreateTime().getTime() / 1000);
+                            data.setJoinTime(date.getTime() / 1000);
                             data.setUnreadMsgNum(0);
                             return data;
                         }).collect(Collectors.toList());