|
|
@@ -1,11 +1,9 @@
|
|
|
package com.cyksj.service.claude.impl;
|
|
|
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
-import cn.hutool.core.date.DateField;
|
|
|
-import cn.hutool.core.date.DateTime;
|
|
|
-import cn.hutool.core.util.RandomUtil;
|
|
|
import cn.hutool.json.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.cyksj.mapper.claudecode.OAuthClientMapper;
|
|
|
import com.cyksj.mapper.claudecode.OAuthTokenMapper;
|
|
|
import com.cyksj.model.entity.OAuthClient;
|
|
|
@@ -16,15 +14,12 @@ import com.cyksj.model.views.ClaudeCodeUserApiKeysView;
|
|
|
import com.cyksj.redis.RedisService;
|
|
|
import com.cyksj.service.claude.ClaudeCodeService;
|
|
|
import com.cyksj.service.claude.OAuthClaudeCodeService;
|
|
|
-import com.google.gson.JsonObject;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
-import java.time.LocalDateTime;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
-import java.util.UUID;
|
|
|
|
|
|
/**
|
|
|
* OAuth服务
|
|
|
@@ -79,6 +74,21 @@ public class OAuthClaudeCodeServiceImpl implements OAuthClaudeCodeService {
|
|
|
return token;
|
|
|
|
|
|
}else {
|
|
|
+ String keyValue = userApiKeys.get(0).getKeyValue();
|
|
|
+ OAuthToken oAuthToken = oauthTokenMapper.selectOne(Wrappers.lambdaQuery(OAuthToken.class).eq(OAuthToken::getClientId, clientId).eq(OAuthToken::getUserId, userId));
|
|
|
+ if (oAuthToken == null) {
|
|
|
+ oAuthToken = new OAuthToken();
|
|
|
+ oAuthToken.setKeyValue(keyValue);
|
|
|
+ oAuthToken.setStatus(1);
|
|
|
+ oAuthToken.setUserId(userId);
|
|
|
+ oauthTokenMapper.insert(oAuthToken);
|
|
|
+ }else {
|
|
|
+ oAuthToken = new OAuthToken();
|
|
|
+ oAuthToken.setKeyValue(keyValue);
|
|
|
+ oAuthToken.setStatus(1);
|
|
|
+ oAuthToken.setUserId(userId);
|
|
|
+ oauthTokenMapper.updateById(oAuthToken);
|
|
|
+ }
|
|
|
return userApiKeys.get(0).getKeyValue();
|
|
|
}
|
|
|
}
|
|
|
@@ -92,43 +102,17 @@ public class OAuthClaudeCodeServiceImpl implements OAuthClaudeCodeService {
|
|
|
@Override
|
|
|
public OAuthToken validateToken(String code, String key) {
|
|
|
if (StringUtils.isNotBlank(key)) {
|
|
|
+ QueryWrapper<OAuthToken> wrapper = new QueryWrapper<>();
|
|
|
+ wrapper.eq("key_value", key)
|
|
|
+ .eq("status", 1);
|
|
|
+ return oauthTokenMapper.selectOne(wrapper);
|
|
|
|
|
|
} else {
|
|
|
QueryWrapper<OAuthToken> wrapper = new QueryWrapper<>();
|
|
|
wrapper.eq("token", code)
|
|
|
- .eq("status", 1)
|
|
|
- .gt("expires_at", LocalDateTime.now());
|
|
|
+ .eq("status", 1);
|
|
|
return oauthTokenMapper.selectOne(wrapper);
|
|
|
}
|
|
|
- QueryWrapper<OAuthToken> wrapper = new QueryWrapper<>();
|
|
|
- wrapper.eq("key_value", key)
|
|
|
- .eq("status", 1)
|
|
|
- .gt("expires_at", LocalDateTime.now());
|
|
|
- return oauthTokenMapper.selectOne(wrapper);
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 撤销令牌
|
|
|
- */
|
|
|
- @Override
|
|
|
- public void revokeToken(String tokenValue) {
|
|
|
- QueryWrapper<OAuthToken> wrapper = new QueryWrapper<>();
|
|
|
- wrapper.eq("token_value", tokenValue);
|
|
|
-
|
|
|
- OAuthToken token = new OAuthToken();
|
|
|
- token.setStatus(0);
|
|
|
-
|
|
|
- oauthTokenMapper.update(token, wrapper);
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 清理过期令牌
|
|
|
- */
|
|
|
- @Override
|
|
|
- public void cleanExpiredTokens() {
|
|
|
- QueryWrapper<OAuthToken> wrapper = new QueryWrapper<>();
|
|
|
- wrapper.lt("expires_at", LocalDateTime.now());
|
|
|
- oauthTokenMapper.delete(wrapper);
|
|
|
- }
|
|
|
}
|