使用优惠券处理
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
//开通book,start
|
||||
|
||||
Reference in New Issue
Block a user