|
|
@@ -403,6 +403,10 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
goodsId = sku.getGoodsId();
|
|
|
}
|
|
|
GoodsDon goodsDon = goodsDonMapper.selectById(goodsId);
|
|
|
+ //是否是补差价订单
|
|
|
+ if (goodsDon.getType() != null && goodsDon.getType() == 5) {
|
|
|
+ return generateDifferOrderDon(payRequest, goodsDon, sku);
|
|
|
+ }
|
|
|
if (goodsDon == null || !goodsDon.getStatus()) {
|
|
|
throw new BusinessRuntimeException("商品已下架");
|
|
|
}
|
|
|
@@ -734,6 +738,38 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
return orderDon;
|
|
|
}
|
|
|
|
|
|
+ private OrderDon generateDifferOrderDon(OrderPayRequest payRequest, GoodsDon goodsDon, GoodsDonSku sku) {
|
|
|
+ Long userId = payRequest.getUserId();
|
|
|
+ Assert.notNull(userId, "请先登录");
|
|
|
+ Integer selectCount = orderDonMapper.selectCount(Wrappers.lambdaQuery(OrderDon.class)
|
|
|
+ .eq(OrderDon::getUserId, userId)
|
|
|
+ .eq(OrderDon::getSkuId, sku.getId())
|
|
|
+ .eq(OrderDon::getStatus, OrderDon.Status.close));
|
|
|
+ if (selectCount > 0) {
|
|
|
+ throw BusinessRuntimeException.getInstance("您存在待支付的补差价订单");
|
|
|
+ }
|
|
|
+ OrderDon orderDon = new OrderDon();
|
|
|
+ orderDon.setUserId(userId);
|
|
|
+ orderDon.setGoodsId(sku.getGoodsId());
|
|
|
+ orderDon.setSkuId(sku.getId());
|
|
|
+ orderDon.setMoney(sku.getPrice().multiply(BigDecimal.valueOf(payRequest.getNum())));
|
|
|
+ orderDon.setNum(payRequest.getNum());
|
|
|
+ orderDon.setStatus(OrderDon.Status.noPayment);
|
|
|
+ orderDon.setType(OrderDon.Type.getType(payRequest.getType()));
|
|
|
+ orderDon.setIsWebPay(payRequest.getIsWebPay());
|
|
|
+ orderDon.setSource(payRequest.getSource());
|
|
|
+ orderDon.setPayDesc(goodsDon.getPayDesc());
|
|
|
+ orderDon.setPayTitle(goodsDon.getTitle());
|
|
|
+ //存在余额
|
|
|
+ BigDecimal balance = payRequest.getBalance();
|
|
|
+ User user = userMapper.selectById(userId);
|
|
|
+ deductBalancePayOrderMoney(orderDon, balance, user);
|
|
|
+ String donNo = SEQUENCE.nextId().toString();
|
|
|
+ orderDon.setOrderNo(donNo);
|
|
|
+ orderDonMapper.insert(orderDon);
|
|
|
+ return orderDon;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 统一处理订单记录操作
|
|
|
*/
|
|
|
@@ -2702,6 +2738,12 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
*/
|
|
|
public void unifiedHandlerOrderNotify(OrderDon orderDon, GoodsDon goodsDon, GoodsDonSku sku) {
|
|
|
orderDon.setStatus(goodsDon.getType() == 1 && goodsDon.getSecondType() == 2 ? OrderDon.Status.complete : OrderDon.Status.hasPayment);
|
|
|
+ //补差价
|
|
|
+ if (goodsDon.getType() != null && goodsDon.getType() == 5) {
|
|
|
+ orderDon.setStatus(OrderDon.Status.hasPayment);
|
|
|
+ orderDonMapper.updateById(orderDon);
|
|
|
+ return;
|
|
|
+ }
|
|
|
//实物权益优惠订单
|
|
|
if (orderDon.getGoodsId() == 15) {
|
|
|
Integer selectCount = userBenefitsOrderRecordMapper.selectCount(Wrappers.lambdaQuery(UserBenefitsOrderRecord.class)
|