zoujiajian 1 рік тому
батько
коміт
150ed1bc06

+ 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;
 

+ 47 - 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,43 @@ 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.noPayment));
+		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());
+		orderDon.setRelationId(0l);
+		//存在余额
+		BigDecimal balance = payRequest.getBalance();
+		User user = userMapper.selectById(userId);
+		deductBalancePayOrderMoney(orderDon, balance, user);
+		String donNo = SEQUENCE.nextId().toString();
+		orderDon.setOrderNo(donNo);
+		orderDonMapper.insert(orderDon);
+		if (orderDon.getMoney().compareTo(BigDecimal.ZERO) == 0) {
+			orderDon = orderDonMapper.selectById(orderDon.getId());
+			unifiedHandlerOrderNotify(orderDon, goodsDon, sku);
+		}
+		return orderDon;
+	}
+
 	/**
 	 * 统一处理订单记录操作
 	 */
@@ -2702,6 +2743,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.complete);
+			orderDonMapper.updateById(orderDon);
+			return;
+		}
 		//实物权益优惠订单
 		if (orderDon.getGoodsId() == 15) {
 			Integer selectCount = userBenefitsOrderRecordMapper.selectCount(Wrappers.lambdaQuery(UserBenefitsOrderRecord.class)

+ 3 - 5
netflix-web/src/main/java/com/cyksj/web/controller/payment/OrderController.java

@@ -36,7 +36,6 @@ import com.cyksj.model.views.OrderCommentView;
 import com.cyksj.service.luma.LumaService;
 import com.cyksj.service.midjourney.MidjourneyAccountService;
 import com.cyksj.service.order.OrderDonService;
-import com.cyksj.service.paypal.PayPalClient;
 import com.cyksj.service.paypal.PayPalService;
 import com.cyksj.service.paypal.PaypalPayConfigService;
 import com.cyksj.service.paypal.PaypalV2Service;
@@ -52,8 +51,6 @@ import com.ejlchina.searcher.util.MapUtils;
 import com.google.gson.JsonSyntaxException;
 import com.paypal.api.payments.Links;
 import com.paypal.api.payments.Payment;
-import com.paypal.http.HttpResponse;
-import com.paypal.orders.*;
 import com.stripe.exception.SignatureVerificationException;
 import com.stripe.model.*;
 import com.stripe.model.checkout.Session;
@@ -69,7 +66,6 @@ import javax.annotation.Resource;
 import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.nio.charset.StandardCharsets;
@@ -490,7 +486,9 @@ public class OrderController {
                 }
             }
             if (data.getRelationId() == 0) {
-                data.setWaybill(waybillMapper.selectOne(Wrappers.lambdaQuery(OrderDonWaybill.class).eq(OrderDonWaybill::getOrderId, data.getId()).last("limit 1")));
+                if (data.getGoodsDonType() == null || data.getGoodsDonType() != 5) {
+                    data.setWaybill(waybillMapper.selectOne(Wrappers.lambdaQuery(OrderDonWaybill.class).eq(OrderDonWaybill::getOrderId, data.getId()).last("limit 1")));
+                }
             }
             if (data.getOrderType() == 2) {
                 OrderDonRenewRecord orderDonRenewRecord = orderDonRenewRecordMapper.selectOne(Wrappers.lambdaQuery(OrderDonRenewRecord.class)