mirror of
https://gitee.com/binary/weixin-java-tools.git
synced 2025-04-05 17:38:05 +08:00
#978 增加微信营销相关接口
This commit is contained in:
parent
b33e1708c0
commit
be33986ecd
@ -0,0 +1,71 @@
|
||||
package me.chanjar.weixin.mp.api;
|
||||
|
||||
import me.chanjar.weixin.common.error.WxErrorException;
|
||||
import me.chanjar.weixin.mp.bean.marketing.WxMpAdLeadFilter;
|
||||
import me.chanjar.weixin.mp.bean.marketing.WxMpAdLeadResult;
|
||||
import me.chanjar.weixin.mp.bean.marketing.WxMpUserAction;
|
||||
import me.chanjar.weixin.mp.bean.marketing.WxMpUserActionSet;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <pre>
|
||||
* 微信营销接口
|
||||
* </pre>
|
||||
*
|
||||
* @author <a href="https://github.com/007gzs">007</a>
|
||||
*/
|
||||
public interface WxMpMarketingService {
|
||||
String API_URL_PREFIX = "https://api.weixin.qq.com/marketing/";
|
||||
|
||||
/**
|
||||
* <pre>
|
||||
* 创建数据源
|
||||
* 接口调用请求说明
|
||||
* https://wximg.qq.com/wxp/pdftool/get.html?id=rkalQXDBM&pa=39
|
||||
* </pre>
|
||||
*
|
||||
* @param type 用户行为源类型
|
||||
* @param name 用户行为源名称 必填
|
||||
* @param description 用户行为源描述,字段长度最小 1 字节,长度最大 128 字节
|
||||
*/
|
||||
long addUserActionSets(String type, String name, String description) throws WxErrorException;
|
||||
|
||||
/**
|
||||
* <pre>
|
||||
* 获取数据源信息
|
||||
* </pre>
|
||||
*
|
||||
* @param userActionSetId 数据源唯一ID
|
||||
*/
|
||||
List<WxMpUserActionSet> getUserActionSets(Long userActionSetId) throws WxErrorException;
|
||||
|
||||
/**
|
||||
* 回传数据
|
||||
* 接口调用请求说明
|
||||
* https://wximg.qq.com/wxp/pdftool/get.html?id=rkalQXDBM&pa=39
|
||||
*
|
||||
* @param actions 用户行为源类型
|
||||
*/
|
||||
void addUserAction(List<WxMpUserAction> actions) throws WxErrorException;
|
||||
|
||||
/**
|
||||
* <pre>
|
||||
* 获取朋友圈销售线索数据接口
|
||||
* 接口调用请求说明
|
||||
*
|
||||
* http请求方式: POST
|
||||
* http://api.weixin.qq.com/cgi-bin/media/voice/translatecontent?access_token=ACCESS_TOKEN&lfrom=xxx<o=xxx
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @param beginDate 开始日期
|
||||
* @param endDate 结束日期
|
||||
* @param filtering 过滤条件
|
||||
* @param page 页码,获取指定页数据
|
||||
* @param page_size 一页获取的数据条数(1-100)
|
||||
*/
|
||||
WxMpAdLeadResult getAdLeads(Date beginDate, Date endDate, List<WxMpAdLeadFilter> filtering, Integer page, Integer page_size) throws WxErrorException, IOException;
|
||||
}
|
@ -411,6 +411,13 @@ public interface WxMpService {
|
||||
*/
|
||||
WxMpMemberCardService getMemberCardService();
|
||||
|
||||
/**
|
||||
* 返回营销相关接口方法的实现类对象,以方便调用其各个接口.
|
||||
*
|
||||
* @return WxMpMarketingService
|
||||
*/
|
||||
WxMpMarketingService getMarketingService();
|
||||
|
||||
/**
|
||||
* 初始化http请求对象.
|
||||
*/
|
||||
@ -473,4 +480,6 @@ public interface WxMpService {
|
||||
void setMassMessageService(WxMpMassMessageService massMessageService);
|
||||
|
||||
void setAiOpenService(WxMpAiOpenService aiOpenService);
|
||||
|
||||
void setMarketingService(WxMpMarketingService marketingService);
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ package me.chanjar.weixin.mp.api.impl;
|
||||
import java.io.IOException;
|
||||
import java.util.concurrent.locks.Lock;
|
||||
|
||||
import me.chanjar.weixin.mp.api.*;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@ -24,26 +25,6 @@ import me.chanjar.weixin.common.util.http.RequestHttp;
|
||||
import me.chanjar.weixin.common.util.http.SimpleGetRequestExecutor;
|
||||
import me.chanjar.weixin.common.util.http.SimplePostRequestExecutor;
|
||||
import me.chanjar.weixin.common.util.http.URIUtil;
|
||||
import me.chanjar.weixin.mp.api.WxMpAiOpenService;
|
||||
import me.chanjar.weixin.mp.api.WxMpCardService;
|
||||
import me.chanjar.weixin.mp.api.WxMpConfigStorage;
|
||||
import me.chanjar.weixin.mp.api.WxMpDataCubeService;
|
||||
import me.chanjar.weixin.mp.api.WxMpDeviceService;
|
||||
import me.chanjar.weixin.mp.api.WxMpKefuService;
|
||||
import me.chanjar.weixin.mp.api.WxMpMassMessageService;
|
||||
import me.chanjar.weixin.mp.api.WxMpMaterialService;
|
||||
import me.chanjar.weixin.mp.api.WxMpMemberCardService;
|
||||
import me.chanjar.weixin.mp.api.WxMpMenuService;
|
||||
import me.chanjar.weixin.mp.api.WxMpQrcodeService;
|
||||
import me.chanjar.weixin.mp.api.WxMpService;
|
||||
import me.chanjar.weixin.mp.api.WxMpShakeService;
|
||||
import me.chanjar.weixin.mp.api.WxMpStoreService;
|
||||
import me.chanjar.weixin.mp.api.WxMpSubscribeMsgService;
|
||||
import me.chanjar.weixin.mp.api.WxMpTemplateMsgService;
|
||||
import me.chanjar.weixin.mp.api.WxMpUserBlacklistService;
|
||||
import me.chanjar.weixin.mp.api.WxMpUserService;
|
||||
import me.chanjar.weixin.mp.api.WxMpUserTagService;
|
||||
import me.chanjar.weixin.mp.api.WxMpWifiService;
|
||||
import me.chanjar.weixin.mp.bean.WxMpSemanticQuery;
|
||||
import me.chanjar.weixin.mp.bean.result.WxMpCurrentAutoReplyInfo;
|
||||
import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken;
|
||||
@ -81,6 +62,7 @@ public abstract class BaseWxMpServiceImpl<H, P> implements WxMpService, RequestH
|
||||
private WxMpMassMessageService massMessageService = new WxMpMassMessageServiceImpl(this);
|
||||
private WxMpAiOpenService aiOpenService = new WxMpAiOpenServiceImpl(this);
|
||||
private WxMpWifiService wifiService = new WxMpWifiServiceImpl(this);
|
||||
private WxMpMarketingService marketingService = new WxMpMarketingServiceImpl(this);
|
||||
|
||||
private int retrySleepMillis = 1000;
|
||||
private int maxRetryTimes = 5;
|
||||
@ -545,4 +527,14 @@ public abstract class BaseWxMpServiceImpl<H, P> implements WxMpService, RequestH
|
||||
public WxMpWifiService getWifiService() {
|
||||
return this.wifiService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public WxMpMarketingService getMarketingService() {
|
||||
return this.marketingService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMarketingService(WxMpMarketingService marketingService) {
|
||||
this.marketingService = marketingService;
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,92 @@
|
||||
package me.chanjar.weixin.mp.api.impl;
|
||||
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParser;
|
||||
import me.chanjar.weixin.common.error.WxErrorException;
|
||||
import me.chanjar.weixin.mp.api.WxMpMarketingService;
|
||||
import me.chanjar.weixin.mp.api.WxMpService;
|
||||
import me.chanjar.weixin.mp.bean.marketing.WxMpAdLeadFilter;
|
||||
import me.chanjar.weixin.mp.bean.marketing.WxMpAdLeadResult;
|
||||
import me.chanjar.weixin.mp.bean.marketing.WxMpUserAction;
|
||||
import me.chanjar.weixin.mp.bean.marketing.WxMpUserActionSet;
|
||||
import org.apache.commons.lang3.time.DateFormatUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author <a href="https://github.com/007gzs">007</a>
|
||||
*/
|
||||
public class WxMpMarketingServiceImpl implements WxMpMarketingService {
|
||||
protected final Logger log = LoggerFactory.getLogger(this.getClass());
|
||||
private WxMpService wxMpService;
|
||||
|
||||
public WxMpMarketingServiceImpl(WxMpService wxMpService) {
|
||||
this.wxMpService = wxMpService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long addUserActionSets(String type, String name, String description) throws WxErrorException {
|
||||
String url = API_URL_PREFIX + "user_action_sets/add?version=v1.0";
|
||||
JsonObject json = new JsonObject();
|
||||
json.addProperty("type", type);
|
||||
json.addProperty("name", name);
|
||||
json.addProperty("description", description);
|
||||
String responseContent = wxMpService.post(url, json.toString());
|
||||
JsonElement tmpJsonElement = new JsonParser().parse(responseContent);
|
||||
return tmpJsonElement.getAsJsonObject().get("data").getAsJsonObject().get("user_action_set_id").getAsLong();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<WxMpUserActionSet> getUserActionSets(Long userActionSetId) throws WxErrorException {
|
||||
String url = API_URL_PREFIX + "user_action_sets/get";
|
||||
String responseContent = wxMpService.get(url, "version=v1.0&user_action_set_id=" + userActionSetId);
|
||||
return WxMpUserActionSet.fromJson(responseContent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addUserAction(List<WxMpUserAction> actions) throws WxErrorException {
|
||||
String url = API_URL_PREFIX + "user_actions/add?version=v1.0";
|
||||
JsonArray json = new JsonArray();
|
||||
for (WxMpUserAction action : actions) {
|
||||
json.add(action.toJsonObject());
|
||||
}
|
||||
wxMpService.post(url, json.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public WxMpAdLeadResult getAdLeads(Date beginDate, Date endDate, List<WxMpAdLeadFilter> filtering, Integer page, Integer page_size) throws WxErrorException, IOException {
|
||||
Date today = new Date();
|
||||
if (beginDate == null) {
|
||||
beginDate = today;
|
||||
}
|
||||
if (endDate == null) {
|
||||
endDate = today;
|
||||
}
|
||||
String url = API_URL_PREFIX + "wechat_ad_leads/get";
|
||||
String params = "version=v1.0";
|
||||
JsonObject dateRange = new JsonObject();
|
||||
dateRange.addProperty("begin_date", DateFormatUtils.format(beginDate, "yyyy-MM-dd"));
|
||||
dateRange.addProperty("end_date", DateFormatUtils.format(endDate, "yyyy-MM-dd"));
|
||||
params += "&date_range=" + URLEncoder.encode(dateRange.toString(), StandardCharsets.UTF_8.name());
|
||||
params += "&page=" + page;
|
||||
params += "&page_size=" + page_size;
|
||||
if (filtering != null) {
|
||||
JsonArray filterJson = new JsonArray();
|
||||
for (WxMpAdLeadFilter filter : filtering) {
|
||||
filterJson.add(filter.toJsonObject());
|
||||
}
|
||||
params += "&filtering=" + URLEncoder.encode(filterJson.toString(), StandardCharsets.UTF_8.name());
|
||||
;
|
||||
}
|
||||
String responseContent = wxMpService.get(url, params);
|
||||
return WxMpAdLeadResult.fromJson(responseContent);
|
||||
}
|
||||
}
|
@ -0,0 +1,55 @@
|
||||
package me.chanjar.weixin.mp.bean.marketing;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author <a href="https://github.com/007gzs">007</a>
|
||||
*/
|
||||
@Data
|
||||
public class WxMpAdLead implements Serializable {
|
||||
private static final long serialVersionUID = -8889087268596440407L;
|
||||
/**
|
||||
* 点击ID
|
||||
*/
|
||||
@SerializedName("click_id")
|
||||
private String click_id;
|
||||
/**
|
||||
* 广告组ID
|
||||
*/
|
||||
@SerializedName("adgroup_id")
|
||||
private Long adgroup_id;
|
||||
/**
|
||||
* 广告组名称
|
||||
*/
|
||||
@SerializedName("adgroup_name")
|
||||
private String adgroup_name;
|
||||
/**
|
||||
* 推广计划ID
|
||||
*/
|
||||
@SerializedName("campaign_id")
|
||||
private Long campaign_id;
|
||||
/**
|
||||
* 推广计划名称
|
||||
*/
|
||||
@SerializedName("campaign_name")
|
||||
private String campaign_name;
|
||||
/**
|
||||
* 代理ID
|
||||
*/
|
||||
@SerializedName("agency_id")
|
||||
private String agency_id;
|
||||
/**
|
||||
* 代理名称
|
||||
*/
|
||||
@SerializedName("agency_name")
|
||||
private String agency_name;
|
||||
/**
|
||||
* 销售线索信息
|
||||
*/
|
||||
@SerializedName("leads_info")
|
||||
private List<WxMpAdLeadInfo> leads_info;
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
package me.chanjar.weixin.mp.bean.marketing;
|
||||
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonObject;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author <a href="https://github.com/007gzs">007</a>
|
||||
*/
|
||||
@Data
|
||||
public class WxMpAdLeadFilter implements Serializable {
|
||||
private static final long serialVersionUID = -1469998986497327439L;
|
||||
private String field;
|
||||
private String operator;
|
||||
private List<String> values;
|
||||
|
||||
public JsonObject toJsonObject() {
|
||||
JsonObject json = new JsonObject();
|
||||
json.addProperty("field", field);
|
||||
json.addProperty("operator", operator);
|
||||
if (values != null) {
|
||||
JsonArray vs = new JsonArray();
|
||||
for (String value : values) {
|
||||
vs.add(value);
|
||||
}
|
||||
}
|
||||
return json;
|
||||
}
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
package me.chanjar.weixin.mp.bean.marketing;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author <a href="https://github.com/007gzs">007</a>
|
||||
*/
|
||||
@Data
|
||||
public class WxMpAdLeadInfo implements Serializable {
|
||||
private static final long serialVersionUID = -6462312242780350479L;
|
||||
@SerializedName("key")
|
||||
private String key;
|
||||
@SerializedName("value")
|
||||
private String value;
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
package me.chanjar.weixin.mp.bean.marketing;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author <a href="https://github.com/007gzs">007</a>
|
||||
*/
|
||||
@Data
|
||||
public class WxMpAdLeadPageInfo implements Serializable {
|
||||
private static final long serialVersionUID = -896765006445604780L;
|
||||
@SerializedName("page")
|
||||
private Integer page;
|
||||
@SerializedName("page_size")
|
||||
private Integer pageSize;
|
||||
@SerializedName("total_page")
|
||||
private Integer totalPage;
|
||||
@SerializedName("total_number")
|
||||
private Integer totalNumber;
|
||||
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
package me.chanjar.weixin.mp.bean.marketing;
|
||||
|
||||
import com.google.gson.JsonParser;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import lombok.Data;
|
||||
import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author <a href="https://github.com/007gzs">007</a>
|
||||
*/
|
||||
@Data
|
||||
public class WxMpAdLeadResult implements Serializable {
|
||||
private static final long serialVersionUID = -1526796632563660821L;
|
||||
protected static final JsonParser JSON_PARSER = new JsonParser();
|
||||
|
||||
@SerializedName("page_info")
|
||||
private WxMpAdLeadPageInfo pageInfo;
|
||||
@SerializedName("list")
|
||||
private List<WxMpAdLead> adLeads;
|
||||
|
||||
public static WxMpAdLeadResult fromJson(String json) {
|
||||
|
||||
return WxMpGsonBuilder.create().fromJson(
|
||||
JSON_PARSER.parse(json).getAsJsonObject().get("data"),
|
||||
new TypeToken<WxMpAdLeadResult>() {
|
||||
}.getType());
|
||||
}
|
||||
}
|
@ -0,0 +1,39 @@
|
||||
package me.chanjar.weixin.mp.bean.marketing;
|
||||
|
||||
import com.google.gson.JsonObject;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author <a href="https://github.com/007gzs">007</a>
|
||||
*/
|
||||
|
||||
@Data
|
||||
public class WxMpUserAction implements Serializable {
|
||||
private static final long serialVersionUID = 7042393762652152209L;
|
||||
private Long userActionSetId;
|
||||
private String url;
|
||||
private Boolean actionTime;
|
||||
private String actionType;
|
||||
private String clickId;
|
||||
private Integer actionParam;
|
||||
|
||||
public JsonObject toJsonObject() {
|
||||
JsonObject json = new JsonObject();
|
||||
json.addProperty("user_action_set_id", this.userActionSetId);
|
||||
json.addProperty("url", this.url);
|
||||
json.addProperty("action_time", this.actionTime);
|
||||
if (this.clickId != null) {
|
||||
JsonObject traceJson = new JsonObject();
|
||||
traceJson.addProperty("click_id", this.clickId);
|
||||
json.add("trace", traceJson);
|
||||
}
|
||||
if (this.actionParam != null) {
|
||||
JsonObject actionParamJson = new JsonObject();
|
||||
actionParamJson.addProperty("value", actionParam);
|
||||
json.add("action_param", actionParamJson);
|
||||
}
|
||||
return json;
|
||||
}
|
||||
}
|
@ -0,0 +1,56 @@
|
||||
package me.chanjar.weixin.mp.bean.marketing;
|
||||
|
||||
import com.google.gson.JsonParser;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import lombok.Data;
|
||||
import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author <a href="https://github.com/007gzs">007</a>
|
||||
*/
|
||||
|
||||
@Data
|
||||
public class WxMpUserActionSet implements Serializable {
|
||||
private static final long serialVersionUID = 1979861770645159905L;
|
||||
protected static final JsonParser JSON_PARSER = new JsonParser();
|
||||
|
||||
/**
|
||||
* user_action_set_id
|
||||
* 用户行为源名称
|
||||
*/
|
||||
@SerializedName("user_action_set_id")
|
||||
private Long userActionSetId;
|
||||
|
||||
/**
|
||||
* title.
|
||||
* 用户行为源描述
|
||||
*/
|
||||
@SerializedName("description")
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* activate_status.
|
||||
* 数据接入状态, true 表示已接入, false 表示未接入
|
||||
*/
|
||||
@SerializedName("activate_status")
|
||||
private Boolean activate_status;
|
||||
|
||||
/**
|
||||
* created_time.
|
||||
* 创建时间
|
||||
*/
|
||||
@SerializedName("created_time")
|
||||
private String createdTime;
|
||||
|
||||
public static List<WxMpUserActionSet> fromJson(String json) {
|
||||
return WxMpGsonBuilder.create().fromJson(
|
||||
JSON_PARSER.parse(json).getAsJsonObject().get("data").getAsJsonObject().get("list"),
|
||||
new TypeToken<List<WxMpUserActionSet>>() {
|
||||
}.getType());
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,75 @@
|
||||
package me.chanjar.weixin.mp.bean.result;
|
||||
|
||||
import me.chanjar.weixin.mp.bean.marketing.WxMpAdLeadResult;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import static org.testng.Assert.assertNotNull;
|
||||
import static org.testng.Assert.assertTrue;
|
||||
|
||||
/**
|
||||
* @author <a href="https://github.com/007gzs">007</a>
|
||||
*/
|
||||
public class WxMpAdLeadResultTest {
|
||||
@Test
|
||||
public void testFromJson() throws Exception {
|
||||
String json = "{\n" +
|
||||
"\t\"data\": {\n" +
|
||||
"\t\t\"page_info\": {\n" +
|
||||
"\t\t\t\"total_number\": 39,\n" +
|
||||
"\t\t\t\"page\": 1,\n" +
|
||||
"\t\t\t\"page_size\": 100,\n" +
|
||||
"\t\t\t\"total_page\": 1\n" +
|
||||
"\t\t},\n" +
|
||||
"\t\t\"list\": [{\n" +
|
||||
"\t\t\t\"click_id\": \"<click_id1>\",\n" +
|
||||
"\t\t\t\"adgroup_name\": \"<adgroup_name>\",\n" +
|
||||
"\t\t\t\"campaign_id\": 1800000001,\n" +
|
||||
"\t\t\t\"leads_info\": [{\n" +
|
||||
"\t\t\t\t\"value\": \"13800138000\",\n" +
|
||||
"\t\t\t\t\"key\": \"电话号码\"\n" +
|
||||
"\t\t\t}, {\n" +
|
||||
"\t\t\t\t\"value\": \"2019-03-14 00:54:34\",\n" +
|
||||
"\t\t\t\t\"key\": \"提交时间\"\n" +
|
||||
"\t\t\t}, {\n" +
|
||||
"\t\t\t\t\"value\": \"123\",\n" +
|
||||
"\t\t\t\t\"key\": \"自定义问题\"\n" +
|
||||
"\t\t\t}],\n" +
|
||||
"\t\t\t\"agency_name\": \"\",\n" +
|
||||
"\t\t\t\"agency_id\": \"\",\n" +
|
||||
"\t\t\t\"campaign_name\": \"<campaign_name>\",\n" +
|
||||
"\t\t\t\"adgroup_id\": 1800000002\n" +
|
||||
"\t\t}, {\n" +
|
||||
"\t\t\t\"click_id\": \"<click_id2>\",\n" +
|
||||
"\t\t\t\"adgroup_name\": \"<adgroup_name>\",\n" +
|
||||
"\t\t\t\"campaign_id\": 1800000001,\n" +
|
||||
"\t\t\t\"leads_info\": [{\n" +
|
||||
"\t\t\t\t\"value\": \"13800138001\",\n" +
|
||||
"\t\t\t\t\"key\": \"电话号码\"\n" +
|
||||
"\t\t\t}, {\n" +
|
||||
"\t\t\t\t\"value\": \"2019-03-14 02:10:39\",\n" +
|
||||
"\t\t\t\t\"key\": \"提交时间\"\n" +
|
||||
"\t\t\t}, {\n" +
|
||||
"\t\t\t\t\"value\": \"321\",\n" +
|
||||
"\t\t\t\t\"key\": \"自定义问题\"\n" +
|
||||
"\t\t\t}],\n" +
|
||||
"\t\t\t\"agency_name\": \"\",\n" +
|
||||
"\t\t\t\"agency_id\": \"\",\n" +
|
||||
"\t\t\t\"campaign_name\": \"<campaign_name>\",\n" +
|
||||
"\t\t\t\"adgroup_id\": 1800000002\n" +
|
||||
"\t\t}]\n" +
|
||||
"\t},\n" +
|
||||
"\t\"errcode\": 0,\n" +
|
||||
"\t\"errmsg\": \"\"\n" +
|
||||
"}";
|
||||
|
||||
WxMpAdLeadResult adLeadResult = WxMpAdLeadResult.fromJson(json);
|
||||
|
||||
assertNotNull(adLeadResult);
|
||||
assertNotNull(adLeadResult.getPageInfo());
|
||||
assertNotNull(adLeadResult.getAdLeads());
|
||||
assertTrue(adLeadResult.getAdLeads().size() > 0);
|
||||
|
||||
System.out.println(adLeadResult);
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user