liujc пре 1 година
родитељ
комит
df6e581aee

+ 6 - 0
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/AdminFeignService.java

@@ -169,6 +169,12 @@ public interface AdminFeignService {
     @GetMapping("/task/batchSending")
     HttpResponseResult<Boolean> batchSending();
 
+    /**
+     * 融云消息同步
+     */
+    @GetMapping("/task/rongyunImport")
+    void rongyunImport();
+
 
     @PostMapping("/open/adminClient/unionStudent")
     HttpResponseResult<StudentWrapper.UnionStudentResp> unionStudent(@RequestBody StudentWrapper.UnionStudent info);

+ 8 - 0
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/fallback/AdminFeignServiceFallback.java

@@ -157,6 +157,14 @@ public class AdminFeignServiceFallback implements AdminFeignService {
         return null;
     }
 
+    /**
+     * 融云消息同步
+     */
+    @Override
+    public void rongyunImport() {
+
+    }
+
 
     @Override
     public HttpResponseResult<StudentWrapper.UnionStudentResp> unionStudent(StudentWrapper.UnionStudent info) {

+ 23 - 0
cooleshow-task/src/main/java/com/yonge/cooleshow/task/jobs/RongyunImImport.java

@@ -0,0 +1,23 @@
+package com.yonge.cooleshow.task.jobs;
+
+import com.yonge.cooleshow.api.feign.AdminFeignService;
+import com.yonge.cooleshow.task.core.BaseTask;
+import com.yonge.cooleshow.task.core.TaskException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+
+/**
+ * 同步消息
+ */
+@Service
+public class RongyunImImport extends BaseTask {
+
+    @Autowired
+    private AdminFeignService adminFeignService;
+
+    @Override
+    public void execute() throws TaskException {
+        adminFeignService.rongyunImport();
+    }
+}

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

@@ -12,6 +12,7 @@ import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.redis.service.RedisCache;
 import com.yonge.toolset.utils.date.DateUtil;
+import com.yonge.toolset.utils.date.DateUtil;
 import com.yonge.toolset.utils.validator.ValidationKit;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -19,6 +20,8 @@ import io.swagger.annotations.ApiParam;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.http.HttpStatus;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.BindingResult;
@@ -84,6 +87,7 @@ public class ImGroupController extends BaseController {
     }
 
 
+
     @GetMapping(value = "/syncImHistoryMessageTask")
     // 融云同步即时通讯聊天记录
     public void syncImHistoryMessageTask(String date) throws Exception {
@@ -98,36 +102,17 @@ public class ImGroupController extends BaseController {
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(currentDate);
 
-        // 将日期减少
-        calendar.add(Calendar.DATE, -1);
+        // 将日期减少
+        calendar.add(Calendar.DATE, -3);
 
-        // 获取减少天后的日期
-        Date tommorow = calendar.getTime();
+        // 获取减少天后的日期
+        Date targetTime = calendar.getTime();
 
         calendar.setTime(currentDate);
 
         //按照小时递减
-        while (currentDate.after(tommorow)) {
-            String d = DateUtil.format(DateUtil.addHours(currentDate, 0), DateUtil.YEAR_MONTH_DAY_HOUR);
-            Object o = imGroupService.historyGet(d);
-            JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(o));
-            if (jsonObject.get("code").equals(200)) {
-                /*Boolean success = redisCache.getRedisTemplate().opsForValue().setIfAbsent("syncImHistoryMessage" + d,d);
-                if(!success){
-                    return;
-                }*/
-                String url = jsonObject.getString("url");
-                /*if(StringUtils.isEmpty(url)){
-                    return;
-                }*/
-                if (!StringUtils.isEmpty(url)) {
-                    File file = new File(FileUtils.getTempDirectoryPath() + url.substring(url.lastIndexOf("/")));
-                    URL url1 = new URL(url);
-                    FileUtils.copyURLToFile(url1, file);
-                    imGroupService.saveImHistoryMessage(new File(file.getAbsolutePath()));
-                }
-
-            }
+        while (currentDate.after(targetTime)) {
+            imGroupService.getAndSaveImHistoryMessage(DateUtil.format(currentDate, DateUtil.YEAR_MONTH_DAY_HOUR));
             calendar.add(Calendar.HOUR, -1);
             currentDate = calendar.getTime();
         }
@@ -135,37 +120,5 @@ public class ImGroupController extends BaseController {
     }
 
 
-    @ApiOperation("IM导入消息")
-    @PostMapping(value = "/ImportIM")
-    public void ImportIM() throws Exception {
-        List<ImHistoryMessage> info;
-        //计算总数据量
-        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);
-            imGroupService.importInfo(info);
-        }
-    }
-
-    @GetMapping(value = "/groupTransfer")
-    @ApiOperation("群导入")
-    public void groupTransfer() {
-        imGroupService.groupTransfer();
-    }
-
-    @GetMapping(value = "/importUser")
-    @ApiOperation("导入用户")
-    public void importUser() {
-        imGroupService.importUser();
-    }
-
-
-
 }
 

+ 27 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/task/TaskController.java

@@ -1,9 +1,13 @@
 package com.yonge.cooleshow.admin.task;
 
 import com.yonge.cooleshow.biz.dal.service.*;
+import com.alibaba.fastjson.JSONObject;
+import com.yonge.cooleshow.biz.dal.service.*;
 import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.toolset.utils.date.DateUtil;
+import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.redisson.api.RBucket;
 import org.redisson.api.RedissonClient;
@@ -13,6 +17,8 @@ import org.springframework.web.bind.annotation.*;
 import springfox.documentation.annotations.ApiIgnore;
 
 import java.io.File;
+import java.net.URL;
+import java.util.Date;
 
 /**
  * @Author: liweifan
@@ -60,6 +66,9 @@ public class TaskController extends BaseController {
     @Autowired
     private LiveRoomService liveRoomService;
 
+    @Autowired
+    private ImGroupService imGroupService;
+
     /***
      * 轮询用户订单
      * @author liweifan
@@ -186,4 +195,22 @@ public class TaskController extends BaseController {
         return HttpResponseResult.succeed();
     }
 
+
+
+    @GetMapping("/rongyunImport")
+    public void rongyunImport() throws Exception {
+         String currentDate = DateUtil.format(DateUtil.addHours(new Date(),-2), DateUtil.YEAR_MONTH_DAY_HOUR);
+        Object o = imGroupService.historyGet(currentDate);
+        JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(o));
+        if (jsonObject.get("code").equals(200)) {
+            String url = jsonObject.getString("url");
+            if (!StringUtils.isEmpty(url)) {
+                File file = new File(FileUtils.getTempDirectoryPath() + url.substring(url.lastIndexOf("/")));
+                URL url1 = new URL(url);
+                FileUtils.copyURLToFile(url1, file);
+                imGroupService.saveImHistoryMessage(new File(file.getAbsolutePath()));
+            }
+
+        }
+    }
 }

+ 3 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ImGroupDao.java

@@ -27,12 +27,12 @@ public interface ImGroupDao extends BaseMapper<ImGroup> {
     //更新群成员数量
     void updateMemberNum(@Param("groupId") String groupId);
 
-    //批量插入历史数据
-    void batchInsert(@Param("list") List<ImHistoryMessage> historyMessages);
-
     //获取融云数据
     List<ImHistoryMessage> selectAll(@Param("result") int result, @Param("size") int size);
 
     int queryCount();
+
+    //批量插入历史数据
+    void batchInsert(@Param("list") List<ImHistoryMessage> historyMessages);
 }
 

+ 0 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImHistoryMessage.java

@@ -87,5 +87,4 @@ public class ImHistoryMessage implements Serializable {
     @ApiModelProperty("App Key")
     @TableField(value = "appId_")
     private String appId;
-
 }

+ 6 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImGroupService.java

@@ -14,6 +14,7 @@ import com.yonge.cooleshow.biz.dal.enums.RoleEnum;
 import com.yonge.cooleshow.biz.dal.wrapper.im.ImGroupWrapper;
 import io.rong.models.Result;
 import com.yonge.cooleshow.biz.dal.wrapper.im.ImGroupWrapper;
+import io.rong.models.Result;
 
 import java.io.File;
 import java.util.List;
@@ -127,6 +128,10 @@ public interface ImGroupService extends IService<ImGroup> {
      * @return ImGroup
      */
     ImGroup findGroupInfoById(String groupId, Long userId);
+
+
+    void getAndSaveImHistoryMessage(String date) throws Exception;
+
     /**
      * 旧数据创建粉丝群
      */
@@ -152,7 +157,7 @@ public interface ImGroupService extends IService<ImGroup> {
      * @param file
      */
     void saveImHistoryMessage(File file);
-    
+
 
     /**
      * 读取融云数据库信息

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

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.collect.Lists;
 import com.yonge.cooleshow.auth.config.AppGlobalServiceConfig;
@@ -27,6 +28,11 @@ 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.Teacher;
+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.entity.StudentStar;
 import com.yonge.cooleshow.biz.dal.service.CourseGroupService;
 import com.yonge.cooleshow.biz.dal.service.ImGroupMemberService;
@@ -57,9 +63,14 @@ import com.yonge.toolset.base.util.ThreadPool;
 import com.yonge.toolset.mybatis.support.PageUtil;
 import io.rong.RongCloud;
 import io.rong.methods.message.history.History;
+import com.yonge.toolset.utils.date.DateUtil;
+import io.rong.RongCloud;
+import io.rong.methods.message.history.History;
 import io.rong.models.Result;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.redisson.api.RBucket;
 import org.redisson.api.RedissonClient;
 import org.slf4j.Logger;
@@ -76,7 +87,11 @@ import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.nio.charset.StandardCharsets;
+import java.io.*;
+import java.net.URL;
+import java.nio.charset.StandardCharsets;
 import java.text.MessageFormat;
+import java.util.*;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
@@ -89,6 +104,10 @@ import java.util.Set;
 import java.util.UUID;
 import java.util.concurrent.TimeUnit;
 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;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipFile;
 import java.util.zip.ZipInputStream;
@@ -1073,5 +1092,23 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
             return strings;
         }).collect(Collectors.toList());
     }
+
+
+    @Override
+    public void getAndSaveImHistoryMessage(String date) throws Exception {
+
+        Object o = imGroupService.historyGet(date);
+        JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(o));
+        if (jsonObject.get("code").equals(200)) {
+            String url = jsonObject.getString("url");
+            if (!StringUtils.isEmpty(url)) {
+                File file = new File(FileUtils.getTempDirectoryPath() + url.substring(url.lastIndexOf("/")));
+                URL url1 = new URL(url);
+                FileUtils.copyURLToFile(url1, file);
+                imGroupService.saveImHistoryMessage(new File(file.getAbsolutePath()));
+            }
+
+        }
+    }
 }
 

+ 17 - 16
cooleshow-user/user-biz/src/main/resources/config/mybatis/ImGroupMapper.xml

@@ -18,22 +18,6 @@
     <sql id="Base_Column_List">
         id_, name_, introduce_, member_num_, memo_, img_, type_,create_by_, create_time_, update_time_
     </sql>
-    <insert id="batchInsert" parameterType="com.yonge.cooleshow.biz.dal.entity.ImHistoryMessage">
-        insert into im_history_message(msgUID_,fromUserId_,targetId_,targetType_,
-                                       GroupId_,busChannel_,classname_,content_,
-                                       extraContent_,dateTime_,source_,isDiscard_,
-                                       isSensitiveWord_,isForbidden_,isNotForward_,
-                                       groupUserIds_,appId_)
-        values
-               <foreach collection="list" separator="," item="item" >
-                   (#{item.msgUID,jdbcType=VARCHAR},#{item.fromUserId,jdbcType=VARCHAR},#{item.targetId,jdbcType=VARCHAR},
-                   #{item.targetType},#{item.groupId,jdbcType=VARCHAR},#{item.busChannel,jdbcType=VARCHAR},
-                   #{item.classname,jdbcType=VARCHAR},#{item.content,jdbcType=VARCHAR},#{item.extraContent,jdbcType=VARCHAR},
-                   #{item.dateTime,jdbcType=VARCHAR},#{item.source,jdbcType=VARCHAR},#{item.isDiscard,jdbcType=VARCHAR},
-                   #{item.isSensitiveWord,jdbcType=VARCHAR},#{item.isForbidden,jdbcType=VARCHAR},#{item.isNotForward,jdbcType=VARCHAR},
-                   #{item.groupUserIds,jdbcType=VARCHAR},#{item.appId,jdbcType=VARCHAR})
-               </foreach>
-    </insert>
 
     <update id="updateById" parameterType="com.yonge.cooleshow.biz.dal.entity.ImGroup">
         update im_group
@@ -134,4 +118,21 @@
     <select id="queryCount" resultType="java.lang.Integer">
         SELECT COUNT(*) FROM im_history_message
     </select>
+
+    <insert id="batchInsert" parameterType="com.yonge.cooleshow.biz.dal.entity.ImHistoryMessage">
+        insert into im_history_message(msgUID_,fromUserId_,targetId_,targetType_,
+        GroupId_,busChannel_,classname_,content_,
+        extraContent_,dateTime_,source_,isDiscard_,
+        isSensitiveWord_,isForbidden_,isNotForward_,
+        groupUserIds_,appId_)
+        values
+        <foreach collection="list" separator="," item="item" >
+            (#{item.msgUID,jdbcType=VARCHAR},#{item.fromUserId,jdbcType=VARCHAR},#{item.targetId,jdbcType=VARCHAR},
+            #{item.targetType},#{item.groupId,jdbcType=VARCHAR},#{item.busChannel,jdbcType=VARCHAR},
+            #{item.classname,jdbcType=VARCHAR},#{item.content,jdbcType=VARCHAR},#{item.extraContent,jdbcType=VARCHAR},
+            #{item.dateTime,jdbcType=VARCHAR},#{item.source,jdbcType=VARCHAR},#{item.isDiscard,jdbcType=VARCHAR},
+            #{item.isSensitiveWord,jdbcType=VARCHAR},#{item.isForbidden,jdbcType=VARCHAR},#{item.isNotForward,jdbcType=VARCHAR},
+            #{item.groupUserIds,jdbcType=VARCHAR},#{item.appId,jdbcType=VARCHAR})
+        </foreach>
+    </insert>
 </mapper>