5.6.4 封装菜单工具类

在org.liufeng.course.util包下创建一个菜单工具类MenuUtil,该类用于封装自定义菜单接口相关的操作,包括创建菜单、查询菜单和删除菜单,代码如下:

  1. package org.liufeng.course.util;
  2.  
  3. import net.sf.json.JSONObject;
  4. import org.liufeng.course.menu.Menu;
  5. import org.slf4j.Logger;
  6. import org.slf4j.LoggerFactory;
  7.  
  8. /**
  9. * 自定义菜单工具类
  10. *
  11. * @author liufeng
  12. * @date 2013-10-17
  13. */
  14. public class MenuUtil {
  15. private static Logger log = LoggerFactory.getLogger(MenuUtil.class);
  16.  
  17. // 菜单创建(POST)
  18. public final static String menu_create_url = "https:// api.weixin.qq.com/cgi-bin/
  19. menu/create?access_token=ACCESS_TOKEN";
  20. // 菜单查询(GET)
  21. public final static String menu_get_url = "https:// api.weixin.qq.com/cgi-bin/menu/
  22. get?access_token=ACCESS_TOKEN";
  23. // 菜单删除(GET)
  24. public final static String menu_delete_url = "https:// api.weixin.qq.com/cgi-bin/
  25. menu/delete?access_token=ACCESS_TOKEN";
  26.  
  27. /**
  28. * 创建菜单
  29. *
  30. * @param menu 菜单实例
  31. * @param accessToken 凭证
  32. * @return true成功 false失败
  33. */
  34. public static boolean createMenu(Menu menu, String accessToken) {
  35. boolean result = false;
  36. String url = menu_create_url.replace("ACCESS_TOKEN", accessToken);
  37. // 将菜单对象转换成JSON字符串
  38. String jsonMenu = JSONObject.fromObject(menu).toString();
  39. // 发起POST请求创建菜单
  40. JSONObject jsonObject = CommonUtil.httpsRequest(url, "POST", jsonMenu);
  41.  
  42. if (null != jsonObject) {
  43. int errorCode = jsonObject.getInt("errcode");
  44. String errorMsg = jsonObject.getString("errmsg");
  45. if (0 == errorCode) {
  46. result = true;
  47. } else {
  48. result = false;
  49. log.error("创建菜单失败 errcode:{} errmsg:{}", errorCode, errorMsg);
  50. }
  51. }
  52.  
  53. return result;
  54. }
  55.  
  56. /**
  57. * 查询菜单
  58. *
  59. * @param accessToken 凭证
  60. * @return
  61. */
  62. public static String getMenu(String accessToken) {
  63. String result = null;
  64. String requestUrl = menu_get_url.replace("ACCESS_TOKEN", accessToken);
  65. // 发起GET请求查询菜单
  66. JSONObject jsonObject = CommonUtil.httpsRequest(requestUrl, "GET", null);
  67.  
  68. if (null != jsonObject) {
  69. result = jsonObject.toString();
  70. }
  71. return result;
  72. }
  73.  
  74. /**
  75. * 删除菜单
  76. *
  77. * @param accessToken 凭证
  78. * @return true成功 false失败
  79. */
  80. public static boolean deleteMenu(String accessToken) {
  81. boolean result = false;
  82. String requestUrl = menu_delete_url.replace("ACCESS_TOKEN", accessToken);
  83. // 发起GET请求删除菜单
  84. JSONObject jsonObject = CommonUtil.httpsRequest(requestUrl, "GET", null);
  85.  
  86. if (null != jsonObject) {
  87. int errorCode = jsonObject.getInt("errcode");
  88. String errorMsg = jsonObject.getString("errmsg");
  89. if (0 == errorCode) {
  90. result = true;
  91. } else {
  92. result = false;
  93. log.error("删除菜单失败 errcode:{} errmsg:{}", errorCode, errorMsg);
  94. }
  95. }
  96. return result;
  97. }
  98. }