From 94f34a5cf9ab374afbaefd566bc0a3dc8a4616dd Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期六, 25 十一月 2023 11:14:37 +0800
Subject: [PATCH] 同步

---
 cloud-server-account/src/main/java/com/dsh/account/service/impl/VipPaymentServiceImpl.java |   52 ++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 36 insertions(+), 16 deletions(-)

diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/VipPaymentServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/VipPaymentServiceImpl.java
index acf9f66..a1b9533 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/VipPaymentServiceImpl.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/VipPaymentServiceImpl.java
@@ -1,19 +1,24 @@
 package com.dsh.account.service.impl;
 
+import com.alibaba.fastjson.JSON;
+import com.alipay.api.response.AlipayTradeQueryResponse;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.dsh.account.entity.TAppUser;
 import com.dsh.account.entity.VipPayment;
+import com.dsh.account.feignclient.activity.UserConponClient;
 import com.dsh.account.mapper.VipPaymentMapper;
 import com.dsh.account.model.IncomeQuery;
 import com.dsh.account.service.IVipPaymentService;
 import com.dsh.account.service.TAppUserService;
 import com.dsh.account.util.PayMoneyUtil;
+import com.dsh.account.util.RedisUtil;
 import com.dsh.account.util.ResultUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
+import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.util.Calendar;
 import java.util.Date;
@@ -33,6 +38,11 @@
     @Autowired
     private PayMoneyUtil payMoneyUtil;
 
