Przeglądaj źródła

微信会话内容存储新增图片、文件获取

anderx 6 miesięcy temu
rodzic
commit
75a940222f

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

@@ -142,8 +142,10 @@ public class ConversationContentServiceImpl implements ConversationContentServic
                 System.out.println("获取slice内容======="+jsonObject);
                     String msgtype = jsonObject.getString("msgtype");
                     InputChatMsg chatMsg = new InputChatMsg(jsonObject);
-                    String url=pushFileUrl(sdk,ret,jsonObject);
-                    chatMsg.setContent(url);
+                    if(msgtype.equals("file")||msgtype.equals("image")){
+                        String url=pushFileUrl(sdk,msgtype,jsonObject);
+                        chatMsg.setContent(url);
+                    }
                     list.add(chatMsg);
 
                 } catch (Exception e) {
@@ -160,10 +162,10 @@ public class ConversationContentServiceImpl implements ConversationContentServic
     return map;
     }
 
-    private String pushFileUrl(long sdk, long ret, com.alibaba.fastjson.JSONObject jsonObject) {
+    private String pushFileUrl(long sdk, String msgtype, com.alibaba.fastjson.JSONObject jsonObject) {
         String url = uploadPath;
         String sdkfileid=null;
-        String msgtype = jsonObject.getString("msgtype");
+
         if (msgtype.equals("file")){
             com.alibaba.fastjson.JSONObject file = jsonObject.getJSONObject("file");
             String filename = file.getString("filename");
@@ -189,7 +191,7 @@ public class ConversationContentServiceImpl implements ConversationContentServic
         while(true){
             //每次使用GetMediaData拉取存档前需要调用NewMediaData获取一个media_data,在使用完media_data中数据后,还需要调用FreeMediaData释放。
             long media_data = Finance.NewMediaData();
-            ret = Finance.GetMediaData(sdk, indexbuf, sdkfileid, null, null, 3, media_data);
+            int ret = Finance.GetMediaData(sdk, indexbuf, sdkfileid, null, null, 3, media_data);
             if(ret!=0){
                 System.out.println("getmediadata ret:" + ret);
                 Finance.FreeMediaData(media_data);