ソースを参照

Merge branch 'feature/1020-tencent-im' into saas

liujc 1 年間 前
コミット
b26a2c39f8

+ 52 - 30
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupServiceImpl.java

@@ -896,7 +896,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
         // 100个线程的无界线程池
         ExecutorService executorService = Executors.newFixedThreadPool(100);
         int page = 1;
-        int size = 400;
+        int size = 100;
         QueryInfo queryInfo = new QueryInfo();
         queryInfo.setPage(page);
         queryInfo.setRows(size);
@@ -905,7 +905,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
         int total = imGroupPageInfo.getTotal();
         int importImGroupCount = 0;
-        int num = (int) Math.ceil(total / 400);
+        int num = (int) Math.ceil(total / 100);
         for (int i = 0; i <=num ; i++) {
 
             imGroupPageInfo = this.queryPage(queryInfo);
@@ -929,11 +929,42 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
                 throw new BizException("时间区间参数错误,格式为:yyyy-MM-dd");
             }
             List<Future<?>> list = new ArrayList<>();
-            for (List<ImGroup> imGroups : Lists.partition(rows, 10)) {
+
+            rows.forEach(imGroup -> {
+
                 list.add(executorService.submit(() -> {
-                    groupTransfer(imGroups);
+                    log.info("群销毁开始:{}", imGroup.getId());
+                    // 先删除群组
+                    try {
+                        // 解散群
+                        imPluginContext.getPluginService().groupDismiss(imGroup.getId(), new ArrayList<>());
+                    } catch (Exception e) {
+                        log.error(String.format("群迁移删除群聊失败:%s", e.getMessage()), e);
+                    }
                 }));
+            });
+            for (Future<?> future : list) {
+                try {
+                    future.get();
+                } catch (Exception e){
+                    log.error("群销毁失败",e);
+                }
             }
+
+            try {
+                Thread.sleep(1500);
+            } catch (InterruptedException e) {
+                log.error("线程休眠失败",e);
+            }
+
+
+            list.clear();
+            for (ImGroup row : rows) {
+                list.add(executorService.submit(() -> {
+                    groupTransfer(Lists.newArrayList(row));
+                }));
+            }
+
             for (Future<?> future : list) {
                 try {
                     future.get();
@@ -953,18 +984,6 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
 
         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());
 
             GroupMemberQueryInfo groupMemberQueryInfo = new GroupMemberQueryInfo();
@@ -984,7 +1003,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
                 }
                 importGroup.setType("Public");
                 importGroup.setGroupId(imGroup.getId());
-                importGroup.setName(imGroup.getName());
+                importGroup.setName(StringUtils.isBlank(imGroup.getName())?imGroup.getId():imGroup.getName());
                 importGroup.setIntroduction(imGroup.getIntroduce());
                 importGroup.setNotification(imGroup.getMemo());
                 importGroup.setFaceUrl(imGroup.getImg());
@@ -996,29 +1015,32 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
                     imGroup.setCreateTime(DateTime.now().plusYears(-1).toDate());
                 }
                 importGroup.setCreateTime(imGroup.getCreateTime().getTime() / 1000);
-                if (admin != null) {
-                    register(admin.getUserId().toString(), getClientType(admin.getRoleType()),"");
-                }
+//                if (admin != null) {
+//                    register(admin.getUserId().toString(), getClientType(admin.getRoleType()),"");
+//                }
                 imPluginContext.getPluginService().importGroup(importGroup);
 
                 List<ImGroupMember> groupMembers = pageInfo.getRows().stream()
                         .filter(next -> !next.getIsAdmin()).collect(Collectors.toList());
-                if (groupMembers.isEmpty()) {
-                    imGroupDao.updateImportStatusSuccess(imGroup.getId());
-                    continue;
-                }
+
 
                 groupMembers = groupMembers
                     .stream()
                     .filter(next -> next.getUserId() != null && next.getUserId() > 0)
                     .collect(Collectors.toList());
-                for (ImGroupMember member : groupMembers) {
-                    try {
-                        register(member.getUserId().toString(), getClientType(member.getRoleType()),"");
-                    }catch (Exception e){
-                        log.error("用户注册失败",e);
-                    }
+
+                if (groupMembers.isEmpty()) {
+                    imGroupDao.updateImportStatusSuccess(imGroup.getId());
+                    continue;
                 }
+
+//                for (ImGroupMember member : groupMembers) {
+//                    try {
+//                        register(member.getUserId().toString(), getClientType(member.getRoleType()),"");
+//                    }catch (Exception e){
+//                        log.error("用户注册失败",e);
+//                    }
+//                }
                 MessageWrapper.ImportGroupMember importGroupMember = new MessageWrapper.ImportGroupMember();
                 importGroupMember.setGroupId(imGroup.getId());
                 Date date = new DateTime(imGroup.getCreateTime()).plusSeconds(3).toDate();