Java--对接微信第四篇之初始化底部菜单

版权声明:本文为博主原创文章,欢迎转载,转载请注明作者、原文超链接 ,博主地址:https://blog.csdn.net/qq_31122833。 https://blog.csdn.net/qq_31122833/article/details/83823130

第一步、新建一些实体类:

Menu>Button>ComplexButton>CommonButton
/**
 * 菜单 
 */
public class Menu {  
    private Button[] button;  
  
    public Button[] getButton() {  
        return button;  
    }  
  
    public void setButton(Button[] button) {  
        this.button = button;  
    }  
} 
/**
 * 按钮的基类 
 */
public class Button {  
    private String name;  
  
    public String getName() {  
        return name;  
    }  
  
    public void setName(String name) {  
        this.name = name;  
    }  
}
/**
 * 复杂按钮(父按钮) 
 */
public class ComplexButton extends Button {  
    private Button[] sub_button;  
  
    public Button[] getSub_button() {  
        return sub_button;  
    }  
  
    public void setSub_button(Button[] sub_button) {  
        this.sub_button = sub_button;  
    }  
} 
/**
 * 普通按钮(子按钮) 
 */
public class CommonButton extends Button {  
    private String type;  
    private String key;
    private String url;
  
    public String getType() {  
        return type;  
    }  
  
    public void setType(String type) {  
        this.type = type;  
    }  
  
    public String getKey() {  
        return key;  
    }  
  
    public void setKey(String key) {  
        this.key = key;  
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }
}

第二步、写组装菜单方法:

