| @@ -3,6 +3,7 @@ package me.chanjar.weixin.mp.api; | |||
| import me.chanjar.weixin.common.exception.WxErrorException; | |||
| import me.chanjar.weixin.mp.bean.datacube.WxDataCubeArticleResult; | |||
| import me.chanjar.weixin.mp.bean.datacube.WxDataCubeArticleTotal; | |||
| import me.chanjar.weixin.mp.bean.datacube.WxDataCubeInterfaceResult; | |||
| import me.chanjar.weixin.mp.bean.datacube.WxDataCubeMsgResult; | |||
| import me.chanjar.weixin.mp.bean.datacube.WxDataCubeUserCumulate; | |||
| import me.chanjar.weixin.mp.bean.datacube.WxDataCubeUserSummary; | |||
| @@ -189,4 +190,28 @@ public interface WxMpDataCubeService { | |||
| * @param endDate 最大时间跨度30天,endDate不能早于begingDate | |||
| */ | |||
| List<WxDataCubeMsgResult> getUpstreamMsgDistMonth(Date beginDate, Date endDate) throws WxErrorException; | |||
| //*******************接口分析数据接口***********************// | |||
| /** | |||
| * <pre> | |||
| * 获取接口分析数据(getinterfacesummary) | |||
| * 详情请见文档:<a href="http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141086&token=&lang=zh_CN">接口分析数据接口</a> | |||
| * 接口url格式:https://api.weixin.qq.com/datacube/getinterfacesummary?access_token=ACCESS_TOKEN | |||
| * | |||
| * @param beginDate 开始时间 | |||
| * @param endDate 最大时间跨度30天,endDate不能早于begingDate | |||
| */ | |||
| List<WxDataCubeInterfaceResult> getInterfaceSummary(Date beginDate, Date endDate) throws WxErrorException; | |||
| /** | |||
| * <pre> | |||
| * 获取接口分析分时数据(getinterfacesummaryhour) | |||
| * 详情请见文档:<a href="http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141086&token=&lang=zh_CN">接口分析数据接口</a> | |||
| * 接口url格式:https://api.weixin.qq.com/datacube/getinterfacesummaryhour?access_token=ACCESS_TOKEN | |||
| * | |||
| * @param beginDate 开始时间 | |||
| * @param endDate 最大时间跨度1天,endDate不能早于begingDate | |||
| */ | |||
| List<WxDataCubeInterfaceResult> getInterfaceSummaryHour(Date beginDate, Date endDate) throws WxErrorException; | |||
| } | |||
| @@ -8,6 +8,7 @@ import me.chanjar.weixin.mp.api.WxMpDataCubeService; | |||
| import me.chanjar.weixin.mp.api.WxMpService; | |||
| import me.chanjar.weixin.mp.bean.datacube.WxDataCubeArticleResult; | |||
| import me.chanjar.weixin.mp.bean.datacube.WxDataCubeArticleTotal; | |||
| import me.chanjar.weixin.mp.bean.datacube.WxDataCubeInterfaceResult; | |||
| import me.chanjar.weixin.mp.bean.datacube.WxDataCubeMsgResult; | |||
| import me.chanjar.weixin.mp.bean.datacube.WxDataCubeUserCumulate; | |||
| import me.chanjar.weixin.mp.bean.datacube.WxDataCubeUserSummary; | |||
| @@ -233,4 +234,32 @@ public class WxMpDataCubeServiceImpl implements WxMpDataCubeService { | |||
| new TypeToken<List<WxDataCubeMsgResult>>() { | |||
| }.getType()); | |||
| } | |||
| @Override | |||
| public List<WxDataCubeInterfaceResult> getInterfaceSummary(Date beginDate, | |||
| Date endDate) throws WxErrorException { | |||
| String url = API_URL_PREFIX + "/getinterfacesummary"; | |||
| JsonObject param = new JsonObject(); | |||
| param.addProperty("begin_date", WxMpService.SIMPLE_DATE_FORMAT.format(beginDate)); | |||
| param.addProperty("end_date", WxMpService.SIMPLE_DATE_FORMAT.format(endDate)); | |||
| String responseContent = this.wxMpService.post(url, param.toString()); | |||
| this.log.debug("\nurl:{}\nparams:{}\nresponse:{}",url, param, responseContent); | |||
| return WxMpGsonBuilder.INSTANCE.create().fromJson(new JsonParser().parse(responseContent).getAsJsonObject().get("list"), | |||
| new TypeToken<List<WxDataCubeInterfaceResult>>() { | |||
| }.getType()); | |||
| } | |||
| @Override | |||
| public List<WxDataCubeInterfaceResult> getInterfaceSummaryHour(Date beginDate, | |||
| Date endDate) throws WxErrorException { | |||
| String url = API_URL_PREFIX + "/getinterfacesummaryhour"; | |||
| JsonObject param = new JsonObject(); | |||
| param.addProperty("begin_date", WxMpService.SIMPLE_DATE_FORMAT.format(beginDate)); | |||
| param.addProperty("end_date", WxMpService.SIMPLE_DATE_FORMAT.format(endDate)); | |||
| String responseContent = this.wxMpService.post(url, param.toString()); | |||
| this.log.debug("\nurl:{}\nparams:{}\nresponse:{}",url, param, responseContent); | |||
| return WxMpGsonBuilder.INSTANCE.create().fromJson(new JsonParser().parse(responseContent).getAsJsonObject().get("list"), | |||
| new TypeToken<List<WxDataCubeInterfaceResult>>() { | |||
| }.getType()); | |||
| } | |||
| } | |||
| @@ -0,0 +1,87 @@ | |||
| package me.chanjar.weixin.mp.bean.datacube; | |||
| import com.google.gson.annotations.SerializedName; | |||
| /** | |||
| * 接口分析数据接口返回结果对象 | |||
| * @author binarywang(https://github.com/binarywang) | |||
| * Created by Binary Wang on 2016/8/30. | |||
| */ | |||
| public class WxDataCubeInterfaceResult extends WxDataCubeBaseResult { | |||
| /** | |||
| * ref_hour | |||
| * 数据的小时,包括从000到2300,分别代表的是[000,100)到[2300,2400),即每日的第1小时和最后1小时 | |||
| */ | |||
| @SerializedName("ref_hour") | |||
| private Integer refHour; | |||
| /** | |||
| * callback_count | |||
| * 通过服务器配置地址获得消息后,被动回复用户消息的次数 | |||
| */ | |||
| @SerializedName("callback_count") | |||
| private Integer callbackCount; | |||
| /** | |||
| * fail_count | |||
| * 上述动作的失败次数 | |||
| */ | |||
| @SerializedName("fail_count") | |||
| private Integer failCount; | |||
| /** | |||
| * total_time_cost | |||
| * 总耗时,除以callback_count即为平均耗时 | |||
| */ | |||
| @SerializedName("total_time_cost") | |||
| private Integer totalTimeCost; | |||
| /** | |||
| * max_time_cost | |||
| * 最大耗时 | |||
| */ | |||
| @SerializedName("max_time_cost") | |||
| private Integer maxTimeCost; | |||
| public Integer getRefHour() { | |||
| return this.refHour; | |||
| } | |||
| public void setRefHour(Integer refHour) { | |||
| this.refHour = refHour; | |||
| } | |||
| public Integer getCallbackCount() { | |||
| return this.callbackCount; | |||
| } | |||
| public void setCallbackCount(Integer callbackCount) { | |||
| this.callbackCount = callbackCount; | |||
| } | |||
| public Integer getFailCount() { | |||
| return this.failCount; | |||
| } | |||
| public void setFailCount(Integer failCount) { | |||
| this.failCount = failCount; | |||
| } | |||
| public Integer getTotalTimeCost() { | |||
| return this.totalTimeCost; | |||
| } | |||
| public void setTotalTimeCost(Integer totalTimeCost) { | |||
| this.totalTimeCost = totalTimeCost; | |||
| } | |||
| public Integer getMaxTimeCost() { | |||
| return this.maxTimeCost; | |||
| } | |||
| public void setMaxTimeCost(Integer maxTimeCost) { | |||
| this.maxTimeCost = maxTimeCost; | |||
| } | |||
| } | |||
| @@ -1,24 +1,25 @@ | |||
| package me.chanjar.weixin.mp.api.impl; | |||
| import java.text.ParseException; | |||
| import java.text.SimpleDateFormat; | |||
| import java.util.Date; | |||
| import java.util.List; | |||
| import org.testng.Assert; | |||
| import org.testng.annotations.DataProvider; | |||
| import org.testng.annotations.Guice; | |||
| import org.testng.annotations.Test; | |||
| import com.google.inject.Inject; | |||
| import me.chanjar.weixin.common.exception.WxErrorException; | |||
| import me.chanjar.weixin.mp.api.ApiTestModule; | |||
| import me.chanjar.weixin.mp.bean.datacube.WxDataCubeArticleResult; | |||
| import me.chanjar.weixin.mp.bean.datacube.WxDataCubeArticleTotal; | |||
| import me.chanjar.weixin.mp.bean.datacube.WxDataCubeInterfaceResult; | |||
| import me.chanjar.weixin.mp.bean.datacube.WxDataCubeMsgResult; | |||
| import me.chanjar.weixin.mp.bean.datacube.WxDataCubeUserCumulate; | |||
| import me.chanjar.weixin.mp.bean.datacube.WxDataCubeUserSummary; | |||
| import org.testng.Assert; | |||
| import org.testng.annotations.DataProvider; | |||
| import org.testng.annotations.Guice; | |||
| import org.testng.annotations.Test; | |||
| import static org.junit.Assert.fail; | |||
| import java.text.ParseException; | |||
| import java.text.SimpleDateFormat; | |||
| import java.util.Date; | |||
| import java.util.List; | |||
| /** | |||
| * 测试统计分析相关的接口 | |||
| @@ -194,4 +195,20 @@ public class WxMpDataCubeServiceImplTest { | |||
| Assert.assertNotNull(results); | |||
| System.out.println(results); | |||
| } | |||
| @Test(dataProvider = "thirtyDays") | |||
| public void testGetInterfaceSummary(Date beginDate, Date endDate) throws WxErrorException { | |||
| List<WxDataCubeInterfaceResult> results = this.wxService.getDataCubeService() | |||
| .getInterfaceSummary(beginDate, endDate); | |||
| Assert.assertNotNull(results); | |||
| System.out.println(results); | |||
| } | |||
| @Test(dataProvider = "oneDay") | |||
| public void testGetInterfaceSummaryHour(Date date) throws WxErrorException { | |||
| List<WxDataCubeInterfaceResult> results = this.wxService.getDataCubeService() | |||
| .getInterfaceSummaryHour(date, date); | |||
| Assert.assertNotNull(results); | |||
| System.out.println(results); | |||
| } | |||
| } | |||