mirror of
				https://gitee.com/binary/weixin-java-tools.git
				synced 2025-11-01 03:25:35 +08:00 
			
		
		
		
	🆕 #1767 企业微信外部联系人增加修改客户备注信息的接口
This commit is contained in:
		| @ -132,6 +132,20 @@ public interface WxCpExternalContactService { | ||||
|    */ | ||||
|   WxCpUserExternalContactInfo getContactDetail(String userId) throws WxErrorException; | ||||
|  | ||||
|   /** | ||||
|    * 修改客户备注信息. | ||||
|    * <pre> | ||||
|    * 企业可通过此接口修改指定用户添加的客户的备注信息。 | ||||
|    * 请求方式: POST(HTTP) | ||||
|    * 请求地址:https://qyapi.weixin.qq.com/cgi-bin/externalcontact/remark?access_token=ACCESS_TOKEN | ||||
|    * 文档地址:https://work.weixin.qq.com/api/doc/90000/90135/92115 | ||||
|    * </pre> | ||||
|    * | ||||
|    * @param request 备注信息请求 | ||||
|    * @throws WxErrorException . | ||||
|    */ | ||||
|   void updateRemark(WxCpUpdateRemarkRequest request) throws WxErrorException; | ||||
|  | ||||
|   /** | ||||
|    * 获取客户列表. | ||||
|    * <pre> | ||||
|  | ||||
| @ -8,7 +8,7 @@ import me.chanjar.weixin.common.error.WxCpErrorMsgEnum; | ||||
| import me.chanjar.weixin.common.error.WxErrorException; | ||||
| import me.chanjar.weixin.cp.api.WxCpExternalContactService; | ||||
| import me.chanjar.weixin.cp.api.WxCpService; | ||||
| import me.chanjar.weixin.cp.bean.*; | ||||
| import me.chanjar.weixin.cp.bean.WxCpBaseResp; | ||||
| import me.chanjar.weixin.cp.bean.external.*; | ||||
| import org.apache.commons.lang3.ArrayUtils; | ||||
| import org.apache.commons.lang3.StringUtils; | ||||
| @ -67,7 +67,7 @@ public class WxCpExternalContactServiceImpl implements WxCpExternalContactServic | ||||
|   @Override | ||||
|   public WxCpBaseResp deleteContactWay(@NonNull String configId) throws WxErrorException { | ||||
|     JsonObject json = new JsonObject(); | ||||
|     json.addProperty("config_id",configId); | ||||
|     json.addProperty("config_id", configId); | ||||
|  | ||||
|     final String url = this.mainService.getWxCpConfigStorage().getApiUrl(DEL_CONTACT_WAY); | ||||
|     String responseContent = this.mainService.post(url, json.toString()); | ||||
| @ -79,8 +79,8 @@ public class WxCpExternalContactServiceImpl implements WxCpExternalContactServic | ||||
|   public WxCpBaseResp closeTempChat(@NonNull String userId, @NonNull String externalUserId) throws WxErrorException { | ||||
|  | ||||
|     JsonObject json = new JsonObject(); | ||||
|     json.addProperty("userid",userId); | ||||
|     json.addProperty("external_userid",externalUserId); | ||||
|     json.addProperty("userid", userId); | ||||
|     json.addProperty("external_userid", externalUserId); | ||||
|  | ||||
|  | ||||
|     final String url = this.mainService.getWxCpConfigStorage().getApiUrl(CLOSE_TEMP_CHAT); | ||||
| @ -103,6 +103,12 @@ public class WxCpExternalContactServiceImpl implements WxCpExternalContactServic | ||||
|     return WxCpUserExternalContactInfo.fromJson(responseContent); | ||||
|   } | ||||
|  | ||||
|   @Override | ||||
|   public void updateRemark(WxCpUpdateRemarkRequest request) throws WxErrorException { | ||||
|     final String url = this.mainService.getWxCpConfigStorage().getApiUrl(UPDATE_REMARK); | ||||
|     this.mainService.post(url, request.toJson()); | ||||
|   } | ||||
|  | ||||
|   @Override | ||||
|   public List<String> listExternalContacts(String userId) throws WxErrorException { | ||||
|     final String url = this.mainService.getWxCpConfigStorage().getApiUrl(LIST_EXTERNAL_CONTACT + userId); | ||||
| @ -233,66 +239,66 @@ public class WxCpExternalContactServiceImpl implements WxCpExternalContactServic | ||||
|   @Override | ||||
|   public WxCpUserExternalTagGroupList getCorpTagList(String[] tagId) throws WxErrorException { | ||||
|     JsonObject json = new JsonObject(); | ||||
|     if(ArrayUtils.isNotEmpty(tagId)){ | ||||
|       json.add("tag_id",new Gson().toJsonTree(tagId).getAsJsonArray()); | ||||
|     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()); | ||||
|     final String result = this.mainService.post(url, json.toString()); | ||||
|     return WxCpUserExternalTagGroupList.fromJson(result); | ||||
|   } | ||||
|  | ||||
|   @Override | ||||
|   public WxCpUserExternalTagGroupInfo addCorpTag(WxCpUserExternalTagGroupInfo tagGroup) throws WxErrorException{ | ||||
|   public WxCpUserExternalTagGroupInfo addCorpTag(WxCpUserExternalTagGroupInfo tagGroup) throws WxErrorException { | ||||
|  | ||||
|     final String url = this.mainService.getWxCpConfigStorage().getApiUrl(ADD_CORP_TAG); | ||||
|     final String result = this.mainService.post(url,tagGroup.getTagGroup().toJson()); | ||||
|     final String result = this.mainService.post(url, tagGroup.getTagGroup().toJson()); | ||||
|     return WxCpUserExternalTagGroupInfo.fromJson(result); | ||||
|   } | ||||
|  | ||||
|   @Override | ||||
|   public WxCpBaseResp editCorpTag(String id, String name, Integer order) throws WxErrorException{ | ||||
|   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); | ||||
|     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()); | ||||
|     final String result = this.mainService.post(url, json.toString()); | ||||
|     return WxCpBaseResp.fromJson(result); | ||||
|   } | ||||
|  | ||||
|   @Override | ||||
|   public WxCpBaseResp delCorpTag(String[] tagId, String[] groupId) throws WxErrorException{ | ||||
|   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(tagId)) { | ||||
|       json.add("tag_id", new Gson().toJsonTree(tagId).getAsJsonArray()); | ||||
|     } | ||||
|     if(ArrayUtils.isNotEmpty(groupId)){ | ||||
|       json.add("group_id",new Gson().toJsonTree(groupId).getAsJsonArray()); | ||||
|     if (ArrayUtils.isNotEmpty(groupId)) { | ||||
|       json.add("group_id", new Gson().toJsonTree(groupId).getAsJsonArray()); | ||||
|     } | ||||
|  | ||||
|     final String url = this.mainService.getWxCpConfigStorage().getApiUrl(DEL_CORP_TAG); | ||||
|     final String result = this.mainService.post(url,json.toString()); | ||||
|     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{ | ||||
|   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); | ||||
|     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(addTag)) { | ||||
|       json.add("add_tag", new Gson().toJsonTree(addTag).getAsJsonArray()); | ||||
|     } | ||||
|     if(ArrayUtils.isNotEmpty(removeTag)){ | ||||
|       json.add("remove_tag",new Gson().toJsonTree(removeTag).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()); | ||||
|     final String result = this.mainService.post(url, json.toString()); | ||||
|     return WxCpBaseResp.fromJson(result); | ||||
|   } | ||||
| } | ||||
|  | ||||
							
								
								
									
										101
									
								
								weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/WxCpUpdateRemarkRequest.java
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/WxCpUpdateRemarkRequest.java
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,101 @@ | ||||
| package me.chanjar.weixin.cp.bean.external; | ||||
|  | ||||
| import com.google.gson.annotations.SerializedName; | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.NoArgsConstructor; | ||||
| import lombok.experimental.Accessors; | ||||
| import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder; | ||||
|  | ||||
| import java.io.Serializable; | ||||
|  | ||||
| /** | ||||
|  * 修改客户备注信息请求. | ||||
|  * | ||||
|  * @author <a href="https://github.com/binarywang">Binary Wang</a> | ||||
|  * @date 2020-09-19 | ||||
|  */ | ||||
| @Data | ||||
| @Builder | ||||
| @NoArgsConstructor | ||||
| @AllArgsConstructor | ||||
| @Accessors(chain = true) | ||||
| public class WxCpUpdateRemarkRequest implements Serializable { | ||||
|   private static final long serialVersionUID = -4960239393895754138L; | ||||
|  | ||||
|   public String toJson() { | ||||
|     return WxCpGsonBuilder.create().toJson(this); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * <pre> | ||||
|    * 字段名:userid | ||||
|    * 是否必须:是 | ||||
|    * 描述:企业成员的userid | ||||
|    * </pre> | ||||
|    */ | ||||
|   @SerializedName("userid") | ||||
|   private String userId; | ||||
|  | ||||
|   /** | ||||
|    * <pre> | ||||
|    * 字段名:external_userid | ||||
|    * 是否必须:是 | ||||
|    * 描述:外部联系人userid | ||||
|    * </pre> | ||||
|    */ | ||||
|   @SerializedName("external_userid") | ||||
|   private String externalUserId; | ||||
|  | ||||
|   /** | ||||
|    * <pre> | ||||
|    * 字段名:remark | ||||
|    * 是否必须:否 | ||||
|    * 描述:此用户对外部联系人的备注,最多20个字符 | ||||
|    * </pre> | ||||
|    */ | ||||
|   @SerializedName("remark") | ||||
|   private String remark; | ||||
|  | ||||
|   /** | ||||
|    * <pre> | ||||
|    * 字段名:description | ||||
|    * 是否必须:否 | ||||
|    * 描述:此用户对外部联系人的描述,最多150个字符 | ||||
|    * </pre> | ||||
|    */ | ||||
|   @SerializedName("description") | ||||
|   private String description; | ||||
|  | ||||
|   /** | ||||
|    * <pre> | ||||
|    * 字段名:remark_company | ||||
|    * 是否必须:否 | ||||
|    * 描述:此用户对外部联系人备注的所属公司名称,最多20个字符 | ||||
|    * </pre> | ||||
|    */ | ||||
|   @SerializedName("remark_company") | ||||
|   private String remarkCompany; | ||||
|  | ||||
|   /** | ||||
|    * <pre> | ||||
|    * 字段名:remark_mobiles | ||||
|    * 是否必须:否 | ||||
|    * 描述:此用户对外部联系人备注的手机号 | ||||
|    * </pre> | ||||
|    */ | ||||
|   @SerializedName("remark_mobiles") | ||||
|   private String[] remarkMobiles; | ||||
|  | ||||
|   /** | ||||
|    * <pre> | ||||
|    * 字段名:remark_pic_mediaid | ||||
|    * 是否必须:否 | ||||
|    * 描述:备注图片的mediaid, | ||||
|    * </pre> | ||||
|    */ | ||||
|   @SerializedName("remark_pic_mediaid") | ||||
|   private String remarkPicMediaId; | ||||
|  | ||||
| } | ||||
| @ -159,6 +159,7 @@ public final class WxCpApiPathConsts { | ||||
|     public static final String CLOSE_TEMP_CHAT = "/cgi-bin/externalcontact/close_temp_chat"; | ||||
|     public static final String GET_FOLLOW_USER_LIST = "/cgi-bin/externalcontact/get_follow_user_list"; | ||||
|     public static final String GET_CONTACT_DETAIL = "/cgi-bin/externalcontact/get?external_userid="; | ||||
|     public static final String UPDATE_REMARK = "/cgi-bin/externalcontact/remark"; | ||||
|     public static final String LIST_EXTERNAL_CONTACT = "/cgi-bin/externalcontact/list?userid="; | ||||
|     public static final String LIST_UNASSIGNED_CONTACT = "/cgi-bin/externalcontact/get_unassigned_list"; | ||||
|     public static final String TRANSFER_UNASSIGNED_CONTACT = "/cgi-bin/externalcontact/transfer"; | ||||
|  | ||||
| @ -217,4 +217,17 @@ public class WxCpExternalContactServiceImplTest { | ||||
|       .welcomeCode("abc") | ||||
|       .build()); | ||||
|   } | ||||
|  | ||||
|   @Test | ||||
|   public void testUpdateRemark() throws WxErrorException { | ||||
|     this.wxCpService.getExternalContactService().updateRemark(WxCpUpdateRemarkRequest.builder() | ||||
|       .description("abc") | ||||
|       .userId("aaa") | ||||
|       .externalUserId("aaa") | ||||
|       .remark("aa") | ||||
|       .remarkCompany("aaa") | ||||
|       .remarkMobiles(new String[]{"111","222"}) | ||||
|       .remarkPicMediaId("aaa") | ||||
|       .build()); | ||||
|   } | ||||
| } | ||||
|  | ||||
							
								
								
									
										42
									
								
								weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/external/WxCpUpdateRemarkRequestTest.java
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								weixin-java-cp/src/test/java/me/chanjar/weixin/cp/bean/external/WxCpUpdateRemarkRequestTest.java
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,42 @@ | ||||
| package me.chanjar.weixin.cp.bean.external; | ||||
|  | ||||
| import me.chanjar.weixin.common.util.json.GsonParser; | ||||
| import org.testng.annotations.Test; | ||||
|  | ||||
| import static org.assertj.core.api.Assertions.assertThat; | ||||
|  | ||||
| /** | ||||
|  * 单元测试. | ||||
|  * | ||||
|  * @author <a href="https://github.com/binarywang">Binary Wang</a> | ||||
|  * @date 2020-09-20 | ||||
|  */ | ||||
| public class WxCpUpdateRemarkRequestTest { | ||||
|  | ||||
|   @Test | ||||
|   public void testToJson() { | ||||
|     String json = "{\n" + | ||||
|       "   \"userid\":\"zhangsan\",\n" + | ||||
|       "   \"external_userid\":\"woAJ2GCAAAd1asdasdjO4wKmE8Aabj9AAA\",\n" + | ||||
|       "   \"remark\":\"备注信息\",\n" + | ||||
|       "   \"description\":\"描述信息\",\n" + | ||||
|       "   \"remark_company\":\"腾讯科技\",\n" + | ||||
|       "   \"remark_mobiles\":[\n" + | ||||
|       "        \"13800000001\",\n" + | ||||
|       "        \"13800000002\"\n" + | ||||
|       "   ],\n" + | ||||
|       "   \"remark_pic_mediaid\":\"MEDIAID\"\n" + | ||||
|       "}\n"; | ||||
|  | ||||
|     WxCpUpdateRemarkRequest request = WxCpUpdateRemarkRequest.builder() | ||||
|       .description("描述信息") | ||||
|       .userId("zhangsan") | ||||
|       .externalUserId("woAJ2GCAAAd1asdasdjO4wKmE8Aabj9AAA") | ||||
|       .remark("备注信息") | ||||
|       .remarkCompany("腾讯科技") | ||||
|       .remarkMobiles(new String[]{"13800000001","13800000002"}) | ||||
|       .remarkPicMediaId("MEDIAID") | ||||
|       .build(); | ||||
|     assertThat(request.toJson()).isEqualTo(GsonParser.parse(json).toString()); | ||||
|   } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Binary Wang
					Binary Wang