您的位置:首页 > 编程语言 > Java开发

一起艳学Springboot开发微信公众号(三)——登录授权和创建菜单

2017-12-31 14:49 363 查看

一起艳学Springboot开发微信公众号(三)——登录授权和创建菜单



获取日志

String type = "";
String url = request.getRequestURL().toString();
if(url.contains("index.html")){
type = "规则页面";
}
String ip = _ipUtil.getRemoteHost(request);
BaiduMap a = _mapUtil.getBaiduMapByIp(ip);
WxLog wxLog = new WxLog(ip, a.getResult().getAd_info().getNation(),
a.getResult().getAd_info().getProvince(), a.getResult().getAd_info().getCity(),
a.getResult().getLocation().getLat()+"", a.getResult().getLocation().getLng()+"", url,
request.getHeader("user-agent"), type, new Date(), ip, "");
if (wxLogService == null) {//解决service为null无法注入问题
BeanFactory factory = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getServletContext());
wxLogService = (WxLogService) factory.getBean("wxLogService");
}

wxLogService.insert(wxLog);


登录授权

String code = request.getParameter("code");
String get_token_url = _wxApiUtil.WX_OAUTH2_TOKEN.replace("APPID", appId).replace("SECRET", appSecret).replace("CODE", code);
String accJson = _httpUtil.doHttpGet(get_token_url);
Map accMap = (Map) _jsonUtil.json2Bean(accJson, Map.class);
String openid = (String) accMap.get("openid");
String access_token = (String) accMap.get("access_token");
WebApplicationContext webContext = ContextLoader.getCurrentWebApplicationContext();
WxUserService userService = (WxUserService) webContext.getBean("wxUserService");
user = userService.findByOpenId(openid);
if(user == null){
String get_user_url = _wxApiUtil.WX_GET_USERINFO.replace("ACCESS_TOKEN", access_token).replace("OPENID", openid);
String userJson = _httpUtil.doHttpGet(get_user_url);
Map userMap = (Map) _jsonUtil.json2Bean(userJson,Map.class);
//获取用户信息
String openId = (String) userMap.get("openid");
String nickname = (String) userMap.get("nickname");
Integer sex = (Integer) userMap.get("sex");
String province = (String) userMap.get("province");
String city = (String) userMap.get("city");
String country = (String) userMap.get("country");
String language = (String) userMap.get("language");
String headImgUrl = (String)userMap.get("headimgurl");
nickname = EmojiFilter.filterEmoji(nickname);
user = new WxUser(null, openId, new Date(), nickname, sex, country, province, city, language, headImgUrl,
Global.STATUS_1);
userService.insert(user);
}


创建菜单

String accessToken = (String) redisTokenHelper.getObject("global_token");
//      Menu menu = MenuUtil.getMenu();
ViewButton cb_1 = new ViewButton();
cb_1.setName("艳辉网");
cb_1.setType("view");
String WX_URL = dicMapper.findByCode(Global.WX_NGROK_URL);
cb_1.setUrl(WX_URL+"wx/index.html");
Menu menu=new Menu();
menu.setButton(new ViewButton[]{cb_1});
int status = _wxApiUtil.createMenu(menu,accessToken);


关注与取消关注事件

WxUser wxUser = wxUserMapper.findByOpenId(fromUserName);
if(wxUser == null){
String accessToken = (String) redisTokenHelper.getObject("global_token");
wxUser = _wxApiUtil.getUserInfo(accessToken, fromUserName);
wxUser.setAddTime(addTime);
wxUser.setIsFocus(Global.STATUS_1);
//设置昵称
String nickName = EmojiFilter.filterEmoji(wxUser.getNickname());
wxUser.setNickname(nickName);
wxUserMapper.insert(wxUser);
Integer userId = wxUser.getId();
WxUserFocus wxUserFocus = new WxUserFocus(null, userId, addTime, Global.STATUS_1);  //关注
wxUserFocusMapper.insert(wxUserFocus);
}else{
Integer userId = wxUser.getId();
WxUserFocus wxUserFocus = new WxUserFocus(null, userId, addTime, Global.STATUS_1);
wxUserFocusMapper.insert(wxUserFocus);
}
newsMessage = getFirstArticle(newsMessage, articleList, WX_URL);
respMessage = MessageUtil.messageToXml(newsMessage);
type = "微信关注";
}
// 取消关注
else if (eventType.equals(MessageUtil.EVENT_TYPE_UNSUBSCRIBE)) {
WxUser wxUser = wxUserMapper.findByOpenId(fromUserName);

wxUser.setIsFocus(Global.STATUS_0);
wxUserMapper.update(wxUser);
Integer userId = wxUser.getId();
WxUserFocus wxUserFocus = new WxUserFocus(null, userId, addTime, Global.STATUS_0);
wxUserFocusMapper.insert(wxUserFocus);
type = "取消关注";
}


注意:需要所有源代码,可加QQ490647751获取微信二维码,扫一扫关注并回复‘java福利一起艳学Springboot开发微信公众号(三)——登录授权和创建菜单’获取。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: