-
控制器
@RequestMapping("/WXPublic") @RestController @ConfigurationProperties("app") @Slf4j public class CreateMenuController { @Autowired CreateMenuUtil createMenuUtil; @Autowired private Environment env; @GetMapping("/CreateMenu") public String createMenu(){ String qgqc=env.getProperty("app.applet.qgqc.appId"); String sszg=env.getProperty("app.applet.sszg.appId"); ButtonMenu btn = new ButtonMenu(); SubButton subButton1 = new SubButton("注册有奖"); ClickButton btn1 = new ClickButton("一级菜单","一级菜单"); btn.getButton().add(btn1); SubButton subButton2 = new SubButton("多级菜单"); subButton2.getSub_button().add(new ViewButton("链接跳转","url")); subButton2.getSub_button().add(new MiniprogramButton("小程序跳转","小程序页面路径",小程序appid)); subButton2.getSub_button().add(new ClickButton("菜单点击事件","对应点击事件的key值")); btn.getButton().add(subButton2); String jsonObject = JSONObject.toJSONString(btn); JSONObject json = JSONObject.parseObject(jsonObject); String s = createMenuUtil.CreateMenu(json.toString()); return s; } } -
创建菜单工具类
@Slf4j public class CreateMenuUtil { @Autowired private AccessTokenUtil accessTokenUtil; public String CreateMenu(@RequestBody String data){ try{ //获取token Mapmap = accessTokenUtil.getAccessToken(); if(map.get("access_token")==null){ map = accessTokenUtil.getAccessToken(); }else { //判断token是否失效 long totalSeconds = (System.currentTimeMillis() - Long.valueOf(String.valueOf(map.get("getTokenTime"))).longValue()) / 1000; long expiresIn = Long.valueOf(String.valueOf(map.get("expires_in"))).longValue(); if(totalSeconds>expiresIn){ map = accessTokenUtil.getAccessToken(); }else { String createMenuUrl="https://api.weixin.qq.com/cgi-bin/menu/create?access_token="+map.get("access_token"); //向微信服务器发送post请求 JSONObject jsonObject = HttpUtil.httpsRequest(createMenuUrl , "POST", data); return String.valueOf(jsonObject); } } }catch (Exception e){ e.printStackTrace(); } return null; } } -
发送请求工具类
public class HttpUtil { public static JSONObject httpsRequest(String requestUrl, String requestMethod, String data) { JSONObject jsonObject = null; InputStream inputStream = null; InputStreamReader inputStreamReader = null; BufferedReader bufferedReader = null; try { URL url = new URL(requestUrl); HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); conn.setDoOutput(true); conn.setDoInput(true); conn.setUseCaches(false); // 设置请求方式(GET/POST) conn.setRequestMethod(requestMethod); conn.connect(); // 当data不为null时向输出流写数据 if (null != data) { // getOutputStream方法隐藏了connect()方法 OutputStream outputStream = conn.getOutputStream(); // 注意编码格式 outputStream.write(data.getBytes("UTF-8")); outputStream.close(); } // 从输入流读取返回内容 inputStream = conn.getInputStream(); inputStreamReader = new InputStreamReader(inputStream, "utf-8"); bufferedReader = new BufferedReader(inputStreamReader); String str = null; StringBuffer buffer = new StringBuffer(); while ((str = bufferedReader.readLine()) != null) { buffer.append(str); } conn.disconnect(); jsonObject = JSONObject.parseObject(buffer.toString()); return jsonObject; } catch (Exception e) { e.printStackTrace(); return null; } finally { // 释放资源 try { if(null != inputStream) { inputStream.close(); } if(null != inputStreamReader) { inputStreamReader.close(); } if(null != bufferedReader) { bufferedReader.close(); } } catch (IOException e) { e.printStackTrace(); } } } } -
实体类
-
Button
@Getter @Setter public abstract class Button { private String name; public Button(String name) { this.name = name; } } -
ButtonMenu
@Setter @Getter public class ButtonMenu { private List -
ClickButton
@Setter @Getter public class ClickButton extends Button{ private String type="click"; private String key ; public ClickButton(String name, String key) { super(name); this.key = key; } } -
MiniprogramButton
@Getter @Setter public class MiniprogramButton extends Button { private String type="miniprogram"; private String url="http://mp.weixin.qq.com"; private String appid ; private String pagepath; public MiniprogramButton(String name, String pagepath,String appid) { super(name); this.pagepath = pagepath; this.appid = appid; } } -
ViewButton
@Getter @Setter public class ViewButton extends Button { private String type = "view"; private String url; public ViewButton(String name, String url) { super(name); this.url = url; } }
-
-
使用postman调用接口,或者是后台页面传值调用接口即可



