🎨 #3827【企业微信】修复群聊变更事件MemChangeList字段命名规范问题
This commit is contained in:
@@ -157,7 +157,7 @@ public class WxCpXmlMessage implements Serializable {
|
|||||||
|
|
||||||
@XStreamAlias("MemChangeList")
|
@XStreamAlias("MemChangeList")
|
||||||
@XStreamConverter(value = XStreamCDataConverter.class)
|
@XStreamConverter(value = XStreamCDataConverter.class)
|
||||||
private String MemChangeList;
|
private String memChangeList;
|
||||||
|
|
||||||
@XStreamAlias("LastMemVer")
|
@XStreamAlias("LastMemVer")
|
||||||
@XStreamConverter(value = XStreamCDataConverter.class)
|
@XStreamConverter(value = XStreamCDataConverter.class)
|
||||||
|
|||||||
@@ -497,4 +497,78 @@ public class WxCpXmlMessageTest {
|
|||||||
assertEquals(wxMessage.getRobotId(), "robot_id_123");
|
assertEquals(wxMessage.getRobotId(), "robot_id_123");
|
||||||
assertEquals(wxMessage.getSessionId(), "session_id_456");
|
assertEquals(wxMessage.getSessionId(), "session_id_456");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test external chat change event
|
||||||
|
* 测试企业微信群聊变更事件解析 - 群成员变更场景
|
||||||
|
*/
|
||||||
|
public void testExternalChatChangeEvent() {
|
||||||
|
// 测试群成员加入事件
|
||||||
|
String xmlAddMember = "<xml>"
|
||||||
|
+ "<ToUserName><![CDATA[toUser]]></ToUserName>"
|
||||||
|
+ "<FromUserName><![CDATA[sys]]></FromUserName>"
|
||||||
|
+ "<CreateTime>1403610513</CreateTime>"
|
||||||
|
+ "<MsgType><![CDATA[event]]></MsgType>"
|
||||||
|
+ "<Event><![CDATA[change_external_chat]]></Event>"
|
||||||
|
+ "<ChangeType><![CDATA[update]]></ChangeType>"
|
||||||
|
+ "<ChatId><![CDATA[wrOgQhDgAAMYQiS5ol9G7gK9JVAAAA]]></ChatId>"
|
||||||
|
+ "<UpdateDetail><![CDATA[add_member]]></UpdateDetail>"
|
||||||
|
+ "<JoinScene>1</JoinScene>"
|
||||||
|
+ "<MemChangeCnt>2</MemChangeCnt>"
|
||||||
|
+ "<MemChangeList><![CDATA[wmEJiCwAAA9KG2qlSq6rKwASSgAAAA,wmEJiCwAAA9KG2qlSq6rKwBBBBBBB]]></MemChangeList>"
|
||||||
|
+ "</xml>";
|
||||||
|
WxCpXmlMessage wxMessage = WxCpXmlMessage.fromXml(xmlAddMember);
|
||||||
|
assertEquals(wxMessage.getToUserName(), "toUser");
|
||||||
|
assertEquals(wxMessage.getFromUserName(), "sys");
|
||||||
|
assertEquals(wxMessage.getCreateTime(), Long.valueOf(1403610513L));
|
||||||
|
assertEquals(wxMessage.getMsgType(), WxConsts.XmlMsgType.EVENT);
|
||||||
|
assertEquals(wxMessage.getEvent(), WxCpConsts.EventType.CHANGE_EXTERNAL_CHAT);
|
||||||
|
assertEquals(wxMessage.getChangeType(), "update");
|
||||||
|
assertEquals(wxMessage.getChatId(), "wrOgQhDgAAMYQiS5ol9G7gK9JVAAAA");
|
||||||
|
assertEquals(wxMessage.getUpdateDetail(), "add_member");
|
||||||
|
assertEquals(wxMessage.getJoinScene(), "1");
|
||||||
|
assertEquals(wxMessage.getMemChangeCnt(), "2");
|
||||||
|
assertEquals(wxMessage.getMemChangeList(), "wmEJiCwAAA9KG2qlSq6rKwASSgAAAA,wmEJiCwAAA9KG2qlSq6rKwBBBBBBB");
|
||||||
|
|
||||||
|
// 测试群成员退出事件
|
||||||
|
String xmlDelMember = "<xml>"
|
||||||
|
+ "<ToUserName><![CDATA[toUser]]></ToUserName>"
|
||||||
|
+ "<FromUserName><![CDATA[sys]]></FromUserName>"
|
||||||
|
+ "<CreateTime>1403610513</CreateTime>"
|
||||||
|
+ "<MsgType><![CDATA[event]]></MsgType>"
|
||||||
|
+ "<Event><![CDATA[change_external_chat]]></Event>"
|
||||||
|
+ "<ChangeType><![CDATA[update]]></ChangeType>"
|
||||||
|
+ "<ChatId><![CDATA[wrOgQhDgAAMYQiS5ol9G7gK9JVAAAA]]></ChatId>"
|
||||||
|
+ "<UpdateDetail><![CDATA[del_member]]></UpdateDetail>"
|
||||||
|
+ "<QuitScene>1</QuitScene>"
|
||||||
|
+ "<MemChangeCnt>1</MemChangeCnt>"
|
||||||
|
+ "<MemChangeList><![CDATA[wmEJiCwAAA9KG2qlSq6rKwASSgAAAA]]></MemChangeList>"
|
||||||
|
+ "</xml>";
|
||||||
|
WxCpXmlMessage wxMessage2 = WxCpXmlMessage.fromXml(xmlDelMember);
|
||||||
|
assertEquals(wxMessage2.getEvent(), WxCpConsts.EventType.CHANGE_EXTERNAL_CHAT);
|
||||||
|
assertEquals(wxMessage2.getChangeType(), "update");
|
||||||
|
assertEquals(wxMessage2.getChatId(), "wrOgQhDgAAMYQiS5ol9G7gK9JVAAAA");
|
||||||
|
assertEquals(wxMessage2.getUpdateDetail(), "del_member");
|
||||||
|
assertEquals(wxMessage2.getQuitScene(), "1");
|
||||||
|
assertEquals(wxMessage2.getMemChangeCnt(), "1");
|
||||||
|
assertEquals(wxMessage2.getMemChangeList(), "wmEJiCwAAA9KG2qlSq6rKwASSgAAAA");
|
||||||
|
|
||||||
|
// 测试空MemChangeList场景(某些情况下可能没有成员变更列表)
|
||||||
|
String xmlNoMemChangeList = "<xml>"
|
||||||
|
+ "<ToUserName><![CDATA[toUser]]></ToUserName>"
|
||||||
|
+ "<FromUserName><![CDATA[sys]]></FromUserName>"
|
||||||
|
+ "<CreateTime>1403610513</CreateTime>"
|
||||||
|
+ "<MsgType><![CDATA[event]]></MsgType>"
|
||||||
|
+ "<Event><![CDATA[change_external_chat]]></Event>"
|
||||||
|
+ "<ChangeType><![CDATA[update]]></ChangeType>"
|
||||||
|
+ "<ChatId><![CDATA[wrOgQhDgAAMYQiS5ol9G7gK9JVAAAA]]></ChatId>"
|
||||||
|
+ "<UpdateDetail><![CDATA[change_name]]></UpdateDetail>"
|
||||||
|
+ "</xml>";
|
||||||
|
WxCpXmlMessage wxMessage3 = WxCpXmlMessage.fromXml(xmlNoMemChangeList);
|
||||||
|
assertEquals(wxMessage3.getEvent(), WxCpConsts.EventType.CHANGE_EXTERNAL_CHAT);
|
||||||
|
assertEquals(wxMessage3.getChangeType(), "update");
|
||||||
|
assertEquals(wxMessage3.getUpdateDetail(), "change_name");
|
||||||
|
// 当XML中没有MemChangeList元素时,字段应该为null而不是空字符串
|
||||||
|
assertThat(wxMessage3.getMemChangeList()).isNull();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user