Quellcode durchsuchen

判断封锁解封优化

Bob vor 1 Jahr
Ursprung
Commit
cc8110158f

+ 2 - 0
pdf-office-api/pdf-office-api-payment/src/main/java/cn/kdan/cloud/pdf/office/api/payment/dto/CreateSubscriptionDTO.java

@@ -58,4 +58,6 @@ public class CreateSubscriptionDTO implements Serializable {
 
     //2官网购买 3后台赠送 4appstore
     private Integer buyerType;
+
+    private Integer isLock;
 }

+ 2 - 0
pdf-office-api/pdf-office-api-payment/src/main/java/cn/kdan/cloud/pdf/office/api/payment/vo/SubscriptionsVO.java

@@ -124,6 +124,8 @@ public class SubscriptionsVO implements Serializable {
 
     private String appId;
 
+    private Integer isLock;
+
     /**
      * 产品平台 1:mac,2:windows  PlatformEnum
      */

+ 1 - 1
pdf-office-payment/src/main/java/cn/kdan/cloud/pdf/office/payment/entity/RestorePurchaseLogs.java

@@ -52,7 +52,7 @@ public class RestorePurchaseLogs extends BaseEntity{
     private String receipt;
 
     /**
-     * 权益转移类型:0正常、1邮件警告、2封锁
+     * 权益转移类型:0正常、1邮件警告、2封锁;3已解锁
      */
     private Integer restoreType;
 }

+ 2 - 0
pdf-office-payment/src/main/java/cn/kdan/cloud/pdf/office/payment/entity/Subscription.java

@@ -132,4 +132,6 @@ public class Subscription extends BaseEntity{
 
     private String appId;
 
+    private Integer isLock;
+
 }

+ 11 - 2
pdf-office-payment/src/main/java/cn/kdan/cloud/pdf/office/payment/service/impl/AppStoreServiceImpl.java

@@ -284,12 +284,20 @@ public class AppStoreServiceImpl implements AppStoreService {
             String newUserId = equityVerificationDTO.getUserId();
             if (newUserId.equals(oldUserId)) {
                 // 当前用户绑定,不用处理,直接返回用户信息
+                log.info("当前用户绑定,不用处理");
                 UserInfoVO result = userApi.getInfoById(equityVerificationDTO.getUserId()).getResult();
                 result.setDigestPassword(null);
                 return result;
             }
-            // 判断当前票据restore次数
+            SubscriptionsVO subscription = subscriptionsService.getSubscriptionBySubscriptionId(orderByThirdOrderNo.getSubscriptionId());
+            if (null != subscription.getIsLock() && 1 == subscription.getIsLock()) {
+                log.info("当前票据已封锁");
+                // 已封锁的抛出
+                throw new BackendRuntimeException(ExceptionEnum.EXCEPTION_TICKET_HAS_BEEN_BLOCKED);
+            }
+            // 判断当前票据restore次数(不统计解封前的)
             List<RestorePurchaseLogs> byOrderReceipt = restorePurchaseLogsService.getByOrderReceipt(equityVerificationDTO.getReceipt());
+            Integer isLock = 0;
             Integer restoreTypeNew = 0;
             if (CollectionUtils.isNotEmpty(byOrderReceipt)) {
                 RestorePurchaseLogs restorePurchaseLogs = byOrderReceipt.stream().max(Comparator.comparing(RestorePurchaseLogs::getCreatedAt)).orElse(null);
@@ -300,6 +308,7 @@ public class AppStoreServiceImpl implements AppStoreService {
                         log.info("当前票据已发送警告邮件");
                         // 警告的再次restore即封锁
                         restoreTypeNew = 2;
+                        isLock = 1;
                     }
                     if (2 == restoreType) {
                         log.info("当前票据已封锁");
@@ -332,7 +341,6 @@ public class AppStoreServiceImpl implements AppStoreService {
             userSubscriptionInfoApi.update(info);
 
             // 新增新用户的订阅
-            SubscriptionsVO subscription = subscriptionsService.getSubscriptionBySubscriptionId(orderByThirdOrderNo.getSubscriptionId());
             CreateSubscriptionDTO createSubscription = new CreateSubscriptionDTO();
             createSubscription.setUserId(newUserId);
             String subscriptionId = CommonUtils.generateId();
@@ -348,6 +356,7 @@ public class AppStoreServiceImpl implements AppStoreService {
             createSubscription.setSubscriptionType(SubscriptionTypeEnum.MEMBER.value());//如果是0则是试用
             createSubscription.setEndDate(MyDateUtils.dateToLocalDateTime(subscription.getEndDate()));
             createSubscription.setStartDate(MyDateUtils.dateToLocalDateTime(subscription.getStartDate()));
+            createSubscription.setIsLock(isLock);
             subscriptionsService.createSubscription(createSubscription);
             // 更新订单
             OrderSucceededBO orderSucceeded = OrderSucceededBO.builder()

+ 1 - 0
pdf-office-payment/src/main/java/cn/kdan/cloud/pdf/office/payment/service/impl/RestorePurchaseLogsServiceImpl.java

@@ -34,6 +34,7 @@ public class RestorePurchaseLogsServiceImpl extends ServiceImpl<RestorePurchaseL
     public List<RestorePurchaseLogs> getByOrderReceipt(String receipt) {
         return this.baseMapper.selectList(new LambdaQueryWrapper<RestorePurchaseLogs>()
                 .eq(RestorePurchaseLogs::getReceipt, receipt)
+                .ne(RestorePurchaseLogs::getRestoreType, 3)
                 .orderByDesc(RestorePurchaseLogs::getCreatedAt));
     }
 }

+ 3 - 0
pdf-office-payment/src/main/java/cn/kdan/cloud/pdf/office/payment/service/impl/SubscriptionsServiceImpl.java

@@ -101,6 +101,9 @@ public class SubscriptionsServiceImpl extends ServiceImpl<SubscriptionsMapper, S
         subscription.setPayment(subscriptionInfo.getPayment());
         subscription.setEmail(subscriptionInfo.getEmail());
         subscription.setSubscriptionType(subscriptionInfo.getSubscriptionType());
+        if (null != subscriptionInfo.getIsLock()) {
+            subscription.setIsLock(subscriptionInfo.getIsLock());
+        }
         //2官网购买 3后台赠送 4appstore
         if (ObjectUtils.isNotEmpty(subscriptionInfo.getBuyerType())){
             subscription.setBuyerType(subscriptionInfo.getBuyerType());

+ 1 - 0
pdf-office-payment/src/main/resources/mapper/SubscriptionsMapper.xml

@@ -111,6 +111,7 @@
                s.third_subscription_id,
                s.order_id,
                s.app_id,
+               s.is_lock,
                p.platform
         FROM subscription s
                  left join product p on s.product_id = p.id