🆕 #2361 【企业微信】增加客户朋友圈相关的部分接口

This commit is contained in:
Boris 2021-10-31 23:25:27 +08:00 committed by GitHub
parent dde445150a
commit 537a9332c0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
22 changed files with 651 additions and 6 deletions

View File

@ -3,8 +3,16 @@ package me.chanjar.weixin.cp.api;
import lombok.NonNull;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.cp.bean.WxCpBaseResp;
import me.chanjar.weixin.cp.bean.external.WxCpAddMomentResult;
import me.chanjar.weixin.cp.bean.external.WxCpAddMomentTask;
import me.chanjar.weixin.cp.bean.external.WxCpContactWayInfo;
import me.chanjar.weixin.cp.bean.external.WxCpContactWayResult;
import me.chanjar.weixin.cp.bean.external.WxCpGetMomentComments;
import me.chanjar.weixin.cp.bean.external.WxCpGetMomentCustomerList;
import me.chanjar.weixin.cp.bean.external.WxCpGetMomentList;
import me.chanjar.weixin.cp.bean.external.WxCpGetMomentSendResult;
import me.chanjar.weixin.cp.bean.external.WxCpGetMomentTask;
import me.chanjar.weixin.cp.bean.external.WxCpGetMomentTaskResult;
import me.chanjar.weixin.cp.bean.external.WxCpMsgTemplate;
import me.chanjar.weixin.cp.bean.external.WxCpMsgTemplateAddResult;
import me.chanjar.weixin.cp.bean.external.WxCpUpdateRemarkRequest;
@ -181,7 +189,7 @@ public interface WxCpExternalContactService {
* @return 该企业的外部联系人ID
* @throws WxErrorException .
*/
String unionidToExternalUserid(String unionid) throws WxErrorException;
String unionidToExternalUserid(@NotNull String unionid,String openid) throws WxErrorException;
/**
* 批量获取客户详情.
@ -586,6 +594,104 @@ public interface WxCpExternalContactService {
*/
WxCpBaseResp markTag(String userid, String externalUserid, String[] addTag, String[] removeTag) throws WxErrorException;
/**
* <pre>
* 企业和第三方应用可通过该接口创建客户朋友圈的发表任务
* https://open.work.weixin.qq.com/api/doc/90000/90135/95094
* </pre>
* @param task
* @return wx cp add moment result
* @throws WxErrorException the wx error exception
*/
WxCpAddMomentResult addMomentTask(WxCpAddMomentTask task) throws WxErrorException;
/**
* <pre>
* 由于发表任务的创建是异步执行的应用需要再调用该接口以获取创建的结果
* https://open.work.weixin.qq.com/api/doc/90000/90135/95094
* </pre>
* @param jobId 异步任务id最大长度为64字节由创建发表内容到客户朋友圈任务接口获取
* @return
* @throws WxErrorException
*/
WxCpGetMomentTaskResult getMomentTaskResult(String jobId) throws WxErrorException;
/**
* <pre>
* 获取客户朋友圈全部的发表记录 获取企业全部的发表列表
* https://open.work.weixin.qq.com/api/doc/90000/90135/93333
* </pre>
* @param startTime 朋友圈记录开始时间Unix时间戳
* @param endTime 朋友圈记录结束时间Unix时间戳
* @param creator 朋友圈创建人的userid
* @param filterType 朋友圈类型0企业发表 1个人发表 2所有包括个人创建以及企业创建默认情况下为所有类型
* @param cursor 用于分页查询的游标字符串类型由上一次调用返回首次调用可不填
* @param limit 返回的最大记录数整型最大值100默认值100超过最大值时取默认值
* @return
* @throws WxErrorException
*/
WxCpGetMomentList getMomentList(Long startTime, Long endTime, String creator, Integer filterType,
String cursor, Integer limit) throws WxErrorException;
/**
* <pre>
* 获取客户朋友圈全部的发表记录 获取客户朋友圈企业发表的列表
* https://open.work.weixin.qq.com/api/doc/90000/90135/93333
* </pre>
* @param momentId 朋友圈id,仅支持企业发表的朋友圈id
* @param cursor 用于分页查询的游标字符串类型由上一次调用返回首次调用可不填
* @param limit 返回的最大记录数整型最大值1000默认值500超过最大值时取默认值
* @return
* @throws WxErrorException
*/
WxCpGetMomentTask getMomentTask(String momentId, String cursor, Integer limit)
throws WxErrorException;
/**
* <pre>
* 获取客户朋友圈全部的发表记录 获取客户朋友圈发表时选择的可见范围
* https://open.work.weixin.qq.com/api/doc/90000/90135/93333
* </pre>
* @param momentId 朋友圈id
* @param userId 企业发表成员userid如果是企业创建的朋友圈可以通过获取客户朋友圈企业发表的
* 列表获取已发表成员userid如果是个人创建的朋友圈创建人userid就是企业发表成员userid
* @param cursor 用于分页查询的游标字符串类型由上一次调用返回首次调用可不填
* @param limit 返回的最大记录数整型最大值1000默认值500超过最大值时取默认值
* @return
* @throws WxErrorException
*/
WxCpGetMomentCustomerList getMomentCustomerList(String momentId, String userId,
String cursor, Integer limit) throws WxErrorException;
/**
* <pre>
* 获取客户朋友圈全部的发表记录 获取客户朋友圈发表后的可见客户列表
* https://open.work.weixin.qq.com/api/doc/90000/90135/93333
* </pre>
* @param momentId 朋友圈id
* @param userId 企业发表成员userid如果是企业创建的朋友圈可以通过获取客户朋友圈企业发表的列表获取已发表成员userid
* 如果是个人创建的朋友圈创建人userid就是企业发表成员userid
* @param cursor 用于分页查询的游标字符串类型由上一次调用返回首次调用可不填
* @param limit 返回的最大记录数整型最大值5000默认值3000超过最大值时取默认值
* @return
* @throws WxErrorException
*/
WxCpGetMomentSendResult getMomentSendResult(String momentId, String userId,
String cursor, Integer limit) throws WxErrorException;
/**
* <pre>
* 获取客户朋友圈全部的发表记录 获取客户朋友圈的互动数据
* https://open.work.weixin.qq.com/api/doc/90000/90135/93333
* </pre>
* @param momentId 朋友圈id
* @param userId 企业发表成员userid如果是企业创建的朋友圈可以通过获取客户朋友圈企业发表的列表获取已发表成员userid
* 如果是个人创建的朋友圈创建人userid就是企业发表成员userid
* @return
* @throws WxErrorException
*/
WxCpGetMomentComments getMomentComments(String momentId, String userId)
throws WxErrorException;
/**
* <pre>

View File

@ -12,8 +12,16 @@ import me.chanjar.weixin.common.util.json.GsonParser;
import me.chanjar.weixin.cp.api.WxCpExternalContactService;
import me.chanjar.weixin.cp.api.WxCpService;
import me.chanjar.weixin.cp.bean.WxCpBaseResp;
import me.chanjar.weixin.cp.bean.external.WxCpAddMomentResult;
import me.chanjar.weixin.cp.bean.external.WxCpAddMomentTask;
import me.chanjar.weixin.cp.bean.external.WxCpContactWayInfo;
import me.chanjar.weixin.cp.bean.external.WxCpContactWayResult;
import me.chanjar.weixin.cp.bean.external.WxCpGetMomentComments;
import me.chanjar.weixin.cp.bean.external.WxCpGetMomentCustomerList;
import me.chanjar.weixin.cp.bean.external.WxCpGetMomentList;
import me.chanjar.weixin.cp.bean.external.WxCpGetMomentSendResult;
import me.chanjar.weixin.cp.bean.external.WxCpGetMomentTask;
import me.chanjar.weixin.cp.bean.external.WxCpGetMomentTaskResult;
import me.chanjar.weixin.cp.bean.external.WxCpMsgTemplate;
import me.chanjar.weixin.cp.bean.external.WxCpMsgTemplateAddResult;
import me.chanjar.weixin.cp.bean.external.WxCpUpdateRemarkRequest;
@ -137,9 +145,12 @@ public class WxCpExternalContactServiceImpl implements WxCpExternalContactServic
}
@Override
public String unionidToExternalUserid(@NotNull String unionid) throws WxErrorException {
public String unionidToExternalUserid(@NotNull String unionid,String openid) throws WxErrorException {
JsonObject json = new JsonObject();
json.addProperty("unionid", unionid);
if(StringUtils.isNotEmpty(openid)){
json.addProperty("openid",openid);
}
final String url = this.mainService.getWxCpConfigStorage().getApiUrl(UNIONID_TO_EXTERNAL_USERID);
String responseContent = this.mainService.post(url, json.toString());
JsonObject tmpJson = GsonParser.parse(responseContent);
@ -449,6 +460,105 @@ public class WxCpExternalContactServiceImpl implements WxCpExternalContactServic
return WxCpBaseResp.fromJson(result);
}
@Override
public WxCpAddMomentResult addMomentTask(WxCpAddMomentTask task) throws WxErrorException {
final String url = this.mainService.getWxCpConfigStorage().getApiUrl(ADD_MOMENT_TASK);
final String result = this.mainService.post(url, task.toJson());
return WxCpAddMomentResult.fromJson(result);
}
@Override
public WxCpGetMomentTaskResult getMomentTaskResult(String jobId) throws WxErrorException {
String params = "&jobid=" + jobId;
final String url = this.mainService.getWxCpConfigStorage().getApiUrl(GET_MOMENT_TASK_RESULT);
final String result = this.mainService.get(url, params);
return WxCpGetMomentTaskResult.fromJson(result);
}
@Override
public WxCpGetMomentList getMomentList(Long startTime, Long endTime, String creator, Integer filterType,
String cursor, Integer limit) throws WxErrorException {
JsonObject json = new JsonObject();
json.addProperty("start_time", startTime);
json.addProperty("end_time", endTime);
if (!StringUtils.isEmpty(creator)) {
json.addProperty("creator", creator);
}
if (filterType!=null) {
json.addProperty("filter_type", filterType);
}
if (!StringUtils.isEmpty(cursor)) {
json.addProperty("cursor", cursor);
}
if (limit!=null) {
json.addProperty("limit", limit);
}
final String url = this.mainService.getWxCpConfigStorage().getApiUrl(GET_MOMENT_LIST);
final String result = this.mainService.post(url, json.toString());
return WxCpGetMomentList.fromJson(result);
}
@Override
public WxCpGetMomentTask getMomentTask(String momentId, String cursor, Integer limit)
throws WxErrorException {
JsonObject json = new JsonObject();
json.addProperty("moment_id", momentId);
if (!StringUtils.isEmpty(cursor)) {
json.addProperty("cursor", cursor);
}
if (limit!=null) {
json.addProperty("limit", limit);
}
final String url = this.mainService.getWxCpConfigStorage().getApiUrl(GET_MOMENT_TASK);
final String result = this.mainService.post(url, json.toString());
return WxCpGetMomentTask.fromJson(result);
}
@Override
public WxCpGetMomentCustomerList getMomentCustomerList(String momentId, String userId,
String cursor, Integer limit) throws WxErrorException {
JsonObject json = new JsonObject();
json.addProperty("moment_id", momentId);
json.addProperty("userid", userId);
if (!StringUtils.isEmpty(cursor)) {
json.addProperty("cursor", cursor);
}
if (limit!=null) {
json.addProperty("limit", limit);
}
final String url = this.mainService.getWxCpConfigStorage().getApiUrl(GET_MOMENT_CUSTOMER_LIST);
final String result = this.mainService.post(url, json.toString());
return WxCpGetMomentCustomerList.fromJson(result);
}
@Override
public WxCpGetMomentSendResult getMomentSendResult(String momentId, String userId,
String cursor, Integer limit) throws WxErrorException {
JsonObject json = new JsonObject();
json.addProperty("moment_id", momentId);
json.addProperty("userid", userId);
if (!StringUtils.isEmpty(cursor)) {
json.addProperty("cursor", cursor);
}
if (limit!=null) {
json.addProperty("limit", limit);
}
final String url = this.mainService.getWxCpConfigStorage().getApiUrl(GET_MOMENT_SEND_RESULT);
final String result = this.mainService.post(url, json.toString());
return WxCpGetMomentSendResult.fromJson(result);
}
@Override
public WxCpGetMomentComments getMomentComments(String momentId, String userId)
throws WxErrorException {
JsonObject json = new JsonObject();
json.addProperty("moment_id", momentId);
json.addProperty("userid", userId);
final String url = this.mainService.getWxCpConfigStorage().getApiUrl(GET_MOMENT_COMMENTS);
final String result = this.mainService.post(url, json.toString());
return WxCpGetMomentComments.fromJson(result);
}
/**
* <pre>
* 企业和第三方应用可通过此接口获取企业与成员的群发记录

View File

@ -0,0 +1,27 @@
package me.chanjar.weixin.cp.bean.external;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import me.chanjar.weixin.cp.bean.WxCpBaseResp;
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
/**
* 企业发表内容到客户的朋友圈 创建发表任务结果
*
* @author leiin
* @date 2021-10-29
*/
@Data
public class WxCpAddMomentResult extends WxCpBaseResp {
@SerializedName("jobid")
private String jobId;
public static WxCpAddMomentResult fromJson(String json) {
return WxCpGsonBuilder.create().fromJson(json, WxCpAddMomentResult.class);
}
public String toJson() {
return WxCpGsonBuilder.create().toJson(this);
}
}

View File

@ -0,0 +1,36 @@
package me.chanjar.weixin.cp.bean.external;
import com.google.gson.annotations.SerializedName;
import java.io.Serializable;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import me.chanjar.weixin.cp.bean.external.msg.Attachment;
import me.chanjar.weixin.cp.bean.external.msg.Text;
import me.chanjar.weixin.cp.bean.external.moment.VisibleRange;
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
/**
* 企业发表内容到客户的朋友圈 创建发表任务
*
* @author leiin
* @date 2021-10-29
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class WxCpAddMomentTask implements Serializable {
@SerializedName("visible_range")
private VisibleRange visibleRange;
private Text text;
private List<Attachment> attachments;
public String toJson() {
return WxCpGsonBuilder.create().toJson(this);
}
}

View File

@ -0,0 +1,40 @@
package me.chanjar.weixin.cp.bean.external;
import com.google.gson.annotations.SerializedName;
import java.util.List;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import me.chanjar.weixin.cp.bean.WxCpBaseResp;
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
/**
* 企业发表内容到客户的朋友圈 获取客户朋友圈的互动数据
*
* @author leiin
* @date 2021-10-29
*/
@Data
public class WxCpGetMomentComments extends WxCpBaseResp {
@SerializedName("comment_list")
private List<CommentLikeItem> commentList;
@SerializedName("like_list")
private List<CommentLikeItem> likeList;
@Getter
@Setter
public static class CommentLikeItem {
@SerializedName("external_userid")
private String externalUserId;
@SerializedName("create_time")
private Long createTime;
}
public static WxCpGetMomentComments fromJson(String json) {
return WxCpGsonBuilder.create().fromJson(json, WxCpGetMomentComments.class);
}
public String toJson() {
return WxCpGsonBuilder.create().toJson(this);
}
}

View File

@ -0,0 +1,30 @@
package me.chanjar.weixin.cp.bean.external;
import com.google.gson.annotations.SerializedName;
import java.util.List;
import lombok.Data;
import me.chanjar.weixin.cp.bean.WxCpBaseResp;
import me.chanjar.weixin.cp.bean.external.moment.CustomerItem;
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
/**
* 企业发表内容到客户的朋友圈 获取客户朋友圈发表时选择的可见范围
*
* @author leiin
* @date 2021-10-29
*/
@Data
public class WxCpGetMomentCustomerList extends WxCpBaseResp {
@SerializedName("next_cursor")
private String nextCursor;
@SerializedName("customer_list")
private List<CustomerItem> customerList;
public static WxCpGetMomentCustomerList fromJson(String json) {
return WxCpGsonBuilder.create().fromJson(json, WxCpGetMomentCustomerList.class);
}
public String toJson() {
return WxCpGsonBuilder.create().toJson(this);
}
}

View File

@ -0,0 +1,30 @@
package me.chanjar.weixin.cp.bean.external;
import com.google.gson.annotations.SerializedName;
import java.util.List;
import lombok.Data;
import me.chanjar.weixin.cp.bean.WxCpBaseResp;
import me.chanjar.weixin.cp.bean.external.moment.MomentInfo;
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
/**
* 企业发表内容到客户的朋友圈 获取企业全部的发表列表
*
* @author leiin
* @date 2021-10-29
*/
@Data
public class WxCpGetMomentList extends WxCpBaseResp {
@SerializedName("next_cursor")
private String nextCursor;
@SerializedName("moment_list")
private List<MomentInfo> momentList;
public static WxCpGetMomentList fromJson(String json) {
return WxCpGsonBuilder.create().fromJson(json, WxCpGetMomentList.class);
}
public String toJson() {
return WxCpGsonBuilder.create().toJson(this);
}
}

View File

@ -0,0 +1,30 @@
package me.chanjar.weixin.cp.bean.external;
import com.google.gson.annotations.SerializedName;
import java.util.List;
import lombok.Data;
import me.chanjar.weixin.cp.bean.WxCpBaseResp;
import me.chanjar.weixin.cp.bean.external.moment.CustomerItem;
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
/**
* 企业发表内容到客户的朋友圈 获取客户朋友圈发表后的可见客户列表
*
* @author leiin
* @date 2021-10-29
*/
@Data
public class WxCpGetMomentSendResult extends WxCpBaseResp {
@SerializedName("next_cursor")
private String nextCursor;
@SerializedName("customer_list")
private List<CustomerItem> customerList;
public static WxCpGetMomentSendResult fromJson(String json) {
return WxCpGsonBuilder.create().fromJson(json, WxCpGetMomentSendResult.class);
}
public String toJson() {
return WxCpGsonBuilder.create().toJson(this);
}
}

View File

@ -0,0 +1,41 @@
package me.chanjar.weixin.cp.bean.external;
import com.google.gson.annotations.SerializedName;
import java.util.List;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import me.chanjar.weixin.cp.bean.WxCpBaseResp;
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
/**
* 企业发表内容到客户的朋友圈 获取客户朋友圈企业发表的列表
*
* @author leiin
* @date 2021-10-29
*/
@Data
public class WxCpGetMomentTask extends WxCpBaseResp {
@SerializedName("next_cursor")
private String nextCursor;
@SerializedName("task_list")
private List<MomentTaskItem> taskList;
@Getter
@Setter
public static class MomentTaskItem {
@SerializedName("userid")
private String userId;
@SerializedName("publish_status")
private String publishStatus;
}
public static WxCpGetMomentTask fromJson(String json) {
return WxCpGsonBuilder.create().fromJson(json, WxCpGetMomentTask.class);
}
public String toJson() {
return WxCpGsonBuilder.create().toJson(this);
}
}

View File

@ -0,0 +1,50 @@
package me.chanjar.weixin.cp.bean.external;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import me.chanjar.weixin.cp.bean.WxCpBaseResp;
import me.chanjar.weixin.cp.bean.external.moment.ExternalContactList;
import me.chanjar.weixin.cp.bean.external.moment.SenderList;
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
/**
* 企业发表内容到客户的朋友圈 获取任务创建结果
*
* @author leiin
* @date 2021-10-29
*/
@Data
public class WxCpGetMomentTaskResult extends WxCpBaseResp {
private Integer status;
private String type;
private TaskResult result;
@Getter
@Setter
public static class TaskResult extends WxCpBaseResp {
@SerializedName("moment_id")
private String momentId;
@SerializedName("invalid_sender_list")
private SenderList invalidSenderList;
@SerializedName("invalid_external_contact_list")
private ExternalContactList invalidExternalContactList;
public static TaskResult fromJson(String json) {
return WxCpGsonBuilder.create().fromJson(json, TaskResult.class);
}
public String toJson() {
return WxCpGsonBuilder.create().toJson(this);
}
}
public static WxCpGetMomentTaskResult fromJson(String json) {
return WxCpGsonBuilder.create().fromJson(json, WxCpGetMomentTaskResult.class);
}
public String toJson() {
return WxCpGsonBuilder.create().toJson(this);
}
}

View File

@ -35,7 +35,7 @@ public class WxCpUserExternalTagGroupInfo extends WxCpBaseResp {
private Long createTime;
@SerializedName("order")
private Integer order;
private Long order;
@SerializedName("deleted")
private Boolean deleted;
@ -67,7 +67,7 @@ public class WxCpUserExternalTagGroupInfo extends WxCpBaseResp {
private Long createTime;
@SerializedName("order")
private Integer order;
private Long order;
@SerializedName("deleted")
private Boolean deleted;

View File

@ -0,0 +1,14 @@
package me.chanjar.weixin.cp.bean.external.moment;
import com.google.gson.annotations.SerializedName;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class CustomerItem {
@SerializedName("external_userid")
private String externalUserId;
@SerializedName("userid")
private String userId;
}

View File

@ -0,0 +1,13 @@
package me.chanjar.weixin.cp.bean.external.moment;
import com.google.gson.annotations.SerializedName;
import java.util.List;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class ExternalContactList {
@SerializedName("tag_list")
private List<String> tagList;
}

View File

@ -0,0 +1,28 @@
package me.chanjar.weixin.cp.bean.external.moment;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import me.chanjar.weixin.cp.bean.external.msg.Image;
import me.chanjar.weixin.cp.bean.external.msg.Link;
import me.chanjar.weixin.cp.bean.external.msg.Location;
import me.chanjar.weixin.cp.bean.external.msg.Text;
import me.chanjar.weixin.cp.bean.external.msg.Video;
@Data
public class MomentInfo {
@SerializedName("moment_id")
private String momentId;
@SerializedName("creator")
private String creator;
@SerializedName("create_time")
private String createTime;
@SerializedName("create_type")
private Integer createType;
@SerializedName("visible_type")
private Integer visibleType;
private Text text;
private Image image;
private Video video;
private Link link;
private Location location;
}

View File

@ -0,0 +1,15 @@
package me.chanjar.weixin.cp.bean.external.moment;
import com.google.gson.annotations.SerializedName;
import java.util.List;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class SenderList {
@SerializedName("user_list")
private List<String> userList;
@SerializedName("department_list")
private List<String> departmentList;
}

View File

@ -0,0 +1,13 @@
package me.chanjar.weixin.cp.bean.external.moment;
import com.google.gson.annotations.SerializedName;
import java.io.Serializable;
import lombok.Data;
@Data
public class VisibleRange implements Serializable {
@SerializedName("sender_list")
private SenderList senderList;
@SerializedName("external_contact_list")
private ExternalContactList externalContactList;
}

View File

@ -19,4 +19,6 @@ public class Link implements Serializable {
private String picUrl;
private String desc;
private String url;
@SerializedName("media_id")
private String mediaId;
}

View File

@ -0,0 +1,16 @@
package me.chanjar.weixin.cp.bean.external.msg;
import lombok.Data;
/**
* 地理位置
*
* @author leiin
* @date 2021-10-29
*/
@Data
public class Location {
private String latitude;
private String longitude;
private String name;
}

View File

@ -16,4 +16,6 @@ public class Video implements Serializable {
private static final long serialVersionUID = -6048642921382867138L;
@SerializedName("media_id")
private String mediaId;
@SerializedName("thumb_media_id")
private String thumbMediaId;
}

View File

@ -189,6 +189,39 @@ public class WxCpTpXmlMessage implements Serializable {
@XStreamConverter(value = XStreamCDataConverter.class)
protected String externalUserID;
@XStreamAlias("State")
@XStreamConverter(value = XStreamCDataConverter.class)
protected String state;
@XStreamAlias("Source")
@XStreamConverter(value = XStreamCDataConverter.class)
protected String source;
@XStreamAlias("FailReason")
@XStreamConverter(value = XStreamCDataConverter.class)
protected String failReason;
@XStreamAlias("ChatId")
@XStreamConverter(value = XStreamCDataConverter.class)
protected String chatId;
@XStreamAlias("UpdateDetail")
@XStreamConverter(value = XStreamCDataConverter.class)
protected String updateDetail;
@XStreamAlias("JoinScene")
protected Integer joinScene;
@XStreamAlias("QuitScene")
protected Integer quitScene;
@XStreamAlias("MemChangeCnt")
protected Integer memChangeCnt;
@XStreamAlias("TagType")
@XStreamConverter(value = XStreamCDataConverter.class)
protected String tagType;
@XStreamAlias("WelcomeCode")
@XStreamConverter(value = XStreamCDataConverter.class)
protected String welcomeCode;

View File

@ -206,8 +206,17 @@ public interface WxCpApiPathConsts {
String DEL_CORP_TAG = "/cgi-bin/externalcontact/del_corp_tag";
String MARK_TAG = "/cgi-bin/externalcontact/mark_tag";
String ADD_MOMENT_TASK = "/cgi-bin/externalcontact/add_moment_task";
String GET_MOMENT_TASK_RESULT = "/cgi-bin/externalcontact/get_moment_task_result";
String GET_MOMENT_LIST = "/cgi-bin/externalcontact/get_moment_list";
String GET_MOMENT_TASK = "/cgi-bin/externalcontact/get_moment_task";
String GET_MOMENT_CUSTOMER_LIST = "/cgi-bin/externalcontact/get_moment_customer_list";
String GET_MOMENT_SEND_RESULT = "/cgi-bin/externalcontact/get_moment_send_result";
String GET_MOMENT_COMMENTS = "/cgi-bin/externalcontact/get_moment_comments";
String GET_GROUP_MSG_SEND_RESULT = "/cgi-bin/externalcontact/get_groupmsg_send_result";
String GET_GROUP_MSG_TASK = "/cgi-bin/externalcontact/get_groupmsg_task";
String GET_GROUP_MSG_LIST_V2 = "/cgi-bin/externalcontact/get_groupmsg_list_v2";
}
}

View File

@ -138,13 +138,13 @@ public class WxCpExternalContactServiceImplTest {
List<WxCpUserExternalTagGroupInfo.Tag> list = new ArrayList<>();
WxCpUserExternalTagGroupInfo.Tag tag = new WxCpUserExternalTagGroupInfo.Tag();
tag.setName("测试标签20");
tag.setOrder(1);
tag.setOrder(1L);
list.add(tag);
WxCpUserExternalTagGroupInfo tagGroupInfo = new WxCpUserExternalTagGroupInfo();
WxCpUserExternalTagGroupInfo.TagGroup tagGroup = new WxCpUserExternalTagGroupInfo.TagGroup();
tagGroup.setGroupName("其他");
tagGroup.setOrder(1);
tagGroup.setOrder(1L);
tagGroup.setTag(list);
tagGroupInfo.setTagGroup(tagGroup);