Sfoglia il codice sorgente

refactor(payment): 优化订阅过期处理逻辑

- 修改订阅过期判断逻辑,从平台维度改为产品维度
- 新增 getUserSubscriptionInfoByProductId 方法,用于获取指定产品的订阅信息
- 优化日志输出,增加订阅过期处理成功的日志
- 调整更新用户状态的逻辑,使用订阅信息中的平台类型
tangxiangan 3 mesi fa
parent
commit
50ccf07f74

+ 12 - 1
pdf-office-api/pdf-office-api-account/src/main/java/cn/kdan/cloud/pdf/office/api/account/utils/SubscriptionUtil.java

@@ -69,5 +69,16 @@ public class SubscriptionUtil {
         }
         return null;
     }
-
+    public static UserSubscriptionInfoVO getUserSubscriptionInfoByProductId(List<UserSubscriptionInfoVO> userSubscriptionInfoVOS,
+                                                                           String productId) {
+        if (CollectionUtils.isEmpty(userSubscriptionInfoVOS)) {
+            return null;
+        }
+        for (UserSubscriptionInfoVO userSubscriptionInfoVO : userSubscriptionInfoVOS) {
+            if (userSubscriptionInfoVO.getProductId().equals(productId)) {
+                return userSubscriptionInfoVO;
+            }
+        }
+        return null;
+    }
 }

+ 6 - 4
pdf-office-payment/src/main/java/cn/kdan/cloud/pdf/office/payment/task/SubscriptionTask.java

@@ -18,6 +18,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.data.redis.stream.Subscription;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
 import rx.subscriptions.Subscriptions;
 
 import java.time.LocalDateTime;
@@ -43,14 +44,14 @@ public class SubscriptionTask {
                 return;
             }
             List<UserSubscriptionInfoVO> subscriptionInfoList = userInfoVO.getSubscriptionInfoList();
-            UserSubscriptionInfoVO userSubscriptionInfoVO = SubscriptionUtil.getUserSubscriptionInfoByPlatform(subscriptionInfoList, subscriptionsVO.getPlatform());
+            UserSubscriptionInfoVO userSubscriptionInfoVO = SubscriptionUtil.getUserSubscriptionInfoByProductId(subscriptionInfoList, subscriptionsVO.getProductId());
             LocalDateTime endDate = MyDateUtils.dateToLocalDateTime(userSubscriptionInfoVO.getEndDate());
             LocalDateTime oldEndDate = MyDateUtils.dateToLocalDateTime(subscriptionsVO.getEndDate());
             // 修改订阅表订阅状态 过期
             log.info("订阅过期 当前时间 :{} 到期时间 :{}", now, oldEndDate);
-            log.info("订阅过期 处理成功 :{}", subscriptionsVO.getId());
-            subscriptionsService.updateSubscriptionStatus(subscriptionsVO.getUserId(), SubscriptionConstant.expired);
+            subscriptionsService.updateSubscriptionStatus(subscriptionsVO.getId(), SubscriptionConstant.expired);
             if (now.isAfter(endDate)) {
+                log.info("订阅过期 修改用户 :{}", subscriptionsVO.getUserId());
                 // 修改用户状态
                 // 获取当前用户的订阅状态
                 Integer userStatus = Integer.MIN_VALUE;
@@ -66,11 +67,12 @@ public class SubscriptionTask {
                 // 修改用户状态
                 UpdateUserForOrderDTO paySuccessDTO = new UpdateUserForOrderDTO();
                 paySuccessDTO.setUserId(subscriptionsVO.getUserId());
-                paySuccessDTO.setPlatform(subscriptionsVO.getPlatform());
+                paySuccessDTO.setPlatform(userSubscriptionInfoVO.getPlatform());
                 paySuccessDTO.setUserStatus(userStatus);
                 paySuccessDTO.setPayTpe(PayTypeEnum.NO_AUTO.value());
                 userApi.updateUserForOrder(paySuccessDTO);
             }
+            log.info("订阅过期 处理成功 :{}", subscriptionsVO.getId());
         });
     }