Skip to content

Commit 4945465

Browse files
thomas2050binarywang
authored andcommitted
#1037 修复通讯录变更事件ExtAttr解析报错,并补充Address属性
* 新增跳转型会员卡,用户提交资料的信息参数解析 * 修复通讯录变更事件ExtAttr解析报错,并补充Address属性
1 parent a16e0f4 commit 4945465

File tree

2 files changed

+46
-1
lines changed

2 files changed

+46
-1
lines changed

weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpXmlMessage.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import java.util.List;
99
import java.util.Map;
1010

11+
import com.thoughtworks.xstream.annotations.XStreamImplicit;
1112
import org.apache.commons.io.IOUtils;
1213

1314
import com.thoughtworks.xstream.annotations.XStreamAlias;
@@ -247,6 +248,13 @@ public class WxCpXmlMessage implements Serializable {
247248
@XStreamConverter(value = XStreamCDataConverter.class)
248249
private String telephone;
249250

251+
/**
252+
* 地址.
253+
*/
254+
@XStreamAlias("Address")
255+
@XStreamConverter(value = XStreamCDataConverter.class)
256+
private String address;
257+
250258
/**
251259
* 扩展属性.
252260
*/
@@ -327,17 +335,20 @@ public class WxCpXmlMessage implements Serializable {
327335
*/
328336
@XStreamAlias("TotalCount")
329337
private Integer totalCount;
338+
330339
/**
331340
* 过滤.
332341
* (过滤是指特定地区、性别的过滤、用户设置拒收的过滤,用户接收已超4条的过滤)后,准备发送的粉丝数,原则上,filterCount = sentCount + errorCount
333342
*/
334343
@XStreamAlias("FilterCount")
335344
private Integer filterCount;
345+
336346
/**
337347
* 发送成功的粉丝数.
338348
*/
339349
@XStreamAlias("SentCount")
340350
private Integer sentCount;
351+
341352
/**
342353
* 发送失败的粉丝数.
343354
*/
@@ -411,9 +422,11 @@ public static class ScanCodeInfo {
411422

412423
@Data
413424
public static class ExtAttr {
414-
@XStreamAlias("Item")
425+
426+
@XStreamImplicit(itemFieldName = "Item")
415427
protected final List<Item> items = new ArrayList<>();
416428

429+
@XStreamAlias("Item")
417430
@Data
418431
public static class Item {
419432
@XStreamAlias("Name")

weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/WxCpXmlMessageTest.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,4 +117,36 @@ public void testSendPicsInfo() {
117117
assertEquals(wxMessage.getSendPicsInfo().getPicList().get(0).getPicMd5Sum(), "aef52ae501537e552725c5d7f99c1741");
118118
assertEquals(wxMessage.getSendPicsInfo().getPicList().get(1).getPicMd5Sum(), "c4564632a4fab91378c39bea6aad6f9e");
119119
}
120+
121+
public void testExtAttr() {
122+
123+
String xml = "<xml>" +
124+
" <ToUserName><![CDATA[w56c9fe3d50ad1ea2]]></ToUserName>" +
125+
" <FromUserName><![CDATA[sys]]></FromUserName>" +
126+
" <CreateTime>1557241961</CreateTime>" +
127+
" <MsgType><![CDATA[event]]></MsgType>" +
128+
" <Event><![CDATA[change_contact]]></Event>" +
129+
" <ChangeType><![CDATA[update_user]]></ChangeType>" +
130+
" <UserID><![CDATA[zhangsan]]></UserID>" +
131+
" <ExtAttr>" +
132+
" <Item><Name><![CDATA[爱好]]></Name><Value><![CDATA[111]]></Value><Text><Value><![CDATA[111]]></Value></Text></Item>" +
133+
" <Item><Name><![CDATA[入职时间]]></Name><Value><![CDATA[11111]]></Value><Text><Value><![CDATA[11111]]></Value></Text></Item>" +
134+
" <Item><Name><![CDATA[城市]]></Name><Value><![CDATA[11111]]></Value><Text><Value><![CDATA[11111]]></Value></Text></Item>" +
135+
" </ExtAttr>" +
136+
" <Address><![CDATA[11111]]></Address>" +
137+
"</xml>";
138+
WxCpXmlMessage wxMessage = WxCpXmlMessage.fromXml(xml);
139+
assertEquals(wxMessage.getToUserName(), "w56c9fe3d50ad1ea2");
140+
assertEquals(wxMessage.getFromUserName(), "sys");
141+
assertEquals(wxMessage.getCreateTime(), new Long(1557241961));
142+
assertEquals(wxMessage.getMsgType(), WxConsts.XmlMsgType.EVENT);
143+
assertEquals(wxMessage.getEvent(), "change_contact");
144+
assertEquals(wxMessage.getChangeType(), "update_user");
145+
assertEquals(wxMessage.getUserId(), "zhangsan");
146+
assertNotNull(wxMessage.getExtAttrs());
147+
assertNotNull(wxMessage.getExtAttrs().getItems());
148+
assertEquals(wxMessage.getExtAttrs().getItems().size(), 3);
149+
assertEquals(wxMessage.getExtAttrs().getItems().get(0).getName(), "爱好");
150+
151+
}
120152
}

0 commit comments

Comments
 (0)