From 694f2c2b961e0cbbf79210d32107a3abc30ae6ef Mon Sep 17 00:00:00 2001 From: huangxm129 <40385667+huangxm129@users.noreply.github.com> Date: Sun, 26 Jul 2020 23:08:56 +0800 Subject: [PATCH] =?UTF-8?q?:new:=20#1493=20=E4=BC=81=E4=B8=9A=E5=BE=AE?= =?UTF-8?q?=E4=BF=A1=E5=A2=9E=E5=8A=A0=E7=AE=A1=E7=90=86=E4=BC=81=E4=B8=9A?= =?UTF-8?q?=E5=AE=A2=E6=88=B7=E6=A0=87=E7=AD=BE=E7=9A=84=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 5 ++ .../cp/api/WxCpExternalContactService.java | 57 +++++++++++++++ .../impl/WxCpExternalContactServiceImpl.java | 66 ++++++++++++++++++ .../cp/bean/WxCpUserExternalTagGroup.java | 69 +++++++++++++++++++ .../weixin/cp/constant/WxCpApiPathConsts.java | 6 ++ .../WxCpExternalContactServiceImplTest.java | 68 ++++++++++++++++++ .../cp/api/impl/WxCpUserServiceImplTest.java | 2 +- 7 files changed, 272 insertions(+), 1 deletion(-) create mode 100644 weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpUserExternalTagGroup.java diff --git a/pom.xml b/pom.xml index f49e0cf68d..a36f8a840c 100644 --- a/pom.xml +++ b/pom.xml @@ -90,6 +90,11 @@ liuxinghao1988@gmail.com https://github.com/howardliu-cn + + huangxiaoming + huangxiaoming@163.com + https://github.com/huangxm129 + 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 8c0ea96852..e1806d0977 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 @@ -246,4 +246,61 @@ public interface WxCpExternalContactService { WxCpUserExternalGroupChatStatistic getGroupChatStatistic(Date startTime, Integer orderBy, Integer orderAsc, Integer pageIndex, Integer pageSize, String[] userIds, String[] partyIds) throws WxErrorException; WxCpMsgTemplateAddResult addMsgTemplate(WxCpMsgTemplate wxCpMsgTemplate) throws WxErrorException; + + + /** + *
+   * 企业可通过此接口获取企业客户标签详情。
+   * 
+ * @param tagId + * @return + */ + WxCpUserExternalTagGroup getCorpTagList(String [] tagId) throws WxErrorException; + + + /** + *
+   * 企业可通过此接口向客户标签库中添加新的标签组和标签,每个企业最多可配置3000个企业标签。
+   * 暂不支持第三方调用。
+   * 
+ * @param tagGroup + * @return + */ + WxCpUserExternalTagGroup addCorpTag(WxCpUserExternalTagGroup tagGroup)throws WxErrorException; + + /** + *
+   * 企业可通过此接口编辑客户标签/标签组的名称或次序值。
+   * 暂不支持第三方调用。
+   * 
+ * @param id + * @param name + * @param order + * @return + */ + WxCpBaseResp editCorpTag(String id,String name,Integer order)throws WxErrorException; + + /** + *
+   * 企业可通过此接口删除客户标签库中的标签,或删除整个标签组。
+   * 暂不支持第三方调用。
+   * 
+ * @param tagId + * @param groupId + * @return + */ + WxCpBaseResp delCorpTag(String [] tagId,String[] groupId)throws WxErrorException; + + /** + *
+   * 企业可通过此接口为指定成员的客户添加上由企业统一配置的标签。
+   * https://work.weixin.qq.com/api/doc/90000/90135/92117
+   * 
+ * @param userid + * @param externalUserid + * @param addTag + * @param removeTag + * @return + */ + WxCpBaseResp markTag(String userid,String externalUserid,String[] addTag,String [] removeTag)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 371015b415..01477c8547 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 @@ -223,4 +223,70 @@ public WxCpMsgTemplateAddResult addMsgTemplate(WxCpMsgTemplate wxCpMsgTemplate) final String result = this.mainService.post(url, wxCpMsgTemplate.toJson()); return WxCpMsgTemplateAddResult.fromJson(result); } + + @Override + public WxCpUserExternalTagGroup getCorpTagList(String[] tagId) throws WxErrorException { + JsonObject json = new JsonObject(); + if(ArrayUtils.isNotEmpty(tagId)){ + json.add("tag_id",new Gson().toJsonTree(tagId).getAsJsonArray()); + } + final String url = this.mainService.getWxCpConfigStorage().getApiUrl(GET_CORP_TAG_LIST); + final String result = this.mainService.post(url,json.toString()); + return WxCpUserExternalTagGroup.fromJson(result); + } + + @Override + public WxCpUserExternalTagGroup addCorpTag(WxCpUserExternalTagGroup tagGroup) throws WxErrorException{ + + final String url = this.mainService.getWxCpConfigStorage().getApiUrl(ADD_CORP_TAG); + final String result = this.mainService.post(url,tagGroup.toJson()); + return WxCpUserExternalTagGroup.fromJson(result); + } + + @Override + public WxCpBaseResp editCorpTag(String id, String name, Integer order) throws WxErrorException{ + + JsonObject json = new JsonObject(); + json.addProperty("id",id); + json.addProperty("name",name); + json.addProperty("order",order); + final String url = this.mainService.getWxCpConfigStorage().getApiUrl(EDIT_CORP_TAG); + final String result = this.mainService.post(url,json.toString()); + return WxCpBaseResp.fromJson(result); + } + + @Override + public WxCpBaseResp delCorpTag(String[] tagId, String[] groupId) throws WxErrorException{ + JsonObject json = new JsonObject(); + if(ArrayUtils.isNotEmpty(tagId)){ + json.add("tag_id",new Gson().toJsonTree(tagId).getAsJsonArray()); + } + if(ArrayUtils.isNotEmpty(groupId)){ + json.add("group_id",new Gson().toJsonTree(tagId).getAsJsonArray()); + } + + final String url = this.mainService.getWxCpConfigStorage().getApiUrl(DEL_CORP_TAG); + final String result = this.mainService.post(url,json.toString()); + return WxCpBaseResp.fromJson(result); + } + + @Override + public WxCpBaseResp markTag(String userid, String externalUserid, String[] addTag, String[] removeTag)throws WxErrorException{ + + + JsonObject json = new JsonObject(); + json.addProperty("userid",userid); + json.addProperty("external_userid",externalUserid); + + if(ArrayUtils.isNotEmpty(addTag)){ + json.add("add_tag",new Gson().toJsonTree(addTag).getAsJsonArray()); + } + if(ArrayUtils.isNotEmpty(removeTag)){ + json.add("remove_tag",new Gson().toJsonTree(removeTag).getAsJsonArray()); + } + + final String url = this.mainService.getWxCpConfigStorage().getApiUrl(MARK_TAG); + final String result = this.mainService.post(url,json.toString()); + return WxCpBaseResp.fromJson(result); + } } diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpUserExternalTagGroup.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpUserExternalTagGroup.java new file mode 100644 index 0000000000..1dff12057b --- /dev/null +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpUserExternalTagGroup.java @@ -0,0 +1,69 @@ +package me.chanjar.weixin.cp.bean; + +import com.google.gson.annotations.SerializedName; +import lombok.Getter; +import lombok.Setter; +import me.chanjar.weixin.common.util.json.WxGsonBuilder; +import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder; + +import java.util.List; + +/** + * + */ +@Getter +@Setter +public class WxCpUserExternalTagGroup extends WxCpBaseResp { + + @SerializedName("group_id") + private String groupId; + + @SerializedName("group_name") + private String groupName; + + @SerializedName("create_time") + private Long createTime; + + @SerializedName("order") + private Integer order; + + @SerializedName("deleted") + private Boolean deleted; + + + @SerializedName("tag") + private List tag; + + @Getter + @Setter + public static class Tag { + + /** + * 客户群ID + */ + @SerializedName("id") + private String id; + + + @SerializedName("name") + private String name; + + @SerializedName("create_time") + private Long createTime; + + @SerializedName("order") + private Integer order; + + @SerializedName("deleted") + private Boolean deleted; + + } + + public String toJson() { + return WxGsonBuilder.create().toJson(this); + } + + public static WxCpUserExternalTagGroup fromJson(String json) { + return WxCpGsonBuilder.create().fromJson(json, WxCpUserExternalTagGroup.class); + } +} diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/constant/WxCpApiPathConsts.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/constant/WxCpApiPathConsts.java index 72ababe77e..7f734a89b5 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/constant/WxCpApiPathConsts.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/constant/WxCpApiPathConsts.java @@ -132,5 +132,11 @@ public static class ExternalContact { public static final String LIST_USER_BEHAVIOR_DATA = "/cgi-bin/externalcontact/get_user_behavior_data"; public static final String LIST_GROUP_CHAT_DATA = "/cgi-bin/externalcontact/groupchat/statistic"; public static final String ADD_MSG_TEMPLATE = "/cgi-bin/externalcontact/add_msg_template"; + + public static final String GET_CORP_TAG_LIST = "/cgi-bin/externalcontact/get_corp_tag_list"; + public static final String ADD_CORP_TAG = "/cgi-bin/externalcontact/add_corp_tag"; + public static final String EDIT_CORP_TAG = "/cgi-bin/externalcontact/edit_corp_tag"; + public static final String DEL_CORP_TAG = "/cgi-bin/externalcontact/del_corp_tag"; + public static final String MARK_TAG = "/cgi-bin/externalcontact/mark_tag"; } } diff --git a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpExternalContactServiceImplTest.java b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpExternalContactServiceImplTest.java index da04bc6c0f..f23108315e 100644 --- a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpExternalContactServiceImplTest.java +++ b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpExternalContactServiceImplTest.java @@ -8,10 +8,12 @@ import me.chanjar.weixin.cp.bean.WxCpBaseResp; import me.chanjar.weixin.cp.bean.WxCpContactWayInfo; import me.chanjar.weixin.cp.bean.WxCpUserExternalContactInfo; +import me.chanjar.weixin.cp.bean.WxCpUserExternalTagGroup; import org.apache.commons.lang3.time.DateFormatUtils; import org.testng.annotations.Guice; import org.testng.annotations.Test; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -105,4 +107,70 @@ public void testGetContactDetail() throws WxErrorException { assertNotNull(result); } + @Test + public void testGetCorpTagList() throws WxErrorException { + String tag[]={}; + WxCpUserExternalTagGroup result = this.wxCpService.getExternalContactService().getCorpTagList(null); + System.out.println(result); + assertNotNull(result); + } + + @Test + public void testAddCorpTag() throws WxErrorException { + + List list = new ArrayList<>(); + + WxCpUserExternalTagGroup.Tag tag = new WxCpUserExternalTagGroup.Tag(); + tag.setName("测试标签1"); + tag.setOrder(1); + list.add(tag); + + WxCpUserExternalTagGroup tagGroup = new WxCpUserExternalTagGroup(); + tagGroup.setGroupName("其他"); + tagGroup.setOrder(1); + tagGroup.setTag(list); + + WxCpUserExternalTagGroup result = this.wxCpService.getExternalContactService().addCorpTag(tagGroup); + + + + System.out.println(result); + assertNotNull(result); + } + + @Test + public void testEditCorpTag() throws WxErrorException { + + WxCpBaseResp result = this.wxCpService.getExternalContactService().editCorpTag("et2omCCwAArxYqGJQn4MNMS_zQKhIUfQ", "未知", 2); + + System.out.println(result); + assertNotNull(result); + } + + @Test + public void testDelCorpTag() throws WxErrorException { + + String tagId[] = {"et2omCCwAArxYqGJQn4MNMS_zQKhIUfQ"}; + String groupId[] = {}; + + WxCpBaseResp result = this.wxCpService.getExternalContactService().delCorpTag(tagId,groupId); + + System.out.println(result); + assertNotNull(result); + } + + @Test + public void testMarkTag() throws WxErrorException { + + String userid="HuangXiaoMing"; + String externalUserid="wo2omCCwAAzR0Rt1omz-90o_XJkPGXIQ"; + String addTag[] = {"et2omCCwAAzdcSK-RV80YS9sbpCXlNlQ"}; + String removeTag[] = {}; + + WxCpBaseResp result = this.wxCpService.getExternalContactService().markTag(userid,externalUserid,addTag,removeTag); + + System.out.println(result); + assertNotNull(result); + } + } diff --git a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpUserServiceImplTest.java b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpUserServiceImplTest.java index 1f565fbffa..9c4448830e 100644 --- a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpUserServiceImplTest.java +++ b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpUserServiceImplTest.java @@ -73,7 +73,7 @@ public void testGetById() throws Exception { @Test public void testListByDepartment() throws Exception { - List users = this.wxCpService.getUserService().listByDepartment(1L, true, 0); + List users = this.wxCpService.getUserService().listByDepartment(2L, true, 0); assertNotEquals(users.size(), 0); for (WxCpUser user : users) { System.out.println(ToStringBuilder.reflectionToString(user, ToStringStyle.MULTI_LINE_STYLE));