| | |
| | | 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; |
| | |
| | | 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()); |
| | |
| | | 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()); |
| | |
| | | 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("出价不能高出最高价"); |
| | |
| | | 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()) { |
| | |
| | | } |
| | | |
| | | BigDecimal bigDecimal = byId.getStartingPrice().add(byId.getMinimumMarkupAmount()); |
| | | if (bigDecimal.doubleValue() > bidVO.getLastBidAmount().doubleValue()) { |
| | | if (bigDecimal.doubleValue() > bidVO.getLastBidAmount().doubleValue() |
| | | && count > 0) { |
| | | throw new ServiceException("出价不能比每次最少加价低"); |
| | | } |
| | | |
| | |
| | | one.setStatus(BidStatusEnum.ELIMINATE); |
| | | one.setBidCount(1); |
| | | one.setLastBidAmount(bidVO.getLastBidAmount()); |
| | | one.setGoodsName(Objects.nonNull(goodsSku) ? goodsSku.getSkuName() : ""); |
| | | auctionBidRecordService.save(one); |
| | | } |
| | | |
| | |
| | | .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()) |
| | |
| | | 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(); |
| | |
| | | one3.setStatus(BidStatusEnum.ELIMINATE); |
| | | one3.setBidCount(1); |
| | | one3.setLastBidAmount(bidVO.getLastBidAmount()); |
| | | one3.setGoodsName(Objects.nonNull(goodsSku) ? goodsSku.getSkuName() : ""); |
| | | auctionBidRecordService.save(one3); |
| | | } |
| | | |
| | |
| | | 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()), |
| | |
| | | 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 |
| | |
| | | // 扣减库存 |
| | | 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) { |
| | |
| | | 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); |
| | |
| | | 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); |
| | | } |
| | |
| | | GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); |
| | | goodsStockUpdDTO.setGoodsSkuId(auctionSalesroomGoods.getGoodsSkuId()); |
| | | goodsStockUpdDTO.setAuctionStock( |
| | | auctionSalesroomGoods.getSalesroomStock()); |
| | | auctionSalesroomGoods.getBidNum() |
| | | * auctionSalesroomGoods.getDealQuantity()); |
| | | goodsSkuClient.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO), |
| | | SecurityConstants.INNER); |
| | | } |
| | |
| | | // 等待中的商品退库存 |
| | | GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); |
| | | goodsStockUpdDTO.setGoodsSkuId(salesroomGoods.getGoodsSkuId()); |
| | | goodsStockUpdDTO.setAuctionStock(salesroomGoods.getSalesroomStock()); |
| | | goodsStockUpdDTO.setAuctionStock( |
| | | salesroomGoods.getBidNum() * salesroomGoods.getDealQuantity()); |
| | | dtoList.add(goodsStockUpdDTO); |
| | | } |
| | | // 批量更新商品库存 |