Преглед изворни кода

Merge branch 'renew_upgrade' into pre

zoujiajian пре 2 година
родитељ
комит
a78391a490

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

@@ -5,6 +5,7 @@ import cn.hutool.core.date.DateField;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alipay.api.AlipayClient;
 import com.alipay.api.domain.AlipayTradeRefundModel;
@@ -196,6 +197,8 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
 
     private final MirrorUserCleatService mirrorUserCleatService;
 
+    private final OrderDonRenewRecordMapper orderDonRenewRecordMapper;
+
     private static final GlobalThreadPoolTaskExecutor TASK_POOL = GlobalThreadPoolTaskExecutor.getInstance();
 
     @Override
@@ -349,10 +352,6 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
         String refundType = refundReq.getRefundType();
         //校验订单是否符合退款
         checkOrderRefund(orderDon, goodsDon, sku, refundReq);
-        //续费升级订单
-        if (orderDon.getOrderType() == 2 && sku.getIsMirror()) {
-            mirrorUserCleatService.handleRenewUpgradeOrders(orderDon);
-        }
         //空订单关闭
         if (orderDon.getMoney().compareTo(BigDecimal.ZERO) == 0 && orderDon.getBalance().compareTo(BigDecimal.ZERO) == 0
                 && orderDon.getRelationId() == 0) {
@@ -375,6 +374,10 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
         //修改订单状态
         orderDon.setStatus(OrderDon.Status.refund);
         orderDonMapper.updateById(orderDon);
+        //续费升级订单
+        if (orderDon.getOrderType() == 2 && sku.getIsMirror()) {
+            mirrorUserCleatService.handleRenewUpgradeOrders(orderDon);
+        }
         //提交过工单的订单
         //将用户异常订单关闭
         workOrderMapper.update(null, Wrappers.lambdaUpdate(WorkOrder.class)
@@ -931,6 +934,8 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
             giftCardUserRecord.setIsPay(false);
             giftCardUserRecordMapper.updateById(giftCardUserRecord);
         }
+        //校验续费升级规格
+        checkMirrorRenewSku(orderDon);
     }
 
     /**
@@ -1360,4 +1365,23 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
         return relation;
     }
 
+    private void checkMirrorRenewSku(OrderDon orderDon) {
+        Long skuId = orderDon.getSkuId();
+        Long orderId = orderDon.getId();
+        OrderDonRenewRecord orderDonRenewRecord = orderDonRenewRecordMapper.selectOne(Wrappers.lambdaQuery(OrderDonRenewRecord.class)
+                .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();
+            //存在不同升级套餐
+            GoodsDonSku presentRenewSku = skuMapper.selectById(presentRenewSkuId);
+            if (!ObjectUtil.equal(presentRenewSkuId, skuId)) {
+                throw BusinessRuntimeException.getInstance("请先退掉用户目前续费升级的{}规格", presentRenewSku.getSpecVal());
+            }
+        }
+    }
+
 }

+ 48 - 55
netflix-service/src/main/java/com/cyksj/service/mange/impl/MirrorUserCleatServiceImpl.java

@@ -1,9 +1,7 @@
 package com.cyksj.service.mange.impl;
 
 import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.cyksj.common.exception.BusinessRuntimeException;
 import com.cyksj.mapper.*;
 import com.cyksj.model.entity.*;
 import com.cyksj.redis.RedisService;
@@ -70,7 +68,6 @@ public class MirrorUserCleatServiceImpl implements MirrorUserCleatService {
 
 	@Override
 	public void handleRenewUpgradeOrders(OrderDon orderDon) {
-		Long skuId = orderDon.getSkuId();
 		Long orderId = orderDon.getId();
 		OrderDonRenewRecord orderDonRenewRecord = orderDonRenewRecordMapper.selectOne(Wrappers.lambdaQuery(OrderDonRenewRecord.class)
 				.eq(OrderDonRenewRecord::getOrderId, orderId)
@@ -83,62 +80,58 @@ public class MirrorUserCleatServiceImpl implements MirrorUserCleatService {
 			Long presentRenewSkuId = chatgptUser.getRenewSkuId();
 			//存在不同升级套餐
 			GoodsDonSku presentRenewSku = skuMapper.selectById(presentRenewSkuId);
-			if (!ObjectUtil.equal(presentRenewSkuId, skuId)) {
-				throw BusinessRuntimeException.getInstance("请先退掉用户目前续费升级的{}规格", presentRenewSku.getSpecVal());
-			} else {
-				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());
-				}
-				GoodsDonSku upgradeOrderDonSku = null;
-				Date renewExpiryTime = null;
-				//是否存在套餐升级包
-				Long packageId = chatgptUser.getPackageId();
-				if (packageId != null && packageId != 0) {
-					UpgradeOrderDon upgradeOrderDon = upgradeOrderDonMapper.selectOne(Wrappers.lambdaQuery(UpgradeOrderDon.class)
-							.eq(UpgradeOrderDon::getRelationId, chatgptUser.getRelationId())
-							.in(UpgradeOrderDon::getUserId, userIdList)
-							.eq(UpgradeOrderDon::getPackageId, chatgptUser.getPackageId())
-							.orderByDesc(UpgradeOrderDon::getId)
-							.last("limit 1"));
-					Long upgradeOrderDonSkuId = upgradeOrderDon.getSkuId();
-					upgradeOrderDonSku = skuMapper.selectById(upgradeOrderDonSkuId);
-				}
-				//套餐升级
+			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());
+			}
+			GoodsDonSku upgradeOrderDonSku = null;
+			Date renewExpiryTime = null;
+			//是否存在套餐升级包
+			Long packageId = chatgptUser.getPackageId();
+			if (packageId != null && packageId != 0) {
+				UpgradeOrderDon upgradeOrderDon = upgradeOrderDonMapper.selectOne(Wrappers.lambdaQuery(UpgradeOrderDon.class)
+						.eq(UpgradeOrderDon::getRelationId, chatgptUser.getRelationId())
+						.in(UpgradeOrderDon::getUserId, userIdList)
+						.eq(UpgradeOrderDon::getPackageId, chatgptUser.getPackageId())
+						.orderByDesc(UpgradeOrderDon::getId)
+						.last("limit 1"));
+				Long upgradeOrderDonSkuId = upgradeOrderDon.getSkuId();
+				upgradeOrderDonSku = skuMapper.selectById(upgradeOrderDonSkuId);
+			}
+			//套餐升级
+			if (upgradeOrderDonSku != null) {
+				log.info("续费升级订单退款,relation_id:{}存在套餐升级", orderDon.getUserId());
+				finalSku = upgradeOrderDonSku;
+			}
+			chatgptUser.setRenewSkuId(null);
+			chatgptUser.setRenewOrderId(null);
+			//续费升级
+			if (otherRenewSku != null) {
+				finalSku = otherRenewSku;
+				log.info("续费升级订单退款,relation_id:{}存在次级续费升级订单", orderDon.getUserId());
 				if (upgradeOrderDonSku != null) {
-					log.info("续费升级订单退款,relation_id:{}存在套餐升级", orderDon.getUserId());
-					finalSku = upgradeOrderDonSku;
-				}
-				chatgptUser.setRenewSkuId(null);
-				chatgptUser.setRenewOrderId(null);
-				//续费升级
-				if (otherRenewSku != null) {
-					finalSku = otherRenewSku;
-					log.info("续费升级订单退款,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());
-							finalSku = upgradeOrderDonSku;
-						}
+					//套餐升级高于其他续费升级
+					if (upgradeOrderDonSku.getMonths() >= otherRenewSku.getMonths() && upgradeOrderDonSku.getGptLimitNum() >= otherRenewSku.getGptLimitNum() && upgradeOrderDonSku.getGptLimitTime() <= otherRenewSku.getGptLimitTime()) {
+						log.info("续费升级订单退款,relation_id:{}存在更高级套餐升级", orderDon.getUserId());
+						finalSku = upgradeOrderDonSku;
 					}
-					Date payTime = Optional.ofNullable(otherRenewOrderDon.getPayTime()).orElse(otherRenewOrderDon.getCreatedTime());
-					renewExpiryTime = DateUtil.offsetMonth(payTime, otherRenewSku.getMonths());
-					chatgptUser.setRenewOrderId(otherRenewOrderDon.getId());
-					chatgptUser.setRenewSkuId(otherRenewOrderDon.getSkuId());
 				}
-				//还原镜像user
-				chatgptUser.setLimitTime(finalSku.getGptLimitTime());
-				chatgptUser.setLimitNum(finalSku.getGptLimitNum());
-				chatgptUser.setRenewExpiryTime(renewExpiryTime);
-				chatgptUserMapper.updateById(chatgptUser);
-				log.info("还原镜像gptuser套餐成功");
+				Date payTime = Optional.ofNullable(otherRenewOrderDon.getPayTime()).orElse(otherRenewOrderDon.getCreatedTime());
+				renewExpiryTime = DateUtil.offsetMonth(payTime, otherRenewSku.getMonths());
+				chatgptUser.setRenewOrderId(otherRenewOrderDon.getId());
+				chatgptUser.setRenewSkuId(otherRenewOrderDon.getSkuId());
 			}
+			//还原镜像user
+			chatgptUser.setLimitTime(finalSku.getGptLimitTime());
+			chatgptUser.setLimitNum(finalSku.getGptLimitNum());
+			chatgptUser.setRenewExpiryTime(renewExpiryTime);
+			chatgptUserMapper.updateById(chatgptUser);
+			log.info("还原镜像gptuser套餐成功");
 		}
 	}
 }