Skip to content

Commit 4c98a56

Browse files
committed
添加消息分析数据接口
1 parent 9c5b3c3 commit 4c98a56

File tree

4 files changed

+386
-13
lines changed

4 files changed

+386
-13
lines changed

weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpDataCubeService.java

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import me.chanjar.weixin.common.exception.WxErrorException;
44
import me.chanjar.weixin.mp.bean.datacube.WxDataCubeArticleResult;
55
import me.chanjar.weixin.mp.bean.datacube.WxDataCubeArticleTotal;
6+
import me.chanjar.weixin.mp.bean.datacube.WxDataCubeMsgResult;
67
import me.chanjar.weixin.mp.bean.datacube.WxDataCubeUserCumulate;
78
import me.chanjar.weixin.mp.bean.datacube.WxDataCubeUserSummary;
89

@@ -110,4 +111,82 @@ public interface WxMpDataCubeService {
110111
*/
111112
List<WxDataCubeArticleResult> getUserShareHour(Date beginDate, Date endDate) throws WxErrorException;
112113

114+
//*******************消息分析数据接口***********************//
115+
116+
/**
117+
* <pre>
118+
* 获取消息发送概况数据(getupstreammsg)
119+
* 详情请见文档:<a href="http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141085&token=&lang=zh_CN">消息分析数据接口</a>
120+
* 接口url格式:https://api.weixin.qq.com/datacube/getupstreammsg?access_token=ACCESS_TOKEN
121+
*
122+
* @param beginDate 开始时间
123+
* @param endDate 最大时间跨度7天,endDate不能早于begingDate
124+
*/
125+
List<WxDataCubeMsgResult> getUpstreamMsg(Date beginDate, Date endDate) throws WxErrorException;
126+
127+
/**
128+
* <pre>
129+
* 获取消息分送分时数据(getupstreammsghour)
130+
* 详情请见文档:<a href="http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141085&token=&lang=zh_CN">消息分析数据接口</a>
131+
* 接口url格式:https://api.weixin.qq.com/datacube/getupstreammsghour?access_token=ACCESS_TOKEN
132+
*
133+
* @param beginDate 开始时间
134+
* @param endDate 最大时间跨度1天,endDate不能早于begingDate
135+
*/
136+
List<WxDataCubeMsgResult> getUpstreamMsgHour(Date beginDate, Date endDate) throws WxErrorException;
137+
138+
/**
139+
* <pre>
140+
* 获取消息发送周数据(getupstreammsgweek)
141+
* 详情请见文档:<a href="http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141085&token=&lang=zh_CN">消息分析数据接口</a>
142+
* 接口url格式:https://api.weixin.qq.com/datacube/getupstreammsgweek?access_token=ACCESS_TOKEN
143+
*
144+
* @param beginDate 开始时间
145+
* @param endDate 最大时间跨度30天,endDate不能早于begingDate
146+
*/
147+
List<WxDataCubeMsgResult> getUpstreamMsgWeek(Date beginDate, Date endDate) throws WxErrorException;
148+
149+
/**
150+
* <pre>
151+
* 获取消息发送月数据(getupstreammsgmonth)
152+
* 详情请见文档:<a href="http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141085&token=&lang=zh_CN">消息分析数据接口</a>
153+
* 接口url格式:https://api.weixin.qq.com/datacube/getupstreammsgmonth?access_token=ACCESS_TOKEN
154+
*
155+
* @param beginDate 开始时间
156+
* @param endDate 最大时间跨度30天,endDate不能早于begingDate
157+
*/
158+
List<WxDataCubeMsgResult> getUpstreamMsgMonth(Date beginDate, Date endDate) throws WxErrorException;
159+
160+
/**
161+
* <pre>
162+
* 获取消息发送分布数据(getupstreammsgdist)
163+
* 详情请见文档:<a href="http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141085&token=&lang=zh_CN">消息分析数据接口</a>
164+
* 接口url格式:https://api.weixin.qq.com/datacube/getupstreammsgdist?access_token=ACCESS_TOKEN
165+
*
166+
* @param beginDate 开始时间
167+
* @param endDate 最大时间跨度15天,endDate不能早于begingDate
168+
*/
169+
List<WxDataCubeMsgResult> getUpstreamMsgDist(Date beginDate, Date endDate) throws WxErrorException;
170+
171+
/**
172+
* <pre>
173+
* 获取消息发送分布周数据(getupstreammsgdistweek)
174+
* 详情请见文档:<a href="http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141085&token=&lang=zh_CN">消息分析数据接口</a>
175+
* 接口url格式:https://api.weixin.qq.com/datacube/getupstreammsgdistweek?access_token=ACCESS_TOKEN
176+
*
177+
* @param beginDate 开始时间
178+
* @param endDate 最大时间跨度30天,endDate不能早于begingDate
179+
*/
180+
List<WxDataCubeMsgResult> getUpstreamMsgDistWeek(Date beginDate, Date endDate) throws WxErrorException;
181+
182+
/**
183+
* <pre>
184+
* 获取消息发送分布月数据(getupstreammsgdistmonth)
185+
* 详情请见文档:<a href="http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141085&token=&lang=zh_CN">消息分析数据接口</a>
186+
* 接口url格式:https://api.weixin.qq.com/datacube/getupstreammsgdistmonth?access_token=ACCESS_TOKEN
187+
*
188+
* @param beginDate 开始时间
189+
* @param endDate 最大时间跨度30天,endDate不能早于begingDate
190+
*/
191+
List<WxDataCubeMsgResult> getUpstreamMsgDistMonth(Date beginDate, Date endDate) throws WxErrorException;
113192
}

weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpDataCubeServiceImpl.java

Lines changed: 100 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import me.chanjar.weixin.mp.api.WxMpService;
99
import me.chanjar.weixin.mp.bean.datacube.WxDataCubeArticleResult;
1010
import me.chanjar.weixin.mp.bean.datacube.WxDataCubeArticleTotal;
11+
import me.chanjar.weixin.mp.bean.datacube.WxDataCubeMsgResult;
1112
import me.chanjar.weixin.mp.bean.datacube.WxDataCubeUserCumulate;
1213
import me.chanjar.weixin.mp.bean.datacube.WxDataCubeUserSummary;
1314
import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
@@ -22,7 +23,7 @@
2223
* @author binarywang (https://github.com/binarywang)
2324
*/
2425
public class WxMpDataCubeServiceImpl implements WxMpDataCubeService {
25-
protected final Logger log = LoggerFactory.getLogger(WxMpServiceImpl.class);
26+
protected final Logger log = LoggerFactory.getLogger(WxMpDataCubeServiceImpl.class);
2627

2728
private static final String API_URL_PREFIX = "https://api.weixin.qq.com/datacube";
2829
private WxMpService wxMpService;
@@ -134,4 +135,102 @@ public List<WxDataCubeArticleResult> getUserShareHour(Date beginDate, Date endDa
134135
new TypeToken<List<WxDataCubeArticleResult>>() {
135136
}.getType());
136137
}
138+
139+
@Override
140+
public List<WxDataCubeMsgResult> getUpstreamMsg(Date beginDate, Date endDate)
141+
throws WxErrorException {
142+
String url = API_URL_PREFIX + "/getupstreammsg";
143+
JsonObject param = new JsonObject();
144+
param.addProperty("begin_date", WxMpService.SIMPLE_DATE_FORMAT.format(beginDate));
145+
param.addProperty("end_date", WxMpService.SIMPLE_DATE_FORMAT.format(endDate));
146+
String responseContent = this.wxMpService.post(url, param.toString());
147+
this.log.debug("\nurl:{}\nparams:{}\nresponse:{}",url, param, responseContent);
148+
return WxMpGsonBuilder.INSTANCE.create().fromJson(new JsonParser().parse(responseContent).getAsJsonObject().get("list"),
149+
new TypeToken<List<WxDataCubeMsgResult>>() {
150+
}.getType());
151+
}
152+
153+
@Override
154+
public List<WxDataCubeMsgResult> getUpstreamMsgHour(Date beginDate,
155+
Date endDate) throws WxErrorException {
156+
String url = API_URL_PREFIX + "/getupstreammsghour";
157+
JsonObject param = new JsonObject();
158+
param.addProperty("begin_date", WxMpService.SIMPLE_DATE_FORMAT.format(beginDate));
159+
param.addProperty("end_date", WxMpService.SIMPLE_DATE_FORMAT.format(endDate));
160+
String responseContent = this.wxMpService.post(url, param.toString());
161+
this.log.debug("\nurl:{}\nparams:{}\nresponse:{}",url, param, responseContent);
162+
return WxMpGsonBuilder.INSTANCE.create().fromJson(new JsonParser().parse(responseContent).getAsJsonObject().get("list"),
163+
new TypeToken<List<WxDataCubeMsgResult>>() {
164+
}.getType());
165+
}
166+
167+
@Override
168+
public List<WxDataCubeMsgResult> getUpstreamMsgWeek(Date beginDate,
169+
Date endDate) throws WxErrorException {
170+
String url = API_URL_PREFIX + "/getupstreammsgweek";
171+
JsonObject param = new JsonObject();
172+
param.addProperty("begin_date", WxMpService.SIMPLE_DATE_FORMAT.format(beginDate));
173+
param.addProperty("end_date", WxMpService.SIMPLE_DATE_FORMAT.format(endDate));
174+
String responseContent = this.wxMpService.post(url, param.toString());
175+
this.log.debug("\nurl:{}\nparams:{}\nresponse:{}",url, param, responseContent);
176+
return WxMpGsonBuilder.INSTANCE.create().fromJson(new JsonParser().parse(responseContent).getAsJsonObject().get("list"),
177+
new TypeToken<List<WxDataCubeMsgResult>>() {
178+
}.getType());
179+
}
180+
181+
@Override
182+
public List<WxDataCubeMsgResult> getUpstreamMsgMonth(Date beginDate,
183+
Date endDate) throws WxErrorException {
184+
String url = API_URL_PREFIX + "/getupstreammsgmonth";
185+
JsonObject param = new JsonObject();
186+
param.addProperty("begin_date", WxMpService.SIMPLE_DATE_FORMAT.format(beginDate));
187+
param.addProperty("end_date", WxMpService.SIMPLE_DATE_FORMAT.format(endDate));
188+
String responseContent = this.wxMpService.post(url, param.toString());
189+
this.log.debug("\nurl:{}\nparams:{}\nresponse:{}",url, param, responseContent);
190+
return WxMpGsonBuilder.INSTANCE.create().fromJson(new JsonParser().parse(responseContent).getAsJsonObject().get("list"),
191+
new TypeToken<List<WxDataCubeMsgResult>>() {
192+
}.getType());
193+
}
194+
195+
@Override
196+
public List<WxDataCubeMsgResult> getUpstreamMsgDist(Date beginDate,
197+
Date endDate) throws WxErrorException {
198+
String url = API_URL_PREFIX + "/getupstreammsgdist";
199+
JsonObject param = new JsonObject();
200+
param.addProperty("begin_date", WxMpService.SIMPLE_DATE_FORMAT.format(beginDate));
201+
param.addProperty("end_date", WxMpService.SIMPLE_DATE_FORMAT.format(endDate));
202+
String responseContent = this.wxMpService.post(url, param.toString());
203+
this.log.debug("\nurl:{}\nparams:{}\nresponse:{}",url, param, responseContent);
204+
return WxMpGsonBuilder.INSTANCE.create().fromJson(new JsonParser().parse(responseContent).getAsJsonObject().get("list"),
205+
new TypeToken<List<WxDataCubeMsgResult>>() {
206+
}.getType());
207+
}
208+
209+
@Override
210+
public List<WxDataCubeMsgResult> getUpstreamMsgDistWeek(Date beginDate,
211+
Date endDate) throws WxErrorException {
212+
String url = API_URL_PREFIX + "/getupstreammsgdistweek";
213+
JsonObject param = new JsonObject();
214+
param.addProperty("begin_date", WxMpService.SIMPLE_DATE_FORMAT.format(beginDate));
215+
param.addProperty("end_date", WxMpService.SIMPLE_DATE_FORMAT.format(endDate));
216+
String responseContent = this.wxMpService.post(url, param.toString());
217+
this.log.debug("\nurl:{}\nparams:{}\nresponse:{}",url, param, responseContent);
218+
return WxMpGsonBuilder.INSTANCE.create().fromJson(new JsonParser().parse(responseContent).getAsJsonObject().get("list"),
219+
new TypeToken<List<WxDataCubeMsgResult>>() {
220+
}.getType());
221+
}
222+
223+
@Override
224+
public List<WxDataCubeMsgResult> getUpstreamMsgDistMonth(Date beginDate,
225+
Date endDate) throws WxErrorException {
226+
String url = API_URL_PREFIX + "/getupstreammsgdistmonth";
227+
JsonObject param = new JsonObject();
228+
param.addProperty("begin_date", WxMpService.SIMPLE_DATE_FORMAT.format(beginDate));
229+
param.addProperty("end_date", WxMpService.SIMPLE_DATE_FORMAT.format(endDate));
230+
String responseContent = this.wxMpService.post(url, param.toString());
231+
this.log.debug("\nurl:{}\nparams:{}\nresponse:{}",url, param, responseContent);
232+
return WxMpGsonBuilder.INSTANCE.create().fromJson(new JsonParser().parse(responseContent).getAsJsonObject().get("list"),
233+
new TypeToken<List<WxDataCubeMsgResult>>() {
234+
}.getType());
235+
}
137236
}
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
package me.chanjar.weixin.mp.bean.datacube;
2+
3+
import com.google.gson.annotations.SerializedName;
4+
5+
/**
6+
* 消息分析数据接口返回结果对象
7+
* @author binarywang(https://github.com/binarywang)
8+
* Created by Binary Wang on 2016/8/29.
9+
*/
10+
public class WxDataCubeMsgResult extends WxDataCubeBaseResult {
11+
12+
/**
13+
* ref_hour
14+
* 数据的小时,包括从000到2300,分别代表的是[000,100)到[2300,2400),即每日的第1小时和最后1小时
15+
*/
16+
@SerializedName("ref_hour")
17+
private Integer refHour;
18+
19+
/**
20+
* msg_type
21+
* 消息类型,代表含义如下:1代表文字 2代表图片 3代表语音 4代表视频 6代表第三方应用消息(链接消息)
22+
*/
23+
@SerializedName("msg_type")
24+
private Integer msgType;
25+
26+
/**
27+
* msg_user
28+
* 上行发送了(向公众号发送了)消息的用户数
29+
*/
30+
@SerializedName("msg_user")
31+
private Integer msgUser;
32+
33+
/**
34+
* msg_count
35+
* 上行发送了消息的消息总数
36+
*/
37+
@SerializedName("msg_count")
38+
private Integer msgCount;
39+
40+
/**
41+
* count_interval
42+
* 当日发送消息量分布的区间,0代表 “0”,1代表“1-5”,2代表“6-10”,3代表“10次以上”
43+
*/
44+
@SerializedName("count_interval")
45+
private Integer countInterval;
46+
47+
/**
48+
* int_page_read_count
49+
* 图文页的阅读次数
50+
*/
51+
@SerializedName("int_page_read_count")
52+
private Integer intPageReadCount;
53+
54+
/**
55+
* ori_page_read_user
56+
* 原文页(点击图文页“阅读原文”进入的页面)的阅读人数,无原文页时此处数据为0
57+
*/
58+
@SerializedName("ori_page_read_user")
59+
private Integer oriPageReadUser;
60+
61+
public Integer getRefHour() {
62+
return this.refHour;
63+
}
64+
65+
public void setRefHour(Integer refHour) {
66+
this.refHour = refHour;
67+
}
68+
69+
public Integer getMsgType() {
70+
return this.msgType;
71+
}
72+
73+
public void setMsgType(Integer msgType) {
74+
this.msgType = msgType;
75+
}
76+
77+
public Integer getMsgUser() {
78+
return this.msgUser;
79+
}
80+
81+
public void setMsgUser(Integer msgUser) {
82+
this.msgUser = msgUser;
83+
}
84+
85+
public Integer getMsgCount() {
86+
return this.msgCount;
87+
}
88+
89+
public void setMsgCount(Integer msgCount) {
90+
this.msgCount = msgCount;
91+
}
92+
93+
public Integer getCountInterval() {
94+
return this.countInterval;
95+
}
96+
97+
public void setCountInterval(Integer countInterval) {
98+
this.countInterval = countInterval;
99+
}
100+
101+
public Integer getIntPageReadCount() {
102+
return this.intPageReadCount;
103+
}
104+
105+
public void setIntPageReadCount(Integer intPageReadCount) {
106+
this.intPageReadCount = intPageReadCount;
107+
}
108+
109+
public Integer getOriPageReadUser() {
110+
return this.oriPageReadUser;
111+
}
112+
113+
public void setOriPageReadUser(Integer oriPageReadUser) {
114+
this.oriPageReadUser = oriPageReadUser;
115+
}
116+
117+
}

0 commit comments

Comments
 (0)