|
@@ -5,9 +5,8 @@ import cn.kdan.cloud.pdf.office.api.payment.constant.SubscriptionConstant;
|
|
import cn.kdan.cloud.pdf.office.api.payment.dto.ChargebackOrderDTO;
|
|
import cn.kdan.cloud.pdf.office.api.payment.dto.ChargebackOrderDTO;
|
|
import cn.kdan.cloud.pdf.office.api.payment.dto.CreatSubscriptionDTO;
|
|
import cn.kdan.cloud.pdf.office.api.payment.dto.CreatSubscriptionDTO;
|
|
import cn.kdan.cloud.pdf.office.api.payment.dto.CreatSubscriptionManualDTO;
|
|
import cn.kdan.cloud.pdf.office.api.payment.dto.CreatSubscriptionManualDTO;
|
|
-import cn.kdan.cloud.pdf.office.api.payment.vo.OrdersVO;
|
|
|
|
-import cn.kdan.cloud.pdf.office.api.payment.vo.SubscriptionSchemeVO;
|
|
|
|
-import cn.kdan.cloud.pdf.office.api.payment.vo.SubscriptionsVO;
|
|
|
|
|
|
+import cn.kdan.cloud.pdf.office.api.payment.vo.*;
|
|
|
|
+import cn.kdan.cloud.pdf.office.api.product.enums.PlatformEnum;
|
|
import cn.kdan.cloud.pdf.office.api.product.feign.ProductApi;
|
|
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.api.product.vo.ProductVO;
|
|
import cn.kdan.cloud.pdf.office.common.utils.MyDateUtils;
|
|
import cn.kdan.cloud.pdf.office.common.utils.MyDateUtils;
|
|
@@ -18,7 +17,6 @@ import cn.kdan.cloud.pdf.office.payment.mapper.SubscriptionsMapper;
|
|
import cn.kdan.cloud.pdf.office.payment.service.OrdersService;
|
|
import cn.kdan.cloud.pdf.office.payment.service.OrdersService;
|
|
import cn.kdan.cloud.pdf.office.payment.service.SubscriptionsService;
|
|
import cn.kdan.cloud.pdf.office.payment.service.SubscriptionsService;
|
|
import cn.kdan.cloud.pdf.office.payment.utils.SubscriptionUtil;
|
|
import cn.kdan.cloud.pdf.office.payment.utils.SubscriptionUtil;
|
|
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
@@ -31,6 +29,7 @@ import org.springframework.beans.BeanUtils;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
|
|
+import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -74,26 +73,24 @@ public class SubscriptionsServiceImpl extends ServiceImpl<SubscriptionsMapper, S
|
|
subscription.setUserId(subscriptionInfo.getUserId());
|
|
subscription.setUserId(subscriptionInfo.getUserId());
|
|
subscription.setStartDate(MyDateUtils.localDateTimeToDate(now));
|
|
subscription.setStartDate(MyDateUtils.localDateTimeToDate(now));
|
|
subscription.setEndDate(MyDateUtils.localDateTimeToDate(endTime));
|
|
subscription.setEndDate(MyDateUtils.localDateTimeToDate(endTime));
|
|
- subscription.setThirdSubscriptionId(subscriptionInfo.getSubscriptionId());
|
|
|
|
|
|
+ subscription.setThirdSubscriptionId(subscriptionInfo.getThirdSubscriptionId());
|
|
subscription.setOrderId(subscriptionInfo.getOrderId());
|
|
subscription.setOrderId(subscriptionInfo.getOrderId());
|
|
|
|
+ subscription.setAppId(subscriptionInfo.getAppId());
|
|
this.baseMapper.insert(subscription);
|
|
this.baseMapper.insert(subscription);
|
|
String subscriptionId = subscription.getId();
|
|
String subscriptionId = subscription.getId();
|
|
// 发送消息
|
|
// 发送消息
|
|
- SubscriptionUtil.subscriptionExpiredSendNews(rabbitTemplate,subscriptionId,endTime);
|
|
|
|
|
|
+ SubscriptionUtil.subscriptionExpiredSendNews(rabbitTemplate, subscriptionId, endTime);
|
|
return subscriptionId;
|
|
return subscriptionId;
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public SubscriptionsVO getSubscriptions(String userId, String productId) {
|
|
|
|
- SubscriptionsVO subscriptionsVO = new SubscriptionsVO();
|
|
|
|
- // 可优化查询字段 添加 <.select>
|
|
|
|
- BeanUtils.copyProperties(this.baseMapper.selectOne(new LambdaQueryWrapper<Subscription>()
|
|
|
|
- .eq(Subscription::getUserId, userId)
|
|
|
|
- .eq(Subscription::getProductId, productId)
|
|
|
|
- .eq(Subscription::getStatus, SubscriptionConstant.actived)
|
|
|
|
- .orderByDesc(Subscription::getEndDate)
|
|
|
|
- .last("LIMIT 1")), subscriptionsVO);
|
|
|
|
- return subscriptionsVO;
|
|
|
|
|
|
+ public SubscriptionsVO getSubscriptions(String userId, PlatformEnum platform) {
|
|
|
|
+ return this.baseMapper.selectNewestSubscription(userId, platform.getValue());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public SubscriptionsVO getSubscriptionsByProductId(String userId, String productId) {
|
|
|
|
+ return this.baseMapper.selectNewestSubscriptionByProductId(userId, productId);
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -123,26 +120,50 @@ public class SubscriptionsServiceImpl extends ServiceImpl<SubscriptionsMapper, S
|
|
// 更新paddle的订阅信息
|
|
// 更新paddle的订阅信息
|
|
paddleClient.cancelSubscription(thirdSubscriptionId);
|
|
paddleClient.cancelSubscription(thirdSubscriptionId);
|
|
// 修改订阅状态
|
|
// 修改订阅状态
|
|
- Subscription subscriptions = new Subscription();
|
|
|
|
- subscriptions.setId(chargebackOrderDTO.getSubscriptionId());
|
|
|
|
- subscriptions.setStatus(SubscriptionConstant.refunded);
|
|
|
|
- this.baseMapper.updateById(subscriptions);
|
|
|
|
|
|
+// Subscription subscriptions = new Subscription();
|
|
|
|
+// subscriptions.setId(chargebackOrderDTO.getSubscriptionId());
|
|
|
|
+// subscriptions.setStatus(SubscriptionConstant.refunded);
|
|
|
|
+// this.baseMapper.updateById(subscriptions);
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public SubscriptionSchemeVO getSubscriptionSchemeInfo(String userId, String productId) {
|
|
|
|
|
|
+ public SubscriptionSchemeVO getSubscriptionSchemeInfo(String userId, PlatformEnum platformEnum) {
|
|
// 获取最新订阅信息
|
|
// 获取最新订阅信息
|
|
- SubscriptionsVO subscriptions = this.getSubscriptions(userId, productId);
|
|
|
|
|
|
+ SubscriptionsVO subscriptions = this.getSubscriptions(userId, platformEnum);
|
|
|
|
+ // 获取产品信息
|
|
|
|
+ ProductVO productVO = productApi.getProduct(subscriptions.getProductId()).getResult();
|
|
// 获取该订阅关联的所有订单
|
|
// 获取该订阅关联的所有订单
|
|
String orderId = subscriptions.getOrderId();
|
|
String orderId = subscriptions.getOrderId();
|
|
String thirdTradeNo = ordersService.getOrderById(orderId).getThirdTradeNo();
|
|
String thirdTradeNo = ordersService.getOrderById(orderId).getThirdTradeNo();
|
|
List<OrdersVO> ordersVOS = ordersService.getOrderByTradeNo(thirdTradeNo);
|
|
List<OrdersVO> ordersVOS = ordersService.getOrderByTradeNo(thirdTradeNo);
|
|
SubscriptionSchemeVO subscriptionSchemeVO = new SubscriptionSchemeVO();
|
|
SubscriptionSchemeVO subscriptionSchemeVO = new SubscriptionSchemeVO();
|
|
- subscriptionSchemeVO.setSubscriptionsVO(subscriptions);
|
|
|
|
- subscriptionSchemeVO.setOrdersVOS(ordersVOS);
|
|
|
|
|
|
+ SubscriptionInfoVO build = SubscriptionInfoVO.builder()
|
|
|
|
+ .price(subscriptions.getPrice())
|
|
|
|
+ .endDate(MyDateUtils.dateToLocalDateTime(subscriptions.getEndDate()))
|
|
|
|
+ .paymentMethod(ordersVOS.get(0).getPayment())
|
|
|
|
+ .productName(productVO.getProductName())
|
|
|
|
+ .build();
|
|
|
|
+ List<OrderInfoVO> ordersInfo = new ArrayList<>();
|
|
|
|
+ ordersVOS.forEach(ordersVO -> {
|
|
|
|
+ ordersInfo.add(OrderInfoVO.builder()
|
|
|
|
+ .date(MyDateUtils.dateToLocalDateTime(ordersVO.getCreatedAt()))
|
|
|
|
+ .scheme(productVO.getForPeriod())
|
|
|
|
+ .price(ordersVO.getPrice())
|
|
|
|
+ .platform(productVO.getPlatform())
|
|
|
|
+ .status(ordersVO.getStatus())
|
|
|
|
+ .productName(productVO.getProductName())
|
|
|
|
+ .build());
|
|
|
|
+ });
|
|
|
|
+ subscriptionSchemeVO.setSubscriptionInfo(build);
|
|
|
|
+ subscriptionSchemeVO.setOrdersInfo(ordersInfo);
|
|
return subscriptionSchemeVO;
|
|
return subscriptionSchemeVO;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public SubscriptionsVO getSubscriptionBySubscriptionId(String subscriptionId) {
|
|
|
|
+ return this.baseMapper.selectBySubscriptionId(subscriptionId);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
|
|
/**
|
|
/**
|
|
* 获取订阅结束时间
|
|
* 获取订阅结束时间
|
|
@@ -152,7 +173,7 @@ public class SubscriptionsServiceImpl extends ServiceImpl<SubscriptionsMapper, S
|
|
* @return 结束时间
|
|
* @return 结束时间
|
|
*/
|
|
*/
|
|
private LocalDateTime getEndTime(CreatSubscriptionDTO subscriptionInfo, LocalDateTime originalTime) {
|
|
private LocalDateTime getEndTime(CreatSubscriptionDTO subscriptionInfo, LocalDateTime originalTime) {
|
|
- if (!ObjectUtils.isEmpty(subscriptionInfo.getTermOfValidity())){
|
|
|
|
|
|
+ if (!ObjectUtils.isEmpty(subscriptionInfo.getTermOfValidity())) {
|
|
return MyDateUtils.TimeAddition(originalTime, subscriptionInfo.getTermOfValidity());
|
|
return MyDateUtils.TimeAddition(originalTime, subscriptionInfo.getTermOfValidity());
|
|
}
|
|
}
|
|
ProductVO product = productApi.getProduct(subscriptionInfo.getProductId()).getResult();
|
|
ProductVO product = productApi.getProduct(subscriptionInfo.getProductId()).getResult();
|
|
@@ -169,7 +190,7 @@ public class SubscriptionsServiceImpl extends ServiceImpl<SubscriptionsMapper, S
|
|
*/
|
|
*/
|
|
private LocalDateTime getOriginalTime(CreatSubscriptionDTO subscriptionInfo, LocalDateTime now) {
|
|
private LocalDateTime getOriginalTime(CreatSubscriptionDTO subscriptionInfo, LocalDateTime now) {
|
|
// 通过用户id和产品id获取最新订阅信息
|
|
// 通过用户id和产品id获取最新订阅信息
|
|
- SubscriptionsVO newestSubscriptions = getSubscriptions(subscriptionInfo.getUserId(), subscriptionInfo.getProductId());
|
|
|
|
|
|
+ SubscriptionsVO newestSubscriptions = getSubscriptionsByProductId(subscriptionInfo.getUserId(), subscriptionInfo.getProductId());
|
|
LocalDateTime originalTime;
|
|
LocalDateTime originalTime;
|
|
// 没有订阅数据
|
|
// 没有订阅数据
|
|
if (ObjectUtils.isEmpty(newestSubscriptions)) {
|
|
if (ObjectUtils.isEmpty(newestSubscriptions)) {
|