tangxiangan il y a 4 mois
Parent
commit
69d4279cae

+ 1 - 1
pdf-office-account/src/main/java/cn/kdan/cloud/pdf/office/account/service/impl/UserServiceImpl.java

@@ -143,7 +143,7 @@ public class UserServiceImpl implements UserService {
         //通过用户可以查到对应的app
         user.setUpdatedAt(new Date());
         //账号类型 付费账号1 免费账号0 AccountTypeEnum
-        if(ObjectUtils.isEmpty(updateUserForOrderDTO.getAccountType())){
+        if(!ObjectUtils.isEmpty(updateUserForOrderDTO.getAccountType())){
             user.setAccountType(updateUserForOrderDTO.getAccountType().value());
         }else {
             user.setAccountType(AccountTypeEnum.PAID_ACCOUNT.value());

+ 54 - 2
pdf-office-payment/src/main/java/cn/kdan/cloud/pdf/office/payment/service/impl/AppStoreServiceImpl.java

@@ -2,6 +2,7 @@ package cn.kdan.cloud.pdf.office.payment.service.impl;
 
 import cn.kdan.cloud.pdf.office.api.account.feign.UserApi;
 import cn.kdan.cloud.pdf.office.api.account.feign.UserSubscriptionInfoApi;
+import cn.kdan.cloud.pdf.office.api.email.bo.EmailSendBO;
 import cn.kdan.cloud.pdf.office.api.email.feign.EmailApi;
 import cn.kdan.cloud.pdf.office.api.payment.appstore.AppTransaction;
 import cn.kdan.cloud.pdf.office.api.payment.constant.AppStoreAPIConstant;
@@ -10,6 +11,7 @@ import cn.kdan.cloud.pdf.office.api.payment.enums.PaymentMethodEnum;
 import cn.kdan.cloud.pdf.office.api.payment.vo.OrdersVO;
 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.ExceptionEnum;
 import cn.kdan.cloud.pdf.office.common.enums.payment.SubscriptionTypeEnum;
 import cn.kdan.cloud.pdf.office.common.exception.BackendRuntimeException;
@@ -22,6 +24,7 @@ import cn.kdan.cloud.pdf.office.payment.service.AppStoreService;
 import cn.kdan.cloud.pdf.office.payment.service.OrderService;
 import cn.kdan.cloud.pdf.office.payment.service.RestorePurchaseLogsService;
 import cn.kdan.cloud.pdf.office.payment.service.SubscriptionsService;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -29,6 +32,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
 import java.util.*;
 
 /**
@@ -123,13 +127,61 @@ public class AppStoreServiceImpl implements AppStoreService {
                     .result(appTransaction.toString())
                     .build();
         orderService.createOrderManual(orderManualDTO);
-
+        sendBuyEmail(product, userVO);
         UserInfoVO result = userApi.getInfoById(equityVerificationDTO.getUserId()).getResult();
         result.setDigestPassword(null);
         return result;
     }
 
-
+    private void sendBuyEmail(ProductVO product, UserVO userVO) {
+        if(product.getCode().contains("upgrade")){
+            EmailSendBO bo = new EmailSendBO();
+            bo.setToEmail(userVO.getEmail());
+            //设置事件
+            bo.setUseEvent(EmailCodeTypeEnum.MEMBER_UPGRADE_SUCCESS.value());
+            //设置title
+            Map<String,String> titleMap = new HashMap<>();
+            //设置内容
+            Map<String,String> contentMap = new HashMap<>();
+            contentMap.put("@plan@", product.getProductName());
+            Date date = new Date();
+            // 创建 SimpleDateFormat 对象,指定日期格式
+            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
+            // 格式化当前日期
+            String formattedDate = sdf.format(date);
+            contentMap.put("@date@",formattedDate);
+            String price = ObjectUtils.isNotEmpty(product.getDisplayPrice())? product.getDisplayPrice().toString() : product.getPrice().toString();
+
+            contentMap.put("@payPrice@", price);
+            contentMap.put("@renewPrice@", product.getPrice().toString());
+            bo.setSendTitleContent(titleMap);
+            //设置内容
+            bo.setSendContent(contentMap);
+            emailApi.sendEmail(bo);
+        }else{
+            EmailSendBO bo = new EmailSendBO();
+            bo.setToEmail(userVO.getEmail());
+            //设置事件
+            bo.setUseEvent(EmailCodeTypeEnum.MEMBER_BUY_SUCCESS.value());
+            //设置title
+            Map<String,String> titleMap = new HashMap<>();
+            //设置内容
+            Map<String,String> contentMap = new HashMap<>();
+            contentMap.put("@plan@", product.getProductName());
+            Date date = new Date();
+            // 创建 SimpleDateFormat 对象,指定日期格式
+            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
+            // 格式化当前日期
+            String formattedDate = sdf.format(date);
+            contentMap.put("@date@",formattedDate);
+            String price = ObjectUtils.isNotEmpty(product.getDisplayPrice())? product.getDisplayPrice().toString() : product.getPrice().toString();
+            contentMap.put("@payPrice@", price);
+            bo.setSendTitleContent(titleMap);
+            //设置内容
+            bo.setSendContent(contentMap);
+            emailApi.sendEmail(bo);
+        }
+    }
 
     /**
      * 票据验证

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

@@ -221,6 +221,7 @@ public class GooglePayServiceImpl implements GooglePayService {
         OrdersVO ordersVO = orderService.getOrderByThirdOrderNo(thirdOrderId);
         //如果订单处理过直接返回
         if (ObjectUtils.isNotEmpty(ordersVO) && OrderConstant.COMPLETED.equals(ordersVO.getStatus())) {
+            log.info("谷歌 订阅的续费订单已处理过");
             return;
         }
         List<OrdersVO> orderByTradeNo = orderService.getOrderByTradeNo(thirdTradeNo);

+ 2 - 1
pdf-office-payment/src/main/java/cn/kdan/cloud/pdf/office/payment/service/impl/SubscriptionsServiceImpl.java

@@ -140,6 +140,7 @@ public class SubscriptionsServiceImpl extends ServiceImpl<SubscriptionsMapper, S
         if (ObjectUtils.isNotEmpty(subscriptionInfo.getPaymentModel())){
             subscription.setPaymentModel(subscriptionInfo.getPaymentModel());
         }
+
         this.baseMapper.insert(subscription);
         //  更新 userSubscription
         updateUserSubscriptionStatus(subscription);
@@ -170,7 +171,7 @@ public class SubscriptionsServiceImpl extends ServiceImpl<SubscriptionsMapper, S
             successDTO.setPoint(Integer.valueOf(productVO.getPoints()));
         }
         if(subscription.getPrice().compareTo(BigDecimal.valueOf(0))==0){
-            successDTO.setAccountType(AccountTypeEnum.PAID_ACCOUNT);
+            successDTO.setAccountType(AccountTypeEnum.FREE_ACCOUNT);
         }
         userApi.updateUserForOrder(successDTO);
     }

+ 1 - 1
pdf-office-sso/src/main/java/cn/kdan/cloud/pdf/office/sso/controller/UserController.java

@@ -171,7 +171,7 @@ public class UserController {
                 result.setActiveVIP(vo);
                 vo.setPlatforms(convertToLowerCase(vo.getPlatforms()));
                 if(activeSubscription.getStatus().equals(PDFOfficeUserSubscriptionStatusEnum.SUBSCRIPTION_IN_PROGRESS.value())
-                        &&activeSubscription.getPlatform().equals(2)) {
+                        &&activeSubscription.getPlatform().equals(2)&&activeSubscription.getPayType().equals(PayTypeEnum.AUTO.value())) {
                     PAY_UPDATE_THREAD_POOL.submit(() -> {
                         orderApi.updateStatusPayment(userId, activeSubscription.getProductId());
                     });

+ 3 - 2
pdf-office-sso/src/main/java/cn/kdan/cloud/pdf/office/sso/service/impl/AuthServiceImpl.java

@@ -504,7 +504,7 @@ public class AuthServiceImpl implements AuthService {
                 processInvite(loginParam.getInviteUserId());
             }
             //注册给用户发送邮件
-            sendRegisterEmail();
+            sendRegisterEmail(userVO.getEmail());
             return userVO;
         }
         throw new BackendRuntimeException(ExceptionEnum.EMAIL_REGISTER_ERROR);
@@ -514,7 +514,7 @@ public class AuthServiceImpl implements AuthService {
      * 注册发送邮件
      * @param
      */
-    public void sendRegisterEmail() {
+    public void sendRegisterEmail(String email) {
         EmailSendBO emailSendBO = new EmailSendBO();
         //设置事件
         emailSendBO.setUseEvent(EmailCodeTypeEnum.MEMBER_REGISTER_SUCCESS.value());
@@ -525,6 +525,7 @@ public class AuthServiceImpl implements AuthService {
         emailSendBO.setSendTitleContent(titleMap);
         //设置内容
         emailSendBO.setSendContent(contentMap);
+        emailSendBO.setToEmail(email);
         emailApi.sendEmail(emailSendBO);
     }