|
4 | 4 | import lombok.extern.slf4j.Slf4j;
|
5 | 5 | import lombok.var;
|
6 | 6 | import me.chanjar.weixin.common.error.WxErrorException;
|
| 7 | +import me.chanjar.weixin.common.util.XmlUtils; |
7 | 8 | import me.chanjar.weixin.cp.api.impl.WxCpServiceImpl;
|
8 | 9 | import me.chanjar.weixin.cp.bean.WxCpBaseResp;
|
| 10 | +import me.chanjar.weixin.cp.bean.message.WxCpXmlMessage; |
9 | 11 | import me.chanjar.weixin.cp.bean.school.user.*;
|
10 | 12 | import me.chanjar.weixin.cp.config.WxCpConfigStorage;
|
11 | 13 | import me.chanjar.weixin.cp.demo.WxCpDemoInMemoryConfigStorage;
|
| 14 | +import me.chanjar.weixin.cp.util.xml.XStreamTransformer; |
| 15 | +import org.eclipse.jetty.util.ajax.JSON; |
12 | 16 | import org.testng.annotations.Test;
|
13 | 17 |
|
14 | 18 | import java.io.InputStream;
|
15 | 19 | import java.util.List;
|
| 20 | +import java.util.Map; |
16 | 21 |
|
17 | 22 | /**
|
18 | 23 | * 企业微信家校沟通相关接口.
|
@@ -47,6 +52,93 @@ public void test() throws WxErrorException {
|
47 | 52 | final String exUserId = "wmOQpTDwAAJFHrryZ8I8ALLEZuLHIUKA";
|
48 | 53 |
|
49 | 54 |
|
| 55 | +// String changeContact = WxCpConsts.EventType.CHANGE_CONTACT; |
| 56 | + /** |
| 57 | + * 增加变更事件类型: |
| 58 | + */ |
| 59 | +// WxCpConsts.EventType.CHANGE_SCHOOL_CONTACT; |
| 60 | +// WxCpConsts.SchoolContactChangeType.DELETE_STUDENT; |
| 61 | +// WxCpConsts.SchoolContactChangeType.CREATE_DEPARTMENT; |
| 62 | + |
| 63 | + /** |
| 64 | + * 测试家校通讯录变更回调 |
| 65 | + * https://developer.work.weixin.qq.com/document/path/92052 |
| 66 | + * |
| 67 | + * 新增学生事件 |
| 68 | + * 当学校在家校通讯录中新增学生时,回调此事件。 |
| 69 | + */ |
| 70 | + String createStudentXml = "<xml>\n" + |
| 71 | + "\t<ToUserName><![CDATA[toUser]]></ToUserName>\n" + |
| 72 | + "\t<FromUserName><![CDATA[sys]]></FromUserName> \n" + |
| 73 | + "\t<CreateTime>1403610513</CreateTime>\n" + |
| 74 | + "\t<MsgType><![CDATA[event]]></MsgType>\n" + |
| 75 | + "\t<Event><![CDATA[change_school_contact]]></Event>\n" + |
| 76 | + "\t<ChangeType><![CDATA[create_student]]></ChangeType>\n" + |
| 77 | + "\t<Id><![CDATA[xiaoming]]></Id>\n" + |
| 78 | + "</xml>"; |
| 79 | + |
| 80 | + /** |
| 81 | + * 家长取消关注事件 |
| 82 | + * 当家长取消关注家校通知时,回调此事件。 |
| 83 | + */ |
| 84 | + String unSubscribeXml = "<xml>\n" + |
| 85 | + "\t<ToUserName><![CDATA[toUser]]></ToUserName>\n" + |
| 86 | + "\t<FromUserName><![CDATA[sys]]></FromUserName> \n" + |
| 87 | + "\t<CreateTime>1403610513</CreateTime>\n" + |
| 88 | + "\t<MsgType><![CDATA[event]]></MsgType>\n" + |
| 89 | + "\t<Event><![CDATA[change_school_contact]]></Event>\n" + |
| 90 | + "\t<ChangeType><![CDATA[unsubscribe]]></ChangeType>\n" + |
| 91 | + "\t<Id><![CDATA[xiaoming]]></Id>\n" + |
| 92 | + "</xml>"; |
| 93 | + |
| 94 | + /** |
| 95 | + * 创建部门事件 |
| 96 | + * 当学校在家校通讯录中创建部门时,回调此事件。 |
| 97 | + */ |
| 98 | + String createDepartmentXml = "<xml>\n" + |
| 99 | + "\t<ToUserName><![CDATA[toUser]]></ToUserName>\n" + |
| 100 | + "\t<FromUserName><![CDATA[sys]]></FromUserName> \n" + |
| 101 | + "\t<CreateTime>1403610513</CreateTime>\n" + |
| 102 | + "\t<MsgType><![CDATA[event]]></MsgType>\n" + |
| 103 | + "\t<Event><![CDATA[change_school_contact]]></Event>\n" + |
| 104 | + "\t<ChangeType><![CDATA[create_deparmtment]]></ChangeType>\n" + |
| 105 | + "\t<Id><![CDATA[1]]></Id>\n" + |
| 106 | + "</xml>"; |
| 107 | + |
| 108 | + /** |
| 109 | + * 删除部门事件 |
| 110 | + * 当学校删除家校通讯录部门时,回调此事件。 |
| 111 | + */ |
| 112 | + String deleteDepartmentXml = "<xml>\n" + |
| 113 | + "\t<ToUserName><![CDATA[toUser]]></ToUserName>\n" + |
| 114 | + "\t<FromUserName><![CDATA[sys]]></FromUserName> \n" + |
| 115 | + "\t<CreateTime>1403610513</CreateTime>\n" + |
| 116 | + "\t<MsgType><![CDATA[event]]></MsgType>\n" + |
| 117 | + "\t<Event><![CDATA[change_school_contact]]></Event>\n" + |
| 118 | + "\t<ChangeType><![CDATA[delete_deparmtment]]></ChangeType>\n" + |
| 119 | + "\t<Id><![CDATA[1]]></Id>\n" + |
| 120 | + "</xml>"; |
| 121 | + |
| 122 | +// WxCpXmlMessage.fromXml(createStudentXml); |
| 123 | + final WxCpXmlMessage createStudentMsg = XStreamTransformer.fromXml(WxCpXmlMessage.class, createStudentXml); |
| 124 | + Map<String, Object> map1 = XmlUtils.xml2Map(createStudentXml); |
| 125 | + createStudentMsg.setAllFieldsMap(map1); |
| 126 | + log.info("createStudentMsg:{}", JSON.toString(createStudentMsg)); |
| 127 | + |
| 128 | + final WxCpXmlMessage unSubscribeMsg = XStreamTransformer.fromXml(WxCpXmlMessage.class, unSubscribeXml); |
| 129 | + Map<String, Object> map2 = XmlUtils.xml2Map(unSubscribeXml); |
| 130 | + unSubscribeMsg.setAllFieldsMap(map2); |
| 131 | + log.info("unSubscribeMsg:{}", JSON.toString(unSubscribeMsg)); |
| 132 | + |
| 133 | + final WxCpXmlMessage createDepartmentMsg = XStreamTransformer.fromXml(WxCpXmlMessage.class, createDepartmentXml); |
| 134 | + createDepartmentMsg.setAllFieldsMap(XmlUtils.xml2Map(createDepartmentXml)); |
| 135 | + log.info("createDepartmentMsg:{}", JSON.toString(createDepartmentMsg)); |
| 136 | + |
| 137 | + final WxCpXmlMessage deleteDepartmentMsg = XStreamTransformer.fromXml(WxCpXmlMessage.class, deleteDepartmentXml); |
| 138 | + deleteDepartmentMsg.setAllFieldsMap(XmlUtils.xml2Map(deleteDepartmentXml)); |
| 139 | + log.info("deleteDepartmentMsg:{}", JSON.toString(deleteDepartmentMsg)); |
| 140 | + |
| 141 | + |
50 | 142 | /**
|
51 | 143 | * 获取可使用的家长范围
|
52 | 144 | * https://developer.work.weixin.qq.com/document/path/94895
|
|
0 commit comments