Procházet zdrojové kódy

微信会话内容存储获取优化

anderx před 6 měsíci
rodič
revize
4ce4d40658

+ 1 - 1
src/main/java/com/kede/common/dao/ChatMsgMapper.java

@@ -83,7 +83,7 @@ public interface ChatMsgMapper {
      */
     int deleteById(Integer id);
 
-    ChatMsg selectByMsgId(@Param("msgid") String msgid, @Param("date") Date date);
+    ChatMsg selectByMsgId(@Param("id") String id, @Param("date") Date date);
 
 
     List<ChatMsg> selectMsgById(@Param("userId") String userId, @Param("type") Integer type);

+ 9 - 22
src/main/java/com/kede/common/task/ConversationContentTask.java

@@ -87,11 +87,10 @@ public class ConversationContentTask {
                 }
             }
         }
-        System.out.println(stringJoiner.toString());
         chatMsg.setTolistName(stringJoiner.toString());
         //获取群名称
         chatMsg.setRoomName(conversationContentService.pushGetRoomName(chatMsg));
-        System.out.println(chatMsg.getRoomName());
+
         chatMsgMapper.update(chatMsg);
 
     }
@@ -105,9 +104,9 @@ public class ConversationContentTask {
             System.out.println(chatMsg);
             String from = chatMsg.getFrom();
             //获取发送这名称
-            System.out.println("====>"+chatMsg);
+//            System.out.println("====>"+chatMsg);
             Map<String, Object> map = conversationContentService.pushGetChatName(from);
-            String chatName=pushMapGetName(map);
+            String chatName=map.get("name").toString();
             String tolist = chatMsg.getTolist();
             String roomName=null;
             //判定是否有群编号,判定是单聊还是群聊,群聊获取群名称
@@ -124,14 +123,11 @@ public class ConversationContentTask {
                 //获取接收者名称
                 int x=0;
                 for (String tolistName : tolistArr) {
-                    //x为获取成功时
-                    if (x!=84061){
-                        Map<String, Object> maps = conversationContentService.pushGetChatName(tolistName);
-                        x= (int) maps.get("code");
-                        String name=pushMapGetName(maps);
-                        if (name != null){
-                            stringJoiner.add(name);
-                        }
+                    Map<String, Object> maps = conversationContentService.pushGetChatName(tolistName);
+                    x= (int) maps.get("code");
+                    String name=maps.get("name").toString();
+                    if (name != null){
+                        stringJoiner.add(name);
                     }
                 }
             }
@@ -169,16 +165,7 @@ public class ConversationContentTask {
         }
     }
 
-    private String pushMapGetName(Map<String, Object> map) {
-        Integer code = (Integer) map.get("code");
-        String chatName;
-        if (code==0){
-            chatName = map.get("name").toString();
-        }else {
-            chatName = "名称查询失败("+code+")";
-        }
-        return chatName;
-    }
+
 
 
 }

+ 2 - 2
src/main/java/com/kede/common/utils/DateUtils.java

