From b805a9967ceb3e77a75a5dea11a1b44b81405611 Mon Sep 17 00:00:00 2001 From: miller Date: Mon, 15 Feb 2016 16:54:54 +0800 Subject: [PATCH] =?UTF-8?q?1.WxMenuRule=E5=A2=9E=E5=8A=A0language=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=202.=E6=9B=B4=E6=94=B9=E4=BA=86WxMenu=E7=9A=84toJson?= =?UTF-8?q?=E6=96=B9=E6=B3=95=E4=BD=BFmenurule=E8=BD=AC=E6=8D=A2=E6=88=90?= =?UTF-8?q?=E6=AD=A3=E7=A1=AE=E7=9A=84=E5=AD=97=E7=AC=A6=E4=B8=B2=203.WxMe?= =?UTF-8?q?nuTest=E4=B8=AD=E5=A2=9E=E5=8A=A0=E4=BA=86=E7=9B=B8=E5=BA=94?= =?UTF-8?q?=E7=9A=84=E6=B5=8B=E8=AF=95=E7=94=A8=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../me/chanjar/weixin/common/bean/WxMenu.java | 21 +++++--- .../common/util/json/WxMenuGsonAdapter.java | 21 +++++--- .../weixin/common/bean/WxMenuTest.java | 49 +++++++++++++++++++ 3 files changed, 79 insertions(+), 12 deletions(-) diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/WxMenu.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/WxMenu.java index e20be680..ccc7bc49 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/WxMenu.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/WxMenu.java @@ -1,15 +1,14 @@ package me.chanjar.weixin.common.bean; +import me.chanjar.weixin.common.util.json.WxGsonBuilder; +import org.apache.commons.codec.Charsets; + import java.io.InputStream; import java.io.InputStreamReader; import java.io.Serializable; import java.util.ArrayList; import java.util.List; -import org.apache.commons.codec.Charsets; - -import me.chanjar.weixin.common.util.json.WxGsonBuilder; - /** * 企业号菜单 * @author Daniel Qian @@ -136,6 +135,7 @@ public class WxMenu implements Serializable { private String province; private String city; private String clientPlatformType; + private String language; public String getGroupId() { return groupId; @@ -184,8 +184,16 @@ public class WxMenu implements Serializable { public void setClientPlatformType(String clientPlatformType) { this.clientPlatformType = clientPlatformType; } - - @Override + + public String getLanguage() { + return language; + } + + public void setLanguage(String language) { + this.language = language; + } + + @Override public String toString() { return "matchrule:{" + "group_id='" + groupId + '\'' + @@ -194,6 +202,7 @@ public class WxMenu implements Serializable { ", province" + province + '\'' + ", city" + city + '\'' + ", client_platform_type" + clientPlatformType + '\'' + + ", language" + language + '\'' + "}"; } } diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/json/WxMenuGsonAdapter.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/json/WxMenuGsonAdapter.java index cb3e8c69..d4d9ea5a 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/json/WxMenuGsonAdapter.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/json/WxMenuGsonAdapter.java @@ -8,9 +8,6 @@ */ package me.chanjar.weixin.common.util.json; -import java.lang.reflect.Type; - -import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonDeserializationContext; import com.google.gson.JsonDeserializer; @@ -19,9 +16,10 @@ import com.google.gson.JsonObject; import com.google.gson.JsonParseException; import com.google.gson.JsonSerializationContext; import com.google.gson.JsonSerializer; - import me.chanjar.weixin.common.bean.WxMenu; +import java.lang.reflect.Type; + /** * * @author Daniel Qian @@ -40,8 +38,7 @@ public class WxMenuGsonAdapter implements JsonSerializer, JsonDeserializ json.add("button", buttonArray); if (menu.getMatchRule() != null) { - Gson gson = new Gson(); - json.add("matchrule", gson.toJsonTree(menu.getMatchRule())); + json.add("matchrule", convertToJson(menu.getMatchRule())); } return json; @@ -63,6 +60,18 @@ public class WxMenuGsonAdapter implements JsonSerializer, JsonDeserializ return buttonJson; } + protected JsonObject convertToJson(WxMenu.WxMenuRule menuRule){ + JsonObject matchRule = new JsonObject(); + matchRule.addProperty("group_id",menuRule.getGroupId()); + matchRule.addProperty("sex",menuRule.getSex()); + matchRule.addProperty("country",menuRule.getCountry()); + matchRule.addProperty("province",menuRule.getProvince()); + matchRule.addProperty("city",menuRule.getCity()); + matchRule.addProperty("client_platform_type",menuRule.getClientPlatformType()); + matchRule.addProperty("language",menuRule.getLanguage()); + return matchRule; + } + public WxMenu deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { /* * 操蛋的微信 diff --git a/weixin-java-common/src/test/java/me/chanjar/weixin/common/bean/WxMenuTest.java b/weixin-java-common/src/test/java/me/chanjar/weixin/common/bean/WxMenuTest.java index 015889d7..79d28e47 100644 --- a/weixin-java-common/src/test/java/me/chanjar/weixin/common/bean/WxMenuTest.java +++ b/weixin-java-common/src/test/java/me/chanjar/weixin/common/bean/WxMenuTest.java @@ -55,6 +55,29 @@ public class WxMenuTest { Assert.assertEquals(menu.toJson(), json); } + + @Test(dataProvider = "wxAddConditionalMenu") + public void testAddConditionalToJson(String json) { + WxMenu menu = new WxMenu(); + WxMenuButton button1 = new WxMenuButton(); + button1.setType("click"); + button1.setName("今日歌曲"); + button1.setKey("V1001_TODAY_MUSIC"); + + menu.getButtons().add(button1); + + WxMenu.WxMenuRule wxMenuRule = new WxMenu.WxMenuRule(); + wxMenuRule.setGroupId("2"); + wxMenuRule.setSex("1"); + wxMenuRule.setCountry("中国"); + wxMenuRule.setProvince("广东"); + wxMenuRule.setCity("广州"); + wxMenuRule.setClientPlatformType("2"); + wxMenuRule.setLanguage("zh_CN"); + menu.setMatchRule(wxMenuRule); + + Assert.assertEquals(menu.toJson(), json); + } @DataProvider public Object[][] wxReturnMenu() { @@ -106,5 +129,31 @@ public class WxMenuTest { new Object[] { json } }; } + + @DataProvider(name = "wxAddConditionalMenu") + public Object[][] addConditionalMenuJson(){ + String json = + "{" + +"\"button\":[" + +"{" + +"\"type\":\"click\"," + +"\"name\":\"今日歌曲\"," + +"\"key\":\"V1001_TODAY_MUSIC\"" + +"}" + +"]," + +"\"matchrule\":{" + +"\"group_id\":\"2\"," + +"\"sex\":\"1\"," + +"\"country\":\"中国\"," + +"\"province\":\"广东\"," + +"\"city\":\"广州\"," + +"\"client_platform_type\":\"2\"," + +"\"language\":\"zh_CN\"" + +"}" + +"}"; + return new Object[][]{ + new Object[]{json} + }; + } }