|
@@ -1,16 +1,23 @@
|
|
|
package cn.kdan.cloud.pdf.office.payment.service.impl;
|
|
|
|
|
|
+import cn.kdan.cloud.pdf.office.api.account.dto.UpdateUserForPaySuccessDTO;
|
|
|
+import cn.kdan.cloud.pdf.office.api.account.feign.UserApi;
|
|
|
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.CreatSubscriptionDTO;
|
|
|
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.product.feign.ProductApi;
|
|
|
import cn.kdan.cloud.pdf.office.api.product.vo.ProductVO;
|
|
|
+import cn.kdan.cloud.pdf.office.common.enums.status.UserStatusEnum;
|
|
|
import cn.kdan.cloud.pdf.office.common.utils.MyDateUtils;
|
|
|
+import cn.kdan.cloud.pdf.office.common.vo.UserInfoVO;
|
|
|
import cn.kdan.cloud.pdf.office.payment.client.PaddleClient;
|
|
|
import cn.kdan.cloud.pdf.office.payment.entity.Subscription;
|
|
|
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.SubscriptionsService;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
@@ -24,6 +31,7 @@ import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
+import java.util.List;
|
|
|
|
|
|
/**
|
|
|
* @author ComPDFKit-WPH 2023-01-28
|
|
@@ -37,6 +45,10 @@ public class SubscriptionsServiceImpl extends ServiceImpl<SubscriptionsMapper, S
|
|
|
|
|
|
private final PaddleClient paddleClient;
|
|
|
|
|
|
+ private final UserApi userApi;
|
|
|
+
|
|
|
+ private final OrdersService ordersService;
|
|
|
+
|
|
|
@Override
|
|
|
public IPage<Subscription> page(Subscription query) {
|
|
|
return this.page(new Page<>(query.getPage(), query.getSize()), Wrappers.query(query));
|
|
@@ -55,12 +67,13 @@ public class SubscriptionsServiceImpl extends ServiceImpl<SubscriptionsMapper, S
|
|
|
LocalDateTime endTime = getEndTime(subscriptionInfo, originalTime);
|
|
|
// 产生一条最新的订阅信息
|
|
|
Subscription subscription = new Subscription();
|
|
|
- subscription.setProductId(subscriptionInfo.getUserId());
|
|
|
+ subscription.setProductId(subscriptionInfo.getProductId());
|
|
|
subscription.setStatus(SubscriptionConstant.actived);
|
|
|
subscription.setUserId(subscriptionInfo.getUserId());
|
|
|
subscription.setStartDate(MyDateUtils.localDateTimeToDate(now));
|
|
|
subscription.setEndDate(MyDateUtils.localDateTimeToDate(endTime));
|
|
|
subscription.setThirdSubscriptionId(subscriptionInfo.getSubscriptionId());
|
|
|
+ subscription.setOrderId(subscriptionInfo.getOrderId());
|
|
|
this.baseMapper.insert(subscription);
|
|
|
return subscription.getId();
|
|
|
}
|
|
@@ -72,7 +85,7 @@ public class SubscriptionsServiceImpl extends ServiceImpl<SubscriptionsMapper, S
|
|
|
BeanUtils.copyProperties(this.baseMapper.selectOne(new LambdaQueryWrapper<Subscription>()
|
|
|
.eq(Subscription::getUserId, userId)
|
|
|
.eq(Subscription::getProductId, productId)
|
|
|
- .eq(Subscription::getStatus,SubscriptionConstant.actived)
|
|
|
+ .eq(Subscription::getStatus, SubscriptionConstant.actived)
|
|
|
.orderByDesc(Subscription::getEndDate)
|
|
|
.last("LIMIT 1")), subscriptionsVO);
|
|
|
return subscriptionsVO;
|
|
@@ -81,10 +94,23 @@ public class SubscriptionsServiceImpl extends ServiceImpl<SubscriptionsMapper, S
|
|
|
@Override
|
|
|
public String creatSubscriptionManual(CreatSubscriptionManualDTO subscriptionManual) {
|
|
|
CreatSubscriptionDTO creatSubscriptionDTO = new CreatSubscriptionDTO();
|
|
|
- BeanUtils.copyProperties(subscriptionManual,creatSubscriptionDTO);
|
|
|
+ BeanUtils.copyProperties(subscriptionManual, creatSubscriptionDTO);
|
|
|
return this.creatSubscription(creatSubscriptionDTO);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public String giveSubscriptionManual(CreatSubscriptionManualDTO subscriptionManual) {
|
|
|
+ this.creatSubscriptionManual(subscriptionManual);
|
|
|
+ // 修改用户状态
|
|
|
+ // 判断当前用户是否是订阅中
|
|
|
+ UserInfoVO userInfoVO = userApi.getById(subscriptionManual.getUserId()).getResult();
|
|
|
+ // TODO 修改用户状态为试用中
|
|
|
+ String validFlag = userInfoVO.getValidFlag();
|
|
|
+// UpdateUserForPaySuccessDTO successDTO = new UpdateUserForPaySuccessDTO();
|
|
|
+// userApi.updateUserForPaySuccess(null);
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public void chargebackSubscription(ChargebackOrderDTO chargebackOrderDTO) {
|
|
|
Subscription subscription = this.baseMapper.selectById(chargebackOrderDTO.getSubscriptionId());
|
|
@@ -98,11 +124,26 @@ public class SubscriptionsServiceImpl extends ServiceImpl<SubscriptionsMapper, S
|
|
|
this.baseMapper.updateById(subscriptions);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public SubscriptionSchemeVO getSubscriptionSchemeInfo(String userId, String productId) {
|
|
|
+ // 获取最新订阅信息
|
|
|
+ SubscriptionsVO subscriptions = this.getSubscriptions(userId, productId);
|
|
|
+ // 获取该订阅关联的所有订单
|
|
|
+ String orderId = subscriptions.getOrderId();
|
|
|
+ String thirdTradeNo = ordersService.getOrderById(orderId).getThirdTradeNo();
|
|
|
+ List<OrdersVO> ordersVOS = ordersService.getOrderByTradeNo(thirdTradeNo);
|
|
|
+ SubscriptionSchemeVO subscriptionSchemeVO = new SubscriptionSchemeVO();
|
|
|
+ subscriptionSchemeVO.setSubscriptionsVO(subscriptions);
|
|
|
+ subscriptionSchemeVO.setOrdersVOS(ordersVOS);
|
|
|
+ return subscriptionSchemeVO;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 获取订阅结束时间
|
|
|
*
|
|
|
* @param subscriptionInfo subscriptionInfo
|
|
|
- * @param originalTime 开始时间
|
|
|
+ * @param originalTime 开始时间
|
|
|
* @return 结束时间
|
|
|
*/
|
|
|
private LocalDateTime getEndTime(CreatSubscriptionDTO subscriptionInfo, LocalDateTime originalTime) {
|
|
@@ -115,7 +156,7 @@ public class SubscriptionsServiceImpl extends ServiceImpl<SubscriptionsMapper, S
|
|
|
* 获取初始开始时间
|
|
|
*
|
|
|
* @param subscriptionInfo subscriptionInfo
|
|
|
- * @param now now
|
|
|
+ * @param now now
|
|
|
* @return LocalDateTime
|
|
|
*/
|
|
|
private LocalDateTime getOriginalTime(CreatSubscriptionDTO subscriptionInfo, LocalDateTime now) {
|