|
@@ -3,12 +3,14 @@ package cn.kdan.cloud.pdf.office.sso.controller;
|
|
|
import cn.kdan.cloud.pdf.office.api.account.feign.UserApi;
|
|
|
import cn.kdan.cloud.pdf.office.api.payment.dto.CreateSubscriptionDTO;
|
|
|
import cn.kdan.cloud.pdf.office.api.payment.enums.PaymentMethodEnum;
|
|
|
+import cn.kdan.cloud.pdf.office.api.payment.feign.OrderApi;
|
|
|
import cn.kdan.cloud.pdf.office.api.payment.feign.SubscriptionApi;
|
|
|
import cn.kdan.cloud.pdf.office.api.product.feign.ProductApi;
|
|
|
import cn.kdan.cloud.pdf.office.api.product.vo.ProductVO;
|
|
|
import cn.kdan.cloud.pdf.office.common.constant.CommonConstant;
|
|
|
import cn.kdan.cloud.pdf.office.common.enums.ValidStatusEnum;
|
|
|
import cn.kdan.cloud.pdf.office.common.enums.account.PDFOfficeUserStatusEnum;
|
|
|
+import cn.kdan.cloud.pdf.office.common.enums.account.PDFOfficeUserSubscriptionStatusEnum;
|
|
|
import cn.kdan.cloud.pdf.office.common.enums.account.PayTypeEnum;
|
|
|
import cn.kdan.cloud.pdf.office.common.enums.payment.SubscriptionTypeEnum;
|
|
|
import cn.kdan.cloud.pdf.office.common.exception.BackendRuntimeException;
|
|
@@ -21,6 +23,7 @@ import cn.kdan.cloud.pdf.office.sso.service.AuthService;
|
|
|
import cn.kdan.cloud.pdf.office.sso.utils.RSAUtils;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
|
|
+import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
@@ -33,6 +36,10 @@ import java.security.Principal;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
import java.util.*;
|
|
|
+import java.util.concurrent.LinkedBlockingQueue;
|
|
|
+import java.util.concurrent.ThreadPoolExecutor;
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
+import java.util.concurrent.atomic.AtomicBoolean;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
@@ -50,9 +57,17 @@ public class UserController {
|
|
|
@Autowired
|
|
|
private SubscriptionApi subscriptionApi;
|
|
|
@Autowired
|
|
|
+ private OrderApi orderApi;
|
|
|
+ @Autowired
|
|
|
private AuthService authService;
|
|
|
@Value("${avatarUrl}")
|
|
|
private String avatarUrl;
|
|
|
+ private static final ThreadPoolExecutor PAY_UPDATE_THREAD_POOL = new ThreadPoolExecutor( Runtime.getRuntime().availableProcessors(),
|
|
|
+ Runtime.getRuntime().availableProcessors(),
|
|
|
+ 1L,
|
|
|
+ TimeUnit.MINUTES,
|
|
|
+ new LinkedBlockingQueue<>(300), new ThreadFactoryBuilder()
|
|
|
+ .setNameFormat("PAY_NOTIFY_THREAD_POOL").build(), new ThreadPoolExecutor.AbortPolicy());
|
|
|
|
|
|
public static String convertToLowerCase(String input) {
|
|
|
if (input == null || input.isEmpty()) {
|
|
@@ -155,6 +170,12 @@ public class UserController {
|
|
|
BeanUtils.copyProperties(activeSubscription,vo);
|
|
|
result.setActiveVIP(vo);
|
|
|
vo.setPlatforms(convertToLowerCase(vo.getPlatforms()));
|
|
|
+ if(activeSubscription.getStatus().equals(PDFOfficeUserSubscriptionStatusEnum.SUBSCRIPTION_IN_PROGRESS.value())
|
|
|
+ &&activeSubscription.getPlatform().equals(2)) {
|
|
|
+ PAY_UPDATE_THREAD_POOL.submit(() -> {
|
|
|
+ orderApi.updateStatusPayment(userId, activeSubscription.getProductId());
|
|
|
+ });
|
|
|
+ }
|
|
|
result.setAiPoint(authService.getAiPoints(user.getSubscriptionInfoList()));
|
|
|
SimpleUserSubscriptionInfoVO aiInfo = new SimpleUserSubscriptionInfoVO();
|
|
|
UserSubscriptionInfoVO infoVO = authService.getActiveAi(user.getSubscriptionInfoList());
|
|
@@ -164,6 +185,7 @@ public class UserController {
|
|
|
return new ResultMap<>(CommonConstant.SUCCESS, CommonConstant.RESULT_SUCCESS, result);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
throw new BackendRuntimeException("net error");
|
|
|
}
|
|
|
|
|
@@ -179,7 +201,11 @@ public class UserController {
|
|
|
String userId = ((CustomUserDetails) ((OAuth2Authentication) principal).getPrincipal()).getId();
|
|
|
// 获取用户的基本信息
|
|
|
UserInfoVO user = userApi.getMemberInfoById(userId).getResult();
|
|
|
+ AtomicBoolean isUpgrade = new AtomicBoolean(false);
|
|
|
List<SimpleUserSubscriptionInfoVO> resultList = user.getSubscriptionInfoList().stream().map(item -> {
|
|
|
+ if(item.getCode().contains("upgrade")){
|
|
|
+ isUpgrade.set(true);
|
|
|
+ }
|
|
|
//自动续订,显示续订日期
|
|
|
if (!ObjectUtils.isEmpty(item.getEndDate()) && PayTypeEnum.AUTO.value().equals(item.getPayType())) {
|
|
|
LocalDateTime payTime = subscriptionApi.getNextPayTime(item.getUserId(), item.getProductId()).getResult();
|
|
@@ -200,6 +226,12 @@ public class UserController {
|
|
|
BeanUtils.copyProperties(item, vo);
|
|
|
return vo;
|
|
|
}).collect(Collectors.toList());
|
|
|
+ if (isUpgrade.get()) {
|
|
|
+ resultList.removeIf(info -> Objects.equals(info.getPlatforms(), "3")); // 通过 removeIf 来移除 level 为 0 的记录
|
|
|
+ }
|
|
|
+ if (resultList.size() > 1) {
|
|
|
+ resultList.removeIf(info -> StringUtils.isNotEmpty(info.getLevels())&&Objects.equals(info.getLevels(), "1")); // 通过 removeIf 来移除 level 为 0 的记录
|
|
|
+ }
|
|
|
return new ResultMap<>(CommonConstant.SUCCESS, CommonConstant.RESULT_SUCCESS, resultList);
|
|
|
}
|
|
|
}
|