微信支付会员充值
parent
aeae6d9d8e
commit
8ab9529030
|
@ -13,6 +13,7 @@ import com.wechat.pay.java.core.notification.NotificationParser;
|
||||||
import com.wechat.pay.java.core.notification.RequestParam;
|
import com.wechat.pay.java.core.notification.RequestParam;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.http.HttpRequest;
|
import org.springframework.http.HttpRequest;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
@ -36,6 +37,7 @@ import javax.annotation.Resource;
|
||||||
@Api(tags = "支付回调")
|
@Api(tags = "支付回调")
|
||||||
@Controller
|
@Controller
|
||||||
@RequestMapping("/payNoticeLog")
|
@RequestMapping("/payNoticeLog")
|
||||||
|
@Slf4j
|
||||||
public class PayNoticeLogController {
|
public class PayNoticeLogController {
|
||||||
@Resource
|
@Resource
|
||||||
private WechatPayConfig wechatPayConfig;
|
private WechatPayConfig wechatPayConfig;
|
||||||
|
@ -62,6 +64,7 @@ public class PayNoticeLogController {
|
||||||
@RequestHeader("Wechatpay-Timestamp") String timstamp,
|
@RequestHeader("Wechatpay-Timestamp") String timstamp,
|
||||||
@RequestHeader("Wechatpay-Nonce") String nonce,
|
@RequestHeader("Wechatpay-Nonce") String nonce,
|
||||||
@RequestBody String requestBody){
|
@RequestBody String requestBody){
|
||||||
|
log.info("支付回调信息==============》{}",requestBody);
|
||||||
NotificationConfig config = new RSAAutoCertificateConfig.Builder()
|
NotificationConfig config = new RSAAutoCertificateConfig.Builder()
|
||||||
.merchantId(wechatPayConfig.getMchId())
|
.merchantId(wechatPayConfig.getMchId())
|
||||||
.privateKeyFromPath(wechatPayConfig.getPrivateKeyPath())
|
.privateKeyFromPath(wechatPayConfig.getPrivateKeyPath())
|
||||||
|
@ -94,6 +97,7 @@ public class PayNoticeLogController {
|
||||||
//1.订单详情表里修改数据
|
//1.订单详情表里修改数据
|
||||||
payInfoService.payNotice(Long.parseLong(outTradeNo),Boolean.FALSE);
|
payInfoService.payNotice(Long.parseLong(outTradeNo),Boolean.FALSE);
|
||||||
//2.冲会员
|
//2.冲会员
|
||||||
|
userMemberService.purchaseMember(Long.parseLong(outTradeNo));
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
//还是各种业务逻辑
|
//还是各种业务逻辑
|
||||||
|
|
|
@ -13,4 +13,10 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
*/
|
*/
|
||||||
public interface ITdSysUserMemberService extends IService<TdSysUserMember> {
|
public interface ITdSysUserMemberService extends IService<TdSysUserMember> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 慧眼充值
|
||||||
|
* @param payId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
Boolean purchaseMember(Long payId);
|
||||||
}
|
}
|
||||||
|
|
|
@ -77,13 +77,15 @@ public class OrderPayInfoServiceImpl extends ServiceImpl<OrderPayInfoMapper, Ord
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public Boolean payNotice(Long payId, Boolean payResult) {
|
public Boolean payNotice(Long payId, Boolean payResult) {
|
||||||
|
log.info("支付回调信息===============> payId{} , payResult{}",payId,payResult);
|
||||||
OrderPayInfo orderPayInfo = this.getById(payId);
|
OrderPayInfo orderPayInfo = this.getById(payId);
|
||||||
if (Objects.isNull(orderPayInfo)){
|
if (Objects.isNull(orderPayInfo)){
|
||||||
throw new BusinessException("订单信息不存在");
|
throw new BusinessException("订单信息不存在");
|
||||||
}
|
}
|
||||||
|
orderPayInfo.setPayStatus(payResult?PayStatus.SUCCESS.getValue() : PayStatus.FAIL.getValue())
|
||||||
|
.setUpdateTime(LocalDateTime.now());
|
||||||
|
|
||||||
|
this.updateById(orderPayInfo);
|
||||||
return Boolean.TRUE;
|
return Boolean.TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,25 @@
|
||||||
package com.jwl.driver.server.service.impl;
|
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.entity.TdSysUserMember;
|
||||||
|
import com.jwl.driver.server.exception.BusinessException;
|
||||||
import com.jwl.driver.server.mapper.TdSysUserMemberMapper;
|
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.jwl.driver.server.service.ITdSysUserMemberService;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
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.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.LocalTime;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
|
@ -17,4 +32,65 @@ import org.springframework.stereotype.Service;
|
||||||
@Service
|
@Service
|
||||||
public class TdSysUserMemberServiceImpl extends ServiceImpl<TdSysUserMemberMapper, TdSysUserMember> implements ITdSysUserMemberService {
|
public class TdSysUserMemberServiceImpl extends ServiceImpl<TdSysUserMemberMapper, TdSysUserMember> 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<TdSysUserMember> cond = new LambdaQueryWrapper<TdSysUserMember>()
|
||||||
|
.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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue