From aa925d851857f50eff0556411366690d9a78a0e5 Mon Sep 17 00:00:00 2001
From: 44323 <443237572@qq.com>
Date: 星期一, 27 十一月 2023 17:30:26 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/PlayPai

---
 cloud-server-account/src/main/java/com/dsh/account/service/impl/VipPaymentServiceImpl.java |   89 +++++++++++++++++++++++++-------------------
 1 files changed, 50 insertions(+), 39 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 8d44548..f7b58aa 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,5 +1,6 @@
 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;
@@ -11,11 +12,13 @@
 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;
@@ -35,8 +38,16 @@
     @Autowired
     private PayMoneyUtil payMoneyUtil;
 
+    @Resource
+    private UserConponClient userConponClient;
+
+    @Autowired
+    private RedisUtil redisUtil;
+
+
     /**
      * 购买年度会员
+     *
      * @param uid
      * @return
      * @throws Exception
@@ -51,10 +62,10 @@
         vipPayment.setPayStatus(1);
         vipPayment.setState(1);
         this.baseMapper.insert(vipPayment);
-        if(payType == 1){//微信
+        if (payType == 1) {//微信
             return weixinpay(vipPayment);
         }
-        if(payType == 2){//支付宝
+        if (payType == 2) {//支付宝
             return alipay(vipPayment);
         }
         return ResultUtil.success();
@@ -63,26 +74,27 @@
 
     /**
      * 微信
+     *
      * @param vipPayment
      * @return
      * @throws Exception
      */
