Skip to content

Commit 161a642

Browse files
committed
菜单接口的支持
1 parent a7ad46b commit 161a642

File tree

7 files changed

+33
-35
lines changed

7 files changed

+33
-35
lines changed

weixin-java-enterprise/src/main/java/me/chanjar/weixin/enterprise/api/WxCpService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ public interface WxCpService {
110110
* @param menu
111111
* @throws WxErrorException
112112
*/
113-
public void menuCreate(WxMenu menu) throws WxErrorException;
113+
public void menuCreate(WxCpMenu menu) throws WxErrorException;
114114

115115
/**
116116
* <pre>
@@ -129,7 +129,7 @@ public interface WxCpService {
129129
* @return
130130
* @throws WxErrorException
131131
*/
132-
public WxMenu menuGet() throws WxErrorException;
132+
public WxCpMenu menuGet() throws WxErrorException;
133133

134134
/**
135135
* <pre>

weixin-java-enterprise/src/main/java/me/chanjar/weixin/enterprise/api/WxCpServiceImpl.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ public void messageSend(WxCpMessage message) throws WxErrorException {
106106
execute(new SimplePostRequestExecutor(), url, message.toJson());
107107
}
108108

109-
public void menuCreate(WxMenu menu) throws WxErrorException {
109+
public void menuCreate(WxCpMenu menu) throws WxErrorException {
110110
String url = "https://api.weixin.qq.com/cgi-bin/menu/create";
111111
execute(new SimplePostRequestExecutor(), url, menu.toJson());
112112
}
@@ -116,11 +116,11 @@ public void menuDelete() throws WxErrorException {
116116
execute(new SimpleGetRequestExecutor(), url, null);
117117
}
118118

119-
public WxMenu menuGet() throws WxErrorException {
119+
public WxCpMenu menuGet() throws WxErrorException {
120120
String url = "https://api.weixin.qq.com/cgi-bin/menu/get";
121121
try {
122122
String resultContent = execute(new SimpleGetRequestExecutor(), url, null);
123-
return WxMenu.fromJson(resultContent);
123+
return WxCpMenu.fromJson(resultContent);
124124
} catch (WxErrorException e) {
125125
// 46003 不存在的菜单数据
126126
if (e.getError().getErrorCode() == 46003) {

weixin-java-enterprise/src/main/java/me/chanjar/weixin/enterprise/bean/WxMenu.java renamed to weixin-java-enterprise/src/main/java/me/chanjar/weixin/enterprise/bean/WxCpMenu.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
* @author Daniel Qian
1313
*
1414
*/
15-
public class WxMenu {
15+
public class WxCpMenu {
1616

1717
private List<WxMenuButton> buttons = new ArrayList<WxMenuButton>();
1818

@@ -28,12 +28,12 @@ public String toJson() {
2828
return WxCpGsonBuilder.create().toJson(this);
2929
}
3030

31-
public static WxMenu fromJson(String json) {
32-
return WxCpGsonBuilder.create().fromJson(json, WxMenu.class);
31+
public static WxCpMenu fromJson(String json) {
32+
return WxCpGsonBuilder.create().fromJson(json, WxCpMenu.class);
3333
}
3434

35-
public static WxMenu fromJson(InputStream is) {
36-
return WxCpGsonBuilder.create().fromJson(new InputStreamReader(is), WxMenu.class);
35+
public static WxCpMenu fromJson(InputStream is) {
36+
return WxCpGsonBuilder.create().fromJson(new InputStreamReader(is), WxCpMenu.class);
3737
}
3838

3939
public static class WxMenuButton {

weixin-java-enterprise/src/main/java/me/chanjar/weixin/enterprise/util/json/WxCpGsonBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public class WxCpGsonBuilder {
1313
static {
1414
INSTANCE.disableHtmlEscaping();
1515
INSTANCE.registerTypeAdapter(WxCpMessage.class, new WxCpMessageGsonAdapter());
16-
INSTANCE.registerTypeAdapter(WxMenu.class, new WxCpMenuGsonAdapter());
16+
INSTANCE.registerTypeAdapter(WxCpMenu.class, new WxCpMenuGsonAdapter());
1717
INSTANCE.registerTypeAdapter(WxCpDepart.class, new WxCpDepartGsonAdapter());
1818
INSTANCE.registerTypeAdapter(WxUser.class, new WxCpUserGsonAdapter());
1919
INSTANCE.registerTypeAdapter(WxUserList.class, new WxCpUserListGsonAdapter());

weixin-java-enterprise/src/main/java/me/chanjar/weixin/enterprise/util/json/WxCpMenuGsonAdapter.java

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import java.lang.reflect.Type;
1212

1313
import me.chanjar.weixin.common.GsonHelper;
14-
import me.chanjar.weixin.enterprise.bean.WxMenu;
14+
import me.chanjar.weixin.enterprise.bean.WxCpMenu;
1515

1616
import com.google.gson.JsonArray;
1717
import com.google.gson.JsonDeserializationContext;
@@ -27,13 +27,13 @@
2727
* @author Daniel Qian
2828
*
2929
*/
30-
public class WxCpMenuGsonAdapter implements JsonSerializer<WxMenu>, JsonDeserializer<WxMenu> {
30+
public class WxCpMenuGsonAdapter implements JsonSerializer<WxCpMenu>, JsonDeserializer<WxCpMenu> {
3131

32-
public JsonElement serialize(WxMenu menu, Type typeOfSrc, JsonSerializationContext context) {
32+
public JsonElement serialize(WxCpMenu menu, Type typeOfSrc, JsonSerializationContext context) {
3333
JsonObject json = new JsonObject();
3434

3535
JsonArray buttonArray = new JsonArray();
36-
for (WxMenu.WxMenuButton button : menu.getButtons()) {
36+
for (WxCpMenu.WxMenuButton button : menu.getButtons()) {
3737
JsonObject buttonJson = convertToJson(button);
3838
buttonArray.add(buttonJson);
3939
}
@@ -42,34 +42,33 @@ public JsonElement serialize(WxMenu menu, Type typeOfSrc, JsonSerializationConte
4242
return json;
4343
}
4444

45-
protected JsonObject convertToJson(WxMenu.WxMenuButton button) {
45+
protected JsonObject convertToJson(WxCpMenu.WxMenuButton button) {
4646
JsonObject buttonJson = new JsonObject();
4747
buttonJson.addProperty("type", button.getType());
4848
buttonJson.addProperty("name", button.getName());
4949
buttonJson.addProperty("key", button.getKey());
5050
buttonJson.addProperty("url", button.getUrl());
5151
if (button.getSubButtons() != null && button.getSubButtons().size() > 0) {
5252
JsonArray buttonArray = new JsonArray();
53-
for (WxMenu.WxMenuButton sub_button : button.getSubButtons()) {
53+
for (WxCpMenu.WxMenuButton sub_button : button.getSubButtons()) {
5454
buttonArray.add(convertToJson(sub_button));
5555
}
5656
buttonJson.add("sub_button", buttonArray);
5757
}
5858
return buttonJson;
5959
}
6060

61-
public WxMenu deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
61+
public WxCpMenu deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
6262
/*
6363
* 操蛋的微信
6464
* 创建菜单时是 { button : ... }
6565
* 查询菜单时是 { menu : { button : ... } }
6666
*/
67-
WxMenu menu = new WxMenu();
68-
JsonObject menuJson = json.getAsJsonObject().get("menu").getAsJsonObject();
69-
JsonArray buttonsJson = menuJson.get("button").getAsJsonArray();
67+
WxCpMenu menu = new WxCpMenu();
68+
JsonArray buttonsJson = json.getAsJsonObject().get("button").getAsJsonArray();
7069
for (int i = 0; i < buttonsJson.size(); i++) {
7170
JsonObject buttonJson = buttonsJson.get(i).getAsJsonObject();
72-
WxMenu.WxMenuButton button = convertFromJson(buttonJson);
71+
WxCpMenu.WxMenuButton button = convertFromJson(buttonJson);
7372
menu.getButtons().add(button);
7473
if (buttonJson.get("sub_button") == null || buttonJson.get("sub_button").isJsonNull()) {
7574
continue;
@@ -83,8 +82,8 @@ public WxMenu deserialize(JsonElement json, Type typeOfT, JsonDeserializationCon
8382
return menu;
8483
}
8584

86-
protected WxMenu.WxMenuButton convertFromJson(JsonObject json) {
87-
WxMenu.WxMenuButton button = new WxMenu.WxMenuButton();
85+
protected WxCpMenu.WxMenuButton convertFromJson(JsonObject json) {
86+
WxCpMenu.WxMenuButton button = new WxCpMenu.WxMenuButton();
8887
button.setName(GsonHelper.getString(json, "name"));
8988
button.setKey(GsonHelper.getString(json, "key"));
9089
button.setUrl(GsonHelper.getString(json, "url"));

weixin-java-enterprise/src/test/java/me/chanjar/weixin/enterprise/api/WxMenuAPITest.java renamed to weixin-java-enterprise/src/test/java/me/chanjar/weixin/enterprise/api/WxCpMenuAPITest.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22

33
import javax.xml.bind.JAXBException;
44

5+
import me.chanjar.weixin.enterprise.bean.WxCpMenu;
56
import org.testng.Assert;
67
import org.testng.annotations.DataProvider;
78
import org.testng.annotations.Guice;
89
import org.testng.annotations.Test;
910

1011
import com.google.inject.Inject;
1112

12-
import me.chanjar.weixin.enterprise.bean.WxMenu;
13-
import me.chanjar.weixin.enterprise.bean.WxMenu.WxMenuButton;
13+
import me.chanjar.weixin.enterprise.bean.WxCpMenu.WxMenuButton;
1414
import me.chanjar.weixin.enterprise.exception.WxErrorException;
1515

1616
/**
@@ -20,14 +20,14 @@
2020
*/
2121
@Test(groups="menuAPI", dependsOnGroups="baseAPI")
2222
@Guice(modules = ApiTestModule.class)
23-
public class WxMenuAPITest {
23+
public class WxCpMenuAPITest {
2424

2525
@Inject
2626
protected WxCpServiceImpl wxService;
2727

2828
@Test(dataProvider = "menu")
29-
public void testCreateMenu(WxMenu wxMenu) throws WxErrorException {
30-
wxService.menuCreate(wxMenu);
29+
public void testCreateMenu(WxCpMenu wxCpMenu) throws WxErrorException {
30+
wxService.menuCreate(wxCpMenu);
3131
}
3232

3333
@Test(dependsOnMethods = { "testCreateMenu"})
@@ -42,7 +42,7 @@ public void testDeleteMenu() throws WxErrorException {
4242

4343
@DataProvider(name="menu")
4444
public Object[][] getMenu() throws JAXBException {
45-
WxMenu menu = new WxMenu();
45+
WxCpMenu menu = new WxCpMenu();
4646
WxMenuButton button1 = new WxMenuButton();
4747
button1.setType(WxCpConsts.BUTTON_CLICK);
4848
button1.setName("今日歌曲");

weixin-java-enterprise/src/test/java/me/chanjar/weixin/enterprise/bean/WxMenuTest.java renamed to weixin-java-enterprise/src/test/java/me/chanjar/weixin/enterprise/bean/WxCpMenuTest.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,23 @@
11
package me.chanjar.weixin.enterprise.bean;
22

3-
import me.chanjar.weixin.enterprise.bean.WxMenu;
43
import org.testng.Assert;
54
import org.testng.annotations.DataProvider;
65
import org.testng.annotations.Test;
76

8-
import me.chanjar.weixin.enterprise.bean.WxMenu.WxMenuButton;
7+
import me.chanjar.weixin.enterprise.bean.WxCpMenu.WxMenuButton;
98

109
@Test
11-
public class WxMenuTest {
10+
public class WxCpMenuTest {
1211

1312
@Test(dataProvider="wxReturnMenu")
1413
public void testFromJson(String json) {
15-
WxMenu menu = WxMenu.fromJson(json);
14+
WxCpMenu menu = WxCpMenu.fromJson(json);
1615
Assert.assertEquals(menu.getButtons().size(), 3);
1716
}
1817

1918
@Test(dataProvider="wxPushMenu")
2019
public void testToJson(String json) {
21-
WxMenu menu = new WxMenu();
20+
WxCpMenu menu = new WxCpMenu();
2221
WxMenuButton button1 = new WxMenuButton();
2322
button1.setType("click");
2423
button1.setName("今日歌曲");

0 commit comments

Comments
 (0)