@ApiOperation(value = "微信授权登陆") @RequestMapping(method = RequestMethod.GET, value = "/login") public ApiResult<LoginVo> login(String code) { log.info("/login start ..."); if (StringUtils.isBlank(code)) { return fail(CodeEnum.JS_CODE_NULL.getCode(), CodeEnum.JS_CODE_NULL.getText()); } //TODO 临时代码,方便获取token if (code.startsWith("test_")) { String s = code.split("_")[1]; Member member = memberService.findById(Long.parseLong(s)); LoginVo vo = new LoginVo(); vo.setToken(JwtUtil.create(member)); return success(vo); } Map<String, String> map = new HashMap<>(new HashMap<>(16)); map.put("appid", appId); map.put("secret", secret); map.put("js_code", code); map.put("grant_type", "authorization_code"); JSONObject jsonObject = JSON.parseObject(HttpUtils.doGet(js_code_2_session, map)); if (jsonObject == null) { return fail(CodeEnum.WX_ERROR.getCode(), CodeEnum.WX_ERROR.getText()); } if (jsonObject.containsKey("errcode")) { if (!"0".equals(jsonObject.getString("errcode"))) { return fail(Integer.parseInt(jsonObject.getString("errcode")), jsonObject.getString("errmsg")); } } if (!jsonObject.containsKey("openid")) { return fail(CodeEnum.OPENID_ERROR.getCode(), CodeEnum.OPENID_ERROR.getText()); } String openid = jsonObject.getString("openid"); //String session_key = jsonObject.getString("session_key"); //String unionid = jsonObject.getString("unionid"); LoginVo vo = new LoginVo(); vo.setAuthorized(false); //通过openid查询数据库是否有此用户 Member q = new Member(); q.setOpenId(openid); List<Member> list = memberService.findListByWhere(q); if (list != null && list.size() > 0) { if (list.get(0).getNickname() != null) { vo.setAuthorized(true); } } else { Member m = new Member(); m.setOpenId(openid); memberService.saveSelective(m); } //已登陆用户 Member queryObj = new Member(); queryObj.setOpenId(openid); Member current = memberService.findOne(queryObj); vo.setOpenid(openid); vo.setToken(JwtUtil.create(current)); log.info("/login end ..."); return success(vo); }