瀏覽代碼

codex限购

zoujiajian 11 月之前
父節點
當前提交
4a31c403ae

+ 5 - 0
netflix-common/src/main/java/com/cyksj/common/constant/Constant.java

@@ -649,6 +649,11 @@ public interface Constant {
 	 */
 	Long CLAUDE_CODE_GOODS_ID = 102L;
 
+	/**
+	 * codex平台id
+	 */
+	Long CODEX_GOODS_ID = 105L;
+
 	/**
 	 * 推广claude code分销链接
 	 */

+ 5 - 0
netflix-dao/src/main/java/com/cyksj/model/views/CodexUserInfoView.java

@@ -45,6 +45,11 @@ public class CodexUserInfoView {
      * Claude Code套餐信息
      */
     private ClaudeCodeInfo claudeCodeInfo;
+
+    /**
+     * 是否是购买 默认false
+     */
+    private Boolean isPay;
     
     @Getter
     @Setter

+ 7 - 1
netflix-service/src/main/java/com/cyksj/service/claude/impl/ClaudeCodeServiceImpl.java

@@ -392,8 +392,14 @@ public class ClaudeCodeServiceImpl implements ClaudeCodeService {
 			}
 		}
 		CodexUserInfoView codexUserInfoView = null;
+		Boolean isPay = Boolean.FALSE;
+		//不存在赠送  查看是否有自购
+		if (codexUser == null) {
+			codexUser = codexUserMapper.selectOne(Wrappers.lambdaQuery(CodexUser.class).in(CodexUser::getUserId, userIdList).gt(CodexUser::getExpiryTime, DateTime.now()).last("limit 1"));
+			isPay = Boolean.TRUE;
+		}
 		if (codexUser != null) {
-			codexUserInfoView = CodexUserInfoView.builder().planName(codexUser.getPlanName()).openaiDailyLimit(codexUser.getOpenaiDailyLimit()).openaiQuota(codexUser.getOpenaiQuota()).relationId(codexUser.getRelationId()).build();
+			codexUserInfoView = CodexUserInfoView.builder().isPay(isPay).planName(codexUser.getPlanName()).openaiDailyLimit(codexUser.getOpenaiDailyLimit()).openaiQuota(codexUser.getOpenaiQuota()).relationId(codexUser.getRelationId()).build();
 		}
 
 		return ClaudeCodeUserInfoView.builder()

+ 11 - 2
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -395,6 +395,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 
 	private final UserTicketClearedRecordMapper userTicketClearedRecordMapper;
 
+	private final CodexUserMapper codexUserMapper;
+
 	private final List<String> noChekGoodsTemp = List.of("Apple One", "Youtube", "Spotify");
 
 	@Transactional(rollbackFor = Throwable.class)
@@ -468,10 +470,10 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 				throw new BusinessRuntimeException("您有未支付订单.");
 			}
 		}
+		List<Long> userIdList = userBindRelationService.getRelationUserIdList(userId, null);
 		//claude code限购
 		if (goodsId == Constant.CLAUDE_CODE_GOODS_ID) {
 			//是否拥有这张车票
-			List<Long> userIdList = userBindRelationService.getRelationUserIdList(userId, null);
 			Integer selectCount = groupsRelationMapper.selectCountByGoodsId(userIdList, Constant.CLAUDE_CODE_GOODS_ID, DateTime.now());
 			if (selectCount > 0) {
 				throw BusinessRuntimeException.getInstance("claude code车票限购一次");
@@ -481,6 +483,14 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 				checkCCTrialCardNum(userIdList);
 			}
 		}
+		//codex 限购
+		if (goodsId == Constant.CODEX_GOODS_ID) {
+			Integer selectCount = groupsRelationMapper.selectCountByGoodsId(userIdList, Constant.CODEX_GOODS_ID, DateTime.now());
+			if (selectCount > 0) {
+				throw BusinessRuntimeException.getInstance("codex车票限购一次");
+			}
+		}
+
 		//校验奈飞限购信息
 		checkNfPayLimit(goodsId, userId);
 		GroupsRelation relation = null;
@@ -580,7 +590,6 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		//租赁商品
 		if (goodsDon.getType() == 4) {
 			//是否已实名认证过
-			List<Long> userIdList = userBindRelationService.getRelationUserIdList(userId, user);
 			Integer count = userCertRecordMapper.selectCount(Wrappers.lambdaQuery(UserCertRecord.class).in(UserCertRecord::getUserId, userIdList));
 			if (count == 0) throw BusinessRuntimeException.getInstance("请您先完成实名认证..");