Browse Source

创建订单设置币种,付费用户过滤ai,取消订阅回调处理

Bob 4 months ago
parent
commit
15888dc749

+ 3 - 0
pdf-office-payment/src/main/java/cn/kdan/cloud/pdf/office/payment/service/impl/OrderServiceImpl.java

@@ -225,8 +225,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         // 记录原价和实际付款价
         if (createUserOrderDTO.getPaymentMethod().equals(PaymentMethodEnum.PAYPAL.getValue()) || createUserOrderDTO.getPaymentMethod().equals(PaymentMethodEnum.PADDLE.getValue())) {
             order.setPrice(productVO.getPrice());
+            order.setCurrency("USD");
         } else {
             order.setPrice(productVO.getCnyPrice());
+            order.setCurrency("CNY");
         }
         order.setReducedPrice(createUserOrderDTO.getPrice());
         order.setPayment(createUserOrderDTO.getPaymentMethod());
@@ -362,6 +364,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         order.setTradeNo(readeNo);
         // 订阅目前只支持美元
         order.setPrice(productVO.getPrice());
+        order.setCurrency("USD");
         if(ObjectUtils.isNotEmpty(createUserOrderDTO.getDiscountFlag()) && createUserOrderDTO.getDiscountFlag()!=0 && !createUserOrderDTO.getPrice().equals(productVO.getPrice())){
             order.setReducedPrice(createUserOrderDTO.getPrice());
         }

+ 10 - 5
pdf-office-payment/src/main/java/cn/kdan/cloud/pdf/office/payment/service/impl/PayCenterWebhookServiceImpl.java

@@ -14,6 +14,7 @@ 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.EmailCodeTypeEnum;
 import cn.kdan.cloud.pdf.office.common.enums.account.AccountTypeEnum;
+import cn.kdan.cloud.pdf.office.common.enums.account.PDFOfficeUserSubscriptionPayTypeEnum;
 import cn.kdan.cloud.pdf.office.common.enums.account.PDFOfficeUserSubscriptionStatusEnum;
 import cn.kdan.cloud.pdf.office.common.utils.CommonUtils;
 import cn.kdan.cloud.pdf.office.common.utils.MyDateUtils;
@@ -259,13 +260,14 @@ public class PayCenterWebhookServiceImpl implements PayCenterWebhookService {
                                 userSubscriptionInfo.setProductId(ordersVO.getProductId());
                                 UserVO userVO = new UserVO();
                                 userVO.setId(ordersVO.getUserId());
-                                userVO.setAccountType(AccountTypeEnum.PAID_ACCOUNT.value());
                                 if(productVO.getPlatform()==3){
                                     //如果是ai还要加ai点数
                                     userSubscriptionInfo.setPoint(userSubscriptionInfo.getPoint()+Integer.valueOf(productVO.getPoints()));
                                     if(productVO.getCode().contains("trail")){
                                         userVO.setCanAccessAi("0");
                                     }
+                                } else {
+                                    userVO.setAccountType(AccountTypeEnum.PAID_ACCOUNT.value());
                                 }
                                 userApi.updateUser(userVO);
                                 userSubscriptionInfoApi.update(userSubscriptionInfo);
@@ -305,13 +307,14 @@ public class PayCenterWebhookServiceImpl implements PayCenterWebhookService {
                             }
                             UserVO userVO = new UserVO();
                             userVO.setId(ordersVO.getUserId());
-                            userVO.setAccountType(AccountTypeEnum.PAID_ACCOUNT.value());
                             if(productVO.getPlatform()==3){
                                 //如果是ai还要加ai点数
                                 userSubscriptionInfo.setPoint(Integer.valueOf(productVO.getPoints()));
                                 if(productVO.getCode().contains("trail")){
                                     userVO.setCanAccessAi("0");
                                 }
+                            } else {
+                                userVO.setAccountType(AccountTypeEnum.PAID_ACCOUNT.value());
                             }
                             userApi.updateUser(userVO);
                             userSubscriptionInfoApi.insert(userSubscriptionInfo);
@@ -441,6 +444,7 @@ public class PayCenterWebhookServiceImpl implements PayCenterWebhookService {
                     break;
                 case "5":
                     // 取消订阅,更新subscription
+                    log.info("用户取消订阅,更新subscription,thirdTradeId:{}", thirdTradeId);
                     // 通过thirdTradeId更新subscription
                     Subscription serviceOne1 = subscriptionsService.getOne(new LambdaQueryWrapper<Subscription>().eq(Subscription::getThirdSubscriptionId, thirdTradeId));
                     serviceOne1.setSubscriptionType(0);
@@ -449,17 +453,18 @@ public class PayCenterWebhookServiceImpl implements PayCenterWebhookService {
                     UserSubscriptionInfo userSubscriptionInfo2 = new UserSubscriptionInfo();
                     // 查询用户订阅的信息
                     List<UserSubscriptionInfoVO> collect1 = subscriptionInfoList.stream().filter(userSubscriptionInfoVO -> userSubscriptionInfoVO.getPlatform().equals(productVO.getPlatform())).collect(Collectors.toList());
-                    if (CollectionUtils.isNotEmpty(collect1)) {
+                    if (CollectionUtils.isEmpty(collect1)) {
                         log.error("订阅取消,用户订阅信息异常,thirdTradeId:{}", thirdTradeId);
                         break;
                     }
+                    log.info("用户取消订阅信息:{}", collect1.get(0));
                     BeanUtil.copyProperties(collect1.get(0), userSubscriptionInfo2);
-                    userSubscriptionInfo2.setEndDate(new Date(nextBillingTime));
+                    userSubscriptionInfo2.setPayType(PDFOfficeUserSubscriptionPayTypeEnum.NON_AUTO_SUBSCRIPTION.value());
                     userSubscriptionInfoApi.update(userSubscriptionInfo2);
                     break;
             }
         } catch (Exception e) {
-            log.error("获取分布式锁异常,{}", e.getMessage());
+            log.error("获取分布式锁异常,{}", e.getStackTrace());
             return false;
         } finally {
             if (rLock.isLocked() && rLock.isHeldByCurrentThread()) {