|
|
@@ -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;
|
|
|
}
|
|
|
|