对接微信小程序

@ApiOperation(value = "获取用户微信信息登录", notes = "获取用户微信信息登录",httpMethod = "GET")
@ApiImplicitParams({
      @ApiImplicitParam(name="code",value="code  用户第一次授权、用户sessionKey失效 都需要传递",  dataType="String",paramType = "query"),
      @ApiImplicitParam(name="rawData",value="rawData 只有用户第一次授权传递",  dataType="String",paramType = "query"),
      @ApiImplicitParam(name="openid",value="openid 有值时传递",  dataType="String",paramType = "query"),
      @ApiImplicitParam(name="sessionKey",value="sessionKey 不过期时传递",  dataType="String",paramType = "query")
})
@RequestMapping(value="/wx/getUserWXInfo.htm", method = RequestMethod.GET)
@ResponseBody
public ResultData getUserWXInfo(HttpServletRequest request) throws IOException {
   String openid=request.getParameter("openid");//有值时传递
   String code=request.getParameter("code");//用户第一次授权、用户sessionKey失效 都需要传递
   String rawData=request.getParameter("rawData");//用户第一次授权传递
   String sessionKey=request.getParameter("sessionKey");//会话密钥,不过期时传递

   if(StringUtils.isBlank(openid)){
      Map<String, String> requestUrlParam = new HashMap<>();
      // 小程序appId
      requestUrlParam.put("appid", APPID);
      // 小程序secret
      requestUrlParam.put("secret", SECRET);
      // 小程序端返回的code
      requestUrlParam.put("js_code", code);
      // 默认参数
      requestUrlParam.put("grant_type", GRANT_TYPE);
      // 发送post请求读取调用微信接口获取openid用户唯一标识
      String result = HttpClientUtil.doPost(REQUEST_URL, requestUrlParam);
      LinkedHashMap map= (LinkedHashMap) JacksonUtil.jsonToMap(result);
      Number errcode= (Number) map.get("errcode");//错误码
      String errmsg= (String) map.get("errmsg");//会话密钥
      if(null!=errcode && -1==errcode.intValue()){
         return ResultData.failure("系统繁忙,此时请开发者稍候再试!");
      }else if(null!=errcode && 40029==errcode.intValue()){
         return ResultData.failure("code 无效!");
      }else if(null!=errcode && 45011==errcode.intValue()){
         return ResultData.failure("频率限制,每个用户每分钟100次!");
      }
      openid= (String) map.get("openid");//用户唯一标识
      sessionKey= (String) map.get("session_key");//会话密钥
   }
   PageData pd = new PageData();
   pd.put("openid",openid);
   List<SysUserWx> list=sysUserWxService.findSysUserWxList(pd);
   //查询数据库中是否存在,已经存在直接返回用户信息
   if(null!=list && list.size()>0){
      SysUserWx sysuserwx = list.get(0);
      sysuserwx.setSessionKey(sessionKey);
      return ResultData.success("获取用户微信信息信息成功!",sysuserwx);
   }else{
      LinkedHashMap userwWXinfo= (LinkedHashMap) JacksonUtil.jsonToMap(rawData);
      SysUserWx sysuserwx = new SysUserWx();
      sysuserwx.setId(new UUIDGenerator().generate());
      sysuserwx.setNickname((String) userwWXinfo.get("nickName"));
      sysuserwx.setAvatarurl((String) userwWXinfo.get("avatarUrl"));
      sysuserwx.setGender((int) userwWXinfo.get("gender"));
      sysuserwx.setCountry((String) userwWXinfo.get("country"));
      sysuserwx.setCity((String) userwWXinfo.get("city"));
      sysuserwx.setProvince((String) userwWXinfo.get("province"));
      sysuserwx.setOpenid(openid);
      sysuserwx.setCreatetime(new Date());
      sysuserwx.setSessionKey(sessionKey);
      sysUserWxService.saveSysUserWx(sysuserwx);
      return ResultData.success("获取用户微信信息信息成功!",sysuserwx);
   }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值