From 8ab95290307d9706e35545f6a6bba5d63550ada1 Mon Sep 17 00:00:00 2001 From: caolin <1149034574@qq.com> Date: Sun, 20 Aug 2023 17:05:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E6=94=AF=E4=BB=98=E4=BC=9A?= =?UTF-8?q?=E5=91=98=E5=85=85=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/PayNoticeLogController.java | 4 + .../service/ITdSysUserMemberService.java | 6 ++ .../service/impl/OrderPayInfoServiceImpl.java | 6 +- .../impl/TdSysUserMemberServiceImpl.java | 76 +++++++++++++++++++ 4 files changed, 90 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/jwl/driver/server/controller/PayNoticeLogController.java b/src/main/java/com/jwl/driver/server/controller/PayNoticeLogController.java index b61a4dd..8e84063 100644 --- a/src/main/java/com/jwl/driver/server/controller/PayNoticeLogController.java +++ b/src/main/java/com/jwl/driver/server/controller/PayNoticeLogController.java @@ -13,6 +13,7 @@ import com.wechat.pay.java.core.notification.NotificationParser; import com.wechat.pay.java.core.notification.RequestParam; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpRequest; import org.springframework.web.bind.annotation.PostMapping; @@ -36,6 +37,7 @@ import javax.annotation.Resource; @Api(tags = "支付回调") @Controller @RequestMapping("/payNoticeLog") +@Slf4j public class PayNoticeLogController { @Resource private WechatPayConfig wechatPayConfig; @@ -62,6 +64,7 @@ public class PayNoticeLogController { @RequestHeader("Wechatpay-Timestamp") String timstamp, @RequestHeader("Wechatpay-Nonce") String nonce, @RequestBody String requestBody){ + log.info("支付回调信息==============》{}",requestBody); NotificationConfig config = new RSAAutoCertificateConfig.Builder() .merchantId(wechatPayConfig.getMchId()) .privateKeyFromPath(wechatPayConfig.getPrivateKeyPath()) @@ -94,6 +97,7 @@ public class PayNoticeLogController { //1.订单详情表里修改数据 payInfoService.payNotice(Long.parseLong(outTradeNo),Boolean.FALSE); //2.冲会员 + userMemberService.purchaseMember(Long.parseLong(outTradeNo)); }else{ //还是各种业务逻辑 diff --git a/src/main/java/com/jwl/driver/server/service/ITdSysUserMemberService.java b/src/main/java/com/jwl/driver/server/service/ITdSysUserMemberService.java index f7029dc..6a4e3d4 100644 --- a/src/main/java/com/jwl/driver/server/service/ITdSysUserMemberService.java +++ b/src/main/java/com/jwl/driver/server/service/ITdSysUserMemberService.java @@ -13,4 +13,10 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface ITdSysUserMemberService extends IService { + /** + * 慧眼充值 + * @param payId + * @return + */ + Boolean purchaseMember(Long payId); } diff --git a/src/main/java/com/jwl/driver/server/service/impl/OrderPayInfoServiceImpl.java b/src/main/java/com/jwl/driver/server/service/impl/OrderPayInfoServiceImpl.java index 297cbbd..3626902 100644 --- a/src/main/java/com/jwl/driver/server/service/impl/OrderPayInfoServiceImpl.java +++ b/src/main/java/com/jwl/driver/server/service/impl/OrderPayInfoServiceImpl.java @@ -77,13 +77,15 @@ public class OrderPayInfoServiceImpl extends ServiceImpl payId{} , payResult{}",payId,payResult); OrderPayInfo orderPayInfo = this.getById(payId); if (Objects.isNull(orderPayInfo)){ throw new BusinessException("订单信息不存在"); } + orderPayInfo.setPayStatus(payResult?PayStatus.SUCCESS.getValue() : PayStatus.FAIL.getValue()) + .setUpdateTime(LocalDateTime.now()); - + this.updateById(orderPayInfo); return Boolean.TRUE; } } diff --git a/src/main/java/com/jwl/driver/server/service/impl/TdSysUserMemberServiceImpl.java b/src/main/java/com/jwl/driver/server/service/impl/TdSysUserMemberServiceImpl.java index b9c01eb..2332e03 100644 --- a/src/main/java/com/jwl/driver/server/service/impl/TdSysUserMemberServiceImpl.java +++ b/src/main/java/com/jwl/driver/server/service/impl/TdSysUserMemberServiceImpl.java @@ -1,10 +1,25 @@ package com.jwl.driver.server.service.impl; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.jwl.driver.server.entity.OrderPayInfo; +import com.jwl.driver.server.entity.TdMember; import com.jwl.driver.server.entity.TdSysUserMember; +import com.jwl.driver.server.exception.BusinessException; import com.jwl.driver.server.mapper.TdSysUserMemberMapper; +import com.jwl.driver.server.service.IOrderPayInfoService; +import com.jwl.driver.server.service.ITdMemberService; import com.jwl.driver.server.service.ITdSysUserMemberService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jwl.driver.server.service.ITdSysUserService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.util.Objects; /** *

@@ -17,4 +32,65 @@ import org.springframework.stereotype.Service; @Service public class TdSysUserMemberServiceImpl extends ServiceImpl implements ITdSysUserMemberService { + @Autowired + private IOrderPayInfoService payInfoService; + + @Autowired + private ITdMemberService memberService; + + @Autowired + private ITdSysUserMemberService userMemberService; + + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean purchaseMember(Long payId) { + final LocalDateTime nowTime = LocalDateTime.now(); + + OrderPayInfo payInfo = payInfoService.getById(payId); + if (Objects.isNull(payInfo)){ + throw new BusinessException("订单信息不存在"); + } + final Long userId = payInfo.getUserId(); + final Integer memberId = payInfo.getMemberId(); + // 查询会员 不管有效无效 + TdMember member = memberService.getById(memberId); + if (Objects.isNull(member)){ + throw new BusinessException("购买的会员不存在"); + } + //查看该用户是否存在有效会员 + LambdaQueryWrapper cond = new LambdaQueryWrapper() + .eq(TdSysUserMember::getUserId,userId) + .eq(TdSysUserMember::getMemberId,memberId) + .gt(TdSysUserMember::getEndDate, nowTime); + + TdSysUserMember userMember = this.getOne(cond); + //如果用户没购买该会员 或者该会员已过期就新建一个会员 + if (Objects.isNull(userMember)){ + userMember = new TdSysUserMember() + .setMemberId(memberId) + .setUserId(userId) + .setCreateTime(nowTime) + .setUpdateTime(nowTime) + .setStartDate(LocalDateTime.of(LocalDate.now(), LocalTime.MIN)) + .setEndDate(LocalDateTime.of(LocalDate.now(), LocalTime.MIN).minusSeconds(1)); + boolean save = this.save(userMember); + if (!save){ + throw new BusinessException("充值会员失败"); + } + } + LocalDateTime endTime = userMember.getEndDate(); + if (StrUtil.equals(member.getUnit(),"1")){ + endTime = endTime.plusDays(member.getDuration()); + }else if (StrUtil.equals(member.getUnit(),"2")){ + endTime = endTime.plusMonths(member.getDuration()); + } else if (StrUtil.equals(member.getUnit(),"3")) { + endTime = endTime.plusYears(member.getDuration()); + } + userMember.setEndDate(endTime); + boolean update = this.update(userMember, cond); + if (!update){ + throw new BusinessException("会员充值失败"); + } + return Boolean.TRUE; + } }