liujc 1 年之前
父节点
当前提交
e39c5796b4

+ 43 - 10
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ImGroupController.java

@@ -39,6 +39,7 @@ import java.text.SimpleDateFormat;
 import java.util.Calendar;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.Date;
 import java.util.List;
 import java.util.List;
+import java.util.OptionalDouble;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.CompletableFuture;
 
 
 import org.slf4j.Logger;
 import org.slf4j.Logger;
@@ -138,22 +139,54 @@ public class ImGroupController extends BaseController {
                 //计算总数据量
                 //计算总数据量
                 double count = imGroupService.queryCount();
                 double count = imGroupService.queryCount();
                 //计算调用次数
                 //计算调用次数
-                int num = (int) Math.ceil(count / 100);
-                for (int i = 1; i <=num ; i++) {
-                    int page =i;
-                    int size =100;
-                    //获取融云消息
-                    //List<ImGroup> list = imGroupService.lambdaQuery().last("limit "+(page-1)*size+","+size).list();
-                    info = imGroupService.getRongYunInfo(page,size);
-                    //IM导入
-                    imGroupService.importInfo(info);
-                }
+//                int num = (int) Math.ceil(count / 100);
+//                for (int i = 1; i <=num ; i++) {
+//                    int page =i;
+//                    int size =100;
+//                    //获取融云消息
+//                    //List<ImGroup> list = imGroupService.lambdaQuery().last("limit "+(page-1)*size+","+size).list();
+//                    info = imGroupService.getRongYunInfo(page,size);
+//                    //IM导入
+//                    imGroupService.importInfo(info);
+//                }
+                info = imGroupService.getRongYunInfo(1,Integer.parseInt(String.valueOf(count)));
+                //IM导入
+                imGroupService.importInfo(info);
             } catch (Exception e) {
             } catch (Exception e) {
                 log.error("IM导入消息失败", e);
                 log.error("IM导入消息失败", e);
             }
             }
         });
         });
     }
     }
 
 
+
+    @ApiOperation("清除导入会话")
+    @PostMapping(value = "/clearImportIm")
+    public void clearImportIm() throws Exception {
+
+        CompletableFuture.runAsync(() -> {
+            try {
+                List<ImHistoryMessage> info;
+                //计算总数据量
+                int count = imGroupService.queryCount();
+                //计算调用次数
+//                int num = (int) Math.ceil(count / 100);
+//                for (int i = 1; i <=num ; i++) {
+//                    int page =i;
+//                    int size =100;
+//                    //获取融云消息
+//                    //List<ImGroup> list = imGroupService.lambdaQuery().last("limit "+(page-1)*size+","+size).list();
+//                    info = imGroupService.getRongYunInfo(page,size);
+//                    //IM导入
+//                    imGroupService.importInfo(info);
+//                }
+                info = imGroupService.getRongYunInfo(1,count);
+                //IM导入
+                imGroupService.clearImportIm(info);
+            } catch (Exception e) {
+                log.error("IM导入消息失败", e);
+            }
+        });
+    }
     @GetMapping(value = "/groupTransfer")
     @GetMapping(value = "/groupTransfer")
     @ApiOperation("群导入")
     @ApiOperation("群导入")
     public void groupTransfer() {
     public void groupTransfer() {

+ 2 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImGroupService.java

@@ -207,5 +207,7 @@ public interface ImGroupService extends IService<ImGroup> {
     RTCRoomPluginService getRTCRoomPluginService(String serviceProvider);
     RTCRoomPluginService getRTCRoomPluginService(String serviceProvider);
 
 
     Boolean updateImGroup(ImGroup imGroup);
     Boolean updateImGroup(ImGroup imGroup);
+
+    void clearImportIm(List<ImHistoryMessage> info);
 }
 }
 
 

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

@@ -774,9 +774,20 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
                         imUserId = getImUserId(id, "TEACHER");
                         imUserId = getImUserId(id, "TEACHER");
                     }
                     }
 
 
+                    String targetId = i.getTargetId();
+                    String targetIdUserId;
+                    if (targetId.contains(":STUDENT")) {
+                        String[] split = targetId.split(":");
+                        String userId = split[0];
+                        String clientType = split[1];
+                        targetIdUserId = getImUserId(userId, clientType);
+                    } else {
+                        targetIdUserId = getImUserId(targetId, "TEACHER");
+                    }
+
                     privateImportMessage.setFromAccount(imUserId);
                     privateImportMessage.setFromAccount(imUserId);
                     //设置接收人
                     //设置接收人
-                    privateImportMessage.setToAccount(i.getTargetId());
+                    privateImportMessage.setToAccount(targetIdUserId);
                     //设置随机数
                     //设置随机数
                     privateImportMessage.setMsgRandom(new Random().nextInt());
                     privateImportMessage.setMsgRandom(new Random().nextInt());
 
 
@@ -1295,6 +1306,46 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
         return true;
         return true;
     }
     }
 
 
+    @Override
+    public void clearImportIm(List<ImHistoryMessage> info) {
+
+        for (int j = 0; j < info.size(); j++) {
+            ImHistoryMessage i = info.get(j);//判断消息类型
+            log.info("消息删除:{}", j);
+            Integer type = i.getTargetType();
+            try {
+                if (type == 1) {
+                    //单聊会话
+                    MessageWrapper.PrivateImportMessage privateImportMessage = new MessageWrapper.PrivateImportMessage();
+                    //2:表示历史消息导入,消息不计入未读计数,且消息不会推送到终端
+                    privateImportMessage.setSyncFromOldSystem(2);
+                    //设置发送人
+                    //根据发送者分场景讨论
+                    String id = i.getFromUserId();
+                    String imUserId;
+                    if (id.contains(":STUDENT")) {
+                        String[] split = id.split(":");
+                        String userId = split[0];
+                        String clientType = split[1];
+                        imUserId = getImUserId(userId, clientType);
+                    } else {
+                        imUserId = getImUserId(id, "TEACHER");
+                    }
+
+                    String targetId = i.getTargetId();
+                    try {
+                        imGroupCoreService.deletePrivateRecentContact(imUserId,targetId);
+                    } catch (Exception e) {
+                        log.error("删除私聊最近联系人失败",e);
+                    }
+                }
+                log.info("删除消息成功:{}", i);
+            } catch (Exception e) {
+                log.error("删除消息失败:{}",i, e);
+            }
+        }
+    }
+
 
 
     private void groupTransfer(List<ImGroup> records) {
     private void groupTransfer(List<ImGroup> records) {
         String fansIcon = sysConfigService.findConfigValue(SysConfigConstant.ICON_FANS_GROUP_DEFAULT);
         String fansIcon = sysConfigService.findConfigValue(SysConfigConstant.ICON_FANS_GROUP_DEFAULT);