Skip to content

Commit 39c7f7c

Browse files
committed
改造查询菜单接口,以支持个性化菜单的conditionalmenu和menuid属性, #126
1 parent 5018c31 commit 39c7f7c

File tree

4 files changed

+100
-5
lines changed

4 files changed

+100
-5
lines changed

weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMenuService.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import me.chanjar.weixin.common.bean.menu.WxMenu;
44
import me.chanjar.weixin.common.exception.WxErrorException;
55
import me.chanjar.weixin.mp.bean.menu.WxMpGetSelfMenuInfoResult;
6+
import me.chanjar.weixin.mp.bean.menu.WxMpMenu;
67

78
/**
89
* 菜单相关操作接口
@@ -54,10 +55,10 @@ public interface WxMpMenuService {
5455
/**
5556
* <pre>
5657
* 自定义菜单查询接口
57-
* 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=自定义菜单查询接口
58+
* 详情请见: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141014&token=&lang=zh_CN
5859
* </pre>
5960
*/
60-
WxMenu menuGet() throws WxErrorException;
61+
WxMpMenu menuGet() throws WxErrorException;
6162

6263
/**
6364
* <pre>

weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpMenuServiceImpl.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import me.chanjar.weixin.mp.api.WxMpMenuService;
88
import me.chanjar.weixin.mp.api.WxMpService;
99
import me.chanjar.weixin.mp.bean.menu.WxMpGetSelfMenuInfoResult;
10+
import me.chanjar.weixin.mp.bean.menu.WxMpMenu;
1011
import org.slf4j.Logger;
1112
import org.slf4j.LoggerFactory;
1213

@@ -78,11 +79,11 @@ public void menuDelete(String menuId) throws WxErrorException {
7879
}
7980

8081
@Override
81-
public WxMenu menuGet() throws WxErrorException {
82+
public WxMpMenu menuGet() throws WxErrorException {
8283
String url = API_URL_PREFIX + "/get";
8384
try {
8485
String resultContent = this.wxMpService.get(url, null);
85-
return WxMenu.fromJson(resultContent);
86+
return WxMpMenu.fromJson(resultContent);
8687
} catch (WxErrorException e) {
8788
// 46003 不存在的菜单数据
8889
if (e.getError().getErrorCode() == 46003) {
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
package me.chanjar.weixin.mp.bean.menu;
2+
3+
import com.google.gson.annotations.SerializedName;
4+
import me.chanjar.weixin.common.bean.menu.WxMenuButton;
5+
import me.chanjar.weixin.common.bean.menu.WxMenuRule;
6+
import me.chanjar.weixin.common.util.ToStringUtils;
7+
import me.chanjar.weixin.common.util.json.WxGsonBuilder;
8+
9+
import java.util.List;
10+
11+
/**
12+
* <pre>
13+
* 公众号专用的菜单类,可能包含个性化菜单
14+
* Created by Binary Wang on 2017-1-17.
15+
* @author <a href="https://github.com/binarywang">binarywang(Binary Wang)</a>
16+
* </pre>
17+
*/
18+
public class WxMpMenu {
19+
@SerializedName("menu")
20+
private WxMpConditionalMenu menu;
21+
22+
@SerializedName("conditionalmenu")
23+
private List<WxMpConditionalMenu> conditionalMenu;
24+
25+
public static WxMpMenu fromJson(String json) {
26+
return WxGsonBuilder.create().fromJson(json, WxMpMenu.class);
27+
}
28+
29+
public WxMpConditionalMenu getMenu() {
30+
return menu;
31+
}
32+
33+
public void setMenu(WxMpConditionalMenu menu) {
34+
this.menu = menu;
35+
}
36+
37+
public List<WxMpConditionalMenu> getConditionalMenu() {
38+
return conditionalMenu;
39+
}
40+
41+
public void setConditionalMenu(List<WxMpConditionalMenu> conditionalMenu) {
42+
this.conditionalMenu = conditionalMenu;
43+
}
44+
45+
@Override
46+
public String toString() {
47+
return ToStringUtils.toSimpleString(this);
48+
}
49+
50+
public String toJson() {
51+
return WxGsonBuilder.create().toJson(this);
52+
}
53+
54+
public static class WxMpConditionalMenu {
55+
@SerializedName("button")
56+
private List<WxMenuButton> buttons;
57+
@SerializedName("matchrule")
58+
private WxMenuRule rule;
59+
@SerializedName("menuid")
60+
private String menuId;
61+
62+
@Override
63+
public String toString() {
64+
return ToStringUtils.toSimpleString(this);
65+
}
66+
67+
public List<WxMenuButton> getButtons() {
68+
return buttons;
69+
}
70+
71+
public void setButtons(List<WxMenuButton> buttons) {
72+
this.buttons = buttons;
73+
}
74+
75+
public WxMenuRule getRule() {
76+
return rule;
77+
}
78+
79+
public void setRule(WxMenuRule rule) {
80+
this.rule = rule;
81+
}
82+
83+
public String getMenuId() {
84+
return menuId;
85+
}
86+
87+
public void setMenuId(String menuId) {
88+
this.menuId = menuId;
89+
}
90+
}
91+
92+
}

weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpMenuServiceImplTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import me.chanjar.weixin.mp.api.ApiTestModule;
99
import me.chanjar.weixin.mp.api.WxMpService;
1010
import me.chanjar.weixin.mp.bean.menu.WxMpGetSelfMenuInfoResult;
11+
import me.chanjar.weixin.mp.bean.menu.WxMpMenu;
1112
import org.testng.*;
1213
import org.testng.annotations.*;
1314

@@ -137,7 +138,7 @@ public void testCreateMenu2() throws WxErrorException {
137138

138139
@Test(dependsOnMethods = {"testMenuCreate"})
139140
public void testMenuGet() throws WxErrorException {
140-
WxMenu wxMenu = this.wxService.getMenuService().menuGet();
141+
WxMpMenu wxMenu = this.wxService.getMenuService().menuGet();
141142
Assert.assertNotNull(wxMenu);
142143
System.out.println(wxMenu.toJson());
143144
}

0 commit comments

Comments
 (0)