微信支付会员充值
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 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{
|
||||
//还是各种业务逻辑
|
||||
|
|
|
@ -13,4 +13,10 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
|||
*/
|
||||
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
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean payNotice(Long payId, Boolean payResult) {
|
||||
|
||||
log.info("支付回调信息===============> 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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
|
@ -17,4 +32,65 @@ import org.springframework.stereotype.Service;
|
|||
@Service
|
||||
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