@@ -469,7 +469,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
 
 
 	/**
-	 * 根据date获取i天前的日期
+	 * 根据date获取前后的天数的date 负数就是减天数
 	 * @param date
 	 * @param i
 	 * @return
@@ -477,7 +477,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
     public static Date getDateBefore(Date date, int i) {
 		Calendar c = Calendar.getInstance();
 		c.setTime(date);
-		c.add(Calendar.DATE, -i);
+		c.add(Calendar.DATE, i);
 		return c.getTime();
     }
 }

+ 33 - 25
src/main/java/com/kede/wechat/service/impl/ConversationContentServiceImpl.java

@@ -151,12 +151,10 @@ public class ConversationContentServiceImpl extends BaseMybatisDao<ChatMsgUserMa
                     String str = String.valueOf(Finance.GetContentFromSlice(msg));
                     com.alibaba.fastjson.JSONObject jsonObject = com.alibaba.fastjson.JSONObject.parseObject(str);
                     String msgtype = jsonObject.getString("msgtype");
+                    Date earlyToday = DateUtils.getEarlyToday();
+                    Date date = DateUtils.getDateBefore(earlyToday, -1);
                     InputChatMsg chatMsg = new InputChatMsg(jsonObject);
-                    //获取五天前的时间
-                    Date date = DateUtils.getDateBefore(new Date(), 5);
-                    System.out.println(DateUtils.formatDate(date, "yyyy-MM-dd HH:mm:ss"));
-                    ChatMsg chatMsg1 = chatMsgMapper.selectByMsgId(chatMsg.getMsgid(),date);
-                    if (chatMsg1 == null){
+                    if (chatMsg.getMsgtime().getTime()>date.getTime()){
                         //处理数据
                         pushSmgType(msgtype, jsonObject, sdk, chatMsg);
                         list.add(chatMsg);
@@ -451,18 +449,22 @@ public class ConversationContentServiceImpl extends BaseMybatisDao<ChatMsgUserMa
             if(o!=null){
                 userName = o.toString();
             }
-            i= (Integer) maps.get("code");
-            System.out.println(userId+"="+userName);
+            map.put ("code", maps.get("code"));
+            chatMsgUser = new ChatMsgUser();
+            chatMsgUser.setUserId(userId);
+            chatMsgUser.setType(type);
+            chatMsgUser.setCreateTime(new Date());
             if (StringUtils.isNotBlank(userName)){
-                chatMsgUser = new ChatMsgUser();
-                chatMsgUser.setUserId(userId);
                 chatMsgUser.setName(userName);
-                chatMsgUser.setType(type);
-                chatMsgUser.setCreateTime(new Date());
-                chatMsgUserMapper.insert(chatMsgUser);
+                map.put("name",userName);
+            }
+            chatMsgUserMapper.insert(chatMsgUser);
+            if (StringUtils.isBlank(userName)){
+                String str = "未知(" + chatMsgUser.getId() + ")";
+                chatMsgUser.setName(str);
+                map.put("name",str);
+                chatMsgUserMapper.update(chatMsgUser);
             }
-            map.put("name",userName);
-            map.put("code",i);
             return map;
         }
     }
@@ -483,6 +485,7 @@ public class ConversationContentServiceImpl extends BaseMybatisDao<ChatMsgUserMa
         if (chatMsgUser != null){
             return chatMsgUser.getName();
         }else {
+            String roomname=null;
             //查询编号中有没有external
             String msgIdSub = chatMsg.getMsgid();
             int i = msgIdSub.indexOf("external");
@@ -492,7 +495,7 @@ public class ConversationContentServiceImpl extends BaseMybatisDao<ChatMsgUserMa
                 map.put("chat_id",roomid);
                 map.put("cursor",0);
                 com.alibaba.fastjson.JSONObject jsonObject = HttpUtils.httpPost(url, map);
-                String roomname = jsonObject.getString("roomname");
+                 roomname = jsonObject.getString("roomname");
                 if (StringUtils.isBlank(roomname)){
                     com.alibaba.fastjson.JSONObject groupChat = jsonObject.getJSONObject("group_chat");
                     if (groupChat!=null){
@@ -512,10 +515,10 @@ public class ConversationContentServiceImpl extends BaseMybatisDao<ChatMsgUserMa
                 map.put("roomid",roomid);
                 com.alibaba.fastjson.JSONObject jsonObject = HttpUtils.httpPost(url, map);
                 System.out.println(jsonObject.toJSONString());
-                String roomname = jsonObject.getString("roomname");
+                 roomname = jsonObject.getString("roomname");
                 if (StringUtils.isBlank(roomname)){
                     com.alibaba.fastjson.JSONObject groupChat = jsonObject.getJSONObject("group_chat");
-                    name = groupChat.getString("name");
+                    roomname = groupChat.getString("name");
                 }
                 if (jsonObject.getInteger("errcode")==0){
                 }else {
@@ -523,7 +526,16 @@ public class ConversationContentServiceImpl extends BaseMybatisDao<ChatMsgUserMa
                 }
 
             }
-
+            chatMsgUser = new ChatMsgUser();
+            chatMsgUser.setUserId(roomid);
+            chatMsgUser.setType(3);
+            chatMsgUser.setCreateTime(new Date());
+            if (StringUtils.isNotBlank(roomname)){
+                chatMsgUser.setName(roomname);
+            }
+            chatMsgUserMapper.insert(chatMsgUser);
+            chatMsgUser.setName("未知群("+chatMsgUser.getId()+")");
+            chatMsgUserMapper.update(chatMsgUser);
 
         }
 
@@ -616,17 +628,15 @@ public class ConversationContentServiceImpl extends BaseMybatisDao<ChatMsgUserMa
 
     private Map<String,Object> getUserName(String url,Integer type){
         String name = null;
-        Integer code=null;
+        Integer code=0;
         Map<String,Object> map=new HashMap<String, Object>();
         if (type==0) {
             name="机器人";
-            code=0;
         }else if (type==1){
                 com.alibaba.fastjson.JSONObject result = HttpUtils.httpGet(url);
                 if (result.getInteger("errcode")==0) {
                     System.out.println(result.toJSONString());
                     com.alibaba.fastjson.JSONObject externalContact = result.getJSONObject("external_contact");
-                    code = result.getInteger("errcode");
                     name=externalContact.getString("name");
                 }else {
                     code = result.getInteger("errcode");
@@ -638,17 +648,15 @@ public class ConversationContentServiceImpl extends BaseMybatisDao<ChatMsgUserMa
                 if (result.getInteger("errcode")==0) {
                     System.out.println(result.toJSONString());
                     com.alibaba.fastjson.JSONObject externalContact = result.getJSONObject("external_contact");
-                    code = result.getInteger("errcode");
                     name = result.getString("name");
                 }else {
                     System.out.println(result.toJSONString());
-                    System.out.println("获取内部联系人名称失败");
                     code = result.getInteger("errcode");
                 }
 
             }
-        if(name!=null)map.put("name",name);
-        if (code!=null)map.put("code",code);
+        map.put("name",name);
+        map.put("code",code);
         return map;
     }