1
0
mirror of synced 2025-12-19 06:37:59 +08:00

🐛 #1713 企业微信修复获取企业已配置的「联系我」方式详情接口

* 外部联系人客户详情新增增加字段

增加字段:remark_corp_name,addWay,oper_userid

Signed-off-by: huangxiaoming <huangxm129@163.com>

* 修改测试类

Signed-off-by: huangxiaoming <huangxm129@163.com>

* 客户标签组查询列表功能修改

Signed-off-by: huangxiaoming <huangxm129@163.com>

* 修改测试类

Signed-off-by: huangxiaoming <huangxm129@163.com>

* 修改 add_way字段错误

Signed-off-by: huangxiaoming <huangxm129@163.com>

* 修改添加企业客户标签后无返回信息

Signed-off-by: huangxiaoming <huangxm129@163.com>

* 外部联系人客户详情新增增加字段

增加字段:remark_corp_name,addWay,oper_userid

Signed-off-by: huangxiaoming <huangxm129@163.com>

* 修改测试类

Signed-off-by: huangxiaoming <huangxm129@163.com>

* 修改测试类

Signed-off-by: huangxiaoming <huangxm129@163.com>

* 修改 add_way字段错误

Signed-off-by: huangxiaoming <huangxm129@163.com>

* 修改添加企业客户标签后无返回信息

Signed-off-by: huangxiaoming <huangxm129@163.com>

* 修改错误

Signed-off-by: huangxiaoming <huangxm129@163.com>

* 修改冲突

Signed-off-by: huangxiaoming <huangxm129@163.com>

* 获取企业已配置的「联系我」方式:添加二维码字段

Signed-off-by: huangxiaoming <huangxm129@163.com>

* 获取企业已配置的「联系我」方式对象无返回信息BUG

Signed-off-by: huangxiaoming <huangxm129@163.com>
This commit is contained in:
huangxm129
2020-08-16 12:51:34 +08:00
committed by GitHub
parent ce8f4f8cab
commit a7ea5f5bf3
4 changed files with 174 additions and 143 deletions

View File

@@ -28,12 +28,12 @@ public class WxCpExternalContactServiceImpl implements WxCpExternalContactServic
@Override @Override
public WxCpContactWayResult addContactWay(@NonNull WxCpContactWayInfo info) throws WxErrorException { public WxCpContactWayResult addContactWay(@NonNull WxCpContactWayInfo info) throws WxErrorException {
if (info.getUsers() != null && info.getUsers().size() > 100) { if (info.getContactWay().getUsers() != null && info.getContactWay().getUsers().size() > 100) {
throw new RuntimeException("「联系我」使用人数默认限制不超过100人(包括部门展开后的人数)"); throw new RuntimeException("「联系我」使用人数默认限制不超过100人(包括部门展开后的人数)");
} }
final String url = this.mainService.getWxCpConfigStorage().getApiUrl(ADD_CONTACT_WAY); final String url = this.mainService.getWxCpConfigStorage().getApiUrl(ADD_CONTACT_WAY);
String responseContent = this.mainService.post(url, info.toJson()); String responseContent = this.mainService.post(url, info.getContactWay().toJson());
return WxCpContactWayResult.fromJson(responseContent); return WxCpContactWayResult.fromJson(responseContent);
} }
@@ -45,21 +45,20 @@ public class WxCpExternalContactServiceImpl implements WxCpExternalContactServic
final String url = this.mainService.getWxCpConfigStorage().getApiUrl(GET_CONTACT_WAY); final String url = this.mainService.getWxCpConfigStorage().getApiUrl(GET_CONTACT_WAY);
String responseContent = this.mainService.post(url, json.toString()); String responseContent = this.mainService.post(url, json.toString());
return WxCpContactWayInfo.fromJson(responseContent); return WxCpContactWayInfo.fromJson(responseContent);
} }
@Override @Override
public WxCpBaseResp updateContactWay(@NonNull WxCpContactWayInfo info) throws WxErrorException { public WxCpBaseResp updateContactWay(@NonNull WxCpContactWayInfo info) throws WxErrorException {
if (StringUtils.isBlank(info.getConfigId())) { if (StringUtils.isBlank(info.getContactWay().getConfigId())) {
throw new RuntimeException("更新「联系我」方式需要指定configId"); throw new RuntimeException("更新「联系我」方式需要指定configId");
} }
if (info.getUsers() != null && info.getUsers().size() > 100) { if (info.getContactWay().getUsers() != null && info.getContactWay().getUsers().size() > 100) {
throw new RuntimeException("「联系我」使用人数默认限制不超过100人(包括部门展开后的人数)"); throw new RuntimeException("「联系我」使用人数默认限制不超过100人(包括部门展开后的人数)");
} }
final String url = this.mainService.getWxCpConfigStorage().getApiUrl(UPDATE_CONTACT_WAY); final String url = this.mainService.getWxCpConfigStorage().getApiUrl(UPDATE_CONTACT_WAY);
String responseContent = this.mainService.post(url, info.toJson()); String responseContent = this.mainService.post(url, info.getContactWay().toJson());
return WxCpBaseResp.fromJson(responseContent); return WxCpBaseResp.fromJson(responseContent);
} }

