zyx 2 年之前
父节点
当前提交
e6f711fefd

+ 22 - 6
src/main/java/com/sxtvs/open/api/odata/controller/OauthController.java

@@ -15,7 +15,6 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.servlet.ModelAndView;
 import org.springframework.web.servlet.ModelAndView;
 
 
 import java.util.Map;
 import java.util.Map;
-import java.util.Optional;
 
 
 @Controller
 @Controller
 @RequestMapping("oauth")
 @RequestMapping("oauth")
@@ -45,13 +44,17 @@ public class OauthController {
     public String douyinCallback(String code, String state) {
     public String douyinCallback(String code, String state) {
         var token = oauthService.loadStateMapping(state);
         var token = oauthService.loadStateMapping(state);
         logger.info("key", "oauth/douyin/callback", "code", code, "state", state, "token", token);
         logger.info("key", "oauth/douyin/callback", "code", code, "state", state, "token", token);
+        // todo 用户数据入库
         return "redirect:https://www.baidu.com";
         return "redirect:https://www.baidu.com";
     }
     }
 
 
     @RequestMapping("kuaishou/code")
     @RequestMapping("kuaishou/code")
+    @LoginRequired
     public String kuaishouQrCode() {
     public String kuaishouQrCode() {
         var state = IdUtil.nanoId();
         var state = IdUtil.nanoId();
-        logger.info("key", "oauth/douyin/code", "state", state);
+        var token = HttpContextUtil.mustToken();
+        logger.info("key", "oauth/douyin/code", "state", state, "token", token);
+        oauthService.saveStateMapping(token, state);
         return "redirect:https://open.kuaishou.com/oauth2/connect?" +
         return "redirect:https://open.kuaishou.com/oauth2/connect?" +
                 "app_id=" + OauthConfig.kuaishouClientKey + "&response_type=code&" +
                 "app_id=" + OauthConfig.kuaishouClientKey + "&response_type=code&" +
                 "scope=user_info%2Cuser_video_info&" +
                 "scope=user_info%2Cuser_video_info&" +
@@ -60,14 +63,18 @@ public class OauthController {
 
 
     @RequestMapping("kuaishou/callback")
     @RequestMapping("kuaishou/callback")
     public String kuaishouCallback(String code, String state) {
     public String kuaishouCallback(String code, String state) {
-        logger.info("key", "oauth/kuaishou/callback", "code", code, "state", state);
+        var token = oauthService.loadStateMapping(state);
+        logger.info("key", "oauth/kuaishou/callback", "code", code, "state", state, "token", token);
+        // todo 用户数据入库
         return "redirect:https://www.baidu.com";
         return "redirect:https://www.baidu.com";
     }
     }
 
 
     @RequestMapping("toutiao/code")
     @RequestMapping("toutiao/code")
+    @LoginRequired
     public String toutiaoQrCode() {
     public String toutiaoQrCode() {
         var state = IdUtil.nanoId();
         var state = IdUtil.nanoId();
-        logger.info("key", "oauth/toutiao/code", "state", state);
+        var token = HttpContextUtil.mustToken();
+        logger.info("key", "oauth/toutiao/code", "state", state, "token", token);
         return "redirect:https://open.snssdk.com/oauth/authorize/?" +
         return "redirect:https://open.snssdk.com/oauth/authorize/?" +
                 "client_key=awfrca76s1petwh0&response_type=code&" +
                 "client_key=awfrca76s1petwh0&response_type=code&" +
                 "scope=toutiao.video.data,user_info&" +
                 "scope=toutiao.video.data,user_info&" +
@@ -76,11 +83,14 @@ public class OauthController {
 
 
     @RequestMapping("toutiao/callback")
     @RequestMapping("toutiao/callback")
     public String toutiaoCallback(String code, String state) {
     public String toutiaoCallback(String code, String state) {
-        logger.info("key", "oauth/toutiao/callback", "code", code, "state", state);
+        var token = oauthService.loadStateMapping(state);
+        logger.info("key", "oauth/toutiao/callback", "code", code, "state", state, "token", token);
+        // todo 用户数据入库
         return "redirect:https://www.baidu.com";
         return "redirect:https://www.baidu.com";
     }
     }
 
 
     @RequestMapping("weibo/code")
     @RequestMapping("weibo/code")
+    @LoginRequired
     public String weiboQrCode() {
     public String weiboQrCode() {
         logger.info("key", "oauth/weibo/code");
         logger.info("key", "oauth/weibo/code");
         var weiboUrl = oauthService.getWeiboUrl();
         var weiboUrl = oauthService.getWeiboUrl();
@@ -91,10 +101,12 @@ public class OauthController {
     @RequestMapping("weibo/callback")
     @RequestMapping("weibo/callback")
     public String weiboCallback(String code, String state) {
     public String weiboCallback(String code, String state) {
         logger.info("key", "oauth/weibo/callback", "code", code);
         logger.info("key", "oauth/weibo/callback", "code", code);
+        // todo 用户数据入库
         return "redirect:https://www.baidu.com";
         return "redirect:https://www.baidu.com";
     }
     }
 
 
     @RequestMapping("bilibili/code")
     @RequestMapping("bilibili/code")
+    @LoginRequired
     public String bilibiliQrCode() {
     public String bilibiliQrCode() {
         var state = IdUtil.nanoId();
         var state = IdUtil.nanoId();
         logger.info("key", "oauth/bilibili/code", "state", state);
         logger.info("key", "oauth/bilibili/code", "state", state);
@@ -104,11 +116,14 @@ public class OauthController {
 
 
     @RequestMapping("bilibili/callback")
     @RequestMapping("bilibili/callback")
     public String bilibiliCallback(String code, String state) {
     public String bilibiliCallback(String code, String state) {
-        logger.info("key", "oauth/bilibili/callback", "code", code, "state", state);
+        var token = oauthService.loadStateMapping(state);
+        logger.info("key", "oauth/bilibili/callback", "code", code, "state", state, "token", token);
+        // todo 用户数据入库
         return "redirect:https://www.baidu.com";
         return "redirect:https://www.baidu.com";
     }
     }
 
 
     @RequestMapping("weixin/code")
     @RequestMapping("weixin/code")
+    @LoginRequired
     public ModelAndView weixinQrCode() {
     public ModelAndView weixinQrCode() {
         logger.info("key", "oauth/weixin/code");
         logger.info("key", "oauth/weixin/code");
         WxApiCreatePreAuthCodeResponse preAuthCodeResponse = oauthService.createPreAuthCodeResponse();
         WxApiCreatePreAuthCodeResponse preAuthCodeResponse = oauthService.createPreAuthCodeResponse();
@@ -126,6 +141,7 @@ public class OauthController {
             @PathVariable("appid") String appid) {
             @PathVariable("appid") String appid) {
         logger.info("key", "oauth/{appid}/callback", "data",
         logger.info("key", "oauth/{appid}/callback", "data",
                 Map.of("authCode", authCode, "expiresIn", expiresIn, "appid", appid));
                 Map.of("authCode", authCode, "expiresIn", expiresIn, "appid", appid));
+        // todo 用户数据入库
         return "redirect:https://www.baidu.com";
         return "redirect:https://www.baidu.com";
     }
     }
 }
 }

+ 9 - 3
src/main/java/com/sxtvs/open/api/user/service/impl/UserServiceImpl.java

@@ -2,7 +2,6 @@ package com.sxtvs.open.api.user.service.impl;
 
 
 import cn.hutool.crypto.SecureUtil;
 import cn.hutool.crypto.SecureUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSON;
-import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.sxtvs.open.api.user.dto.LoginDto;
 import com.sxtvs.open.api.user.dto.LoginDto;
 import com.sxtvs.open.api.user.dto.TokenDto;
 import com.sxtvs.open.api.user.dto.TokenDto;
@@ -16,8 +15,6 @@ import com.sxtvs.open.core.sls.AliyunLogger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
-import java.util.Optional;
-
 /**
 /**
  * <p>
  * <p>
  * 服务实现类
  * 服务实现类
@@ -66,6 +63,15 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
         return user;
         return user;
     }
     }
 
 
+    public User getLoginUserByToken(String token) {
+        var userId = AESUtil.decryptStr(token);
+        var user = this.lambdaQuery().eq(User::getId, Long.parseLong(userId)).one();
+        if (user == null) {
+            throw new RuntimeException("用户不存在");
+        }
+        return user;
+    }
+
     public void createUser(String userName, String pwd) {
     public void createUser(String userName, String pwd) {
         var user = new User();
         var user = new User();
         user.setLoginName(userName);
         user.setLoginName(userName);