#565 小程序增加数据分析相关 API
* 微信开放平台:1. WxOpenInRedisConfigStorage 支持 JedisPool/JedisSentinelPool 等 Pool<Jedis> 的子类;2. WxOpenInRedisConfigStorage 增加 keyPrefix 以支持可配置的前缀; * 微信开放平台:增加小程序代码模板库管理 * 小程序:增加代码管理相关 API * 小程序:增加修改服务器地址、成员管理 API * 小程序:增加数据分析相关 API
This commit is contained in:
@@ -0,0 +1,155 @@
|
||||
package cn.binarywang.wx.miniapp.api.impl;
|
||||
|
||||
import cn.binarywang.wx.miniapp.api.WxMaAnalysisService;
|
||||
import cn.binarywang.wx.miniapp.api.WxMaService;
|
||||
import cn.binarywang.wx.miniapp.bean.analysis.WxMaRetainInfo;
|
||||
import cn.binarywang.wx.miniapp.bean.analysis.WxMaSummaryTrend;
|
||||
import cn.binarywang.wx.miniapp.bean.analysis.WxMaUserPortrait;
|
||||
import cn.binarywang.wx.miniapp.bean.analysis.WxMaVisitDistribution;
|
||||
import cn.binarywang.wx.miniapp.bean.analysis.WxMaVisitPage;
|
||||
import cn.binarywang.wx.miniapp.bean.analysis.WxMaVisitTrend;
|
||||
import cn.binarywang.wx.miniapp.test.ApiTestModule;
|
||||
import com.google.inject.Inject;
|
||||
import org.apache.commons.lang3.time.DateFormatUtils;
|
||||
import org.apache.commons.lang3.time.DateUtils;
|
||||
import org.testng.annotations.Guice;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import static org.testng.Assert.*;
|
||||
|
||||
/**
|
||||
* @author <a href="https://github.com/charmingoh">Charming</a>
|
||||
* @since 2018-04-28
|
||||
*/
|
||||
@Guice(modules = ApiTestModule.class)
|
||||
public class WxMaAnalysisServiceImplTest {
|
||||
@Inject
|
||||
private WxMaService wxMaService;
|
||||
|
||||
@Test
|
||||
public void testGetDailySummaryTrend() throws Exception {
|
||||
final WxMaAnalysisService service = wxMaService.getAnalysisService();
|
||||
Date twoDaysAgo = DateUtils.addDays(new Date(), -2);
|
||||
List<WxMaSummaryTrend> trends = service.getDailySummaryTrend(twoDaysAgo, twoDaysAgo);
|
||||
assertEquals(1, trends.size());
|
||||
System.out.println(trends);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetDailyVisitTrend() throws Exception {
|
||||
final WxMaAnalysisService service = wxMaService.getAnalysisService();
|
||||
Date twoDaysAgo = DateUtils.addDays(new Date(), -2);
|
||||
List<WxMaVisitTrend> trends = service.getDailyVisitTrend(twoDaysAgo, twoDaysAgo);
|
||||
assertEquals(1, trends.size());
|
||||
System.out.println(trends);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetWeeklyVisitTrend() throws Exception {
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
|
||||
Date now = new Date();
|
||||
Date lastSunday = calendar.getTime();
|
||||
if (DateUtils.isSameDay(lastSunday, now)) {
|
||||
lastSunday = DateUtils.addDays(lastSunday, -7);
|
||||
}
|
||||
Date lastMonday = DateUtils.addDays(lastSunday, -6);
|
||||
|
||||
final WxMaAnalysisService service = wxMaService.getAnalysisService();
|
||||
List<WxMaVisitTrend> trends = service.getWeeklyVisitTrend(lastMonday, lastSunday);
|
||||
assertEquals(1, trends.size());
|
||||
System.out.println(trends);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetMonthlyVisitTrend() throws Exception {
|
||||
Date now = new Date();
|
||||
Date firstDayOfThisMonth = DateUtils.setDays(now, 1);
|
||||
Date lastDayOfLastMonth = DateUtils.addDays(firstDayOfThisMonth, -1);
|
||||
Date firstDayOfLastMonth = DateUtils.addMonths(firstDayOfThisMonth, -1);
|
||||
|
||||
final WxMaAnalysisService service = wxMaService.getAnalysisService();
|
||||
List<WxMaVisitTrend> trends = service.getMonthlyVisitTrend(firstDayOfLastMonth, lastDayOfLastMonth);
|
||||
assertEquals(1, trends.size());
|
||||
System.out.println(trends);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetVisitDistribution() throws Exception {
|
||||
final WxMaAnalysisService service = wxMaService.getAnalysisService();
|
||||
Date twoDaysAgo = DateUtils.addDays(new Date(), -2);
|
||||
WxMaVisitDistribution distribution = service.getVisitDistribution(twoDaysAgo, twoDaysAgo);
|
||||
assertNotNull(distribution);
|
||||
String date = DateFormatUtils.format(twoDaysAgo, "yyyyMMdd");
|
||||
assertEquals(date, distribution.getRefDate());
|
||||
assertTrue(distribution.getList().containsKey("access_source_session_cnt"));
|
||||
assertTrue(distribution.getList().containsKey("access_staytime_info"));
|
||||
assertTrue(distribution.getList().containsKey("access_depth_info"));
|
||||
System.out.println(distribution);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetDailyRetainInfo() throws Exception {
|
||||
final WxMaAnalysisService service = wxMaService.getAnalysisService();
|
||||
Date twoDaysAgo = DateUtils.addDays(new Date(), -2);
|
||||
WxMaRetainInfo retainInfo = service.getDailyRetainInfo(twoDaysAgo, twoDaysAgo);
|
||||
assertNotNull(retainInfo);
|
||||
System.out.println(retainInfo);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetWeeklyRetainInfo() throws Exception {
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
|
||||
Date now = new Date();
|
||||
Date lastSunday = calendar.getTime();
|
||||
if (DateUtils.isSameDay(lastSunday, now)) {
|
||||
lastSunday = DateUtils.addDays(lastSunday, -7);
|
||||
}
|
||||
Date lastMonday = DateUtils.addDays(lastSunday, -6);
|
||||
|
||||
final WxMaAnalysisService service = wxMaService.getAnalysisService();
|
||||
WxMaRetainInfo retainInfo = service.getWeeklyRetainInfo(lastMonday, lastSunday);
|
||||
assertNotNull(retainInfo);
|
||||
System.out.println(retainInfo);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetMonthlyRetainInfo() throws Exception {
|
||||
Date now = new Date();
|
||||
Date firstDayOfThisMonth = DateUtils.setDays(now, 1);
|
||||
Date lastDayOfLastMonth = DateUtils.addDays(firstDayOfThisMonth, -1);
|
||||
Date firstDayOfLastMonth = DateUtils.addMonths(firstDayOfThisMonth, -1);
|
||||
|
||||
final WxMaAnalysisService service = wxMaService.getAnalysisService();
|
||||
WxMaRetainInfo retainInfo = service.getMonthlyRetainInfo(firstDayOfLastMonth, lastDayOfLastMonth);
|
||||
assertNotNull(retainInfo);
|
||||
System.out.println(retainInfo);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetVisitPage() throws Exception {
|
||||
final WxMaAnalysisService service = wxMaService.getAnalysisService();
|
||||
Date twoDaysAgo = DateUtils.addDays(new Date(), -2);
|
||||
List<WxMaVisitPage> visitPages = service.getVisitPage(twoDaysAgo, twoDaysAgo);
|
||||
assertNotNull(visitPages);
|
||||
System.out.println(visitPages);
|
||||
System.out.println(visitPages.get(0).getPagePath());
|
||||
System.out.println(visitPages.get(0).getPageVisitPv());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetUserPortrait() throws Exception {
|
||||
Date twoDaysAgo = DateUtils.addDays(new Date(), -2);
|
||||
Date eightDaysAgo = DateUtils.addDays(new Date(), -8);
|
||||
|
||||
final WxMaAnalysisService service = wxMaService.getAnalysisService();
|
||||
WxMaUserPortrait portrait = service.getUserPortrait(eightDaysAgo, twoDaysAgo);
|
||||
assertNotNull(portrait);
|
||||
System.out.println(portrait);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package cn.binarywang.wx.miniapp.bean.analysis;
|
||||
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import static org.testng.Assert.*;
|
||||
|
||||
/**
|
||||
* @author <a href="https://github.com/charmingoh">Charming</a>
|
||||
* @since 2018-04-28
|
||||
*/
|
||||
public class WxMaRetainInfoTest {
|
||||
@Test
|
||||
public void testFromJson() throws Exception {
|
||||
String json = "{\"ref_date\":\"20170313\",\"visit_uv_new\":[{\"key\":0,\"value\":5464}],\"visit_uv\":[{\"key\":0,\"value\":55500}]}\n";
|
||||
WxMaRetainInfo retainInfo = WxMaRetainInfo.fromJson(json);
|
||||
assertNotNull(retainInfo);
|
||||
assertEquals("20170313", retainInfo.getRefDate());
|
||||
assertTrue(retainInfo.getVisitUv().containsKey(0));
|
||||
assertTrue(retainInfo.getVisitUvNew().containsKey(0));
|
||||
System.out.println(retainInfo);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package cn.binarywang.wx.miniapp.bean.analysis;
|
||||
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import static org.testng.Assert.assertNotNull;
|
||||
|
||||
/**
|
||||
* @author <a href="https://github.com/charmingoh">Charming</a>
|
||||
* @since 2018-04-28
|
||||
*/
|
||||
public class WxMaUserPortraitTest {
|
||||
@Test
|
||||
public void testFromJson() throws Exception {
|
||||
String json = "{\"ref_date\":\"20170611\",\"visit_uv_new\":{\"province\":[{\"id\":31,\"name\":\"广东省\",\"value\":215}],\"city\":[{\"id\":3102,\"name\":\"广州\",\"value\":78}],\"genders\":[{\"id\":1,\"name\":\"男\",\"value\":2146}],\"platforms\":[{\"id\":1,\"name\":\"iPhone\",\"value\":27642}],\"devices\":[{\"name\":\"OPPO R9\",\"value\":61}],\"ages\":[{\"id\":1,\"name\":\"17岁以下\",\"value\":151}]},\"visit_uv\":{\"province\":[{\"id\":31,\"name\":\"广东省\",\"value\":1341}],\"city\":[{\"id\":3102,\"name\":\"广州\",\"value\":234}],\"genders\":[{\"id\":1,\"name\":\"男\",\"value\":14534}],\"platforms\":[{\"id\":1,\"name\":\"iPhone\",\"value\":21750}],\"devices\":[{\"name\":\"OPPO R9\",\"value\":617}],\"ages\":[{\"id\":1,\"name\":\"17岁以下\",\"value\":3156}]}}\n";
|
||||
WxMaUserPortrait portrait = WxMaUserPortrait.fromJson(json);
|
||||
System.out.println(portrait);
|
||||
assertNotNull(portrait);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package cn.binarywang.wx.miniapp.bean.analysis;
|
||||
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import static org.testng.Assert.*;
|
||||
|
||||
/**
|
||||
* @author <a href="https://github.com/charmingoh">Charming</a>
|
||||
* @since 2018-04-28
|
||||
*/
|
||||
public class WxMaVisitDistributionTest {
|
||||
@Test
|
||||
public void testFromJson() throws Exception {
|
||||
String json = "{\"ref_date\":\"20170313\",\"list\":[{\"index\":\"access_source_session_cnt\",\"item_list\":[{\"key\":10,\"value\":5},{\"key\":8,\"value\":687},{\"key\":7,\"value\":10740},{\"key\":6,\"value\":1961},{\"key\":5,\"value\":677},{\"key\":4,\"value\":653},{\"key\":3,\"value\":1120},{\"key\":2,\"value\":10243},{\"key\":1,\"value\":116578}]},{\"index\":\"access_staytime_info\",\"item_list\":[{\"key\":8,\"value\":16329},{\"key\":7,\"value\":19322},{\"key\":6,\"value\":21832},{\"key\":5,\"value\":19539},{\"key\":4,\"value\":29670},{\"key\":3,\"value\":19667},{\"key\":2,\"value\":11794},{\"key\":1,\"value\":4511}]},{\"index\":\"access_depth_info\",\"item_list\":[{\"key\":5,\"value\":217},{\"key\":4,\"value\":3259},{\"key\":3,\"value\":32445},{\"key\":2,\"value\":63542},{\"key\":1,\"value\":43201}]}]}\n";
|
||||
WxMaVisitDistribution distribution = WxMaVisitDistribution.fromJson(json);
|
||||
assertNotNull(distribution);
|
||||
assertEquals("20170313", distribution.getRefDate());
|
||||
assertTrue(distribution.getList().containsKey("access_source_session_cnt"));
|
||||
assertTrue(distribution.getList().containsKey("access_staytime_info"));
|
||||
assertTrue(distribution.getList().containsKey("access_depth_info"));
|
||||
System.out.println(distribution);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user