Browse Source

余额支付

wangqifan 3 years ago
parent
commit
f278ad5fa4

+ 3 - 0
src/main/java/com/izouma/nineth/security/WebSecurityConfig.java

@@ -167,6 +167,9 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
                 .antMatchers("/metaShowRoomAsset/**").permitAll()
                 .antMatchers("/u951658VPf.txt").permitAll()
                 .antMatchers("/u9s1658vPf.txt").permitAll()
+                .antMatchers("/tradeAuction/all").permitAll()
+                .antMatchers("/tradeAuction/get/**").permitAll()
+                .antMatchers("/tradeAuctionOrder/all").permitAll()
                 // all other requests need to be authenticated
                 .anyRequest().authenticated().and()
                 // make sure we use stateless session; session won't be used to

+ 7 - 1
src/main/java/com/izouma/nineth/service/OrderPayService.java

@@ -711,8 +711,14 @@ public class OrderPayService {
             throw new BusinessException("订单状态错误");
         }
         checkTradeCode(userId, tradeCode, order.getUserId());
+        BigDecimal amount;
+        if (order.getPaymentType() != AuctionPaymentType.DEPOSIT) {
+            amount = order.getPrice();
+        } else {
+            amount = order.getServiceCharge();
+        }
         BalanceRecord record = userBalanceService
-                .balancePay(order.getUserId(), order.getServiceCharge(), orderId, "拍卖");
+                .balancePay(order.getUserId(), amount, orderId, "拍卖");
         tradeAuctionOrderService.notify(orderId, record.getId().toString(), PayMethod.BALANCE);
     }
 

+ 9 - 41
src/main/java/com/izouma/nineth/service/TradeAuctionOrderService.java

@@ -38,7 +38,7 @@ public class TradeAuctionOrderService {
                 .toPageRequest(pageQuery));
     }
 
