zoujiajian hace 1 año
padre
commit
4c14f0b394

+ 28 - 9
netflix-service/src/main/java/com/cyksj/service/mange/impl/CmsOrderDonServiceImpl.java

@@ -214,6 +214,8 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
 
     private final UserMirrorShopDistributeWaitingSendPointsMapper userMirrorShopDistributeWaitingSendPointsMapper;
 
+    private final ClaudeUserMapper claudeUserMapper;
+
     private static final GlobalThreadPoolTaskExecutor TASK_POOL = GlobalThreadPoolTaskExecutor.getInstance();
 
     @Override
@@ -1436,15 +1438,32 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
                 .eq(OrderDonRenewRecord::getOrderId, orderId)
                 .last("limit 1"));
         if (orderDonRenewRecord != null) {
-            ChatgptUser chatgptUser = chatgptUserMapper.selectOne(Wrappers.lambdaQuery(ChatgptUser.class)
-                    .eq(ChatgptUser::getRelationId, orderDon.getRelationId())
-                    .last("limit 1"));
-            Long presentRenewSkuId = chatgptUser.getRenewSkuId();
-            if (presentRenewSkuId != null) {
-                //存在不同升级套餐
-                GoodsDonSku presentRenewSku = skuMapper.selectById(presentRenewSkuId);
-                if (!ObjectUtil.equal(presentRenewSkuId, skuId)) {
-                    throw BusinessRuntimeException.getInstance("请先退掉用户目前续费升级的{0}规格", presentRenewSku.getSpecVal());
+            //gpt
+            if (orderDon.getGoodsId() == 18) {
+                ChatgptUser chatgptUser = chatgptUserMapper.selectOne(Wrappers.lambdaQuery(ChatgptUser.class)
+                        .eq(ChatgptUser::getRelationId, orderDon.getRelationId())
+                        .last("limit 1"));
+                Long presentRenewSkuId = chatgptUser.getRenewSkuId();
+                if (presentRenewSkuId != null) {
+                    //存在不同升级套餐
+                    GoodsDonSku presentRenewSku = skuMapper.selectById(presentRenewSkuId);
+                    if (!ObjectUtil.equal(presentRenewSkuId, skuId)) {
+                        throw BusinessRuntimeException.getInstance("请先退掉用户目前续费升级的{0}规格", presentRenewSku.getSpecVal());
+                    }
+                }
+            }
+            //claude pro
+            if (orderDon.getGoodsId() == 75) {
+                ClaudeUser claudeUser = claudeUserMapper.selectOne(Wrappers.lambdaQuery(ClaudeUser.class)
+                        .eq(ClaudeUser::getRelationId, orderDon.getRelationId())
+                        .last("limit 1"));
+                Long presentRenewSkuId = claudeUser.getRenewSkuId();
+                if (presentRenewSkuId != null) {
+                    //存在不同升级套餐
+                    GoodsDonSku presentRenewSku = skuMapper.selectById(presentRenewSkuId);
+                    if (!ObjectUtil.equal(presentRenewSkuId, skuId)) {
+                        throw BusinessRuntimeException.getInstance("请先退掉用户目前续费升级的{0}规格", presentRenewSku.getSpecVal());
+                    }
                 }
             }
         }

+ 53 - 8
netflix-service/src/main/java/com/cyksj/service/mange/impl/MirrorUserCleatServiceImpl.java

@@ -99,8 +99,53 @@ public class MirrorUserCleatServiceImpl implements MirrorUserCleatService {
 		OrderDonRenewRecord orderDonRenewRecord = orderDonRenewRecordMapper.selectOne(Wrappers.lambdaQuery(OrderDonRenewRecord.class)
 				.eq(OrderDonRenewRecord::getOrderId, orderId)
 				.last("limit 1"));
+		if (orderDonRenewRecord == null) {
+			return;
+		}
 		List<Long> userIdList = userBindRelationService.getRelationUserIdList(orderDon.getUserId(), null);
-		if (orderDonRenewRecord != null) {
+		//Claude pro
+		if (orderDon.getGoodsId() == 75) {
+			ClaudeUser claudeUser = claudeUserMapper.selectOne(Wrappers.lambdaQuery(ClaudeUser.class)
+					.eq(ClaudeUser::getRelationId, orderDon.getRelationId())
+					.last("limit 1"));
+			Long presentRenewSkuId = claudeUser.getRenewSkuId();
+			if (presentRenewSkuId == null) {
+				return;
+			}
+			GroupsRelation relation = groupsRelationMapper.selectById(orderDon.getRelationId());
+			GroupsTrips groupsTrips = groupsMapper.selectById(relation.getGroupsId());
+			GoodsDonSku finalSku = skuMapper.selectById(groupsTrips.getSkuId());
+			//是否存在其他续费升级
+			OrderDon otherRenewOrderDon = orderDonRenewRecordMapper.getOtherRenewSku(orderDon.getId(), relation.getId(), userIdList);
+			GoodsDonSku otherRenewSku = null;
+			if (otherRenewOrderDon != null) {
+				otherRenewSku = skuMapper.selectById(otherRenewOrderDon.getSkuId());
+			}
+			Date renewExpiryTime = null;
+			claudeUser.setRenewSkuId(null);
+			claudeUser.setRenewOrderId(null);
+			//续费升级
+			if (otherRenewSku != null) {
+				finalSku = otherRenewSku;
+				log.info("claude pro 续费升级订单退款,relation_id:{}存在次级续费升级订单", orderDon.getUserId());
+				Date payTime = Optional.ofNullable(otherRenewOrderDon.getPayTime()).orElse(otherRenewOrderDon.getCreatedTime());
+				renewExpiryTime = DateUtil.offsetMonth(payTime, otherRenewSku.getMonths());
+				claudeUser.setRenewOrderId(otherRenewOrderDon.getId());
+				claudeUser.setRenewSkuId(otherRenewOrderDon.getSkuId());
+			}
+			//还原镜像user
+			claudeUser.setLimitTime(finalSku.getGptLimitTime());
+			claudeUser.setLimitNum(finalSku.getGptLimitNum());
+			claudeUser.setRenewExpiryTime(renewExpiryTime);
+			claudeUserMapper.updateById(claudeUser);
+			log.info("还原镜像claude user套餐成功");
+			//将续费有效置为过期
+			orderDonRenewRecord.setIsValid(true);
+			orderDonRenewRecordMapper.updateById(orderDonRenewRecord);
+			return;
+		}
+
+		if (orderDon.getGoodsId() == 18) {
 			ChatgptUser chatgptUser = chatgptUserMapper.selectOne(Wrappers.lambdaQuery(ChatgptUser.class)
 					.eq(ChatgptUser::getRelationId, orderDon.getRelationId())
 					.last("limit 1"));
@@ -128,7 +173,7 @@ public class MirrorUserCleatServiceImpl implements MirrorUserCleatService {
 			}
 			//套餐升级
 			if (upgradeOrderDonSku != null) {
-				log.info("续费升级订单退款,relation_id:{}存在套餐升级", orderDon.getUserId());
+				log.info("GPT续费升级订单退款,relation_id:{}存在套餐升级", orderDon.getUserId());
 				finalSku = upgradeOrderDonSku;
 			}
 			chatgptUser.setRenewSkuId(null);
@@ -136,11 +181,11 @@ public class MirrorUserCleatServiceImpl implements MirrorUserCleatService {
 			//续费升级
 			if (otherRenewSku != null) {
 				finalSku = otherRenewSku;
-				log.info("续费升级订单退款,relation_id:{}存在次级续费升级订单", orderDon.getUserId());
+				log.info("GPT续费升级订单退款,relation_id:{}存在次级续费升级订单", orderDon.getUserId());
 				if (upgradeOrderDonSku != null) {
 					//套餐升级高于其他续费升级
 					if (upgradeOrderDonSku.getMonths() >= otherRenewSku.getMonths() && upgradeOrderDonSku.getGptLimitNum() >= otherRenewSku.getGptLimitNum() && upgradeOrderDonSku.getGptLimitTime() <= otherRenewSku.getGptLimitTime()) {
-						log.info("续费升级订单退款,relation_id:{}存在更高级套餐升级", orderDon.getUserId());
+						log.info("GPT续费升级订单退款,relation_id:{}存在更高级套餐升级", orderDon.getUserId());
 						finalSku = upgradeOrderDonSku;
 					}
 				}
@@ -159,11 +204,11 @@ public class MirrorUserCleatServiceImpl implements MirrorUserCleatService {
 			//将续费有效置为过期
 			orderDonRenewRecord.setIsValid(true);
 			orderDonRenewRecordMapper.updateById(orderDonRenewRecord);
-		}
 
-		if (orderDonRenewRecord == null && orderDon.getOrderType() == 2) {
-			//退款续费 套餐升级订单
-			handleGptMirrorRenewOrderRefund(orderDon, sku);
+			if (orderDon.getOrderType() == 2) {
+				//退款续费 套餐升级订单
+				handleGptMirrorRenewOrderRefund(orderDon, sku);
+			}
 		}
 	}