From 1f3e9dc85399290910cde7149806323305544e0d Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期六, 20 七月 2024 19:17:23 +0800
Subject: [PATCH] 修改bug

---
 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java |   74 +++++++++++++++++++++++++-----------
 1 files changed, 51 insertions(+), 23 deletions(-)

diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java
index fa8ca17..987e1c0 100644
--- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java
+++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java
@@ -317,12 +317,29 @@
                     id);
             List<AuctionBidRecord> auctionBidRecordList = new ArrayList<>();
             if (StringUtils.isNotEmpty(auctionBidRecords)) {
-                // 中标
-                for (int i = 0; i < auctionGoods.getAuctionStock(); i++) {
-                    AuctionBidRecord auctionBidRecord = auctionBidRecords.get(i);
-                    auctionBidRecord.setStatus(BidStatusEnum.SUCCESSFUL);
-                    auctionBidRecordList.add(auctionBidRecord);
+                if (auctionBidRecords.size() >= auctionGoods.getAuctionStock()) {
+                    // 中标
+                    for (int i = 0; i < auctionGoods.getAuctionStock(); i++) {
+                        AuctionBidRecord auctionBidRecord = auctionBidRecords.get(i);
+                        auctionBidRecord.setStatus(BidStatusEnum.SUCCESSFUL);
+                        auctionBidRecordList.add(auctionBidRecord);
+                    }
+                } else {
+                    // 中标
+                    for (int i = 0; i < auctionGoods.getAuctionStock(); i++) {
+                        AuctionBidRecord auctionBidRecord = auctionBidRecords.get(i);
+                        auctionBidRecord.setStatus(BidStatusEnum.SUCCESSFUL);
+                        auctionBidRecordList.add(auctionBidRecord);
+                    }
+                    // 退回剩余库存
+                    GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO();
+                    goodsStockUpdDTO.setGoodsSkuId(auctionGoods.getGoodsSkuId());
+                    goodsStockUpdDTO.setAuctionStock(
+                            auctionGoods.getAuctionStock() - auctionBidRecordList.size());
+                    goodsSkuClient.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO),
+                            SecurityConstants.INNER);
                 }
+
                 auctionBidRecordService.updateBatchById(auctionBidRecordList);
 
                 // 创建待支付订单
@@ -330,11 +347,12 @@
                         ConfigEnum.MEMBER_POINTS_MONEY.getKey()).getData();
                 CustomConfig pointsConfig = sysUserClient.getconfig(
                         ConfigEnum.MEMBER_POINTS_POINTS.getKey()).getData();
-                double ratio =
-                        Double.parseDouble(
-                                pointsConfig.getConfigValue()) / Double.parseDouble(
-                                moneyConfig.getConfigValue());
                 for (AuctionBidRecord auctionBidRecord : auctionBidRecordList) {
+                    BigDecimal lastBidAmount = auctionBidRecord.getLastBidAmount();
+                    BigDecimal divide = lastBidAmount.divide(
+                            new BigDecimal(moneyConfig.getConfigValue()), 0, RoundingMode.DOWN);
+                    int points = divide.multiply(
+                            new BigDecimal(pointsConfig.getConfigValue())).intValue();
                     OrderDTO orderDTO = new OrderDTO();
                     orderDTO.setAuctionType(AuctionOrderTypeEnum.REGULAR_ITEMS);
                     orderDTO.setGoodsQuantity(auctionGoods.getAuctionStock());
@@ -344,8 +362,7 @@
                     orderDTO.setTotalAmount(auctionBidRecord.getLastBidAmount());
                     orderDTO.setOrderFrom(OrderFromEnum.AUCTION_ORDERS);
                     orderDTO.setOrderTime(LocalDateTime.now());
-                    orderDTO.setPoints(auctionBidRecord.getLastBidAmount()
-                            .multiply(BigDecimal.valueOf(ratio)).intValue());
+                    orderDTO.setPoints(points);
                     orderDTO.setBound(auctionGoods.getBond());
                     MemberAddress data = memberClient.getMemberAddressOne(
                             auctionBidRecord.getMemberId(), SecurityConstants.INNER).getData();
@@ -692,12 +709,29 @@
                         id);
                 List<AuctionBidRecord> auctionBidRecordList = new ArrayList<>();
                 if (StringUtils.isNotEmpty(auctionBidRecords)) {
-                    // 中标
-                    for (int i = 0; i < auctionGoods.getAuctionStock(); i++) {
-                        AuctionBidRecord auctionBidRecord = auctionBidRecords.get(i);
-                        auctionBidRecord.setStatus(BidStatusEnum.SUCCESSFUL);
-                        auctionBidRecordList.add(auctionBidRecord);
+                    if (auctionBidRecords.size() >= auctionGoods.getAuctionStock()) {
+                        // 中标
+                        for (int i = 0; i < auctionGoods.getAuctionStock(); i++) {
+                            AuctionBidRecord auctionBidRecord = auctionBidRecords.get(i);
+                            auctionBidRecord.setStatus(BidStatusEnum.SUCCESSFUL);
+                            auctionBidRecordList.add(auctionBidRecord);
+                        }
+                    } else {
+                        // 中标
+                        for (int i = 0; i < auctionGoods.getAuctionStock(); i++) {
+                            AuctionBidRecord auctionBidRecord = auctionBidRecords.get(i);
+                            auctionBidRecord.setStatus(BidStatusEnum.SUCCESSFUL);
+                            auctionBidRecordList.add(auctionBidRecord);
+                        }
+                        // 退回剩余库存
+                        GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO();
+                        goodsStockUpdDTO.setGoodsSkuId(auctionGoods.getGoodsSkuId());
+                        goodsStockUpdDTO.setAuctionStock(
+                                auctionGoods.getAuctionStock() - auctionBidRecords.size());
+                        goodsSkuClient.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO),
+                                SecurityConstants.INNER);
                     }
+
                     auctionBidRecordService.updateBatchById(auctionBidRecordList);
 
                     // 创建待支付订单
@@ -705,12 +739,6 @@
                             ConfigEnum.MEMBER_POINTS_MONEY.getKey()).getData();
                     CustomConfig pointsConfig = sysUserClient.getconfig(
                             ConfigEnum.MEMBER_POINTS_POINTS.getKey()).getData();
-                    BigDecimal ratio =
-                            BigDecimal.valueOf(Double.parseDouble(
-                                            pointsConfig.getConfigValue()))
-                                    .divide(BigDecimal.valueOf(Double.parseDouble(
-                                            moneyConfig.getConfigValue())), 0, RoundingMode.DOWN);
-
                     for (AuctionBidRecord auctionBidRecord : auctionBidRecordList) {
                         BigDecimal lastBidAmount = auctionBidRecord.getLastBidAmount();
                         BigDecimal divide = lastBidAmount.divide(
@@ -798,7 +826,7 @@
                         return null;
                     }).filter(Objects::nonNull).collect(Collectors.toList());
                     // 远程调用订单服务修改订单状态
-                    orderClient.updateOrderAuctionBondStatus(ids, BondStatusEnum.PAID,
+                    orderClient.updateOrderAuctionBondStatus(ids, BondStatusEnum.REFUNDED,
                             SecurityConstants.INNER);
                 }
             }

--
Gitblit v1.7.1