1
0
mirror of synced 2025-12-20 23:58:05 +08:00

#565 小程序增加数据分析相关 API

* 微信开放平台:1. WxOpenInRedisConfigStorage 支持 JedisPool/JedisSentinelPool 等 Pool<Jedis> 的子类;2. WxOpenInRedisConfigStorage 增加 keyPrefix 以支持可配置的前缀;

* 微信开放平台:增加小程序代码模板库管理

* 小程序:增加代码管理相关 API

* 小程序:增加修改服务器地址、成员管理 API

* 小程序:增加数据分析相关 API
This commit is contained in:
Charming
2018-04-29 21:50:11 +08:00
committed by Binary Wang
parent ba93544473
commit 3c2249eae8
19 changed files with 1048 additions and 0 deletions

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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);
}
}