zoujiajian před 1 rokem
rodič
revize
509c9f39d4

+ 60 - 28
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -1181,35 +1181,9 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 			}
 			corpInteractiveUserOrderRelationMapper.insert(corpInteractiveUserOrderRelation);
 		}
-		//GPT续费升级 目前升级套餐续费
-		if (orderDon.getGoodsId() == 18 && sku.getIsMirror()) {
-			try {
-				//记录续费升级订单 目前升级规格续费
-				ChatgptUser chatgptUser = chatgptUserMapper.selectOne(Wrappers.lambdaQuery(ChatgptUser.class)
-						.eq(ChatgptUser::getRelationId, orderDon.getRelationId())
-						.last("limit 1"));
-				if (chatgptUser != null && tripsSkuId.intValue() != renewSkuId.intValue()) {
-					//是续费升级的规格
-					//全部归纳到续费升级的关联订单
-					if (chatgptUser.getLimitNum() == sku.getGptLimitNum() && chatgptUser.getLimitTime() == sku.getGptLimitTime()) {
-						renewUpgradeIndependentPackage = renewUpgradePackageMapper.selectOne(Wrappers.lambdaQuery(RenewUpgradePackage.class)
-								.eq(RenewUpgradePackage::getSkuId, tripsSkuId)
-								.apply("JSON_CONTAINS(upgrade_sku_ids,'\"" + renewSkuId + "\"')")
-								.eq(RenewUpgradePackage::getStatus, 1)
-								.eq(RenewUpgradePackage::getDeleted, 1)
-								.last("limit 1"));
-						//无优惠折扣 但订单可使用优惠码
-						RenewUpgradePackage renewUpgradePackage = new RenewUpgradePackage();
-						renewUpgradePackage.setId(renewUpgradeIndependentPackage.getId());
-						renewUpgradePackage.setDiscount(BigDecimal.ONE);
-						recordRenewOrderDon(orderDon, renewUpgradePackage, groupsTrips);
-					}
-				}
-			} catch (Exception e) {
-				log.error("记录续费升级错误:{}", StringUtil.getErrorText(e));
-			}
-		}
 
+		//处理镜像规格续费目前升级的规格
+		handlerMirrorRenewPresentPackage(orderDon, sku, tripsSkuId, renewSkuId, groupsTrips);
 		//记录订单ip关联
 		recordOrderDonLocationRelate(orderDon.getId(), payRequest.getIp());
 		if (renewUpgradeIndependentPackage != null) {
@@ -4118,6 +4092,10 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		orderDon.setOriMoney(price);
 		orderDon.setRealMoney(price);
 		BigDecimal discountPrice = price.multiply(renewUpgradePackage.getDiscount());
+		//去掉小数
+		if (orderDon.getGoodsId() == 75) {
+			discountPrice = discountPrice.setScale(0);
+		}
 		orderDon.setMoney(discountPrice);
 
 		StringBuilder payTitle = new StringBuilder();
@@ -4516,4 +4494,58 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 			}
 		}
 	}
