mirror of
https://gitee.com/binary/weixin-java-tools.git
synced 2026-03-10 00:13:40 +08:00
#565 小程序增加数据分析相关 API
* 微信开放平台:1. WxOpenInRedisConfigStorage 支持 JedisPool/JedisSentinelPool 等 Pool<Jedis> 的子类;2. WxOpenInRedisConfigStorage 增加 keyPrefix 以支持可配置的前缀; * 微信开放平台:增加小程序代码模板库管理 * 小程序:增加代码管理相关 API * 小程序:增加修改服务器地址、成员管理 API * 小程序:增加数据分析相关 API
This commit is contained in:
@@ -1,6 +1,9 @@
|
||||
package cn.binarywang.wx.miniapp.util.json;
|
||||
|
||||
import cn.binarywang.wx.miniapp.bean.WxMaTemplateMessage;
|
||||
import cn.binarywang.wx.miniapp.bean.analysis.WxMaRetainInfo;
|
||||
import cn.binarywang.wx.miniapp.bean.analysis.WxMaUserPortrait;
|
||||
import cn.binarywang.wx.miniapp.bean.analysis.WxMaVisitDistribution;
|
||||
import cn.binarywang.wx.miniapp.bean.code.WxMaCodeCommitRequest;
|
||||
import cn.binarywang.wx.miniapp.bean.code.WxMaCodeVersionDistribution;
|
||||
import com.google.gson.Gson;
|
||||
@@ -17,6 +20,9 @@ public class WxMaGsonBuilder {
|
||||
INSTANCE.registerTypeAdapter(WxMaTemplateMessage.class, new WxMaTemplateMessageGsonAdapter());
|
||||
INSTANCE.registerTypeAdapter(WxMaCodeCommitRequest.class, new WxMaCodeCommitRequestGsonAdapter());
|
||||
INSTANCE.registerTypeAdapter(WxMaCodeVersionDistribution.class, new WxMaCodeVersionDistributionGsonAdapter());
|
||||
INSTANCE.registerTypeAdapter(WxMaVisitDistribution.class, new WxMaVisitDistributionGsonAdapter());
|
||||
INSTANCE.registerTypeAdapter(WxMaRetainInfo.class, new WxMaRetainInfoGsonAdapter());
|
||||
INSTANCE.registerTypeAdapter(WxMaUserPortrait.class, new WxMaUserPortraitGsonAdapter());
|
||||
}
|
||||
|
||||
public static Gson create() {
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
package cn.binarywang.wx.miniapp.util.json;
|
||||
|
||||
import cn.binarywang.wx.miniapp.bean.analysis.WxMaRetainInfo;
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonDeserializationContext;
|
||||
import com.google.gson.JsonDeserializer;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParseException;
|
||||
import me.chanjar.weixin.common.util.json.GsonHelper;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author <a href="https://github.com/charmingoh">Charming</a>
|
||||
* @since 2018-04-28
|
||||
*/
|
||||
public class WxMaRetainInfoGsonAdapter implements JsonDeserializer<WxMaRetainInfo> {
|
||||
@Override
|
||||
public WxMaRetainInfo deserialize(JsonElement json, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException {
|
||||
if (json == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
WxMaRetainInfo retainInfo = new WxMaRetainInfo();
|
||||
JsonObject object = json.getAsJsonObject();
|
||||
String refDate = GsonHelper.getString(object, "ref_date");
|
||||
retainInfo.setRefDate(refDate);
|
||||
retainInfo.setVisitUvNew(getAsMap(object, "visit_uv_new"));
|
||||
retainInfo.setVisitUv(getAsMap(object, "visit_uv"));
|
||||
return retainInfo;
|
||||
}
|
||||
|
||||
private Map<Integer, Integer> getAsMap(JsonObject object, String memberName) {
|
||||
JsonArray array = object.getAsJsonArray(memberName);
|
||||
if (array != null && array.size() > 0) {
|
||||
Map<Integer, Integer> map = new LinkedHashMap<>(array.size());
|
||||
for (JsonElement element : array) {
|
||||
JsonObject elementObject = element.getAsJsonObject();
|
||||
Integer key = GsonHelper.getInteger(elementObject, "key");
|
||||
if (key != null) {
|
||||
Integer value = GsonHelper.getInteger(elementObject, "value");
|
||||
map.put(key, value);
|
||||
}
|
||||
}
|
||||
return map;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
package cn.binarywang.wx.miniapp.util.json;
|
||||
|
||||
import cn.binarywang.wx.miniapp.bean.analysis.WxMaUserPortrait;
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonDeserializationContext;
|
||||
import com.google.gson.JsonDeserializer;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParseException;
|
||||
import me.chanjar.weixin.common.util.json.GsonHelper;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author <a href="https://github.com/charmingoh">Charming</a>
|
||||
* @since 2018-04-28
|
||||
*/
|
||||
public class WxMaUserPortraitGsonAdapter implements JsonDeserializer<WxMaUserPortrait> {
|
||||
@Override
|
||||
public WxMaUserPortrait deserialize(JsonElement json, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException {
|
||||
if (json == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
WxMaUserPortrait portrait = new WxMaUserPortrait();
|
||||
JsonObject object = json.getAsJsonObject();
|
||||
String refDate = GsonHelper.getString(object, "ref_date");
|
||||
portrait.setRefDate(refDate);
|
||||
portrait.setVisitUvNew(getPortraitItem(object.getAsJsonObject("visit_uv_new")));
|
||||
portrait.setVisitUv(getPortraitItem(object.getAsJsonObject("visit_uv")));
|
||||
return portrait;
|
||||
}
|
||||
|
||||
private WxMaUserPortrait.Item getPortraitItem(JsonObject object) {
|
||||
if (object == null) {
|
||||
return null;
|
||||
}
|
||||
WxMaUserPortrait.Item item = new WxMaUserPortrait.Item();
|
||||
item.setProvince(getAsMap(object, "province"));
|
||||
item.setCity(getAsMap(object, "city"));
|
||||
item.setGenders(getAsMap(object, "genders"));
|
||||
item.setPlatforms(getAsMap(object, "platforms"));
|
||||
item.setDevices(getAsMap(object, "devices"));
|
||||
item.setAges(getAsMap(object, "ages"));
|
||||
return item;
|
||||
}
|
||||
|
||||
private Map<String, Long> getAsMap(JsonObject object, String memberName) {
|
||||
JsonArray array = object.getAsJsonArray(memberName);
|
||||
if (array != null && array.size() > 0) {
|
||||
Map<String, Long> map = new LinkedHashMap<>(array.size());
|
||||
for (JsonElement element : array) {
|
||||
JsonObject elementObject = element.getAsJsonObject();
|
||||
String name = GsonHelper.getString(elementObject, "name");
|
||||
if (StringUtils.isNotBlank(name)) {
|
||||
Long value = GsonHelper.getLong(elementObject, "value");
|
||||
map.put(name, value);
|
||||
}
|
||||
}
|
||||
return map;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
package cn.binarywang.wx.miniapp.util.json;
|
||||
|
||||
import cn.binarywang.wx.miniapp.bean.analysis.WxMaVisitDistribution;
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonDeserializationContext;
|
||||
import com.google.gson.JsonDeserializer;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParseException;
|
||||
import me.chanjar.weixin.common.util.json.GsonHelper;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.Hashtable;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author <a href="https://github.com/charmingoh">Charming</a>
|
||||
* @since 2018-04-28
|
||||
*/
|
||||
public class WxMaVisitDistributionGsonAdapter implements JsonDeserializer<WxMaVisitDistribution> {
|
||||
@Override
|
||||
public WxMaVisitDistribution deserialize(JsonElement json, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException {
|
||||
if (json == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
WxMaVisitDistribution distribution = new WxMaVisitDistribution();
|
||||
JsonObject object = json.getAsJsonObject();
|
||||
String refDate = GsonHelper.getString(object, "ref_date");
|
||||
distribution.setRefDate(refDate);
|
||||
|
||||
boolean hasList = object.has("list");
|
||||
if (!hasList) {
|
||||
return distribution;
|
||||
}
|
||||
|
||||
JsonArray listArray = object.getAsJsonArray("list");
|
||||
Map<String, Map<Integer, Integer>> list = new Hashtable<>(listArray.size());
|
||||
for (JsonElement indexElement : listArray) {
|
||||
JsonObject indexObject = indexElement.getAsJsonObject();
|
||||
String index = GsonHelper.getString(indexObject, "index");
|
||||
if (index == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
Map<Integer, Integer> itemList = new LinkedHashMap<>();
|
||||
JsonArray itemArray = indexObject.getAsJsonArray("item_list");
|
||||
if (itemArray == null || itemArray.size() <= 0) {
|
||||
list.put(index, itemList);
|
||||
continue;
|
||||
}
|
||||
|
||||
for (JsonElement itemElement : itemArray) {
|
||||
JsonObject itemObject = itemElement.getAsJsonObject();
|
||||
Integer key = GsonHelper.getInteger(itemObject, "key");
|
||||
Integer value = GsonHelper.getInteger(itemObject, "value");
|
||||
if (key != null) {
|
||||
itemList.put(key, value);
|
||||
}
|
||||
}
|
||||
list.put(index, itemList);
|
||||
}
|
||||
distribution.setList(list);
|
||||
return distribution;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user