Просмотр исходного кода

微信会话内容存储获取优化,下载暂时关闭

anderx месяцев назад: 6
Родитель
Сommit
ebde287cca

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

@@ -84,5 +84,6 @@ public interface ChatMsgMapper {
     ChatMsg selectByMsgId(String msgid);
     ChatMsg selectByMsgId(String msgid);
 
 
 
 
+    List<ChatMsg> selectMsgById(@Param("userId") String userId, @Param("type") Integer type);
 }
 }
 
 

+ 7 - 0
src/main/java/com/kede/common/dao/ChatMsgUserMapper.java

@@ -1,6 +1,7 @@
 package com.kede.common.dao;
 package com.kede.common.dao;
 
 
 import com.kede.common.model.ChatMsgUser;
 import com.kede.common.model.ChatMsgUser;
+import com.kede.wechat.bo.ChatMsgUserBo;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
 
 
 import java.util.List;
 import java.util.List;
@@ -80,5 +81,11 @@ public interface ChatMsgUserMapper {
     int deleteById(Integer id);
     int deleteById(Integer id);
 
 
     ChatMsgUser selectByUserId(String userId);
     ChatMsgUser selectByUserId(String userId);
+
+    List<ChatMsgUser> getUserList(@Param("type")Integer type);
+
+    List<ChatMsgUser>  selectMyIdByUser(String userId);
+
+    List<ChatMsgUser>  selectMyIdByRoom(String userId);
 }
 }
 
 

+ 17 - 0
src/main/java/com/kede/common/mapper/ChatMsgMapper.xml

@@ -251,5 +251,22 @@
         from chat_msg
         from chat_msg
         where msgid = #{id}
         where msgid = #{id}
     </select>
     </select>
