|
@@ -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点数
|