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

一起艳学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开发微信公众号(三)——登录授权和创建菜单’获取。

这里写图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值