zoujiajian 2 tahun lalu
induk
melakukan
c56513f7fa

+ 6 - 0
netflix-dao/src/main/java/com/cyksj/model/views/GoodsDonSkuRenewView.java

@@ -54,4 +54,10 @@ public class GoodsDonSkuRenewView {
 	 */
 	@DbIgnore
 	private Long packageId;
+
+	/**
+	 * 续费升级目前规格订单id
+	 */
+	@DbIgnore
+	private Long originalOrderId;
 }

+ 30 - 17
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -1078,25 +1078,38 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		//记录订单ip关联
 		recordOrderDonLocationRelate(orderDon.getId(), payRequest.getIp());
 		//GPT续费升级 目前升级套餐续费
-		if (payRequest.getPackageId() != null && payRequest.getPackageId() != 0 && orderDon.getGoodsId() == 18 && sku.getIsMirror()) {
-			//记录续费升级订单 目前升级规格续费
-			RenewUpgradePackage renewUpgradePackage = renewUpgradePackageMapper.selectById(payRequest.getPackageId());
-			//是续费升级的规格
-			if (renewUpgradePackage != null && renewUpgradePackage.getSkuId().intValue() == orderDon.getSkuId().intValue()) {
-				//无优惠折扣 但订单可使用优惠码
-				renewUpgradePackage.setDiscount(BigDecimal.ONE);
-				recordRenewOrderDon(orderDon, renewUpgradePackage, groupsTrips);
-			}
-			if (renewUpgradePackage == null) {
-				UpgradeOrderDon upgradeOrderDon = upgradeOrderDonMapper.selectOne(Wrappers.lambdaQuery(UpgradeOrderDon.class)
-						.eq(UpgradeOrderDon::getRelationId, orderDon.getRelationId())
-						.eq(UpgradeOrderDon::getPackageId, payRequest.getPackageId())
-						.in(UpgradeOrderDon::getUserId, userIdList)
-						.orderByDesc(UpgradeOrderDon::getId)
+		if ((payRequest.getPackageId() != null || payRequest.getOriginalOrderId() != null) && orderDon.getGoodsId() == 18 && sku.getIsMirror()) {
+			try {
+				//记录续费升级订单 目前升级规格续费
+				ChatgptUser chatgptUser = chatgptUserMapper.selectOne(Wrappers.lambdaQuery(ChatgptUser.class)
+						.eq(ChatgptUser::getRelationId, orderDon.getRelationId())
 						.last("limit 1"));
-				if (upgradeOrderDon != null) {
-					recordUpgradeRenewOrderDon(orderDon, upgradeOrderDon.getPackageId(), groupsTrips);
+				if (chatgptUser != null) {
+					//是续费升级的规格
+					if (payRequest.getOriginalOrderId() != null && chatgptUser.getRenewSkuId() != null && chatgptUser.getRenewSkuId().intValue() == orderDon.getSkuId()) {
+						OrderDonRenewRecord orderDonRenewRecord = orderDonRenewRecordMapper.selectOne(Wrappers.lambdaQuery(OrderDonRenewRecord.class)
+								.eq(OrderDonRenewRecord::getOrderId, payRequest.getOriginalOrderId()));
+						//无优惠折扣 但订单可使用优惠码
+						RenewUpgradePackage renewUpgradePackage = new RenewUpgradePackage();
+						renewUpgradePackage.setId(orderDonRenewRecord.getPackageId());
+						renewUpgradePackage.setDiscount(BigDecimal.ONE);
+						recordRenewOrderDon(orderDon, renewUpgradePackage, groupsTrips);
+					}
+					if (payRequest.getPackageId() != null && chatgptUser.getPackageId() != null && chatgptUser.getPackageId().intValue() == payRequest.getPackageId().intValue()) {
+						UpgradeOrderDon upgradeOrderDon = upgradeOrderDonMapper.selectOne(Wrappers.lambdaQuery(UpgradeOrderDon.class)
+								.eq(UpgradeOrderDon::getRelationId, orderDon.getRelationId())
+								.eq(UpgradeOrderDon::getPackageId, payRequest.getPackageId())
+								.in(UpgradeOrderDon::getUserId, userIdList)
+								.eq(UpgradeOrderDon::getStatus, UpgradeOrderDon.Status.complete)
+								.orderByDesc(UpgradeOrderDon::getId)
+								.last("limit 1"));
+						if (upgradeOrderDon != null) {
+							recordUpgradeRenewOrderDon(orderDon, upgradeOrderDon.getPackageId(), groupsTrips);
+						}
+					}
 				}
+			} catch (Exception e) {
+				log.error("记录续费升级错误:{}", StringUtil.getErrorText(e));
 			}
 		}
 		return orderDon;

+ 1 - 1
netflix-service/src/main/java/com/cyksj/service/relation/impl/GroupRelationFrontServiceImpl.java

@@ -325,7 +325,7 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 						if (upgradeSkuRenewView == null || (renewSku.getGptUserLimitNum() >= upgradeSkuRenewView.getGptUserLimitNum() && renewSku.getMonths() >= userInfo.getMonths())) {
 							Optional.ofNullable(orderDonRenewRecordMapper.selectOne(Wrappers.lambdaQuery(OrderDonRenewRecord.class)
 									.eq(OrderDonRenewRecord::getOrderId, userInfo.getRenewOrderId())
-									.last("limit 1"))).ifPresent(e -> renewSku.setPackageId(e.getPackageId()));
+									.last("limit 1"))).ifPresent(e -> renewSku.setOriginalOrderId(e.getOrderId()));
 							ticket.setRenewSku(renewSku);
 						}
 					}