+    <select id="selectMsgById" resultMap="ChatMsgMap">
+        select
+        <include refid="ChatMsgAllSql"/>
+        from chat_msg
+        where from_id = #{userId}
+        <if test="type != null">
+            and type = #{type}
+        </if>
+        union
+        select
+        <include refid="ChatMsgAllSql"/>
+        from chat_msg
+        where find_in_set(tolist,#{userId})
+        <if test="type != null">
+            and type = #{type}
+        </if>
+    </select>
 </mapper>
 </mapper>
 
 

+ 32 - 0
src/main/java/com/kede/common/mapper/ChatMsgUserMapper.xml

@@ -134,6 +134,38 @@
         from chat_msg_user
         from chat_msg_user
         where user_id = #{id}
         where user_id = #{id}
     </select>
     </select>
+    <select id="getUserList" resultMap="ChatMsgUserMap">
+        select
+        <include refid="ChatMsgUserAllSql"/>
+        from chat_msg_user
+        <where>
+        <if test="type != null">
+            and type = #{type}
+        </if>
+        </where>
+    </select>
+    <select id="selectMyIdByUser" resultMap="ChatMsgUserMap">
+        select x.user_id,b.name
+        from (select tolist user_id
+              from chat_msg
+              where from_id = #{userId} and type=0
+              union
+              select from_id user_id
+              from chat_msg
+              where find_in_set(#{userId},tolist) and type=0)x
+                 left join chat_msg_user b on x.user_id=b.user_id
+    </select>
+    <select id="selectMyIdByRoom" resultType="com.kede.common.model.ChatMsgUser">
+        select x.roomid user_id,b.name
+        from (select roomid
+              from chat_msg
+              where from_id = #{userId} and type=1
+              union
+              select roomid
+              from chat_msg
+              where find_in_set(#{userId},tolist) and type=1)x
+                 left join chat_msg_user b on x.roomid=b.user_id
+    </select>
 
 
 </mapper>
 </mapper>
 
 

+ 9 - 0
src/main/java/com/kede/wechat/bo/ChatMsgUserBo.java

@@ -0,0 +1,9 @@
+package com.kede.wechat.bo;
+
+import com.kede.common.model.ChatMsgUser;
+
+public class ChatMsgUserBo extends ChatMsgUser {
+
+
+
+}

+ 5 - 0
src/main/java/com/kede/wechat/bo/InputGetChatName.java

@@ -0,0 +1,5 @@
+package com.kede.wechat.bo;
+
+public class InputGetChatName {
+
+}

+ 43 - 0
src/main/java/com/kede/wechat/bo/InputgetUserMsg.java

@@ -0,0 +1,43 @@
+package com.kede.wechat.bo;
+
+public class InputgetUserMsg {
+
+    private String userId;
+    private Integer msgType;
+    private String foId;
+    private String roomId;
+
+    public Integer getMsgType() {
+        return msgType;
+    }
+
+    public void setMsgType(Integer msgType) {
+        this.msgType = msgType;
+    }
+
+
+
+    public String getUserId() {
+        return userId;
+    }
+
+    public void setUserId(String userId) {
+        this.userId = userId;
+    }
+
+    public String getFoId() {
+        return foId;
+    }
+
+    public void setFoId(String foId) {
+        this.foId = foId;
+    }
+
+    public String getRoomId() {
+        return roomId;
+    }
+
+    public void setRoomId(String roomId) {
+        this.roomId = roomId;
+    }
+}

+ 36 - 1
src/main/java/com/kede/wechat/controller/ConversationContentController.java

@@ -2,13 +2,14 @@ package com.kede.wechat.controller;
 
 
 
 
 import com.kede.common.controller.BaseController;
 import com.kede.common.controller.BaseController;
+import com.kede.wechat.bo.InputGetChatName;
+import com.kede.wechat.bo.InputgetUserMsg;
 import com.kede.wechat.service.ConversationContentService;
 import com.kede.wechat.service.ConversationContentService;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RestController;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
-import java.util.List;
 import java.util.Map;
 import java.util.Map;
 
 
 @RestController
 @RestController
@@ -48,4 +49,38 @@ public class ConversationContentController extends BaseController {
         return conversationContentService.getPermitUserList();
         return conversationContentService.getPermitUserList();
     }
     }
 
 
+    /**
+     * 数据解析
+     */
+    @RequestMapping(value = "/getMsgData",  method = RequestMethod.GET)
+    public Object getMsgData(InputGetChatName in)
+    {
+        return conversationContentService.getMsgData(in);
+    }
+
+    /**
+     * 数据解析
+     */
+    @RequestMapping(value = "/getUserMsg",  method = RequestMethod.GET)
+    public Object getUserMsg(InputgetUserMsg in)
+    {
+        return conversationContentService.getUserMsg(in);
+    }
+
+    /**
+     * 查看单聊列表
+     */
+    @RequestMapping(value = "/getMyIdByUser",  method = RequestMethod.GET)
+    public Object getMyIdByUser(InputgetUserMsg in)
+    {
+        return conversationContentService.getMyIdByUser(in);
+    }
+    /**
+     * 查看群聊列表
+     */
+    @RequestMapping(value = "/getMyIdByRoom",  method = RequestMethod.GET)
+    public Object getMyIdByRoom(InputgetUserMsg in)
+    {
+        return conversationContentService.getMyIdByRoom(in);
+    }
 }
 }

+ 10 - 0
src/main/java/com/kede/wechat/service/ConversationContentService.java

@@ -2,6 +2,8 @@ package com.kede.wechat.service;
 
 
 
 
 import com.kede.common.model.ChatMsg;
 import com.kede.common.model.ChatMsg;
+import com.kede.wechat.bo.InputGetChatName;
+import com.kede.wechat.bo.InputgetUserMsg;
 
 
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
@@ -18,4 +20,12 @@ public interface ConversationContentService {
     Map<String,Object> pushGetChatName(String msg);
     Map<String,Object> pushGetChatName(String msg);
 
 
     String pushGetRoomName(ChatMsg chatMsg);
     String pushGetRoomName(ChatMsg chatMsg);
+
+    Object getMsgData(InputGetChatName in);
+
+    Object getUserMsg(InputgetUserMsg in);
+
+    Object getMyIdByUser(InputgetUserMsg in);
+
+    Object getMyIdByRoom(InputgetUserMsg in);
 }
 }

+ 66 - 1
src/main/java/com/kede/wechat/service/impl/ConversationContentServiceImpl.java

@@ -7,7 +7,11 @@ import com.kede.common.utils.DateUtils;
 import com.kede.common.utils.HttpUtils;
 import com.kede.common.utils.HttpUtils;
 import com.kede.common.utils.RSAEncrypt;
 import com.kede.common.utils.RSAEncrypt;
 import com.kede.common.utils.StringUtils;
 import com.kede.common.utils.StringUtils;
+import com.kede.core.mybatis.BaseMybatisDao;
+import com.kede.wechat.bo.ChatMsgUserBo;
 import com.kede.wechat.bo.InputChatMsg;
 import com.kede.wechat.bo.InputChatMsg;
+import com.kede.wechat.bo.InputGetChatName;
+import com.kede.wechat.bo.InputgetUserMsg;
 import com.kede.wechat.service.ConversationContentService;
 import com.kede.wechat.service.ConversationContentService;
 import com.tencent.wework.Finance;
 import com.tencent.wework.Finance;
 import org.json.JSONArray;
 import org.json.JSONArray;
@@ -24,11 +28,12 @@ import java.io.File;
 import java.io.FileOutputStream;
 import java.io.FileOutputStream;
 import java.io.UnsupportedEncodingException;
 import java.io.UnsupportedEncodingException;
 import java.util.*;
 import java.util.*;
+import java.util.stream.Collectors;
 
 
 import static sun.plugin2.os.windows.OSVERSIONINFOA.size;
 import static sun.plugin2.os.windows.OSVERSIONINFOA.size;
 
 
 @Service("ConversationContentService")
 @Service("ConversationContentService")
-public class ConversationContentServiceImpl implements ConversationContentService {
+public class ConversationContentServiceImpl extends BaseMybatisDao<ChatMsgUserMapper> implements ConversationContentService {
 
 
     Logger logger = LoggerFactory.getLogger(ConversationContentServiceImpl.class);
     Logger logger = LoggerFactory.getLogger(ConversationContentServiceImpl.class);
     @Resource
     @Resource
@@ -528,6 +533,66 @@ public class ConversationContentServiceImpl implements ConversationContentServic
         return name;
         return name;
     }
     }
 
 
+    @Override
+    public Object getMsgData(InputGetChatName in) {
+
+        List<ChatMsgUser> list = chatMsgUserMapper.getUserList(2);
+        list.forEach(e->{
+           //查询每个人的所有信息
+            List<ChatMsg> chatMsgs = chatMsgMapper.selectMsgById(e.getUserId(),null);
+            List<ChatMsg> collect = chatMsgs.stream().filter(e1 -> e1.getType().equals(0)).collect(Collectors.toList());
+            List<ChatMsg> collect1 = chatMsgs.stream().filter(e1 -> e1.getType().equals(1)).collect(Collectors.toList());
+            List<String> toUser=new ArrayList<>();
+            List<String> toList=new ArrayList<>();
+            collect.forEach(e1->{
+                if (e1.getFromId().equals(e.getUserId())){
+                    if (!toUser.contains(e1.getTolist())){
+                        toUser.add(e1.getTolist());
+                    }
+                }else {
+                    if (!toUser.contains(e1.getFromId())){
+                        toUser.add(e1.getFromId());
+                    }
+                }
+            });
+            collect1.forEach(e1->{
+                if (e1.getFromId().equals(e.getUserId())){
+                    if (!toList.contains(e1.getRoomid())){
+                        toList.add(e1.getRoomid());
+                    }
+                }else {
+                    if (!toList.contains(e1.getRoomid())){
+                        toList.add(e1.getRoomid());
+                    }
+                }
+            });
+            System.out.println(e.getName()+"单聊有:");
+            toUser.forEach(System.out::println);
+            System.out.println("================================");
+            System.out.println(e.getName()+"群聊有:");
+            toList.forEach(System.out::println);
+        });
+
+        return list;
+    }
+
+    @Override
+    public Object getUserMsg(InputgetUserMsg in) {
+       List<ChatMsgUser> list = chatMsgUserMapper.getUserList(2);
+       return list;
+
+    }
+
+    @Override
+    public Object getMyIdByUser(InputgetUserMsg in) {
+        return chatMsgUserMapper.selectMyIdByUser(in.getUserId());
+    }
+
+    @Override
+    public Object getMyIdByRoom(InputgetUserMsg in) {
+        return chatMsgUserMapper.selectMyIdByRoom(in.getUserId());
+    }
+
 
 
     private Map<String,Object> getUserName(String url,Integer type){
     private Map<String,Object> getUserName(String url,Integer type){
         String name = null;
         String name = null;