From a39bd3e417be9e2520084586f1c2693413e04a85 Mon Sep 17 00:00:00 2001 From: Wong <1960779692@qq.com> Date: Fri, 25 Mar 2022 09:21:27 +0000 Subject: [PATCH 1/2] =?UTF-8?q?:art:=20#2563=20=E3=80=90=E4=BC=81=E5=BE=AE?= =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E3=80=91=E4=BC=98=E5=8C=96=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E5=BE=85=E5=88=86=E9=85=8D=E7=A6=BB=E8=81=8C=E6=88=90=E5=91=98?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E7=9A=84=E6=8E=A5=E5=8F=A3=EF=BC=8C=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2=E6=B8=B8=E6=A0=87?= =?UTF-8?q?=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cp/api/WxCpExternalContactService.java | 17 +++--- .../impl/WxCpExternalContactServiceImpl.java | 11 ++-- .../WxCpUserExternalUnassignList.java | 10 +++- .../cp/api/WxCpExternalContactTest.java | 54 +++++++++++++++++++ 4 files changed, 81 insertions(+), 11 deletions(-) create mode 100644 weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/WxCpExternalContactTest.java diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpExternalContactService.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpExternalContactService.java index 8e04977ff..ae6b59ed6 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpExternalContactService.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpExternalContactService.java @@ -361,14 +361,19 @@ public interface WxCpExternalContactService { List listFollowers() throws WxErrorException; /** - * 企业和第三方可通过此接口,获取所有离职成员的客户列表,并可进一步调用离职成员的外部联系人再分配接口将这些客户重新分配给其他企业成员。 + * 获取待分配的离职成员列表 + * 企业和第三方可通过此接口,获取所有离职成员的客户列表,并可进一步调用分配离职成员的客户接口将这些客户重新分配给其他企业成员。 * - * @param page the page - * @param pageSize the page size - * @return wx cp user external unassign list - * @throws WxErrorException the wx error exception + * 请求方式:POST(HTTPS) + * 请求地址:https://qyapi.weixin.qq.com/cgi-bin/externalcontact/get_unassigned_list?access_token=ACCESS_TOKEN + * + * @param pageId 分页查询,要查询页号,从0开始 + * @param cursor 分页查询游标,字符串类型,适用于数据量较大的情况,如果使用该参数则无需填写page_id,该参数由上一次调用返回 + * @param pageSize 每次返回的最大记录数,默认为1000,最大值为1000 + * @return + * @throws WxErrorException */ - WxCpUserExternalUnassignList listUnassignedList(Integer page, Integer pageSize) throws WxErrorException; + WxCpUserExternalUnassignList listUnassignedList(Integer pageId, String cursor, Integer pageSize) throws WxErrorException; /** * 企业可通过此接口,将已离职成员的外部联系人分配给另一个成员接替联系。 diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpExternalContactServiceImpl.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpExternalContactServiceImpl.java index 3997f5076..def24cf8b 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpExternalContactServiceImpl.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpExternalContactServiceImpl.java @@ -32,7 +32,7 @@ import java.util.List; import static me.chanjar.weixin.cp.constant.WxCpApiPathConsts.ExternalContact.*; /** - * @author 曹祖鹏 & yuanqixun & Mr.Pan + * @author 曹祖鹏 & yuanqixun & Mr.Pan & Wang_Wong */ @RequiredArgsConstructor public class WxCpExternalContactServiceImpl implements WxCpExternalContactService { @@ -245,10 +245,13 @@ public class WxCpExternalContactServiceImpl implements WxCpExternalContactServic } @Override - public WxCpUserExternalUnassignList listUnassignedList(Integer pageIndex, Integer pageSize) throws WxErrorException { + public WxCpUserExternalUnassignList listUnassignedList(Integer pageIndex, String cursor, Integer pageSize) throws WxErrorException { JsonObject json = new JsonObject(); - json.addProperty("page_id", pageIndex == null ? 0 : pageIndex); - json.addProperty("page_size", pageSize == null ? 100 : pageSize); + if(pageIndex != null){ + json.addProperty("page_id", pageIndex); + } + json.addProperty("cursor", StringUtils.isEmpty(cursor) ? "" : cursor); + json.addProperty("page_size", pageSize == null ? 1000 : pageSize); final String url = this.mainService.getWxCpConfigStorage().getApiUrl(LIST_UNASSIGNED_CONTACT); final String result = this.mainService.post(url, json.toString()); return WxCpUserExternalUnassignList.fromJson(result); diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/WxCpUserExternalUnassignList.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/WxCpUserExternalUnassignList.java index 68d065a2d..d27334836 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/WxCpUserExternalUnassignList.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/WxCpUserExternalUnassignList.java @@ -12,7 +12,7 @@ import java.util.List; /** * 离职员工外部联系人列表 * - * @author yqx + * @author yqx & Wang_Wong * @date 2020/3/15 */ @Getter @@ -25,6 +25,9 @@ public class WxCpUserExternalUnassignList extends WxCpBaseResp { @SerializedName("is_last") private boolean isLast; + @SerializedName("next_cursor") + private String nextCursor; + @Getter @Setter public static class UnassignInfo implements Serializable { @@ -52,4 +55,9 @@ public class WxCpUserExternalUnassignList extends WxCpBaseResp { public static WxCpUserExternalUnassignList fromJson(String json) { return WxCpGsonBuilder.create().fromJson(json, WxCpUserExternalUnassignList.class); } + + public String toJson() { + return WxCpGsonBuilder.create().toJson(this); + } + } diff --git a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/WxCpExternalContactTest.java b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/WxCpExternalContactTest.java new file mode 100644 index 000000000..7fb1650da --- /dev/null +++ b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/WxCpExternalContactTest.java @@ -0,0 +1,54 @@ +package me.chanjar.weixin.cp.api; + +import com.google.common.collect.Lists; +import com.google.inject.Inject; +import lombok.extern.slf4j.Slf4j; +import me.chanjar.weixin.common.error.WxErrorException; +import me.chanjar.weixin.cp.bean.WxCpBaseResp; +import me.chanjar.weixin.cp.bean.external.*; +import me.chanjar.weixin.cp.bean.external.contact.WxCpExternalContactBatchInfo; +import me.chanjar.weixin.cp.bean.external.contact.WxCpExternalContactInfo; +import me.chanjar.weixin.cp.bean.external.msg.Attachment; +import me.chanjar.weixin.cp.bean.external.msg.Image; +import me.chanjar.weixin.cp.bean.external.msg.Video; +import org.apache.commons.lang3.time.DateFormatUtils; +import org.testng.annotations.Guice; +import org.testng.annotations.Test; +import org.testng.collections.CollectionUtils; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Date; +import java.util.List; + +import static org.testng.Assert.assertNotNull; + +/** + * 离职继承测试类 + * + * 官方文档: + * https://developer.work.weixin.qq.com/document/path/92124 + */ +@Slf4j +@Guice(modules = ApiTestModule.class) +public class WxCpExternalContactTest { + + @Inject + private WxCpService wxCpService; + @Inject + protected ApiTestModule.WxXmlCpInMemoryConfigStorage configStorage; + + @Test + public void testGetExternalContact() throws WxErrorException { + String externalUserId = this.configStorage.getExternalUserId(); + WxCpUserExternalUnassignList unassignList = this.wxCpService.getExternalContactService().listUnassignedList(null, null, 100); + log.info(unassignList.toJson()); + + // test str + String result = "{\"errcode\":0,\"errmsg\":\"ok\",\"info\":[{\"handover_userid\":\"zhangsan\",\"external_userid\":\"woAJ2GCAAAd4uL12hdfsdasassdDmAAAAA\",\"dimission_time\":1550838571},{\"handover_userid\":\"lisi\",\"external_userid\":\"wmAJ2GCAAAzLTI123ghsdfoGZNqqAAAA\",\"dimission_time\":1550661468}],\"is_last\":false,\"next_cursor\":\"aSfwejksvhToiMMfFeIGZZ\"}"; + WxCpUserExternalUnassignList json = WxCpUserExternalUnassignList.fromJson(result); + log.info(json.toJson()); + + } + +} -- Gitee From 5ee4952cecf75c75c1346f4c328e16d8135498c8 Mon Sep 17 00:00:00 2001 From: eYoung Date: Tue, 29 Mar 2022 11:47:47 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E5=A4=84=E7=90=86=E6=97=B6=EF=BC=8C=E6=97=A0=E6=B3=95=E4=BD=BF?= =?UTF-8?q?=E7=94=A8agentId=E8=BF=9B=E8=A1=8C=E6=B6=88=E6=81=AF=E8=B7=AF?= =?UTF-8?q?=E7=94=B1=E5=8C=B9=E9=85=8D=EF=BC=88equals'=20between=20objects?= =?UTF-8?q?=20of=20inconvertible=20types=20'Integer'=20and=20'String'?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../me/chanjar/weixin/cp/message/WxCpMessageRouterRule.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/message/WxCpMessageRouterRule.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/message/WxCpMessageRouterRule.java index 739bb0330..bbae22693 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/message/WxCpMessageRouterRule.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/message/WxCpMessageRouterRule.java @@ -246,7 +246,7 @@ public class WxCpMessageRouterRule { return (this.fromUser == null || this.fromUser.equals(wxMessage.getFromUserName())) && - (this.agentId == null || this.agentId.equals(wxMessage.getAgentId())) + (this.agentId == null || this.agentId.equals(Integer.valueOf(wxMessage.getAgentId()))) && (this.msgType == null || this.msgType.equalsIgnoreCase(wxMessage.getMsgType())) && -- Gitee