#562 小程序增加代码管理相关 API

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

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

* 小程序:增加代码管理相关 API
This commit is contained in:
Charming
2018-04-26 23:02:22 +08:00
committed by Binary Wang
parent 75c038d464
commit 0247486b13
18 changed files with 1027 additions and 14 deletions

View File

@@ -0,0 +1,28 @@
package cn.binarywang.wx.miniapp.util.json;
import cn.binarywang.wx.miniapp.bean.code.WxMaCodeCommitRequest;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import java.lang.reflect.Type;
/**
* @author <a href="https://github.com/charmingoh">Charming</a>
* @since 2018-04-26 19:47
*/
public class WxMaCodeCommitRequestGsonAdapter implements JsonSerializer<WxMaCodeCommitRequest> {
@Override
public JsonElement serialize(WxMaCodeCommitRequest request, Type typeOfSrc, JsonSerializationContext context) {
JsonObject requestJson = new JsonObject();
requestJson.addProperty("template_id", request.getTemplateId());
requestJson.addProperty("user_version", request.getUserVersion());
requestJson.addProperty("user_desc", request.getUserDesc());
if (request.getExtConfig() != null) {
requestJson.addProperty("ext_json", WxMaGsonBuilder.create().toJson(request.getExtConfig()));
}
return requestJson;
}
}

View File

@@ -0,0 +1,50 @@
package cn.binarywang.wx.miniapp.util.json;
import cn.binarywang.wx.miniapp.bean.code.WxMaCodeVersionDistribution;
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-26 19:47
*/
public class WxMaCodeVersionDistributionGsonAdapter implements JsonDeserializer<WxMaCodeVersionDistribution> {
@Override
public WxMaCodeVersionDistribution deserialize(JsonElement json, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException {
if (json == null) {
return null;
}
WxMaCodeVersionDistribution distribution = new WxMaCodeVersionDistribution();
JsonObject object = json.getAsJsonObject();
distribution.setNowVersion(GsonHelper.getString(object, "now_version"));
distribution.setUvInfo(getAsMap(object.getAsJsonObject("uv_info"), "items"));
return distribution;
}
private Map<String, Float> getAsMap(JsonObject object, String memberName) {
JsonArray array = object.getAsJsonArray(memberName);
if (array != null && array.size() > 0) {
Map<String, Float> map = new LinkedHashMap<>(array.size());
for (JsonElement element : array) {
JsonObject elementObject = element.getAsJsonObject();
String version = GsonHelper.getString(elementObject, "version");
if (version != null) {
Float percentage = GsonHelper.getFloat(elementObject, "percentage");
map.put(version, percentage);
}
}
return map;
}
return null;
}
}

View File

@@ -1,6 +1,8 @@
package cn.binarywang.wx.miniapp.util.json;
import cn.binarywang.wx.miniapp.bean.WxMaTemplateMessage;
import cn.binarywang.wx.miniapp.bean.code.WxMaCodeCommitRequest;
import cn.binarywang.wx.miniapp.bean.code.WxMaCodeVersionDistribution;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
@@ -13,6 +15,8 @@ public class WxMaGsonBuilder {
static {
INSTANCE.disableHtmlEscaping();
INSTANCE.registerTypeAdapter(WxMaTemplateMessage.class, new WxMaTemplateMessageGsonAdapter());
INSTANCE.registerTypeAdapter(WxMaCodeCommitRequest.class, new WxMaCodeCommitRequestGsonAdapter());
INSTANCE.registerTypeAdapter(WxMaCodeVersionDistribution.class, new WxMaCodeVersionDistributionGsonAdapter());
}
public static Gson create() {