image.png

后台程序要提交的登录信息

image.png

  1. String WECHAT_LOGIN="https://api.weixin.qq.com/sns/jscode2session";

image.png

后台程序的值注入

  • 打开application.yml文件,添加小程序的app-id 和 app-secret

image.png

image.png

  1. @Override
  2. public Map<String, Object> wxLogin(WechatLoginDTO dto) {
  3. HashMap map = new HashMap();
  4. map.put("appid", appId); //app_id
  5. map.put("secret", appSecret); //app_secret
  6. map.put("js_code", dto.getCode()); //微信code
  7. map.put("grant_type", "authorization_code"); // 默认参数
  8. String response = HttpUtil.post(UrlConstant.WECHAT_LOGIN, map);
  9. JSONObject json = JSONUtil.parseObj(response);
  10. String openId = json.get("openid", String.class);
  11. String sessionKey = json.get("session_key", String.class);
  12. // System.out.println(openId);
  13. // System.out.println(sessionKey);
  14. if (openId == null || openId.length() == 0) {
  15. throw new RenException("open_id不存在");
  16. }
  17. UserEntity user = new UserEntity();
  18. user.setOpenId(openId);
  19. QueryWrapper wrapper = new QueryWrapper();
  20. wrapper.setEntity(user);
  21. int count = baseDao.selectCount(wrapper);
  22. System.out.println(count);
  23. if (count == 0) {
  24. user = new UserEntity();
  25. user.setOpenId(openId);
  26. user.setNickName(dto.getNickName());
  27. user.setPhoto(dto.getPhoto());
  28. user.setCreateDate(new Date());
  29. baseDao.insert(user);
  30. }
  31. user = new UserEntity();
  32. user.setOpenId(openId);
  33. wrapper = new QueryWrapper(user);
  34. user = baseDao.selectOne(wrapper);
  35. //获取登录token
  36. TokenEntity tokenEntity = tokenService.createToken(user.getId());
  37. Map<String, Object> map2 = new HashMap<>(2);
  38. map2.put("token", tokenEntity.getToken());
  39. map2.put("expire", tokenEntity.getExpireDate().getTime() - System.currentTimeMillis());
  40. return map;
  41. }