Blumonilr 6 лет назад
Родитель
Сommit
98e8961dae

+ 1 - 1
src/main/java/com/nju/edu/pay/controller/api/AlipayController.java

@@ -51,7 +51,7 @@ public class AlipayController {
     public Response pay(@RequestBody PayModelDTO payModelDTO) throws AlipayApiException, IOException {
         Order order=orderService.createOrder(payModelDTO.getUserId(),payModelDTO.getProductId(),payModelDTO.getPlatformType(),payModelDTO.getPrice());
         if (order==null)
-            return new ErrorResponse(500,"订单创建失败");
+            return new ErrorResponse(500,"存在重复订单,订单创建失败");
         // 订单模型
         String productCode = "FAST_INSTANT_TRADE_PAY";
         AlipayTradePagePayModel model = new AlipayTradePagePayModel();

+ 2 - 0
src/main/java/com/nju/edu/pay/data/dao/OrderRepository.java

@@ -1,6 +1,7 @@
 package com.nju.edu.pay.data.dao;
 
 import com.nju.edu.pay.data.entity.Order;
+import com.nju.edu.pay.util.enums.PlatformType;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Repository;
@@ -8,4 +9,5 @@ import org.springframework.stereotype.Repository;
 @Component
 public interface OrderRepository extends JpaRepository<Order,Integer> {
     public Order findByOutTradeNo(int outTradeNo);
+    public Order findByUserIdAndProductIdAndPlatformType(int userId, int productId, PlatformType platformType);
 }

+ 7 - 2
src/main/java/com/nju/edu/pay/service/impl/OrderServiceImpl.java

@@ -19,13 +19,18 @@ public class OrderServiceImpl implements OrderService {
 
     @Override
     public Order createOrder(int userId, int productId, PlatformType platformType, double price) {
+        Order existOrder=orderRepository.findByUserIdAndProductIdAndPlatformType(userId,productId,platformType);
+        if (existOrder !=null)
+            return null;
         Order order=new Order(price,platformType,userId,productId, OrderStatus.PROCESSING, LocalDateTime.now());
-        Order newOrder=orderRepository.saveAndFlush(order);
-        return newOrder;
+        order=orderRepository.saveAndFlush(order);
+        return order;
     }
 
     @Override
     public boolean hasOrder(int userId, int productId, PlatformType platformType) {
+        if (orderRepository.findByUserIdAndProductIdAndPlatformType(userId,productId,platformType) !=null)
+            return true;
         return false;
     }