mitao
2024-07-29 fc8b51f40e71aa09bb49f407c1e9f68ac94ceb58
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java
@@ -12,8 +12,10 @@
import com.ruoyi.auction.controller.management.vo.MgtAuctionBidRecordVO;
import com.ruoyi.auction.controller.management.vo.MgtAuctionGoodsVO;
import com.ruoyi.auction.domain.AuctionBidRecord;
import com.ruoyi.auction.domain.AuctionBondJl;
import com.ruoyi.auction.domain.AuctionBrowseRecord;
import com.ruoyi.auction.domain.MemberAuctionCollection;
import com.ruoyi.auction.mapper.AuctionBondJlMapper;
import com.ruoyi.auction.mapper.AuctionGoodsMapper;
import com.ruoyi.auction.service.IAuctionBidRecordService;
import com.ruoyi.auction.service.IAuctionBrowseRecordService;
@@ -114,6 +116,9 @@
    @Resource
    private IAuctionBrowseRecordService iAuctionBrowseRecordService;
    @Resource
    private AuctionBondJlMapper auctionBondJlMapper;
    /**
     * 获取拍卖商品列表的分页数据
@@ -317,12 +322,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 < auctionBidRecords.size(); 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);
                // 创建待支付订单
@@ -330,11 +352,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 +367,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();
@@ -393,6 +415,7 @@
                    RefundDTO refundDTO = new RefundDTO();
                    refundDTO.setOrderNo(orderAuctionBond.getOrderNo());
                    refundDTO.setAmount(orderAuctionBond.getBond());
                    refundDTOList.add(refundDTO);
                }
                // 远程调用订单服务进行退款
                Map<String, Object> data = orderClient.refund(refundDTOList,
@@ -417,7 +440,8 @@
                    return null;
                }).filter(Objects::nonNull).collect(Collectors.toList());
                // 远程调用订单服务修改订单状态
                orderClient.updateOrderAuctionBondStatus(ids, BondStatusEnum.PAID,SecurityConstants.INNER);
                orderClient.updateOrderAuctionBondStatus(ids, BondStatusEnum.REFUNDED,
                        SecurityConstants.INNER);
            }
        }
    }
@@ -429,12 +453,23 @@
            List<GoodsSku> goodsSku = goodsSkuClient.getGoodsByName(auctionGoodsListDTO.getGoodsSkuName(),
                            SecurityConstants.INNER)
                    .getData();
            goodsSkuIdList = goodsSku.stream().map(GoodsSku::getId)
                    .collect(Collectors.toSet());
            if (goodsSku!=null){
                goodsSkuIdList = goodsSku.stream().map(GoodsSku::getId)
                        .collect(Collectors.toSet());
            }
        }
        AuctionGoodsListPageDTO auctionGoodsListPageDTO=new AuctionGoodsListPageDTO();
        auctionGoodsListPageDTO.setGoodsSkuIdList(goodsSkuIdList);
        if (StringUtils.isNotEmpty(auctionGoodsListDTO.getGoodsSkuName())) {
            if (goodsSkuIdList != null) {
                auctionGoodsListPageDTO.setGoodsSkuIdList(goodsSkuIdList);
            } else {
                goodsSkuIdList = new HashSet<>();
                goodsSkuIdList.add(0L);
                auctionGoodsListPageDTO.setGoodsSkuIdList(goodsSkuIdList);
            }
        }
        Page<AuctionGoodsListVO> page = new Page<>();
        page.setSize(auctionGoodsListDTO.getPageSize());
@@ -504,7 +539,6 @@
        auctionGoodsinfoVO.setSpec(goodsSkuOne.getSpec());
        auctionGoodsinfoVO.setSpecUnit(goodsSkuOne.getSpecUnit());
        auctionGoodsinfoVO.setShareTitle(goodsSkuOne.getShareTitle());
        auctionGoodsinfoVO.setSpecUnit(goodsSkuOne.getSpecUnit());
        auctionGoodsinfoVO.setDetail(goodsSkuOne.getDetail());
        auctionGoodsinfoVO.setBond(byId.getBond());
        auctionGoodsinfoVO.setYears(goodsSkuOne.getYears());
@@ -547,12 +581,18 @@
        }else {
            auctionGoodsinfoVO.setIsCollection(1);
        }
        List<OrderAuctionBond> datas = orderClient.getAuctionGoodsOrderAuctionBondList(auctionGoodsListDTO, SecurityConstants.INNER).getData();
        if (datas.size()>0){
            auctionGoodsinfoVO.setIsApply(2);
        }else{
            auctionGoodsinfoVO.setIsApply(1);
        }
        LambdaQueryWrapper<AuctionBondJl> wrapper8=Wrappers.lambdaQuery();
        wrapper8.eq(AuctionBondJl::getAuctionGoodsId,byId.getId());
        wrapper8.eq(AuctionBondJl::getMemberId,auctionGoodsListDTO.getMemberId());
        wrapper8.eq(AuctionBondJl::getIsState,0);
        AuctionBondJl auctionBondJl = auctionBondJlMapper.selectOne(wrapper8);
       if(auctionBondJl!=null){
               auctionGoodsinfoVO.setIsApply(2);
           }else{
               auctionGoodsinfoVO.setIsApply(1);
           }
        LocalDateTime now = LocalDateTime.now();
        LocalDateTime newTime7 = now.minusDays(7);
@@ -634,7 +674,7 @@
        Page<AuctionGoodsListVO> page = new Page<>();
        page.setSize(auctionGoodsListDTO.getPageSize());
        page.setCurrent(auctionGoodsListDTO.getPageCurr());
        List<AuctionGoods> auctionGoodsPgeList = auctionGoodsMapper.getAuctionGoodsPgeList(page, auctionGoodsListPageDTO);
        List<AuctionGoods> auctionGoodsPgeList = auctionGoodsMapper.getAuctionGoodsPgeList1(page, auctionGoodsListPageDTO);
        List<AuctionGoodsListVO> auctionGoodsVOS=new ArrayList<>();
        for (AuctionGoods auctionGoods:auctionGoodsPgeList){
            AuctionGoodsListVO auctionGoodsVO=new AuctionGoodsListVO();
@@ -679,8 +719,7 @@
    @Transactional
    public void endAuctionGoods(Long id) throws JsonProcessingException {
        AuctionGoods auctionGoods = this.getById(id);
        if (StringUtils.isNotNull(auctionGoods) && auctionGoods.getListingStatus().equals(
                ListingStatusEnum.ON_SHELVES) && auctionGoods.getStartStatus()
        if (StringUtils.isNotNull(auctionGoods) && auctionGoods.getStartStatus()
                .equals(AuctionStartStatusEnum.IN_AUCTION)) {
            // 远程调用商品服务,获取商品信息
            GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(auctionGoods.getGoodsSkuId(),
@@ -692,12 +731,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 < auctionBidRecords.size(); 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 +761,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(
@@ -774,6 +824,7 @@
                        RefundDTO refundDTO = new RefundDTO();
                        refundDTO.setOrderNo(orderAuctionBond.getOrderNo());
                        refundDTO.setAmount(orderAuctionBond.getBond());
                        refundDTOList.add(refundDTO);
                    }
                    // 远程调用订单服务进行退款
                    Map<String, Object> data = orderClient.refund(refundDTOList,
@@ -798,7 +849,7 @@
                        return null;
                    }).filter(Objects::nonNull).collect(Collectors.toList());
                    // 远程调用订单服务修改订单状态
                    orderClient.updateOrderAuctionBondStatus(ids, BondStatusEnum.PAID,
                    orderClient.updateOrderAuctionBondStatus(ids, BondStatusEnum.REFUNDED,
                            SecurityConstants.INNER);
                }
            }