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