其中,
1、btn.setType("view"):是点击按钮实现跳转Url地址
2、btn.setType("click"):是点击按钮实现对应key值的不同处理(由你自己定义做什么事情)
比如:
 if (eventType.equals(MessageUtil.EVENT_TYPE_CLICK)) {
    // 事件KEY值,与创建自定义菜单时指定的KEY值对应
    String eventKey = map.get("EventKey");
    if (eventKey.equals("21")) {
       logger.info("--学业方面菜单项被点击---openid===="+fromUserName);
       message = MessageUtil.textMsg(toUserName, fromUserName, "学业方面菜单项被点击!");
    } else if (eventKey.equals("22")) {
       message = MessageUtil.textMsg(toUserName, fromUserName, "健康方面菜单项被点击!");
    } else if (eventKey.equals("23")) {
       message = MessageUtil.textMsg(toUserName, fromUserName, "就业方面菜单项被点击!");
    } else if (eventKey.equals("24")) {
       message = MessageUtil.textMsg(toUserName, fromUserName, "社交方面菜单项被点击!");
    } else if (eventKey.equals("25")) {
       message = MessageUtil.textMsg(toUserName, fromUserName, "情感方面菜单项被点击!");
    } else if (eventKey.equals("31")) {
       message = MessageUtil.textMsg(toUserName, fromUserName, "家庭方面菜单项被点击!");
    } else if (eventKey.equals("32")) {
       message = MessageUtil.textMsg(toUserName, fromUserName, "经济方面菜单项被点击!");
    } else if (eventKey.equals("33")) {
       message = MessageUtil.textMsg(toUserName, fromUserName, "幽默笑话菜单项被点击!");
    }
}
但是,我这里全部是type=view,也就是点击按钮实现url跳转的,所以这个没有用到。
   /**
	 * 组装菜单数据
	 * @return
	 */
	private static Menu getMenu() {

	    String redirect_uri = "http://www.你的服务器回调地址.com/op/open/openArticle";

		CommonButton btn11 = new CommonButton();
		btn11.setName("官方网站");
		btn11.setType("view");
		btn11.setKey("11");
		btn11.setUrl("https://www.baidu.com");

		CommonButton btn12 = new CommonButton();
		btn12.setName("教师入口");
		btn12.setType("view");
		btn12.setKey("12");
		btn12.setUrl("https://www.baidu.com");

		CommonButton btn13 = new CommonButton();
		btn13.setName("管理入口");
		btn13.setType("view");
		btn13.setKey("13");
		btn13.setUrl("https://www.baidu.com");

		CommonButton btn21 = new CommonButton();
		btn21.setName("学业方面");
		btn21.setType("view");
		btn21.setKey("21");
		btn21.setUrl(BaseAPI.OPEN_URI+"/connect/oauth2/authorize?appid="+ WeiXinUtil.APPID+"&redirect_uri="+redirect_uri+"?category=1&response_type=code&scope=snsapi_base&state=1#wechat_redirect");

		CommonButton btn22 = new CommonButton();
		btn22.setName("健康方面");
		btn22.setType("view");
		btn22.setKey("22");
		btn22.setUrl(BaseAPI.OPEN_URI+"/connect/oauth2/authorize?appid="+ WeiXinUtil.APPID+"&redirect_uri="+redirect_uri+"?category=2&response_type=code&scope=snsapi_base&state=1#wechat_redirect");

		CommonButton btn23 = new CommonButton();
		btn23.setName("就业方面");
		btn23.setType("view");
		btn23.setKey("23");
		btn23.setUrl(BaseAPI.OPEN_URI+"/connect/oauth2/authorize?appid="+ WeiXinUtil.APPID+"&redirect_uri="+redirect_uri+"?category=3&response_type=code&scope=snsapi_base&state=1#wechat_redirect");

		CommonButton btn24 = new CommonButton();
		btn24.setName("社交方面");
		btn24.setType("view");
		btn24.setKey("24");
		btn24.setUrl(BaseAPI.OPEN_URI+"/connect/oauth2/authorize?appid="+ WeiXinUtil.APPID+"&redirect_uri="+redirect_uri+"?category=5&response_type=code&scope=snsapi_base&state=1#wechat_redirect");

		CommonButton btn25 = new CommonButton();
		btn25.setName("情感方面");
		btn25.setType("view");
		btn25.setKey("25");
		btn25.setUrl(BaseAPI.OPEN_URI+"/connect/oauth2/authorize?appid="+ WeiXinUtil.APPID+"&redirect_uri="+redirect_uri+"?category=6&response_type=code&scope=snsapi_base&state=1#wechat_redirect");

		CommonButton btn31 = new CommonButton();
		btn31.setName("家庭方面");
		btn31.setType("view");
		btn31.setKey("31");
		btn31.setUrl(BaseAPI.OPEN_URI+"/connect/oauth2/authorize?appid="+ WeiXinUtil.APPID+"&redirect_uri="+redirect_uri+"?category=7&response_type=code&scope=snsapi_base&state=1#wechat_redirect");

		CommonButton btn32 = new CommonButton();
		btn32.setName("经济方面");
		btn32.setType("view");
		btn32.setKey("32");
		btn32.setUrl(BaseAPI.OPEN_URI+"/connect/oauth2/authorize?appid="+ WeiXinUtil.APPID+"&redirect_uri="+redirect_uri+"?category=4&response_type=code&scope=snsapi_base&state=1#wechat_redirect");

		ComplexButton mainBtn1 = new ComplexButton();
		mainBtn1.setName("关于我们");
		mainBtn1.setSub_button(new CommonButton[] { btn11, btn12, btn13 });

		ComplexButton mainBtn2 = new ComplexButton();
		mainBtn2.setName("休闲驿站");
		mainBtn2.setSub_button(new CommonButton[] { btn21, btn22, btn23, btn24, btn25 });

		ComplexButton mainBtn3 = new ComplexButton();
		mainBtn3.setName("更多体验");
		mainBtn3.setSub_button(new CommonButton[] { btn31, btn32 });

		
		Menu menu = new Menu();
		menu.setButton(new Button[] { mainBtn1, mainBtn2, mainBtn3 });
		return menu;
	}
/**
	 * 创建菜单
	 * @param access_token
	 * @param menuJson 菜单json 数据 
	 * @return
	 */
	public static BaseResult menuCreate(String access_token, String menuJson){
		HttpUriRequest httpUriRequest = RequestBuilder.post()
		.setHeader(jsonHeader).setUri(BASE_URI+"/cgi-bin/menu/create")
		.addParameter("access_token", access_token)
		.setEntity(new StringEntity(menuJson,Charset.forName("utf-8"))).build();
		return LocalHttpClient.executeJsonResult(httpUriRequest,BaseResult.class);
	}

	/**
	 * 创建菜单
	 * @param access_token
	 * @param menu
	 * @return
	 */
	public static BaseResult menuCreate(String access_token,Menu menu){
		String str = JsonUtil.toJSONString(menu);
		return menuCreate(access_token,str);
	}

最后、写个main方法测试一下:

public static void main(String[] args) {
		// 调用接口创建菜单
		BaseResult res = MenuAPI.menuCreate(你的access_token,MenuAPI.getMenu());
		System.out.println(res);
	}
返回"ok"表示菜单生成成功!
去你的微信公众号就可以看到效果啦

效果图:

猜你喜欢

转载自blog.csdn.net/qq_31122833/article/details/83823130