tangxiangan 4 ay önce
ebeveyn
işleme
d022d53120

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

@@ -269,6 +269,32 @@ public class AuthServiceImpl implements AuthService {
         return activeSubscription.orElse(null); // 返回结果,如果没有找到则返回null
     }
 
+    public UserSubscriptionInfoVO judgeActiveSubscription(List<UserSubscriptionInfoVO> subscriptionInfoList) {
+        // 过滤掉isAi为true的记录
+        List<UserSubscriptionInfoVO> filteredList = subscriptionInfoList.stream()
+                .filter(info -> ObjectUtils.isEmpty(info.getIsAi())||ValidStatusEnum.INVALID.value().equals(info.getIsAi())) // 排除AI记录
+                .collect(Collectors.toList());
+
+        // 找到一条生效的记录,按优先级排序
+        Optional<UserSubscriptionInfoVO> activeSubscription = filteredList.stream()
+                .sorted(Comparator.comparingInt(this::getLevelPriority)
+                        .reversed() // 按优先级降序排列
+                        .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 int getAiPoints(List<UserSubscriptionInfoVO> subscriptionInfoList) {
         int aiPoints = 0; // 初始化AI点数