前言
1、controlelr
@RequestMapping("menu")
@ResponseBody
public ResponseBean todayYouHui(){
try {
return ResponseBean.buildSuccess(menuService.byControllerSetMenu());
}catch (AppException e){
return ResponseBean.buildFailure(e.getCode(),e.getMessage());
} catch (Exception e) {
return ResponseBean.buildFailure(e.getMessage());
}
}
2、service
@Override
public String byControllerSetMenu() {
MenuUrl todayYouHuiMenuUrl = menuUrlRepository.findByMenuNameEquals(WechatMenuParams.YOUHUI_TODAY);
ViewButton todayYouHui = new ViewButton();
todayYouHui.setName(todayYouHuiMenuUrl.getMenuName());
todayYouHui.setUrl(todayYouHuiMenuUrl.getUrl());
todayYouHui.setType(WechatMenuParams.VIEW);
// ClickButton _618DaCu = new ClickButton();
// _618DaCu.setName("618大促銷");
// _618DaCu.setType(WechatMenuParams.CLICK);
// _618DaCu.setKey("618");
// BasicButton youhuiTodayYouHui = new BasicButton();
// youhuiTodayYouHui.setName(todayYouHuiMenuUrl.getMenuName());
// youhuiTodayYouHui.setSub_button(new BasicButton[]{todayYouHui,_618DaCu});
MenuUrl findYouHuiMenuUrl = menuUrlRepository.findByMenuNameEquals(WechatMenuParams.YOUHIU_FIND);
ViewButton findYouHui = new ViewButton();
findYouHui.setName(findYouHuiMenuUrl.getMenuName());
findYouHui.setUrl(findYouHuiMenuUrl.getUrl());
findYouHui.setType(WechatMenuParams.VIEW);
ClickButton shike = new ClickButton();
shike.setName("應用試客");
shike.setType(WechatMenuParams.CLICK);
shike.setKey("shikeErWeiMa");
MenuUrl xianLaingMiaoShaMenuUrl = menuUrlRepository.findByMenuNameEquals(WechatMenuParams.YOUHUI_XIANGLIANG_MIAOSHA);
ViewButton xianLaingMiaoSha = new ViewButton();
xianLaingMiaoSha.setName(xianLaingMiaoShaMenuUrl.getMenuName());
xianLaingMiaoSha.setUrl(xianLaingMiaoShaMenuUrl.getUrl());
xianLaingMiaoSha.setType(WechatMenuParams.VIEW);
// 二級菜單的配置
BasicButton youhuiXianLaingMiaoSha = new BasicButton();
youhuiXianLaingMiaoSha.setName(WechatMenuParams.YOUHUI_XIANGLIANG_MIAOSHA);
youhuiXianLaingMiaoSha.setSub_button(new BasicButton[]{xianLaingMiaoSha,shike});
/**
* 總菜單分布
*/
Menu menu = new Menu();
menu.setButton(new BasicButton[]{todayYouHui,findYouHui,youhuiXianLaingMiaoSha});
String menuJson = JSONObject.fromObject(menu).toString();
log.info(menuJson);
//此處改為自己想要的結構體,替換即可
String access_token= AccessToakeUtil.getAccessToaken();
String createMenuUrl = WechatMenuParams.CREATE_MENU_URL+access_token;
String body = SdkHttpHelper.doJsonPost(createMenuUrl,menuJson);
log.info("建立自定義菜單 傳回結果"+body);
String result = JSONObject.fromObject(body).getString("errmsg");
if(StringUtils.equals(result,"ok")){
log.info("建立自定義菜單成功");
return result;
}else{
log.error("建立建立自定義菜單失敗自定義菜單失敗");
}
return "建立失敗";
}
3、自定義菜單實體類
/**
* @Desc: 自定義菜單總體
* @Author HealerJean
* @Date 2018/5/25 上午9:56.
*/
@Data
public class Menu {
private BasicButton [] button;
}
/**
* @Desc: view 菜單 (url菜單)
* @Author HealerJean
* @Date 2018/5/25 上午9:57.
*/
@Data
public class ViewButton extends BasicButton {
private String url ;
}
/**
* @Desc:
* @Author HealerJean
* @Date 2018/5/25 上午10:11.
*/
@Data
public class ClickButton extends BasicButton{
private String key;
}
@Data
public class BasicButton {
private String name;
private String type ;
/**
* 二級菜單的數組标簽 為 sub_button
*/
private BasicButton []sub_button;
}
3、點選事件消息回複
ClickButton shike = new ClickButton();
shike.setName("應用試客");
shike.setType(WechatMenuParams.CLICK);
shike.setKey("shikeErWeiMa");
3.1、針對來自使用者的時間類型擷取消息,然後再擷取key的值進行比對
public Object judgeMessageByMsgType(Map<String, String> map){
// 消息類型
String msgType = map.get("MsgType");
String openId = map.get("FromUserName");
AccessCallPerson(openId); //接入客服
if (WeChatMessageParams.MESSAGE_TEXT.equals(msgType)) {// 文本消息
return getTestMessage(map,true);
// 接收消息推送
}else if(WeChatMessageParams.MESSAGE_EVENT.equals(msgType)) {
//來自點選事件的event值
String event = map.get("Event");
//如果是點選事件,判斷key的值
if(StringUtils.equals(WeChatMessageParams.MESSAGE_EVENT_CLICK,event)){//點選事件
if(StringUtils.equals(map.get("EventKey"),"shikeErWeiMa")){
return getImageMessage(map);
}
//使用者關注微信公衆号事件
}else if(StringUtils.equals(WeChatMessageParams.MESSAGE_EVENT_SUBSCRIBE,event)){
return getSubscribe(map);
//使用者取關微信訂閱号
}else if(StringUtils.equals(WeChatMessageParams.MESSAGE_EVENT_UNSUBSCRIBE,event)){
unSubScribe(map);
}
else {
return null;
}
}
else { //目前隻支援文本消息
return getTestMessage(map,false);
}
return null;
}