@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); } }
对接微信小程序
最新推荐文章于 2024-03-29 08:49:45 发布