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

微信会话内容存储开发

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

+ 115 - 1
src/main/java/com/kede/wechat/bo/ChatMsg.java

@@ -1,4 +1,118 @@
-package com.kede.wechat.bo;
+package com.kede.wechat.bo;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import javafx.scene.text.Text;
+
+import java.util.List;
+import java.util.Map;
 
 public class ChatMsg {
+//    {\"msgid\":\"1634016854685227651_1749628622146_external\",\"action\":\"send\"," +
+//            "\"from\":\"wopeIoCwAArS1POCA5Fiw6VidWWqkwVA\",\"tolist\":[\"KaKa\"],\"roomid\":\"\",\"msgtime\":1749628618742,\"msgtype\":\"text\",\"" +
+//            "text\":{\"content\":\"您好,请详细描述您的问题,以便更快得到解答!\"}}";
+    private String msgid;
+    private String action;
+    private String from;
+    private List<String> tolist;
+    private String roomid;
+    private Long msgtime;
+    private String msgtype;
+    private String content;
+
+    public ChatMsg() {
+    }
+
+    public ChatMsg(JSONObject jsonObject) {
+        this.msgid = jsonObject.getString("msgid");
+        this.action = jsonObject.getString("action");
+        this.from = jsonObject.getString("from");
+        JSONArray tolist1 = jsonObject.getJSONArray("tolist");
+        this.tolist =tolist1.toJavaList(String.class);
+        this.roomid = jsonObject.getString("roomid");
+        this.msgtime = jsonObject.getLong("msgtime");
+        this.msgtype = jsonObject.getString("msgtype");
+        JSONObject text = jsonObject.getJSONObject("text");
+        this.content = text.getString("content");
+    }
+
+
+    public String getMsgid() {
+        return msgid;
+    }
+
+    public void setMsgid(String msgid) {
+        this.msgid = msgid;
+    }
+
+    public String getAction() {
+        return action;
+    }
+
+    public void setAction(String action) {
+        this.action = action;
+    }
+
+    public String getFrom() {
+        return from;
+    }
+
+    public void setFrom(String from) {
+        this.from = from;
+    }
+
+    public List<String> getTolist() {
+        return tolist;
+    }
+
+    public void setTolist(List<String> tolist) {
+        this.tolist = tolist;
+    }
+
+    public String getRoomid() {
+        return roomid;
+    }
+
+    public void setRoomid(String roomid) {
+        this.roomid = roomid;
+    }
+
+    public Long getMsgtime() {
+        return msgtime;
+    }
+
+    public void setMsgtime(Long msgtime) {
+        this.msgtime = msgtime;
+    }
+
+    public String getMsgtype() {
+        return msgtype;
+    }
+
+    public void setMsgtype(String msgtype) {
+        this.msgtype = msgtype;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    @Override
+    public String toString() {
+        final StringBuffer sb = new StringBuffer("ChatMsg{");
+        sb.append("msgid='").append(msgid).append('\'');
+        sb.append(", action='").append(action).append('\'');
+        sb.append(", from='").append(from).append('\'');
+        sb.append(", tolist=").append(tolist);
+        sb.append(", roomid='").append(roomid).append('\'');
+        sb.append(", msgtime=").append(msgtime);
+        sb.append(", msgtype='").append(msgtype).append('\'');
+        sb.append(", content='").append(content).append('\'');
+        sb.append('}');
+        return sb.toString();
+    }
 }

+ 29 - 5
src/main/java/com/kede/wechat/service/impl/ConversationContentServiceImpl.java

@@ -1,4 +1,4 @@
-package com.kede.wechat.service.impl;
+package com.kede.wechat.service.impl;
 
 import com.kede.common.utils.DateUtils;
 import com.kede.common.utils.HttpUtils;
@@ -15,7 +15,6 @@ import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.sql.SQLOutput;
 import java.util.*;
 
 @Service("ConversationContentService")
@@ -25,6 +24,7 @@ public class ConversationContentServiceImpl implements ConversationContentServic
     @Resource
     private RedisTemplate redisTemplate;
 
+
     @Value(value = "${conversationContent.corpid}")
     private String corpid;
     @Value(value = "${conversationContent.secret}")
@@ -141,8 +141,6 @@ public class ConversationContentServiceImpl implements ConversationContentServic
             logger.debug("getAccessToken有缓存从缓存获取");
             accessToken = accessMap.get("accessToken");
             Long expireDate = Long.valueOf(accessMap.get("expireDate"));
-            System.out.println(expireDate);
-            System.out.println(System.currentTimeMillis());
             if (expireDate < System.currentTimeMillis()){
                 logger.debug("getAccessToken缓存已过期从接口获取");
                 Map<String, String> map = getAccessMap();
@@ -176,8 +174,34 @@ public class ConversationContentServiceImpl implements ConversationContentServic
                 "text\":{\"content\":\"您好,请详细描述您的问题,以便更快得到解答!\"}}";
         com.alibaba.fastjson.JSONObject jsonObject = com.alibaba.fastjson.JSONObject.parseObject(msg);
         //直接转成对象
-        ChatMsg chatMsg = com.alibaba.fastjson.JSONObject.toJavaObject(jsonObject, ChatMsg.class);
+        ChatMsg chatMsg = new ChatMsg(jsonObject);
         System.out.println(chatMsg);
+        String msgIdSub = chatMsg.getMsgid().substring(0, 2);
+        String url=null;
+        if (msgIdSub.equals("wb")){
+            System.out.println("wb=机器人");
+            url=String.format("https://qyapi.weixin.qq.com/cgi-bin/msgaudit/get_robot_info??access_token=%s&robot_id=%s",getAccessToken(),chatMsg.getFrom());
+        }else if (msgIdSub.equals("wo")||msgIdSub.equals("wm")){
+            System.out.println("wo=外部联系人");
+            url=String.format("https://qyapi.weixin.qq.com/cgi-bin/externalcontact/get?access_token=%s&external_userid=%s",getAccessToken(),chatMsg.getFrom());
+        }else {
+            System.out.println("=内部联系人");
+            url=String.format("https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token=%s&userid=%s",getAccessToken(),chatMsg.getFrom());
+        }
+        getUserData(url);
+    }
+
+
+    private void getUserData(String url){
+        System.out.println("url="+ url);
+        com.alibaba.fastjson.JSONObject result = HttpUtils.httpGet(url);
+        if (result.getInteger("errcode")==0){
+            System.out.println(result.toJSONString());
+        }else {
+            System.out.println(result.toJSONString());
+            System.out.println("获取会话内容存档成员列表失败");
+        }
+
     }