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

优化CID消息回调接口回显内容

cgp 1 неделя назад
Родитель
Сommit
83dd915f9b

+ 22 - 3
fs-service/src/main/java/com/fs/wxcid/dto/callback/ReturnMessage.java

@@ -4,8 +4,27 @@ import lombok.Data;
 
 @Data
 public class ReturnMessage {
-    //消息来源Id
+    // 唯一标识(来自外层 key)
+    private String authkey;
+
+    // 消息Id(message.msg_id)
+    private Long msgId;
+
+    // 消息来源Id(message.from_user_name.str)
     private String fromWxId;
-    //消息内容
+
+    // 消息内容(message.content.str)
     private String text;
-}
+
+    // 消息类型(message.msg_type)
+    private Integer msgType;
+
+    // 消息时间(message.create_time)
+    private Long time;
+
+    // 接收人Id(message.to_user_name.str)
+    private String toWxId;
+
+    // 消息状态(message.status)
+    private Integer status;
+}

+ 54 - 14
fs-service/src/main/java/com/fs/wxcid/service/impl/MessageCallbackServiceImpl.java

@@ -23,25 +23,65 @@ public class MessageCallbackServiceImpl implements MessageCallbackService {
 
     @Override
     public ReturnMessage returnMessage(Map<String, Object> callback) {
-        // 安全地获取 key
-        String key = (String) callback.get("key");
+        ReturnMessage returnMessage = new ReturnMessage();
 
-        // 获取 message 子对象(也是一个 Map)
+        // 外层 key
+        returnMessage.setAuthkey((String) callback.get("key"));
+
+        // 获取 message 子对象
         Map<String, Object> message = (Map<String, Object>) callback.get("message");
-        ReturnMessage returnMessage=new ReturnMessage();
         if (message != null) {
-            // 获取嵌套的 from_user_name -> str
-            Map<String, String> fromUser = (Map<String, String>) message.get("from_user_name");
-            String fromWxId = fromUser != null ? fromUser.get("str") : null;
+            // msg_id: 可能是 Long 或 Integer,统一转为 Long
+            Object msgIdObj = message.get("msg_id");
+            if (msgIdObj != null) {
+                returnMessage.setMsgId(msgIdObj instanceof Number ? ((Number) msgIdObj).longValue() : Long.valueOf(msgIdObj.toString()));
+            }
+
+            // from_user_name.str
+            Map<?, ?> fromUser = (Map<?, ?>) message.get("from_user_name");
+            if (fromUser != null) {
+                returnMessage.setFromWxId((String) fromUser.get("str"));
+            }
+
+            // to_user_name.str
+            Map<?, ?> toUser = (Map<?, ?>) message.get("to_user_name");
+            if (toUser != null) {
+                returnMessage.setToWxId((String) toUser.get("str"));
+            }
+
+            // content.str
+            Map<?, ?> content = (Map<?, ?>) message.get("content");
+            if (content != null) {
+                returnMessage.setText((String) content.get("str"));
+            }
+
+            // msg_type
+            Object msgTypeObj = message.get("msg_type");
+            if (msgTypeObj != null) {
+                returnMessage.setMsgType(msgTypeObj instanceof Number ? ((Number) msgTypeObj).intValue() : Integer.valueOf(msgTypeObj.toString()));
+            }
+
+            // create_time
+            Object timeObj = message.get("create_time");
+            if (timeObj != null) {
+                returnMessage.setTime(timeObj instanceof Number ? ((Number) timeObj).longValue() : Long.valueOf(timeObj.toString()));
+            }
+
+            // status
+            Object statusObj = message.get("status");
+            if (statusObj != null) {
+                returnMessage.setStatus(statusObj instanceof Number ? ((Number) statusObj).intValue() : Integer.valueOf(statusObj.toString()));
+            }
+        }
 
-            // 获取 content
-            Map<String, String> contentWrapper = (Map<String, String>) message.get("content");
-            String text = contentWrapper != null ? contentWrapper.get("str") : null;
+        log.info("接收到回调消息, 发送者id: {}, 接收者id: {}, 消息内容: {}, 消息类型: {}, 状态: {}, 时间: {}",
+                returnMessage.getFromWxId(),
+                returnMessage.getToWxId(),
+                returnMessage.getText(),
+                returnMessage.getMsgType(),
+                returnMessage.getStatus(),
+                returnMessage.getTime());
 
-            returnMessage.setFromWxId(fromWxId);
-            returnMessage.setText(text);
-        }
-        log.info("接收到回调消息,发送者id:{},发送内容:{}", returnMessage.getFromWxId(),returnMessage.getText());
         return returnMessage;
     }