|
|
@@ -1,20 +1,22 @@
|
|
|
package com.cyksj.web.controller.claude;
|
|
|
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.cyksj.common.constant.Constant;
|
|
|
import com.cyksj.common.exception.BusinessRuntimeException;
|
|
|
+import com.cyksj.common.util.Jsons;
|
|
|
import com.cyksj.dto.Result;
|
|
|
import com.cyksj.enums.GatewayResponse;
|
|
|
-import com.cyksj.model.entity.Announcement;
|
|
|
-import com.cyksj.model.entity.OAuthClient;
|
|
|
-import com.cyksj.model.entity.OAuthToken;
|
|
|
-import com.cyksj.model.entity.RelayServer;
|
|
|
+import com.cyksj.mapper.ClaudeCodeUserMapper;
|
|
|
+import com.cyksj.mapper.GroupsMapper;
|
|
|
+import com.cyksj.mapper.GroupsRelationMapper;
|
|
|
+import com.cyksj.model.entity.*;
|
|
|
import com.cyksj.model.manage.views.OrderDonView;
|
|
|
import com.cyksj.model.request.ClaudeCodeApiKeysReq;
|
|
|
import com.cyksj.model.request.ClaudeCodeDelReq;
|
|
|
import com.cyksj.model.response.ClaudeCodePointsHistoryResp;
|
|
|
import com.cyksj.model.response.claudecode.ClaudeCodeResp;
|
|
|
-import com.cyksj.model.views.ClaudeCodeUserApiKeysView;
|
|
|
-import com.cyksj.model.views.ClaudeCodeUserInfoView;
|
|
|
+import com.cyksj.model.views.*;
|
|
|
import com.cyksj.service.claude.AnnouncementService;
|
|
|
import com.cyksj.service.claude.ClaudeCodeService;
|
|
|
import com.cyksj.service.claude.OAuthClaudeCodeService;
|
|
|
@@ -35,6 +37,7 @@ import javax.servlet.http.HttpServletResponse;
|
|
|
import java.io.IOException;
|
|
|
import java.net.URLEncoder;
|
|
|
import java.nio.charset.StandardCharsets;
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
@@ -66,6 +69,12 @@ public class ClaudeCodeController {
|
|
|
|
|
|
private final RelayService relayService;
|
|
|
|
|
|
+ private final ClaudeCodeUserMapper claudeCodeUserMapper;
|
|
|
+
|
|
|
+ private final GroupsRelationMapper relationMapper;
|
|
|
+
|
|
|
+ private final GroupsMapper groupsMapper;
|
|
|
+
|
|
|
/**
|
|
|
* 用户创建API KEY
|
|
|
*/
|
|
|
@@ -178,6 +187,44 @@ public class ClaudeCodeController {
|
|
|
return resp;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * claude code可选套餐
|
|
|
+ */
|
|
|
+ @GetMapping("/get/packages")
|
|
|
+ public Result<ClaudeCodePackageView> getClaudeCodePackages() {
|
|
|
+ long userId = StpUserUtil.getLoginIdAsLong();
|
|
|
+ List<Long> userIdList = userBindRelationService.getRelationUserIdList(userId, null);
|
|
|
+ ClaudeCodeUser user = claudeCodeUserMapper.selectOne(Wrappers.lambdaQuery(ClaudeCodeUser.class)
|
|
|
+ .in(ClaudeCodeUser::getUserId, userIdList)
|
|
|
+ .last("limit 1"));
|
|
|
+ if (user == null) return GatewayResponse.SUCCESS.newBuilder().toResult();
|
|
|
+ Integer userCodePoints = user.getCodePoints();
|
|
|
+ GroupsRelation relation = relationMapper.selectById(user.getRelationId());
|
|
|
+ GroupsTrips groupsTrips = groupsMapper.selectById(relation.getGroupsId());
|
|
|
+ Long skuId = groupsTrips.getSkuId();
|
|
|
+ ClaudeCodePackageView claudeCodePackageView = new ClaudeCodePackageView();
|
|
|
+ List<RenewUpgradePackageFrontView> renewUpgradePackageFrontViews = beanSearcher.searchAll(RenewUpgradePackageFrontView.class, MapUtils.builder().field(RenewUpgradePackageFrontView::getSkuId, skuId).build());
|
|
|
+ renewUpgradePackageFrontViews.forEach(renew -> {
|
|
|
+ try {
|
|
|
+ List<Long> upgradeSkuIds = Jsons.parseList(renew.getUpgradeSkuIds(), Long.class);
|
|
|
+ List<RenewUpgradePackageFrontView.RenewSkuView> renewSkuViews = new ArrayList<>();
|
|
|
+ if (CollUtil.isNotEmpty(upgradeSkuIds)) {
|
|
|
+ renewSkuViews = beanSearcher.searchAll(RenewUpgradePackageFrontView.RenewSkuView.class, MapUtils.builder()
|
|
|
+ //高套餐
|
|
|
+ .field(RenewUpgradePackageFrontView.RenewSkuView::getCodePoints, userCodePoints).op(Operator.GreaterEqual)
|
|
|
+ .field(RenewUpgradePackageFrontView.RenewSkuView::getSkuId, upgradeSkuIds).op(Operator.InList)
|
|
|
+ .build());
|
|
|
+ }
|
|
|
+ renew.setRenewSkus(renewSkuViews);
|
|
|
+ } catch (Exception e) {
|
|
|
+ }
|
|
|
+ });
|
|
|
+ List<GoodsDonSkuView> goodsDonSkuViews = beanSearcher.searchAll(GoodsDonSkuView.class, MapUtils.builder().field(GoodsDonSkuView::getGoodsId, Constant.CLAUDE_CODE_GOODS_ID).field(GoodsDonSkuView::getGoodsDonSkuStatus, Boolean.TRUE).build());
|
|
|
+ claudeCodePackageView.setSkus(goodsDonSkuViews);
|
|
|
+ claudeCodePackageView.setUpgrades(renewUpgradePackageFrontViews);
|
|
|
+ return GatewayResponse.SUCCESS.newBuilder().toResult(claudeCodePackageView);
|
|
|
+ }
|
|
|
+
|
|
|
//================================================Claude Code OAuth接口============================================================
|
|
|
|
|
|
|