Parcourir la source

补差价平台

zoujiajian il y a 1 an
Parent
commit
c02d3e2e41

+ 1 - 1
netflix-dao/src/main/java/com/cyksj/model/entity/GoodsDon.java

@@ -75,7 +75,7 @@ public class GoodsDon extends BaseEntity {
     private String remark;
 
     /**
-     * 1.虚拟,2.实物,3.潮玩,4.租赁
+     * 1.虚拟,2.实物,3.潮玩,4.租赁,5.补差价
      */
     private Integer type;
 

+ 42 - 0
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -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)