使用优惠券处理

This commit is contained in:
wuchunlei
2024-11-01 15:59:08 +08:00
parent f31342fb0a
commit b5467bb011
4 changed files with 70 additions and 63 deletions

View File

@@ -10,6 +10,7 @@ import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.peanut.modules.common.dao.*;
import com.peanut.modules.book.service.*;
import com.peanut.modules.common.entity.*;
import com.peanut.modules.common.service.CouponHistoryService;
import com.peanut.modules.common.service.CouponService;
import com.peanut.modules.master.service.UserCourseBuyService;
import com.peanut.modules.pay.refund.entity.PayRefundOrder;
@@ -83,6 +84,8 @@ public class WxpayServiceImpl extends ServiceImpl<PayWechatOrderDao, PayWechatOr
private UserVipDao userVipDao;
@Autowired
private CouponService couponService;
@Autowired
private CouponHistoryService couponHistoryService;
@Override
public void prepay(WechatPaymentInfo paymentInfo){
@@ -144,35 +147,34 @@ public class WxpayServiceImpl extends ServiceImpl<PayWechatOrderDao, PayWechatOr
payWechatOrderService.updateById(payWechatOrderEntity);
// 根据订单号,做幂等处理,并且在对业务数据进行状态检查和处理之前,要采用数据锁进行并发控制,以避免函数重入造成的数据混乱
BuyOrder order = this.buyOrderService.getOne(new QueryWrapper<BuyOrder>().eq("order_sn", orderNo));
//使用优惠券
if (order.getCouponId()!=null&&order.getCouponId()!=0){
CouponHistory couponHistory = couponHistoryService.getById(order.getCouponId());
couponHistory.setOrderId(order.getOrderId());
couponService.useCouponAmount(couponHistory);
}
if("relearn".equals(order.getOrderType())){
BuyOrder orderEntity = buyOrderService.getBaseMapper().selectOne(new QueryWrapper<BuyOrder>()
.eq("order_sn", orderNo));
//更新 订单 记录
buyOrderService.updateOrderStatus(orderEntity.getUserId(),orderNo,"2");
buyOrderService.updateOrderStatus(order.getUserId(),orderNo,"2");
//插入复读记录
userCourseBuyService.addUserCourseBuyRelearn(orderEntity,"微信购买:"+orderEntity.getOrderSn());
userCourseBuyService.addUserCourseBuyRelearn(order,"微信购买:"+order.getOrderSn());
}
if("vip".equals(order.getOrderType())){
BuyOrder orderEntity = buyOrderService.getBaseMapper().selectOne(new QueryWrapper<BuyOrder>().eq("order_sn", orderNo));
//更新 订单 记录
buyOrderService.updateOrderStatus(orderEntity.getUserId(),orderNo,"2");
buyOrderService.updateOrderStatus(order.getUserId(),orderNo,"2");
//处理抵扣积分
if(orderEntity.getJfDeduction().compareTo(BigDecimal.ZERO)>0){
userCoinJf(orderEntity);
if(order.getJfDeduction().compareTo(BigDecimal.ZERO)>0){
userCoinJf(order);
}
//开通vip
openVipForUser(orderEntity);
openVipForUser(order);
}
// 1.根据订单id获取订单信息
if ("order".equals(order.getOrderType())) {
BuyOrder orderEntity = buyOrderService.getBaseMapper().selectOne(new QueryWrapper<BuyOrder>().eq("order_sn", orderNo));
BigDecimal realMoney = orderEntity.getRealMoney();
if(orderEntity.getJfDeduction().compareTo(BigDecimal.ZERO)>0){
userCoinJf(orderEntity);
if(order.getJfDeduction().compareTo(BigDecimal.ZERO)>0){
userCoinJf(order);
}
//开通bookstart