OauthController.java 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package com.qxgmat.controller.gateway;
  2. import com.nuliji.tools.MessageHelp;
  3. import com.nuliji.tools.Response;
  4. import com.qxgmat.data.dao.entity.User;
  5. import com.qxgmat.help.ShiroHelp;
  6. import com.qxgmat.help.WechatHelp;
  7. import com.qxgmat.service.UsersService;
  8. import io.swagger.annotations.ApiOperation;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.beans.factory.annotation.Value;
  11. import org.springframework.web.bind.annotation.*;
  12. import javax.servlet.http.HttpServletResponse;
  13. import javax.servlet.http.HttpSession;
  14. import java.io.IOException;
  15. @RestController
  16. @RequestMapping("/gateway/oauth")
  17. public class OauthController {
  18. @Value("${third.redirectUrl}")
  19. private String redirectUrl;
  20. @Autowired
  21. private WechatHelp wechatHelp;
  22. @Autowired
  23. private ShiroHelp shiroHelp;
  24. @Autowired
  25. private UsersService usersService;
  26. @RequestMapping(value = "/wechat_pc", method = RequestMethod.GET)
  27. @ApiOperation(value = "微信二维码登录", httpMethod = "GET")
  28. public void wechatPc(
  29. @RequestParam(required = false, defaultValue = "") String jump,
  30. HttpSession session, HttpServletResponse response) throws IOException {
  31. session.setAttribute("jump", jump);
  32. response.sendRedirect(wechatHelp.redirectPc("state", redirectUrl+"/callback/wechat_pc"));
  33. }
  34. @RequestMapping(value = "/callback/wechat_pc", method = RequestMethod.GET)
  35. @ApiOperation(value = "微信二维码登录回调", httpMethod = "GET")
  36. public void callbackWechatPc(
  37. @RequestParam(required = false, defaultValue = "") String code,
  38. @RequestParam(required = false, defaultValue = "") String state,
  39. HttpSession session, HttpServletResponse response) throws IOException {
  40. User user = (User) shiroHelp.getLoginUser();
  41. if (user!=null){
  42. // 已登录用户,绑定
  43. usersService.Oauth(user, code, "wechat_pc");
  44. }
  45. shiroHelp.getSession().login(shiroHelp.oauth(code, "wechat_pc"));
  46. Object jump = session.getAttribute("jump");
  47. if (jump == null) {
  48. jump = "/";
  49. }else{
  50. session.removeAttribute("jump");
  51. }
  52. response.sendRedirect(jump.toString());
  53. }
  54. }