Browse Source

Merge branch 'develop/v1.0' into master-test

tangxiangan 3 months ago
parent
commit
29325a26af

+ 1 - 1
pdf-office-common/src/main/java/cn/kdan/cloud/pdf/office/common/vo/MemberInfoVO.java

@@ -67,5 +67,5 @@ public class MemberInfoVO {
     private String area;
 
     private String avatarUrl;
-
+    private Boolean isHaveActiveSubscription;
 }

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

@@ -90,9 +90,6 @@ public class GooglePayServiceImpl implements GooglePayService {
         }
         log.info("谷歌权益校验,用户id:{}", googlePayDTO.getUserId());
         SubscriptionPurchaseV3 subscriptionPurchaseV2 = this.verify(googlePayDTO.getPurchaseToken(),googlePayDTO.getPackageName());
-        if (subscriptionPurchaseV2.getTestPurchase() != null) {
-            throw new BackendRuntimeException(ExceptionEnum.EXCEPTION_COUPON_INVALID);
-        }
         // 获取票据订单信息
         if(ObjectUtils.isEmpty(subscriptionPurchaseV2.getExternalAccountIdentifiers())){
             throw new BackendRuntimeException(ExceptionEnum.EXCEPTION_MSG_GOOGLE_STORE_TRANSACTION_ID_VALIDATION_FAILED);

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

@@ -639,7 +639,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             return null;
         }
         log.info("获取订单状态,信息:{}", order);
-        Map<String, String> map = new HashMap<>();
         // 捕获PayPal买断订单,先不判断是否支付,兼容支付回调后修改了订单状态也需要捕获一次
         if (order.getPayment() == 0 && order.getPaymentModel() == 2) {
             log.info("paypal买断订单捕获");
@@ -671,10 +670,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                     if (ObjectUtils.isNotEmpty(data)) {
                         String status = data.getString("status");
                         if (StringUtils.isNotEmpty(status)) {
-                            // 成功捕获订单,直接返回
-                            log.info("捕获订单状态:{}", status);
-                            map.put("status", status);
-                            return map;
+                            // 捕获订单
+                            log.info("PayPal订单捕获:{},状态:{}", order.getThirdOrderNo(), status);
                         }
                     }
                 } else {
@@ -685,6 +682,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             }
         }
         // 获取订单状态
+        Map<String, String> map = new HashMap<>();
         if (!order.getStatus().equals(2)) {
             // 未支付订单,等待2s回调
             log.info("订单等待回调,{}", orderId);

+ 1 - 0
pdf-office-sso/src/main/java/cn/kdan/cloud/pdf/office/sso/controller/UserController.java

@@ -182,6 +182,7 @@ public class UserController {
                 BeanUtils.copyProperties(infoVO,aiInfo);
                 result.setActiveAI(aiInfo);
                 result.setAvatarUrl(avatarUrl);
+                result.setIsHaveActiveSubscription(authService.judgeActiveSubscription(user.getSubscriptionInfoList()));
                 return new ResultMap<>(CommonConstant.SUCCESS, CommonConstant.RESULT_SUCCESS, result);
             }
         }

+ 2 - 0
pdf-office-sso/src/main/java/cn/kdan/cloud/pdf/office/sso/service/AuthService.java

@@ -106,6 +106,8 @@ public interface AuthService {
 
     UserSubscriptionInfoVO findActiveSubscription(List<UserSubscriptionInfoVO> subscriptionInfoList, String model);
 
+    Boolean judgeActiveSubscription(List<UserSubscriptionInfoVO> subscriptionInfoList);
+
     int getAiPoints(List<UserSubscriptionInfoVO> subscriptionInfoList);
 
     UserSubscriptionInfoVO getActiveAi(List<UserSubscriptionInfoVO> subscriptionInfoList);

+ 24 - 1
pdf-office-sso/src/main/java/cn/kdan/cloud/pdf/office/sso/service/impl/AuthServiceImpl.java

@@ -256,10 +256,33 @@ public class AuthServiceImpl implements AuthService {
                         .thenComparing(Comparator.comparingInt(UserSubscriptionInfoVO::getMaxDeviceNum).reversed()) // 如果优先级相同按max_device_num降序
                 )
                 .findFirst(); // 找到优先级最高的记录
-
+        if(activeSubscription.get().getStatus() == 2&&filteredList.size()>2){
+            Optional<UserSubscriptionInfoVO> activeSubscription1 =     filteredList.stream()
+                    .filter(user -> user.getStatus() == 1) // 过滤出 status = 1 的记录
+                    .sorted(Comparator.comparingInt(this::getLevelPriority)
+                            .reversed() // 按优先级降序排列
+                            .thenComparing(Comparator.comparingInt(UserSubscriptionInfoVO::getMaxDeviceNum).reversed()) // 如果优先级相同按 max_device_num 降序
+                    )
+                    .findFirst();
+            return activeSubscription1.orElse(null);
+        }
         return activeSubscription.orElse(null); // 返回结果,如果没有找到则返回null
     }
 
+    @Override
+    public Boolean judgeActiveSubscription(List<UserSubscriptionInfoVO> subscriptionInfoList) {
+        // 过滤掉isAi为true的记录
+        List<UserSubscriptionInfoVO> filteredList = subscriptionInfoList.stream()
+                .filter(info -> info.getStatus() == 1 // 筛选出 status = 1 的记录
+                        && info.getPaymentModel().equals("1")) // 筛选出 paymentModel = 1 的记录
+                .collect(Collectors.toList());
+        if (CollectionUtils.isEmpty(filteredList)){
+            return false;
+        }else {
+            return true;
+        }
+    }
+
     @Override
     public int getAiPoints(List<UserSubscriptionInfoVO> subscriptionInfoList) {
         int aiPoints = 0; // 初始化AI点数