Sfoglia il codice sorgente

chatgpt 获取token

chenbiao 3 anni fa
parent
commit
d232b04eb3

+ 1 - 1
netflix-service/src/main/java/com/cyksj/service/chatgpt/ChatGptAuthService.java

@@ -10,5 +10,5 @@ public interface ChatGptAuthService {
 
     String getRefreshToken(Account account) throws Exception;
 
-    String getAccessToken(String username);
+    String getAccessToken(String username) throws Exception;
 }

+ 8 - 2
netflix-service/src/main/java/com/cyksj/service/chatgpt/impl/ChatGptAuthServiceImpl.java

@@ -107,13 +107,19 @@ public class ChatGptAuthServiceImpl implements ChatGptAuthService {
     }
 
     @Override
-    public String getAccessToken(String username) {
+    public String getAccessToken(String username) throws Exception {
         Account account = accountMapper.selectOne(Wrappers.lambdaQuery(Account.class).eq(Account::getAccount, username));
         if(account == null){
             throw BusinessRuntimeException.getInstance("账号不存在.");
         }
         if(StringUtils.isBlank(account.getGptRefreshToken())){
-            throw BusinessRuntimeException.getInstance("该账号未获取refreshToken");
+            String refreshToken = getRefreshToken(account);
+            if(StringUtils.isBlank(refreshToken)){
+                throw BusinessRuntimeException.getInstance("该账号登录异常.");
+            }
+            account.setGptRefreshToken(refreshToken);
+            accountMapper.updateById(account);
+            return redisService.getStr(RedisKey.CHATGPT_ACCESS_TOKEN + account.getAccount());
         }
         String accessToken = redisService.getStr(RedisKey.CHATGPT_ACCESS_TOKEN + username);
         if (StringUtils.isBlank(accessToken)) {

+ 6 - 2
netflix-web/src/main/java/com/cyksj/web/controller/gpt/ChatGptController.java

@@ -29,7 +29,7 @@ public class ChatGptController {
     private final CmsAccountService accountService;
 
     @GetMapping("/getAccessToken")
-    private Result<String> getAccessToken(String username) {
+    private Result<String> getAccessToken(String username) throws Exception {
 
         log.info("获取chatgpt 凭证 username:{}",username);
         String accessToken = chatGptAuthService.getAccessToken(username);
@@ -43,7 +43,11 @@ public class ChatGptController {
         List<Account> list = accountService.list(Wrappers.lambdaQuery(Account.class).eq(Account::getGoodsId, 18).eq(Account::getGptRefreshToken, ""));
         for (Account account : list) {
             log.info("账号:{} 正在执行获取token", account.getAccount());
-            chatGptAuthService.getRefreshToken(account);
+            try {
+                chatGptAuthService.getRefreshToken(account);
+            }catch (Exception e){
+                log.error("账号:{} 获取token 错误:{}",account.getAccount(), e.getMessage());
+            }
         }
         return GatewayResponse.SUCCESS.newBuilder().toResult();
     }