mitao
2024-07-20 1f3e9dc85399290910cde7149806323305544e0d
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);
                }
            }