licailing před 4 roky
rodič
revize
2052534497

+ 1 - 0
src/main/java/com/izouma/nineth/enums/TransferReason.java

@@ -3,6 +3,7 @@ package com.izouma.nineth.enums;
 public enum TransferReason {
     TRANSFER("转让"),
     GIFT("转赠"),
+    AUCTION("拍卖")
 
     ;
 

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

@@ -237,7 +237,7 @@ public class AuctionOrderService {
             }
             User user = userRepo.findById(order.getUserId()).orElseThrow(new BusinessException("无用户"));
             //转让流程
-            assetService.transfer(asset, order.getTotalPrice(), user, "拍卖", order.getId());
+            assetService.transfer(asset, order.getTotalPrice(), user, TransferReason.AUCTION, order.getId());
         }
 
         //该出价记录表为竞得

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

@@ -6,6 +6,7 @@ import com.izouma.nineth.config.GeneralProperties;
 import com.izouma.nineth.domain.*;
 import com.izouma.nineth.dto.PayQuery;
 import com.izouma.nineth.dto.UserBankCard;
+import com.izouma.nineth.enums.AuctionOrderStatus;
 import com.izouma.nineth.enums.MintOrderStatus;
 import com.izouma.nineth.enums.OrderStatus;
 import com.izouma.nineth.enums.PayMethod;
@@ -55,6 +56,7 @@ public class OrderPayService {
     private final PasswordEncoder    passwordEncoder;
     private final PayEaseService     payEaseService;
     private final UserBankCardRepo   userBankCardRepo;
+    private final AuctionOrderRepo   auctionOrderRepo;
 
     public static void setPayChannel(String payChannel) {
         if (Constants.PayChannel.HM.equals(payChannel) || Constants.PayChannel.SAND.equals(payChannel)) {
@@ -247,7 +249,7 @@ public class OrderPayService {
             throw new BusinessException("交易码错误");
         }
         BalanceRecord record = userBalanceService.balancePay(order.getUserId(), order.getGasPrice(), orderId, "铸造活动");
-        giftOrderService.giftNotify(orderId, PayMethod.BALANCE, record.getId().toString());
+        mintOrderService.mintNotify(orderId, PayMethod.BALANCE, record.getId().toString());
     }
 
     @Cacheable(value = "payOrder", key = "'mint#'+#orderId")
@@ -357,4 +359,40 @@ public class OrderPayService {
                 .filter(q -> q != null && q.isExist())
                 .findFirst().orElse(PayQuery.builder().exist(false).build());
     }
+
+    @Cacheable(value = "payOrder", key = "'auctionOrder#'+#orderId")
+    public String payAuctionOrder(Long orderId) {
+        AuctionOrder order = auctionOrderRepo.findById(orderId).orElseThrow(new BusinessException("订单不存在"));
+        if (order.getStatus() != AuctionOrderStatus.NOT_PAID) {
+            throw new BusinessException("订单状态错误");
+        }
+        switch (PAY_CHANNEL) {
+            case "sandPay":
+                return sandPayService.requestAlipay(orderId + "", order.getTotalPrice(),
+                        "拍卖:" + order.getName(), "拍卖:" + order.getName(),
+                        SandPayService.getTimeout(order.getCreatedAt(), 180),
+                        "{\"type\":\"auctionOrder\",\"id\":\"" + orderId + "\"}");
+            case "hmPay":
+                return hmPayService.requestAlipay(orderId + "", order.getTotalPrice(),
+                        "拍卖:" + order.getName(),
+                        HMPayService.getTimeout(order.getCreatedAt(), 180),
+                        "auctionOrder", generalProperties.getHost() + "/9th/home");
+        }
+        throw new BusinessException("绿洲宇宙冷却系统已启动,请稍后支付");
+    }
+
+    public void payAuctionOrderBalance(Long orderId, Long userId, String tradeCode) {
+        AuctionOrder order = auctionOrderRepo.findById(orderId).orElseThrow(new BusinessException("订单不存在"));
+        if (order.getStatus() != AuctionOrderStatus.NOT_PAID) {
+            throw new BusinessException("订单状态错误");
+        }
+        if (!Objects.equals(order.getUserId(), userId)) {
+            throw new BusinessException("订单不属于该用户");
+        }
+        if (!Objects.equals(userRepo.findTradeCode(userId), tradeCode)) {
+            throw new BusinessException("交易码错误");
+        }
+        BalanceRecord record = userBalanceService.balancePay(order.getUserId(), order.getTotalPrice(), orderId, "拍卖");
+        giftOrderService.giftNotify(orderId, PayMethod.BALANCE, record.getId().toString());
+    }
 }

+ 2 - 2
src/main/java/com/izouma/nineth/web/OrderPayController.java

@@ -121,7 +121,7 @@ public class OrderPayController {
     @RequestMapping(value = "/auction/alipay_h5", method = RequestMethod.GET, produces = "text/html")
     @ResponseBody
     public String payAuctionOrder(@RequestParam Long id) {
-        return sandPayService.payAuctionOrder(id);
+        return sandPayService.payAuctionQuick(id);
     }
 
     @RequestMapping(value = "/auction/alipay_wx", method = RequestMethod.GET)
@@ -148,7 +148,7 @@ public class OrderPayController {
     @RequestMapping(value = "/auction/sand_pay", method = RequestMethod.GET, produces = "text/html")
     @ResponseBody
     public String auctionSandPay(@RequestParam Long id) {
-        return sandPayService.payAuctionOrder(id);
+        return sandPayService.payAuctionQuick(id);
     }
 
 

+ 25 - 0
src/main/java/com/izouma/nineth/web/OrderPayControllerV2.java

@@ -156,4 +156,29 @@ public class OrderPayControllerV2 {
                                                     String bindCardId) {
         return orderPayService.rechargeAgreement(id, amount, bindCardId);
     }
+
+    @RequestMapping(value = "/auction/alipay", method = RequestMethod.GET)
+    @ResponseBody
+    public String payAuctionOrderAlipayH5(Long id) {
+        return orderPayService.payAuctionOrder(id);
+    }
+
+    @RequestMapping(value = "/auction/alipay_wx", method = RequestMethod.GET)
+    public String payAuctionOrderAlipayWx(Long id, Model model) {
+        String payUrl = orderPayService.payAuctionOrder(id);
+        model.addAttribute("payUrl", payUrl);
+        model.addAttribute("orderId", id);
+        return "AlipayHtml";
+    }
+
+    @RequestMapping(value = "/auction/sandQuick", method = RequestMethod.GET, produces = "text/html")
+    @ResponseBody
+    public String payAuctionQuick(@RequestParam Long id) {
+        return sandPayService.payAuctionQuick(id);
+    }
+
+    @RequestMapping(value = "auction/balance", method = RequestMethod.GET)
+    public void payAuctionOrderBalance(@RequestParam Long id, @RequestParam String tradeCode) {
+        orderPayService.payAuctionOrderBalance(id, SecurityUtils.getAuthenticatedUser().getId(), tradeCode);
+    }
 }