Skip to content

Commit 43a3a1e

Browse files
authored
🆕 #2963 【企业微信】新增企业微信服务商帐号ID转换相关的接口
1 parent 6e96d7c commit 43a3a1e

File tree

6 files changed

+250
-1
lines changed

6 files changed

+250
-1
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package me.chanjar.weixin.cp.bean;
2+
3+
import com.google.gson.annotations.SerializedName;
4+
import lombok.Getter;
5+
import lombok.Setter;
6+
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
7+
8+
import java.util.List;
9+
10+
@Setter
11+
@Getter
12+
public class WxCpTpConvertTmpExternalUserIdResult extends WxCpBaseResp {
13+
14+
15+
@SerializedName("invalid_tmp_external_userid_list")
16+
private List<Results> results;
17+
18+
@Getter
19+
@Setter
20+
public static class Results {
21+
22+
@SerializedName("tmp_external_userid")
23+
private String tmpExternalUserId;
24+
25+
@SerializedName("external_userid")
26+
private String externalUserId;
27+
28+
@SerializedName("corpid")
29+
private String corpId;
30+
31+
@SerializedName("userid")
32+
private String userId;
33+
}
34+
35+
@SerializedName("invalid_tmp_external_userid_list")
36+
private List<String> invalidTmpExternalUserIdList;
37+
38+
public static WxCpTpConvertTmpExternalUserIdResult fromJson(String json) {
39+
return WxCpGsonBuilder.create().fromJson(json, WxCpTpConvertTmpExternalUserIdResult.class);
40+
}
41+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package me.chanjar.weixin.cp.bean;
2+
3+
import com.google.gson.annotations.SerializedName;
4+
import lombok.Getter;
5+
import lombok.Setter;
6+
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
7+
8+
import java.util.List;
9+
10+
@Setter
11+
@Getter
12+
public class WxCpTpOpenKfIdConvertResult extends WxCpBaseResp {
13+
14+
/**
15+
* 微信客服ID转换结果
16+
*/
17+
@SerializedName("items")
18+
private List<Item> items;
19+
20+
/**
21+
* 无法转换的微信客服ID列表
22+
*/
23+
@SerializedName("invalid_open_kfid_list")
24+
private List<String> invalidOpenKfIdList;
25+
26+
@Getter
27+
@Setter
28+
public static class Item {
29+
30+
/***
31+
* 企业主体下的微信客服ID
32+
*/
33+
@SerializedName("open_kfid")
34+
private String openKfId;
35+
36+
/**
37+
* 服务商主体下的微信客服ID,如果传入的open_kfid已经是服务商主体下的ID,则new_open_kfid与open_kfid相同。
38+
*/
39+
@SerializedName("new_open_kfid")
40+
private String newOpenKfId;
41+
}
42+
43+
public static WxCpTpOpenKfIdConvertResult fromJson(String json) {
44+
return WxCpGsonBuilder.create().fromJson(json, WxCpTpOpenKfIdConvertResult.class);
45+
}
46+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package me.chanjar.weixin.cp.bean;
2+
3+
4+
import com.google.gson.annotations.SerializedName;
5+
import lombok.Getter;
6+
import lombok.Setter;
7+
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
8+
9+
import java.util.List;
10+
11+
@Getter
12+
@Setter
13+
public class WxCpTpTagIdListConvertResult extends WxCpBaseResp {
14+
15+
private static final long serialVersionUID = -6153589164415497369L;
16+
17+
18+
/**
19+
* 客户标签转换结果
20+
*/
21+
@SerializedName("items")
22+
private List<Item> items;
23+
24+
/**
25+
* 无法转换的客户标签ID列表
26+
*/
27+
@SerializedName("invalid_external_tagid_list")
28+
private List<String> invalidExternalTagIdList;
29+
30+
31+
@Getter
32+
@Setter
33+
public static class Item {
34+
35+
/**
36+
* 企业主体下的客户标签ID
37+
*/
38+
@SerializedName("external_tagid")
39+
private String externalTagId;
40+
41+
/**
42+
* 服务商主体下的客户标签ID,如果传入的external_tagid已经是服务商主体下的ID,则open_external_tagid与external_tagid相同。
43+
*/
44+
@SerializedName("open_external_tagid")
45+
private String openExternalTagId;
46+
}
47+
48+
public static WxCpTpTagIdListConvertResult fromJson(String json) {
49+
return WxCpGsonBuilder.create().fromJson(json, WxCpTpTagIdListConvertResult.class);
50+
}
51+
}

weixin-java-cp/src/main/java/me/chanjar/weixin/cp/constant/WxCpApiPathConsts.java

+24
Original file line numberDiff line numberDiff line change
@@ -1451,4 +1451,28 @@ interface LinkedCorp {
14511451
*/
14521452
String SENG_MESSAGE="/cgi-bin/linkedcorp/message/send";
14531453
}
1454+
1455+
interface IdConvert {
1456+
1457+
/**
1458+
* 将企业主体下的客户标签ID转换成服务商主体下的客户标签ID。
1459+
*/
1460+
String EXTERNAL_TAG_ID = "/cgi-bin/idconvert/external_tagid";
1461+
1462+
/**
1463+
* 将微信客户的unionid转为第三方主体的external_userid
1464+
* 该接口有调用频率限制,当subject_type为0时,按企业作如下的限制:10万次/小时、48万次/天、750万次/月
1465+
*/
1466+
String UNION_ID_TO_EXTERNAL_USER_ID = "/cgi-bin/idconvert/unionid_to_external_userid";
1467+
1468+
/**
1469+
* 将企业主体下的微信客服ID转换成服务商主体下的微信客服ID
1470+
*/
1471+
String OPEN_KF_ID = "/cgi-bin/idconvert/open_kfid";
1472+
1473+
/**
1474+
* 将应用获取的外部用户临时idtmp_external_userid,转换为external_userid。
1475+
*/
1476+
String CONVERT_TMP_EXTERNAL_USER_ID = "/cgi-bin/idconvert/convert_tmp_external_userid";
1477+
}
14541478
}

weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/service/WxCpTpIdConvertService.java

+33
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
package me.chanjar.weixin.cp.tp.service;
22

33
import me.chanjar.weixin.common.error.WxErrorException;
4+
import me.chanjar.weixin.cp.bean.WxCpTpConvertTmpExternalUserIdResult;
5+
import me.chanjar.weixin.cp.bean.WxCpTpOpenKfIdConvertResult;
6+
import me.chanjar.weixin.cp.bean.WxCpTpTagIdListConvertResult;
47
import me.chanjar.weixin.cp.bean.WxCpTpUnionidToExternalUseridResult;
58

9+
import java.util.List;
10+
611
/**
712
* <pre>
813
* 企业微信三方应用ID转换接口
@@ -25,4 +30,32 @@ public interface WxCpTpIdConvertService {
2530
WxCpTpUnionidToExternalUseridResult unionidToExternalUserid(String cropId, String unionid, String openid,
2631
Integer subjectType) throws WxErrorException;
2732

33+
34+
/**
35+
* 将企业主体下的客户标签ID转换成服务商主体下的客户标签ID
36+
* @param corpId 企业微信 ID
37+
* @param externalTagIdList 企业主体下的客户标签ID列表,最多不超过1000个
38+
* @return 客户标签转换结果
39+
* @throws WxErrorException .
40+
*/
41+
WxCpTpTagIdListConvertResult externalTagId(String corpId, String... externalTagIdList) throws WxErrorException;
42+
43+
/**
44+
* 将企业主体下的微信客服ID转换成服务商主体下的微信客服ID
45+
* @param corpId 企业微信 ID
46+
* @param openKfIdList 微信客服ID列表,最多不超过1000个
47+
* @return 微信客服ID转换结果
48+
* @throws WxErrorException .
49+
*/
50+
WxCpTpOpenKfIdConvertResult ConvertOpenKfId (String corpId, String... openKfIdList ) throws WxErrorException;
51+
52+
/**
53+
* 将应用获取的外部用户临时idtmp_external_userid,转换为external_userid
54+
* @param corpId 企业微信Id
55+
* @param businessType 业务类型。1-会议 2-收集表
56+
* @param userType 转换的目标用户类型。1-客户 2-企业互联 3-上下游 4-互联企业(圈子)
57+
* @param tmpExternalUserIdList 外部用户临时id,最多不超过100个
58+
* @return 转换成功的结果列表
59+
*/
60+
WxCpTpConvertTmpExternalUserIdResult convertTmpExternalUserId(String corpId, int businessType, int userType, String... tmpExternalUserIdList) throws WxErrorException;
2861
}

weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/service/impl/WxCpTpIdConvertServiceImpl.java

+55-1
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,21 @@
11
package me.chanjar.weixin.cp.tp.service.impl;
22

3+
import com.google.gson.JsonArray;
34
import com.google.gson.JsonObject;
5+
import com.google.gson.JsonPrimitive;
46
import lombok.RequiredArgsConstructor;
57
import me.chanjar.weixin.common.error.WxErrorException;
8+
import me.chanjar.weixin.cp.bean.WxCpTpConvertTmpExternalUserIdResult;
9+
import me.chanjar.weixin.cp.bean.WxCpTpOpenKfIdConvertResult;
10+
import me.chanjar.weixin.cp.bean.WxCpTpTagIdListConvertResult;
611
import me.chanjar.weixin.cp.bean.WxCpTpUnionidToExternalUseridResult;
712
import me.chanjar.weixin.cp.config.WxCpTpConfigStorage;
13+
import me.chanjar.weixin.cp.constant.WxCpApiPathConsts;
814
import me.chanjar.weixin.cp.tp.service.WxCpTpIdConvertService;
915
import me.chanjar.weixin.cp.tp.service.WxCpTpService;
1016

17+
import java.util.List;
18+
1119

1220
/**
1321
* @author cocoa
@@ -26,11 +34,57 @@ public WxCpTpUnionidToExternalUseridResult unionidToExternalUserid(String cropId
2634
}
2735
WxCpTpConfigStorage wxCpTpConfigStorage = mainService.getWxCpTpConfigStorage();
2836
String accessToken = wxCpTpConfigStorage.getAccessToken(cropId);
29-
String url = wxCpTpConfigStorage.getApiUrl("/cgi-bin/idconvert/unionid_to_external_userid");
37+
String url = wxCpTpConfigStorage.getApiUrl(WxCpApiPathConsts.IdConvert.UNION_ID_TO_EXTERNAL_USER_ID);
3038
url += "?access_token=" + accessToken;
3139
String responseContent = this.mainService.post(url, json.toString());
3240
return WxCpTpUnionidToExternalUseridResult.fromJson(responseContent);
3341
}
3442

43+
@Override
44+
public WxCpTpTagIdListConvertResult externalTagId(String corpId, String... externalTagIdList) throws WxErrorException {
45+
WxCpTpConfigStorage wxCpTpConfigStorage = mainService.getWxCpTpConfigStorage();
46+
String url = wxCpTpConfigStorage.getApiUrl(WxCpApiPathConsts.IdConvert.EXTERNAL_TAG_ID ) + "?access_token=" + mainService.getWxCpTpConfigStorage().getAccessToken(corpId);
47+
48+
JsonObject jsonObject = new JsonObject();
49+
JsonArray jsonArray = new JsonArray();
50+
for (String tagId : externalTagIdList) {
51+
jsonArray.add(new JsonPrimitive(tagId));
52+
}
53+
jsonObject.add("external_tagid_list", jsonArray);
54+
String responseContent = this.mainService.post(url, jsonObject.toString());
55+
56+
return WxCpTpTagIdListConvertResult.fromJson(responseContent);
57+
}
58+
59+
@Override
60+
public WxCpTpOpenKfIdConvertResult ConvertOpenKfId(String corpId, String... openKfIdList) throws WxErrorException {
61+
WxCpTpConfigStorage wxCpTpConfigStorage = mainService.getWxCpTpConfigStorage();
62+
String url = wxCpTpConfigStorage.getApiUrl(WxCpApiPathConsts.IdConvert.OPEN_KF_ID + "?access_token=" + mainService.getWxCpTpConfigStorage().getAccessToken(corpId));
63+
JsonObject jsonObject = new JsonObject();
64+
JsonArray jsonArray = new JsonArray();
65+
for (String kfId : openKfIdList) {
66+
jsonArray.add(new JsonPrimitive(kfId));
67+
}
68+
jsonObject.add("open_kfid_list", jsonArray);
69+
String responseContent = this.mainService.post(url, jsonObject.toString());
70+
return WxCpTpOpenKfIdConvertResult.fromJson(responseContent);
71+
}
72+
73+
@Override
74+
public WxCpTpConvertTmpExternalUserIdResult convertTmpExternalUserId(String corpId, int businessType, int userType, String... tmpExternalUserIdList) throws WxErrorException {
75+
WxCpTpConfigStorage wxCpTpConfigStorage = mainService.getWxCpTpConfigStorage();
76+
String url = wxCpTpConfigStorage.getApiUrl(WxCpApiPathConsts.IdConvert.CONVERT_TMP_EXTERNAL_USER_ID + "?access_token=" + mainService.getWxCpTpConfigStorage().getAccessToken(corpId));
77+
JsonObject jsonObject = new JsonObject();
78+
JsonArray jsonArray = new JsonArray();
79+
jsonObject.addProperty("business_type", businessType);
80+
jsonObject.addProperty("user_type", userType);
81+
for (String userId : tmpExternalUserIdList) {
82+
jsonArray.add(new JsonPrimitive(userId));
83+
}
84+
jsonObject.add("tmp_external_userid_list", jsonArray);
85+
String responseContent = mainService.post(url, jsonObject.toString());
86+
return WxCpTpConvertTmpExternalUserIdResult.fromJson(responseContent);
87+
}
88+
3589

3690
}

0 commit comments

Comments
 (0)