-    public TradeAuctionOrder create(Long auctionId, Long userId, BigDecimal price) {
+    public TradeAuctionOrder create(Long auctionId, Long userId, BigDecimal price, AuctionPaymentType auctionPaymentType) {
         TradeAuction tradeAuction = tradeAuctionRepo.findById(auctionId).orElseThrow(new BusinessException("未找到易拍活动"));
         User user = userRepo.findById(userId).orElseThrow(new BusinessException("暂无用户"));
         if (tradeAuction.getCurrentOwnerId() != null) {
@@ -60,45 +60,7 @@ public class TradeAuctionOrderService {
                 .serviceCharge(serviceCharge)
                 .name(tradeAuction.getName())
                 .nickname(user.getNickname())
-                .paymentType(AuctionPaymentType.DEPOSIT)
-                .userId(user.getId())
-                .originPrice(tradeAuction.getPrice())
-                .currentPrice(tradeAuction.getCurrentPrice())
-                .price(price)
-                .paybackStatus(PaybackStatus.NOPASSED)
-                .pic(tradeAuction.getPic())
-                .source(AuctionSource.OFFICIAL)
-                .status(AuctionOrderStatus.NOT_PAID)
-                .build();
-        tradeAuctionOrder = tradeAuctionOrderRepo.save(tradeAuctionOrder);
-        //下订单减库存
-        tradeAuctionService.decreaseStock(tradeAuction.getStock(), 1);
-        return tradeAuctionOrder;
-    }
-
-    public TradeAuctionOrder createFixedPrice(Long auctionId, Long userId, BigDecimal price) {
-        TradeAuction tradeAuction = tradeAuctionRepo.findById(auctionId).orElseThrow(new BusinessException("未找到易拍活动"));
-        User user = userRepo.findById(userId).orElseThrow(new BusinessException("暂无用户"));
-        if (tradeAuction.getCurrentOwnerId() != null) {
-            if (tradeAuction.getCurrentOwnerId().equals(userId)) {
-                throw new BusinessException("不可竞价持有的易拍产品");
-            }
-        }
-        if (LocalDateTime.now().compareTo(tradeAuction.getCurrentEndTime()) < 0) {
-            throw new BusinessException("未到竞价时间");
-        }
-        if (!tradeAuction.getStatus().equals(TradeAuctionStatus.ONGOING)) {
-            throw new BusinessException("易拍产品未处在竞价状态");
-        }
-        BigDecimal serviceCharge = (BigDecimal.valueOf(0.03).multiply(tradeAuction.getCurrentPrice()))
-                .add(tradeAuction.getCurrentPrice().subtract(tradeAuction.getPrice()));
-        TradeAuctionOrder tradeAuctionOrder = TradeAuctionOrder.builder()
-                .tradeAuctionId(tradeAuction.getId())
-                .paymentType(AuctionPaymentType.FIXED_PRICE)
-                .earnedPrice(price.subtract(tradeAuction.getPrice()))
-                .serviceCharge(serviceCharge)
-                .name(tradeAuction.getName())
-                .nickname(user.getNickname())
+                .paymentType(auctionPaymentType)
                 .userId(user.getId())
                 .originPrice(tradeAuction.getPrice())
                 .currentPrice(tradeAuction.getCurrentPrice())
@@ -144,7 +106,7 @@ public class TradeAuctionOrderService {
             tradeAuction.setCurrentOwnerId(tradeAuctionOrder.getUserId());
             tradeAuction.setStatus(TradeAuctionStatus.FIXED_PRICE_PURCHASED);
 
-        } else {
+        } else if (tradeAuctionOrder.getPaymentType().equals(AuctionPaymentType.DEPOSIT)) {
             BigDecimal result = tradeAuctionOrder.getPrice()
                     .multiply(BigDecimal.valueOf(tradeAuction.getIncreasePer()))
                     .divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
@@ -161,6 +123,12 @@ public class TradeAuctionOrderService {
             tradeAuction.setCurrentEndTime(tradeAuction.getCurrentEndTime().plusMinutes(tradeAuction.getMinutes()));
             tradeAuction.setFixedPrice(tradeAuctionOrder.getPrice().multiply(BigDecimal.valueOf(150))
                     .divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP));
+        } else {
+            tradeAuction.setCurrentPrice(tradeAuctionOrder.getCurrentPrice());
+            tradeAuction.setCurrentOwner(tradeAuctionOrder.getNickname());
+            tradeAuction.setCurrentOwnerId(tradeAuctionOrder.getUserId());
+            tradeAuction.setStatus(TradeAuctionStatus.FINISH);
+            tradeAuctionOrder.setStatus(AuctionOrderStatus.AIR_DROP);
         }
         tradeAuctionOrder.setCurrentEndTime(tradeAuction.getCurrentEndTime().plusMinutes(tradeAuction.getMinutes()));
         tradeAuctionOrderRepo.save(tradeAuctionOrder);

+ 7 - 6
src/main/java/com/izouma/nineth/web/TradeAuctionOrderController.java

@@ -1,6 +1,7 @@
 package com.izouma.nineth.web;
 
 import com.izouma.nineth.domain.TradeAuctionOrder;
+import com.izouma.nineth.enums.AuctionPaymentType;
 import com.izouma.nineth.enums.PayMethod;
 import com.izouma.nineth.service.TradeAuctionOrderService;
 import com.izouma.nineth.dto.PageQuery;
@@ -64,14 +65,14 @@ public class TradeAuctionOrderController extends BaseController {
     }
 
     @PostMapping("/createOrder")
-    public TradeAuctionOrder create(Long tradeAuctionId, Long userId, BigDecimal price) {
-        return tradeAuctionOrderService.create(tradeAuctionId, userId, price);
+    public TradeAuctionOrder create(Long tradeAuctionId, Long userId, BigDecimal price, AuctionPaymentType paymentType) {
+        return tradeAuctionOrderService.create(tradeAuctionId, userId, price, paymentType);
     }
 
-    @PostMapping("/createFixedPrice")
-    public TradeAuctionOrder createFixedPrice(Long tradeAuctionId, Long userId, BigDecimal price) {
-        return tradeAuctionOrderService.createFixedPrice(tradeAuctionId, userId, price);
-    }
+//    @PostMapping("/createFixedPrice")
+//    public TradeAuctionOrder createFixedPrice(Long tradeAuctionId, Long userId, BigDecimal price) {
+//        return tradeAuctionOrderService.createFixedPrice(tradeAuctionId, userId, price);
+//    }
 
     @PostMapping("/testPay")
     public void create(Long orderId) {