-    public ResultUtil weixinpay(VipPayment vipPayment) throws Exception{
+    public ResultUtil weixinpay(VipPayment vipPayment) throws Exception {
         String code = vipPayment.getCode();
         ResultUtil weixinpay = payMoneyUtil.weixinpay("购买年度会员", "", code, vipPayment.getAmount().toString(),
                 "/base/appUser/addVipPaymentWeChatCallback", "APP", "");
-        if(weixinpay.getCode() == 200){
+        if (weixinpay.getCode() == 200) {
             new Thread(new Runnable() {
                 @Override
                 public void run() {
                     try {
                         int num = 1;
                         int wait = 0;
-                        while (num <= 10){
+                        while (num <= 10) {
                             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;
                             }
                             /**
@@ -96,24 +108,24 @@
                              * ACCEPT--已接收,等待扣款
                              */
                             ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryWXOrder(code, "");
-                            if(resultUtil.getCode() == 200){
+                            if (resultUtil.getCode() == 200) {
                                 Map<String, String> map = resultUtil.getData();
                                 String trade_type = map.get("trade_type");
                                 String trade_state = map.get("trade_state");
                                 String transaction_id = map.get("transaction_id");
-                                if("REFUND".equals(trade_state) || "NOTPAY".equals(trade_state) || "CLOSED".equals(trade_state) || "REVOKED".equals(trade_state) || "PAYERROR".equals(trade_state)){
+                                if ("REFUND".equals(trade_state) || "NOTPAY".equals(trade_state) || "CLOSED".equals(trade_state) || "REVOKED".equals(trade_state) || "PAYERROR".equals(trade_state)) {
                                     vipPayment1.setState(3);
                                     VipPaymentServiceImpl.this.updateById(vipPayment1);
                                     return;
                                 }
-                                if("SUCCESS".equals(trade_state)){
+                                if ("SUCCESS".equals(trade_state)) {
                                     vipPayment1.setPayStatus(2);
                                     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){
+                                    if (null == vipEndTime) {
                                         vipEndTime = new Date();
                                     }
                                     Calendar calendar = Calendar.getInstance();
@@ -123,23 +135,24 @@
                                     appUser.setVipEndTime(calendar.getTime());
                                     appUserService.updateById(appUser);
                                     // 注册会员送券 先判断是否有注册送券类型的优惠券 判断优惠券状态 审核是否通过 是否删除 是否在有效期内 是否领取数量达上限
-                                    userConponClient.queryCouponByUser(appUser.getId());
+                                    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)){
+                                if ("USERPAYING".equals(trade_state) || "ACCEPT".equals(trade_state)) {
                                     Thread.sleep(wait);
                                     num++;
                                 }
-                            }else{
+                            } else {
                                 Thread.sleep(wait);
                                 num++;
                             }
-                            if(10 == num){
+                            if (10 == num) {
                                 vipPayment1.setState(3);
                                 VipPaymentServiceImpl.this.updateById(vipPayment1);
                             }
                         }
-                    }catch (Exception e){
+                    } catch (Exception e) {
                         e.printStackTrace();
                     }
                 }
@@ -151,26 +164,27 @@
 
     /**
      * 支付宝
+     *
      * @param vipPayment
      * @return
      * @throws Exception
      */
-    public ResultUtil alipay(VipPayment vipPayment) throws Exception{
+    public ResultUtil alipay(VipPayment vipPayment) throws Exception {
         String code = vipPayment.getCode();
-        ResultUtil alipay = payMoneyUtil.alipay("购买年度会员", "购买年度会员", vipPayment.getAppUserId()+"", code, vipPayment.getAmount().toString(),
+        ResultUtil alipay = payMoneyUtil.alipay("购买年度会员", "购买年度会员", vipPayment.getAppUserId() + "", code, vipPayment.getAmount().toString(),
                 "/base/appUser/addVipPaymentAliCallback");
-        if(alipay.getCode() == 200){
+        if (alipay.getCode() == 200) {
             new Thread(new Runnable() {
                 @Override
                 public void run() {
                     try {
                         int num = 1;
                         int wait = 0;
-                        while (num <= 10){
+                        while (num <= 10) {
                             int min = 5000;
                             wait += (min * num);
                             VipPayment vipPayment1 = VipPaymentServiceImpl.this.getOne(new QueryWrapper<VipPayment>().eq("code", code));
-                            if(vipPayment1.getPayStatus() != 1){
+                            if (vipPayment1.getPayStatus() != 1) {
                                 return;
                             }
 
@@ -183,20 +197,20 @@
                              */
                             AlipayTradeQueryResponse resultUtil = payMoneyUtil.queryALIOrder(code);
 
-                            if(resultUtil.getCode().equals("10000")){
+                            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)){
+                                System.out.println("ssssss" + tradeStatus);
+                                if ("TRADE_CLOSED".equals(tradeStatus) || "TRADE_FINISHED".equals(tradeStatus)) {
                                     vipPayment1.setState(3);
                                     VipPaymentServiceImpl.this.updateById(vipPayment1);
                                     return;
                                 }
-                                if("TRADE_SUCCESS".equals(tradeStatus)){
+                                if ("TRADE_SUCCESS".equals(tradeStatus)) {
                                     vipPayment1.setPayStatus(2);
                                     vipPayment1.setPayTime(new Date());
                                     vipPayment1.setOrderNumber(tradeNo);
@@ -205,7 +219,7 @@
                                     TAppUser appUser = appUserService.getById(vipPayment1.getAppUserId());
                                     Date vipEndTime = appUser.getVipEndTime();
                                     appUser.setIsVip(1);
-                                    if(null == vipEndTime){
+                                    if (null == vipEndTime) {
                                         vipEndTime = new Date();
                                     }
                                     Calendar calendar = Calendar.getInstance();
@@ -214,23 +228,24 @@
                                     appUser.setVipEndTime(calendar.getTime());
                                     appUserService.updateById(appUser);
                                     // 注册会员送券 先判断是否有注册送券类型的优惠券 判断优惠券状态 审核是否通过 是否删除 是否在有效期内 是否领取数量达上限
-                                    userConponClient.queryCouponByUser(appUser.getId());
+                                    List<Long> longs = userConponClient.queryCouponByUser(appUser.getId());
+                                    redisUtil.setStrValue("VIP_P_" + vipPayment1.getAppUserId(), JSON.toJSONString(longs), 3600);
                                     return;
                                 }
-                                if("WAIT_BUYER_PAY".equals(tradeStatus)){
+                                if ("WAIT_BUYER_PAY".equals(tradeStatus)) {
                                     Thread.sleep(wait);
                                     num++;
                                 }
-                            }else{
+                            } else {
                                 Thread.sleep(wait);
                                 num++;
                             }
-                            if(10 == num){
+                            if (10 == num) {
                                 vipPayment1.setState(3);
                                 VipPaymentServiceImpl.this.updateById(vipPayment1);
                             }
                         }
-                    }catch (Exception e){
+                    } catch (Exception e) {
                         e.printStackTrace();
                     }
                 }
@@ -240,11 +255,9 @@
     }
 
 
-
-    @Autowired
-    private UserConponClient userConponClient;
     /**
      * 购买年度会员支付回调处理
+     *
      * @param code
      * @param orderNumber
      * @throws Exception
@@ -252,7 +265,7 @@
     @Override
     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);
@@ -261,16 +274,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(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