+    @Resource
+    private UserConponClient userConponClient;
+
+    @Autowired
+    private RedisUtil redisUtil;
 
 
     /**
@@ -82,10 +92,9 @@
                             int min = 5000;
                             wait += (min * num);
                             VipPayment vipPayment1 = VipPaymentServiceImpl.this.getOne(new QueryWrapper<VipPayment>().eq("code", code));
-                            if(vipPayment1.getPayStatus() != 1){
+                            if(vipPayment1.getPayStatus() == 2){
                                 return;
                             }
-
                             /**
                              * SUCCESS--支付成功
                              * REFUND--转入退款
@@ -112,7 +121,6 @@
                                     vipPayment1.setPayTime(new Date());
                                     vipPayment1.setOrderNumber(transaction_id);
                                     VipPaymentServiceImpl.this.updateById(vipPayment1);
-
                                     TAppUser appUser = appUserService.getById(vipPayment1.getAppUserId());
                                     Date vipEndTime = appUser.getVipEndTime();
                                     if(null == vipEndTime){
@@ -124,6 +132,9 @@
                                     appUser.setIsVip(1);
                                     appUser.setVipEndTime(calendar.getTime());
                                     appUserService.updateById(appUser);
+                                    // 注册会员送券 先判断是否有注册送券类型的优惠券 判断优惠券状态 审核是否通过 是否删除 是否在有效期内 是否领取数量达上限
+                                    List<Long> longs = userConponClient.queryCouponByUser(appUser.getId());
+                                    redisUtil.setStrValue("VIP_P_" + vipPayment1.getAppUserId(), JSON.toJSONString(longs), 3600);
                                     return;
                                 }
                                 if("USERPAYING".equals(trade_state) || "ACCEPT".equals(trade_state)){
@@ -157,7 +168,7 @@
      */
     public ResultUtil alipay(VipPayment vipPayment) throws Exception{
         String code = vipPayment.getCode();
-        ResultUtil alipay = payMoneyUtil.alipay("购买年度会员", "购买年度会员", "", code, vipPayment.getAmount().toString(),
+        ResultUtil alipay = payMoneyUtil.alipay("购买年度会员", "购买年度会员", vipPayment.getAppUserId()+"", code, vipPayment.getAmount().toString(),
                 "/base/appUser/addVipPaymentAliCallback");
         if(alipay.getCode() == 200){
             new Thread(new Runnable() {
@@ -181,11 +192,16 @@
                              * TRADE_SUCCESS(交易支付成功)、
                              * TRADE_FINISHED(交易结束,不可退款)
                              */
-                            ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryALIOrder(code);
-                            if(resultUtil.getCode() == 200){
-                                Map<String, String> map = resultUtil.getData();
-                                String tradeStatus = map.get("tradeStatus");
-                                String tradeNo = map.get("tradeNo");
+                            AlipayTradeQueryResponse resultUtil = payMoneyUtil.queryALIOrder(code);
+
+                            if(resultUtil.getCode().equals("10000")){
+//                                Map<String, String> map = resultUtil.getData();
+//                                String tradeStatus = map.get("tradeStatus");
+//                                String tradeNo = map.get("tradeNo");
+
+                                String tradeNo = resultUtil.getTradeNo();
+                                String tradeStatus = resultUtil.getTradeStatus();
+                                System.out.println("ssssss"+tradeStatus);
                                 if("TRADE_CLOSED".equals(tradeStatus) || "TRADE_FINISHED".equals(tradeStatus)){
                                     vipPayment1.setState(3);
                                     VipPaymentServiceImpl.this.updateById(vipPayment1);
@@ -199,6 +215,7 @@
 
                                     TAppUser appUser = appUserService.getById(vipPayment1.getAppUserId());
                                     Date vipEndTime = appUser.getVipEndTime();
+                                    appUser.setIsVip(1);
                                     if(null == vipEndTime){
                                         vipEndTime = new Date();
                                     }
@@ -207,6 +224,9 @@
                                     calendar.set(Calendar.YEAR, calendar.get(Calendar.YEAR) + 1);
                                     appUser.setVipEndTime(calendar.getTime());
                                     appUserService.updateById(appUser);
+                                    // 注册会员送券 先判断是否有注册送券类型的优惠券 判断优惠券状态 审核是否通过 是否删除 是否在有效期内 是否领取数量达上限
+                                    List<Long> longs = userConponClient.queryCouponByUser(appUser.getId());
+                                    redisUtil.setStrValue("VIP_P_" + vipPayment1.getAppUserId(), JSON.toJSONString(longs), 3600);
                                     return;
                                 }
                                 if("WAIT_BUYER_PAY".equals(tradeStatus)){
@@ -233,6 +253,7 @@
 
 
 
+
     /**
      * 购买年度会员支付回调处理
      * @param code
@@ -240,9 +261,9 @@
      * @throws Exception
      */
     @Override
-    public ResultUtil addVipPaymentCallback(String code, String orderNumber) throws Exception {
+    public synchronized ResultUtil addVipPaymentCallback(String code, String orderNumber) throws Exception {
         VipPayment vipPayment1 = VipPaymentServiceImpl.this.getOne(new QueryWrapper<VipPayment>().eq("code", code));
-        if(vipPayment1.getPayStatus() != 1){
+        if(vipPayment1.getPayStatus() == 2){
             return ResultUtil.success();
         }
         vipPayment1.setPayStatus(2);
@@ -251,15 +272,14 @@
         VipPaymentServiceImpl.this.updateById(vipPayment1);
 
         TAppUser appUser = appUserService.getById(vipPayment1.getAppUserId());
-        Date vipEndTime = appUser.getVipEndTime();
-        if(null == vipEndTime){
-            vipEndTime = new Date();
-        }
         Calendar calendar = Calendar.getInstance();
-        calendar.setTime(vipEndTime);
+        calendar.setTime(new Date());
         calendar.set(Calendar.YEAR, calendar.get(Calendar.YEAR) + 1);
         appUser.setVipEndTime(calendar.getTime());
         appUserService.updateById(appUser);
+        // 注册会员送券 先判断是否有注册送券类型的优惠券 判断优惠券状态 审核是否通过 是否删除 是否在有效期内 是否领取数量达上限
+        List<Long> longs = userConponClient.queryCouponByUser(appUser.getId());
+        redisUtil.setStrValue("VIP_P_" + vipPayment1.getAppUserId(), JSON.toJSONString(longs), 3600);
         return ResultUtil.success();
     }
 

--
Gitblit v1.7.1