+
+	/**
+	 * 处理镜像车票续费升级后的规格
+	 */
+	private void handlerMirrorRenewPresentPackage(OrderDon orderDon, GoodsDonSku sku, Long tripsSkuId, Long renewSkuId, GroupsTrips groupsTrips) {
+		//GPT续费升级 目前升级套餐续费
+		//Claude pro
+		if ((orderDon.getGoodsId() == 18 || orderDon.getGoodsId() == 75) && sku.getIsMirror()) {
+			try {
+				//记录续费升级订单 目前升级规格续费
+				Integer limitNum = null;
+				Long limitTime = null;
+				if (orderDon.getGoodsId() == 18) {
+					ChatgptUser chatgptUser = chatgptUserMapper.selectOne(Wrappers.lambdaQuery(ChatgptUser.class)
+							.eq(ChatgptUser::getRelationId, orderDon.getRelationId())
+							.last("limit 1"));
+					if (chatgptUser == null) {
+						return;
+					}
+					limitNum = chatgptUser.getLimitNum();
+					limitTime = chatgptUser.getLimitTime();
+				}
+				if (orderDon.getGoodsId() == 75) {
+					ClaudeUser claudeUser = claudeUserMapper.selectOne(Wrappers.lambdaQuery(ClaudeUser.class)
+							.eq(ClaudeUser::getRelationId, orderDon.getRelationId())
+							.last("limit 1"));
+					if (claudeUser == null) {
+						return;
+					}
+					limitNum = claudeUser.getLimitNum();
+					limitTime = claudeUser.getLimitTime();
+				}
+				if (tripsSkuId.intValue() != renewSkuId.intValue()) {
+					//是续费升级的规格
+					//全部归纳到续费升级的关联订单
+					if (limitNum == sku.getGptLimitNum() && limitTime == sku.getGptLimitTime()) {
+						RenewUpgradePackage upgradePackage = renewUpgradePackageMapper.selectOne(Wrappers.lambdaQuery(RenewUpgradePackage.class)
+								.eq(RenewUpgradePackage::getSkuId, tripsSkuId)
+								.apply("JSON_CONTAINS(upgrade_sku_ids,'\"" + renewSkuId + "\"')")
+								.eq(RenewUpgradePackage::getStatus, 1)
+								.eq(RenewUpgradePackage::getDeleted, 1)
+								.last("limit 1"));
+						//无优惠折扣 但订单可使用优惠码
+						RenewUpgradePackage renewUpgradePackage = new RenewUpgradePackage();
+						renewUpgradePackage.setId(upgradePackage.getId());
+						renewUpgradePackage.setDiscount(BigDecimal.ONE);
+						recordRenewOrderDon(orderDon, renewUpgradePackage, groupsTrips);
+					}
+				}
+			} catch (Exception e) {
+				log.error("记录续费升级错误:{}", StringUtil.getErrorText(e));
+			}
+		}
+	}
 }

+ 30 - 1
netflix-web/src/main/java/com/cyksj/web/controller/group/GroupRelationController.java

@@ -137,6 +137,8 @@ public class GroupRelationController {
 
     private final UserBenefitsOrderRecordMapper userBenefitsOrderRecordMapper;
 
+    private final ClaudeUserMapper claudeUserMapper;
+
     private final static Sequence SEQUENCE = new Sequence(0);
 
 	@RequestMapping("/get/renewal")
@@ -948,7 +950,8 @@ public class GroupRelationController {
         long userId = StpUserUtil.getLoginIdAsLong();
         List<Long> userIdList = userBindRelationService.getRelationUserIdList(userId, null);
         ChatgptUser chatgptUser = chatgptUserMapper.selectOne(Wrappers.lambdaQuery(ChatgptUser.class)
-                .eq(ChatgptUser::getRelationId, relationId));
+                .eq(ChatgptUser::getRelationId, relationId)
+                .last("limit 1"));
         if (chatgptUser == null) return GatewayResponse.SUCCESS.newBuilder().toResult();
         //目前续费升级的规格
         Long renewSkuId = chatgptUser.getRenewSkuId();
@@ -1035,6 +1038,32 @@ public class GroupRelationController {
         return GatewayResponse.SUCCESS.newBuilder().toResult(renewUpgradePackageFrontViews);
     }
 
+    /**
+     * claude pro续费升级
+     */
+    @GetMapping("/get/claude/renew/skus/{relationId}/{skuId}")
+    public Result<List<RenewUpgradePackageFrontView> > getClaudeRenewSkus(@PathVariable Long relationId, @PathVariable Long skuId) {
+        long userId = StpUserUtil.getLoginIdAsLong();
+        ClaudeUser claudeUser = claudeUserMapper.selectOne(Wrappers.lambdaQuery(ClaudeUser.class)
+                .eq(ClaudeUser::getRelationId, relationId)
+                .last("limit 1"));
+        if (claudeUser == null) return GatewayResponse.SUCCESS.newBuilder().toResult();
+        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);
+                MapBuilder builder = MapUtils.builder();
+                List<RenewUpgradePackageFrontView.RenewSkuView> renewSkuViews = beanSearcher.searchAll(RenewUpgradePackageFrontView.RenewSkuView.class, builder
+                        .field(RenewUpgradePackageFrontView.RenewSkuView::getSkuId, upgradeSkuIds).op(Operator.InList)
+                        .field(RenewUpgradePackageFrontView.RenewSkuView::getGptLimitNum, claudeUser.getLimitNum()).op(Operator.GreaterEqual)
+                        .build());
+                renew.setRenewSkus(renewSkuViews);
+            } catch (Exception e) {
+            }
+        });
+        return GatewayResponse.SUCCESS.newBuilder().toResult(renewUpgradePackageFrontViews);
+    }
+
     /**
      * 获取GPT PLUS登录验证码
      */