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