View File

@@ -3,7 +3,9 @@ package me.chanjar.weixin.cp.bean;
import com.google.gson.annotations.JsonAdapter; import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName; import com.google.gson.annotations.SerializedName;
import lombok.Data; import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.Setter;
import me.chanjar.weixin.cp.util.json.WxCpConclusionAdapter; import me.chanjar.weixin.cp.util.json.WxCpConclusionAdapter;
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder; import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
@@ -18,6 +20,12 @@ import java.util.List;
@NoArgsConstructor @NoArgsConstructor
public class WxCpContactWayInfo { public class WxCpContactWayInfo {
@SerializedName("contact_way")
private ContactWay contactWay;
@Getter
@Setter
public static class ContactWay {
/** /**
* 联系方式的配置id * 联系方式的配置id
*/ */
@@ -75,6 +83,14 @@ public class WxCpContactWayInfo {
*/ */
private String state; private String state;
/**
* <pre>
* 联系二维码的URL仅在scene为2时返回
* </pre>
*/
@SerializedName("qr_code")
private String qrCode;
/** /**
* <pre> * <pre>
* 使用该联系方式的用户userID列表在type为1时为必填且只能有一个 * 使用该联系方式的用户userID列表在type为1时为必填且只能有一个
@@ -137,8 +153,8 @@ public class WxCpContactWayInfo {
*/ */
private Conclusion conclusions; private Conclusion conclusions;
public static WxCpContactWayInfo fromJson(String json) { public static WxCpContactWayInfo.ContactWay fromJson(String json) {
return WxCpGsonBuilder.create().fromJson(json, WxCpContactWayInfo.class); return WxCpGsonBuilder.create().fromJson(json, WxCpContactWayInfo.ContactWay.class);
} }
public String toJson() { public String toJson() {
@@ -164,6 +180,17 @@ public class WxCpContactWayInfo {
private String miniProgramPage; private String miniProgramPage;
} }
}
public static WxCpContactWayInfo fromJson(String json) {
return WxCpGsonBuilder.create().fromJson(json, WxCpContactWayInfo.class);
}
public String toJson() {
return WxCpGsonBuilder.create().toJson(this);
}
public enum TYPE { public enum TYPE {
/** /**
* 单人 * 单人

View File

@@ -11,12 +11,12 @@ import java.lang.reflect.Type;
* *
* @author element * @author element
*/ */
public class WxCpConclusionAdapter implements JsonSerializer<WxCpContactWayInfo.Conclusion>, JsonDeserializer<WxCpContactWayInfo.Conclusion> { public class WxCpConclusionAdapter implements JsonSerializer<WxCpContactWayInfo.ContactWay.Conclusion>, JsonDeserializer<WxCpContactWayInfo.ContactWay.Conclusion> {
@Override @Override
public WxCpContactWayInfo.Conclusion deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { public WxCpContactWayInfo.ContactWay.Conclusion deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
JsonObject jsonObject = json.getAsJsonObject(); JsonObject jsonObject = json.getAsJsonObject();
WxCpContactWayInfo.Conclusion conclusion = new WxCpContactWayInfo.Conclusion(); WxCpContactWayInfo.ContactWay.Conclusion conclusion = new WxCpContactWayInfo.ContactWay.Conclusion();
if (jsonObject.get("text") != null) { if (jsonObject.get("text") != null) {
JsonObject jsonText = jsonObject.get("text").getAsJsonObject(); JsonObject jsonText = jsonObject.get("text").getAsJsonObject();
@@ -77,7 +77,7 @@ public class WxCpConclusionAdapter implements JsonSerializer<WxCpContactWayInfo.
} }
@Override @Override
public JsonElement serialize(WxCpContactWayInfo.Conclusion src, Type typeOfSrc, JsonSerializationContext context) { public JsonElement serialize(WxCpContactWayInfo.ContactWay.Conclusion src, Type typeOfSrc, JsonSerializationContext context) {
JsonObject json = new JsonObject(); JsonObject json = new JsonObject();
if (StringUtils.isNotBlank(src.getTextContent())) { if (StringUtils.isNotBlank(src.getTextContent())) {
JsonObject jsonText = new JsonObject(); JsonObject jsonText = new JsonObject();

View File

@@ -35,21 +35,24 @@ public class WxCpExternalContactServiceImplTest {
@Test @Test
public void testAddContactWay() throws WxErrorException { public void testAddContactWay() throws WxErrorException {
final String concatUserId = "符合要求的userId"; final String concatUserId = "HuangXiaoMing";
WxCpContactWayInfo.ContactWay wayInfo = new WxCpContactWayInfo.ContactWay();
wayInfo.setType(WxCpContactWayInfo.TYPE.SIGLE);
wayInfo.setScene(WxCpContactWayInfo.SCENE.QRCODE);
wayInfo.setUsers(Lists.newArrayList(concatUserId));
wayInfo.setRemark("CreateDate:" + DateFormatUtils.ISO_8601_EXTENDED_DATETIME_FORMAT.format(new Date()));
WxCpContactWayInfo info = new WxCpContactWayInfo(); WxCpContactWayInfo info = new WxCpContactWayInfo();
info.setType(WxCpContactWayInfo.TYPE.SIGLE); info.setContactWay(wayInfo);
info.setScene(WxCpContactWayInfo.SCENE.MINIPROGRAM);
info.setUsers(Lists.newArrayList(concatUserId));
info.setRemark("CreateDate:" + DateFormatUtils.ISO_8601_EXTENDED_DATETIME_FORMAT.format(new Date()));
this.wxCpService.getExternalContactService().addContactWay(info); this.wxCpService.getExternalContactService().addContactWay(info);
} }
@Test @Test
public void testGetContactWay() throws WxErrorException { public void testGetContactWay() throws WxErrorException {
final String configId = "2d7a68c657663afbd1d90db19a4b5ee9"; final String configId = "39fea3d93e30faaa8c7a9edd4cfe4d08";
WxCpContactWayInfo contactWayInfo = this.wxCpService.getExternalContactService().getContactWay(configId); WxCpContactWayInfo contactWayInfo = this.wxCpService.getExternalContactService().getContactWay(configId);
System.out.println(contactWayInfo); System.out.println(contactWayInfo.toJson());
assertNotNull(contactWayInfo); assertNotNull(contactWayInfo);
} }
@@ -57,10 +60,12 @@ public class WxCpExternalContactServiceImplTest {
public void testUpdateContactWay() throws WxErrorException { public void testUpdateContactWay() throws WxErrorException {
final String configId = "2d7a68c657663afbd1d90db19a4b5ee9"; final String configId = "2d7a68c657663afbd1d90db19a4b5ee9";
final String concatUserId = "符合要求的userId"; final String concatUserId = "符合要求的userId";
WxCpContactWayInfo.ContactWay wayInfo = new WxCpContactWayInfo.ContactWay();
wayInfo.setConfigId(configId);
wayInfo.setUsers(Lists.newArrayList(concatUserId));
wayInfo.setRemark("CreateDate:" + DateFormatUtils.ISO_8601_EXTENDED_DATETIME_FORMAT.format(new Date()));
WxCpContactWayInfo info = new WxCpContactWayInfo(); WxCpContactWayInfo info = new WxCpContactWayInfo();
info.setConfigId(configId); info.setContactWay(wayInfo);
info.setUsers(Lists.newArrayList(concatUserId));
info.setRemark("CreateDate:" + DateFormatUtils.ISO_8601_EXTENDED_DATETIME_FORMAT.format(new Date()));
WxCpBaseResp resp = this.wxCpService.getExternalContactService().updateContactWay(info); WxCpBaseResp resp = this.wxCpService.getExternalContactService().updateContactWay(info);
System.out.println(resp); System.out.println(resp);
assertNotNull(resp); assertNotNull(resp);