From ab34ef62429262bcde69186f1e5edecc5f66c001 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期二, 11 三月 2025 15:53:18 +0800 Subject: [PATCH] 拍卖结果弹窗消息 --- ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java | 88 +++++++++++++++++++++++++++++++++++++------ 1 files changed, 75 insertions(+), 13 deletions(-) diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java index e4d1a32..7869f00 100644 --- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java +++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java @@ -36,7 +36,6 @@ import com.ruoyi.auction.service.IAuctionGoodsService; import com.ruoyi.auction.service.IAuctionSalesroomService; import com.ruoyi.auction.service.IAuctionVideoService; -import com.ruoyi.auction.util.CreateQrCode; import com.ruoyi.auction.util.HttpUtils; import com.ruoyi.common.core.constant.Constants; import com.ruoyi.common.core.constant.SecurityConstants; @@ -516,7 +515,7 @@ forepartAuctionSalesroomGoodsVO.setGoodsSkuId(salesroomGoods.getId()); forepartAuctionSalesroomGoodsVO.setCoverPic(goodsSku.getCoverPic()); forepartAuctionSalesroomGoodsVO.setStartingPrice(salesroomGoods.getStartingPrice()); - forepartAuctionSalesroomGoodsVO.setSalesroomStock(salesroomGoods.getSalesroomStock()); + // forepartAuctionSalesroomGoodsVO.setSalesroomStock(salesroomGoods.getSalesroomStock()); forepartAuctionSalesroomGoodsVO.setGoodsSkustatus(salesroomGoods.getStatus().getCode()); forepartAuctionSalesroomGoodsVO.setMinimumMarkupAmount(salesroomGoods.getMinimumMarkupAmount()); forepartAuctionSalesroomGoodsVO.setStartTime(salesroomGoods.getStartTime()); @@ -524,6 +523,9 @@ forepartAuctionSalesroomGoodsVO.setListingDuration(salesroomGoods.getListingDuration()); forepartAuctionSalesroomGoodsVO.setSpec(goodsSku.getSpec()); forepartAuctionSalesroomGoodsVO.setSpecUnit(goodsSku.getSpecUnit()); + forepartAuctionSalesroomGoodsVO.setDealQuantity(salesroomGoods.getDealQuantity()); + forepartAuctionSalesroomGoodsVO.setMaxAmount(salesroomGoods.getMaxAmount()); + forepartAuctionSalesroomGoodsVO.setBidNum(salesroomGoods.getBidNum()); LambdaQueryWrapper<AuctionBidRecord> wrapper1=Wrappers.lambdaQuery(); wrapper1.eq(AuctionBidRecord::getMemberId,memberAuctionSalesroomDTO.getMemberId()); wrapper1.eq(AuctionBidRecord::getAuctionSalesroomId,byId.getId()); @@ -698,6 +700,9 @@ if (bidVO.getAuctionType() == 2) { AuctionSalesroomGoods byId = auctionSalesroomGoodsMapper.selectById( bidVO.getTargetId()); + R<GoodsSku> goodsSkuOneR = goodsSkuClient.getGoodsSkuOne(byId.getGoodsSkuId(), + SecurityConstants.INNER); + GoodsSku goodsSku = goodsSkuOneR.getData(); // 判断否大于最高价 if (byId.getMaxAmount().compareTo(bidVO.getLastBidAmount()) < 0) { throw new ServiceException("出价不能高出最高价"); @@ -730,7 +735,7 @@ wrapper3.orderByDesc(AuctionBidRecord::getLastBidAmount); wrapper3.last("limit 1"); AuctionBidRecord one3 = auctionBidRecordService.getOne(wrapper3); - if (byId.getSalesroomStock() == 1) { + if (byId.getBidNum() == 1) { if (one3 != null) { if (bidVO.getLastBidAmount().doubleValue() < one3.getLastBidAmount() .doubleValue()) { @@ -746,7 +751,8 @@ } BigDecimal bigDecimal = byId.getStartingPrice().add(byId.getMinimumMarkupAmount()); - if (bigDecimal.doubleValue() > bidVO.getLastBidAmount().doubleValue()) { + if (bigDecimal.doubleValue() > bidVO.getLastBidAmount().doubleValue() + && count > 0) { throw new ServiceException("出价不能比每次最少加价低"); } @@ -779,6 +785,7 @@ one.setStatus(BidStatusEnum.ELIMINATE); one.setBidCount(1); one.setLastBidAmount(bidVO.getLastBidAmount()); + one.setGoodsName(Objects.nonNull(goodsSku) ? goodsSku.getSkuName() : ""); auctionBidRecordService.save(one); } @@ -806,6 +813,9 @@ .clientType(ClientTypeEnum.MEMBER).build(), SecurityConstants.INNER); } else { AuctionGoods byId = auctionGoodsService.getById(bidVO.getTargetId()); + R<GoodsSku> goodsSkuOneR = goodsSkuClient.getGoodsSkuOne(byId.getGoodsSkuId(), + SecurityConstants.INNER); + GoodsSku goodsSku = goodsSkuOneR.getData(); // 查询用户出价记录判断是否第一次出价 首次出价,可以只出起拍价,而不是需要比起拍价高。 Long count = auctionBidRecordService.lambdaQuery() .eq(AuctionBidRecord::getTargetId, bidVO.getTargetId()) @@ -816,7 +826,8 @@ throw new ServiceException("出价不能比起拍价低"); } BigDecimal bigDecimal = byId.getStartingPrice().add(byId.getMinimumMarkupAmount()); - if (bigDecimal.doubleValue() > bidVO.getLastBidAmount().doubleValue()) { + if (bigDecimal.doubleValue() > bidVO.getLastBidAmount().doubleValue() + && count > 0) { throw new ServiceException("出价不能比每次最少加价低"); } LambdaQueryWrapper<AuctionBidRecord> wrapper1 = Wrappers.lambdaQuery(); @@ -863,6 +874,7 @@ one3.setStatus(BidStatusEnum.ELIMINATE); one3.setBidCount(1); one3.setLastBidAmount(bidVO.getLastBidAmount()); + one3.setGoodsName(Objects.nonNull(goodsSku) ? goodsSku.getSkuName() : ""); auctionBidRecordService.save(one3); } @@ -927,7 +939,7 @@ AuctionSalesroom::getEndTime, AuctionSalesroom::getType, AuctionSalesroom::getAuthentication, AuctionSalesroom::getStatus, AuctionSalesroom::getQrCode) - .in(StringUtils.isNotNull(query.getIds()), AuctionSalesroom::getId,query.getIds()) + .in(CollUtils.isNotEmpty(query.getIds()), AuctionSalesroom::getId, query.getIds()) .like(StringUtils.isNotEmpty(query.getSalesroomName()), AuctionSalesroom::getSalesroomName, query.getSalesroomName()) .eq(StringUtils.isNotNull(query.getAuthentication()), @@ -970,6 +982,52 @@ return auctionSalesroomVOPageDTO; } + @Override + public List<MgtAuctionSalesroomVO> getAuctionSalesroomList(MgtAuctionSalesroomQuery query) { + // 分页查询 + List<AuctionSalesroom> auctionSalesroomList = this.lambdaQuery() + .select(AuctionSalesroom::getId, AuctionSalesroom::getSalesroomName, + AuctionSalesroom::getCreateTime, AuctionSalesroom::getStartTime, + AuctionSalesroom::getEndTime, AuctionSalesroom::getType, + AuctionSalesroom::getAuthentication, AuctionSalesroom::getStatus, + AuctionSalesroom::getQrCode) + .in(CollUtils.isNotEmpty(query.getIds()), AuctionSalesroom::getId, query.getIds()) + .like(StringUtils.isNotEmpty(query.getSalesroomName()), + AuctionSalesroom::getSalesroomName, query.getSalesroomName()) + .eq(StringUtils.isNotNull(query.getAuthentication()), + AuctionSalesroom::getAuthentication, query.getAuthentication()) + .eq(StringUtils.isNotNull(query.getStatus()), AuctionSalesroom::getStatus, + query.getStatus()).between( + StringUtils.isNotNull(query.getStartTime()) && StringUtils.isNotNull( + query.getEndTime()), AuctionSalesroom::getStartTime, + query.getStartTime(), + query.getEndTime()) + .orderByDesc(AuctionSalesroom::getCreateTime) + .list(); + + List<MgtAuctionSalesroomVO> list = BeanUtils.copyList(auctionSalesroomList, + MgtAuctionSalesroomVO.class); + List<Long> auctionSalesroomIdList = list.stream().map(MgtAuctionSalesroomVO::getId) + .collect(Collectors.toList()); + if (StringUtils.isNotEmpty(auctionSalesroomIdList)) { + // 所有拍卖场的拍卖商品 + List<AuctionSalesroomGoods> auctionSalesroomGoods = auctionSalesroomGoodsMapper.selectList( + Wrappers.<AuctionSalesroomGoods>lambdaQuery() + .in(AuctionSalesroomGoods::getAuctionSalesroomId, + auctionSalesroomIdList)); + // 计算每个拍卖场所有拍品数量 + Map<Long, Integer> map = auctionSalesroomGoods.stream() + .collect(Collectors.groupingBy(AuctionSalesroomGoods::getAuctionSalesroomId, + Collectors.summingInt(AuctionSalesroomGoods::getBidNum))); + for (MgtAuctionSalesroomVO mgtAuctionSalesroomVO : list) { + Integer i = map.get(mgtAuctionSalesroomVO.getId()); + if (StringUtils.isNotNull(i)) { + mgtAuctionSalesroomVO.setAuctionGoodsNum(i); + } + } + } + return list; + } @Override @Transactional @@ -1379,7 +1437,7 @@ // 扣减库存 GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); goodsStockUpdDTO.setGoodsSkuId(data.getId()); - goodsStockUpdDTO.setAuctionStock(dto.getSalesroomStock() * -1); + goodsStockUpdDTO.setAuctionStock(dto.getBidNum() * dto.getDealQuantity() * -1); R<?> result = goodsSkuClient.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO), SecurityConstants.INNER); if (result.getCode() != Constants.SUCCESS) { @@ -1490,8 +1548,8 @@ if (CollUtils.isNotEmpty(auctionBidRecordList)) { List<AuctionBidRecord> auctionBidRecords = new ArrayList<>(); Map<Long, String> orderIdMap = new HashMap<>(); - if (auctionBidRecordList.size() >= auctionSalesroomGoods.getSalesroomStock()) { - for (int i = 0; i < auctionSalesroomGoods.getSalesroomStock(); i++) { + if (auctionBidRecordList.size() >= auctionSalesroomGoods.getBidNum()) { + for (int i = 0; i < auctionSalesroomGoods.getBidNum(); i++) { AuctionBidRecord auctionBidRecord = auctionBidRecordList.get(i); auctionBidRecord.setStatus(BidStatusEnum.SUCCESSFUL); auctionBidRecords.add(auctionBidRecord); @@ -1520,8 +1578,10 @@ GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); goodsStockUpdDTO.setGoodsSkuId(auctionSalesroomGoods.getGoodsSkuId()); goodsStockUpdDTO.setAuctionStock( - auctionSalesroomGoods.getSalesroomStock() - - auctionBidRecordList.size()); + auctionSalesroomGoods.getBidNum() + * auctionSalesroomGoods.getDealQuantity() + - auctionBidRecordList.size() + * auctionSalesroomGoods.getDealQuantity()); goodsSkuClient.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO), SecurityConstants.INNER); } @@ -1579,7 +1639,8 @@ GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); goodsStockUpdDTO.setGoodsSkuId(auctionSalesroomGoods.getGoodsSkuId()); goodsStockUpdDTO.setAuctionStock( - auctionSalesroomGoods.getSalesroomStock()); + auctionSalesroomGoods.getBidNum() + * auctionSalesroomGoods.getDealQuantity()); goodsSkuClient.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO), SecurityConstants.INNER); } @@ -1802,7 +1863,8 @@ // 等待中的商品退库存 GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); goodsStockUpdDTO.setGoodsSkuId(salesroomGoods.getGoodsSkuId()); - goodsStockUpdDTO.setAuctionStock(salesroomGoods.getSalesroomStock()); + goodsStockUpdDTO.setAuctionStock( + salesroomGoods.getBidNum() * salesroomGoods.getDealQuantity()); dtoList.add(goodsStockUpdDTO); } // 批量更新商品库存 -- Gitblit v1.7.1