|
|
@@ -275,10 +275,18 @@ public class ClaudeCodeServiceImpl implements ClaudeCodeService {
|
|
|
.field(GroupsRelationView::getGoodsId, Constant.CLAUDE_CODE_GOODS_ID)
|
|
|
.field(GroupsRelationView::getExpiryTime, DateTime.now()).op(Operator.GreaterThan)
|
|
|
.build());
|
|
|
+ ClaudeCodeUser claudeCodeUser = claudeCodeUserMapper.selectOne(Wrappers.lambdaQuery(ClaudeCodeUser.class).in(ClaudeCodeUser::getUserId, userIdList).last("limit 1"));
|
|
|
+ //车票不存在
|
|
|
if (groupsRelationView == null) {
|
|
|
+ //套餐是否存在
|
|
|
+ if (claudeCodeUser != null) {
|
|
|
+ //清除用户套餐
|
|
|
+ if (delUserPackages(claudeCodeUser.getUserId())) {
|
|
|
+ claudeCodeUserMapper.deleteById(claudeCodeUser.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
return null;
|
|
|
}
|
|
|
- ClaudeCodeUser claudeCodeUser = claudeCodeUserMapper.selectOne(Wrappers.lambdaQuery(ClaudeCodeUser.class).in(ClaudeCodeUser::getUserId, userIdList).last("limit 1"));
|
|
|
//是否需要重试更新 cladueCode userInfo信息
|
|
|
if (claudeCodeUser.getIsRetry()) {
|
|
|
try {
|
|
|
@@ -351,6 +359,23 @@ public class ClaudeCodeServiceImpl implements ClaudeCodeService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public Boolean delUserPackages(Long userId) {
|
|
|
+ String url = String.format(CLAUDE_CODE_API_PREFIX + "api/users/%s/plan", userId);
|
|
|
+ try {
|
|
|
+ String responseBody = executeClaudeCodeDeletedApi(url);
|
|
|
+ ClaudeCodeResp claudeCodeResp = Jsons.parseObject(responseBody, ClaudeCodeResp.class);
|
|
|
+ if (!Constant.SUCCESS.equals(claudeCodeResp.getMessage())) {
|
|
|
+ log.error("删除用户:{} claude code套餐失败:{}", userId, claudeCodeResp.getMessage());
|
|
|
+ return Boolean.FALSE;
|
|
|
+ }
|
|
|
+ return Boolean.TRUE;
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("删除用户:{} claude code套餐报错:{}", userId, StringUtil.getErrorText(e));
|
|
|
+ }
|
|
|
+ return Boolean.FALSE;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 获取claude code用户id
|
|
|
*/
|
|
|
@@ -415,6 +440,26 @@ public class ClaudeCodeServiceImpl implements ClaudeCodeService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * claude code DELETE请求
|
|
|
+ */
|
|
|
+ public String executeClaudeCodeDeletedApi(String url) {
|
|
|
+ Retryer<String> build = getApiRetryer(1, 3);
|
|
|
+ try {
|
|
|
+ return build.call(() -> {
|
|
|
+ try {
|
|
|
+ HttpResponse execute = HttpUtil.createRequest(Method.DELETE, url).header("X-Admin-Key", CLAUDE_CODE_API_ADMIN_KEY).setConnectionTimeout(CONNECT_MILLISECONDS).execute();
|
|
|
+ return execute.body();
|
|
|
+ } catch (HttpException e) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ } catch (ExecutionException | RetryException e) {
|
|
|
+ log.info("重试调用claude code DELETE请求url->{}失败,msg->{}", url, StringUtil.getErrorText(e));
|
|
|
+ throw BusinessRuntimeException.getInstance("接口请求失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 记录claude code 续费升级的过期时间
|
|
|
*/
|