From 52ac2864ba27720c8ab19330f3742ba51d8f54d2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 24 Sep 2025 07:32:57 +0000 Subject: [PATCH 1/2] Initial plan From 8b81d4560b6943b27c6c54dbf8e50e7265bb9c54 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 24 Sep 2025 07:43:26 +0000 Subject: [PATCH 2/2] Fix MsgId type from Long to String in WxCpXmlMessage and update tests Co-authored-by: binarywang <1343140+binarywang@users.noreply.github.com> --- .../cp/bean/message/WxCpXmlMessage.java | 2 +- .../cp/bean/message/WxCpXmlMessageTest.java | 31 ++++++++++++++++++- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/message/WxCpXmlMessage.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/message/WxCpXmlMessage.java index e37229cf8e..c5e55220e5 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/message/WxCpXmlMessage.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/message/WxCpXmlMessage.java @@ -92,7 +92,7 @@ public class WxCpXmlMessage implements Serializable { private String content; @XStreamAlias("MsgId") - private Long msgId; + private String msgId; @XStreamAlias("PicUrl") @XStreamConverter(value = XStreamCDataConverter.class) diff --git a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/message/WxCpXmlMessageTest.java b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/message/WxCpXmlMessageTest.java index 5bcfe9698a..ae4fbba8f6 100644 --- a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/message/WxCpXmlMessageTest.java +++ b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/message/WxCpXmlMessageTest.java @@ -72,7 +72,7 @@ public void testFromXml() { assertEquals(wxMessage.getCreateTime(), Long.valueOf(1348831860)); assertEquals(wxMessage.getMsgType(), WxConsts.XmlMsgType.TEXT); assertEquals(wxMessage.getContent(), "this is a test"); - assertEquals(wxMessage.getMsgId(), Long.valueOf(1234567890123456L)); + assertEquals(wxMessage.getMsgId(), "1234567890123456"); assertEquals(wxMessage.getPicUrl(), "this is a url"); assertEquals(wxMessage.getMediaId(), "media_id"); assertEquals(wxMessage.getFormat(), "Format"); @@ -442,4 +442,33 @@ public void testUploadMediaJobFinishEvent() { assertThat(wxCpXmlMessage.getJobId()).isEqualTo("jobid_S0MrnndvRG5fadSlLwiBqiDDbM143UqTmKP3152FZk4"); assertThat(wxCpXmlMessage.getEvent()).isEqualTo(UPLOAD_MEDIA_JOB_FINISH); } + + /** + * Test both numeric and string msgId formats to ensure backward compatibility + */ + public void testMsgIdStringAndNumericFormats() { + // Test with numeric msgId (old format) + String xmlWithNumeric = "" + + "" + + "" + + "1348831860" + + "" + + "" + + "1234567890123456" + + ""; + WxCpXmlMessage wxMessageNumeric = WxCpXmlMessage.fromXml(xmlWithNumeric); + assertEquals(wxMessageNumeric.getMsgId(), "1234567890123456"); + + // Test with string msgId (new format - the actual issue case) + String xmlWithString = "" + + "" + + "" + + "1348831860" + + "" + + "" + + "CAIQg/PKxgYY2sC9tpuAgAMg9/zKaw==" + + ""; + WxCpXmlMessage wxMessageString = WxCpXmlMessage.fromXml(xmlWithString); + assertEquals(wxMessageString.getMsgId(), "CAIQg/PKxgYY2sC9tpuAgAMg9/zKaw=="); + } }