|
@@ -1,5 +1,6 @@
|
|
|
package com.yonge.cooleshow.biz.dal.service.impl;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.google.common.collect.Lists;
|
|
|
import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
|
|
@@ -11,15 +12,11 @@ import com.yonge.cooleshow.biz.dal.dao.ImGroupDao;
|
|
|
import com.yonge.cooleshow.biz.dal.dao.ImGroupMemberAuditDao;
|
|
|
import com.yonge.cooleshow.biz.dal.dto.ImGroupResultDto;
|
|
|
import com.yonge.cooleshow.biz.dal.dto.ImGroupSearchDto;
|
|
|
-import com.yonge.cooleshow.biz.dal.entity.CourseGroup;
|
|
|
-import com.yonge.cooleshow.biz.dal.entity.ImGroup;
|
|
|
-import com.yonge.cooleshow.biz.dal.entity.ImGroupMember;
|
|
|
-import com.yonge.cooleshow.biz.dal.entity.Teacher;
|
|
|
+import com.yonge.cooleshow.biz.dal.entity.*;
|
|
|
import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
|
|
|
import com.yonge.cooleshow.biz.dal.enums.ImGroupMemberRoleType;
|
|
|
import com.yonge.cooleshow.biz.dal.enums.ImGroupType;
|
|
|
import com.yonge.cooleshow.biz.dal.service.*;
|
|
|
-import com.yonge.cooleshow.biz.dal.entity.StudentStar;
|
|
|
import com.yonge.cooleshow.biz.dal.entity.Teacher;
|
|
|
import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
|
|
|
import com.yonge.cooleshow.biz.dal.enums.ImGroupMemberRoleType;
|
|
@@ -33,6 +30,8 @@ import com.yonge.cooleshow.biz.dal.service.SysUserService;
|
|
|
import com.yonge.cooleshow.biz.dal.service.TeacherService;
|
|
|
import com.yonge.toolset.base.exception.BizException;
|
|
|
import com.yonge.toolset.base.util.ThreadPool;
|
|
|
+import io.rong.RongCloud;
|
|
|
+import io.rong.methods.message.history.History;
|
|
|
import io.rong.models.Result;
|
|
|
import io.rong.models.group.GroupMember;
|
|
|
import io.rong.models.group.GroupModel;
|
|
@@ -46,16 +45,15 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
+import java.io.*;
|
|
|
+import java.nio.charset.StandardCharsets;
|
|
|
import java.text.MessageFormat;
|
|
|
-import java.util.Collections;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Objects;
|
|
|
-import java.util.Optional;
|
|
|
-import java.util.Set;
|
|
|
-import java.util.UUID;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
+import java.util.zip.ZipEntry;
|
|
|
+import java.util.zip.ZipFile;
|
|
|
+import java.util.zip.ZipInputStream;
|
|
|
|
|
|
/**
|
|
|
* 即时通讯群组(ImGroup)表服务实现类
|
|
@@ -385,5 +383,71 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
|
|
|
|
|
|
return group;
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 同步即时通讯聊天记录
|
|
|
+ *
|
|
|
+ * @param date
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Result historyGet(String date) throws Exception {
|
|
|
+ return getHistory().get(date);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private History getHistory() {
|
|
|
+ RongCloud rongCloud = RongCloud.getInstance(appKey, appSecret);
|
|
|
+ History history = new History(appKey, appSecret);
|
|
|
+ history.setRongCloud(rongCloud);
|
|
|
+ return history;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void saveImHistoryMessage(File file) {
|
|
|
+ ZipInputStream zin = null;
|
|
|
+ try {
|
|
|
+ zin = new ZipInputStream(new FileInputStream(file), StandardCharsets.UTF_8);
|
|
|
+ ZipFile zf = new ZipFile(file);
|
|
|
+ ZipEntry ze;
|
|
|
+ Set<ImHistoryMessage> historyMessages = new HashSet<>();
|
|
|
+ while ((ze = zin.getNextEntry()) != null) {
|
|
|
+ BufferedReader br = new BufferedReader(new InputStreamReader(zf.getInputStream(ze)));
|
|
|
+ String line;
|
|
|
+ while ((line = br.readLine()) != null) {
|
|
|
+ try {
|
|
|
+ historyMessages.add(JSONObject.parseObject(line.substring(line.indexOf("{")),
|
|
|
+ ImHistoryMessage.class));
|
|
|
+// if(historyMessages.size() >= 2000){
|
|
|
+// historyMessageDao.batchInsert(new ArrayList<>(historyMessages),HistoryMessage.class);
|
|
|
+// historyMessages.clear();
|
|
|
+// }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ br.close();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if (historyMessages.size() > 0) {
|
|
|
+ ImGroupDao dao = getDao();
|
|
|
+ dao.batchInsert(historyMessages.stream().sorted(Comparator.comparing(ImHistoryMessage::getDateTime)).collect(Collectors.toList()));
|
|
|
+ }
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ } finally {
|
|
|
+ if (zin != null) {
|
|
|
+ try {
|
|
|
+ zin.closeEntry();
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|