| | |
| | | import com.ruoyi.system.api.domain.dto.AuctionGoodsListDTO; |
| | | import com.ruoyi.system.api.domain.dto.AuctionGoodsListPageDTO; |
| | | import com.ruoyi.system.api.domain.dto.GoodsStockUpdDTO; |
| | | import com.ruoyi.system.api.domain.dto.ListStatusDTO; |
| | | import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomDTO; |
| | | import com.ruoyi.system.api.domain.dto.OrderDTO; |
| | | import com.ruoyi.system.api.domain.dto.RefundDTO; |
| | | import com.ruoyi.system.api.domain.vo.AuctionGoodsListVO; |
| | | import com.ruoyi.system.api.domain.vo.AuctionGoodsinfoVO; |
| | | import com.ruoyi.system.api.feignClient.AuctionClient; |
| | | import com.ruoyi.system.api.feignClient.GoodsSkuClient; |
| | | import com.ruoyi.system.api.feignClient.MemberClient; |
| | | import com.ruoyi.system.api.feignClient.OrderClient; |
| | |
| | | private final GoodsSkuClient goodsSkuClient; |
| | | private final MemberClient memberClient; |
| | | private final OrderClient orderClient; |
| | | |
| | | private final AuctionClient auctionClient; |
| | | private final IAuctionBidRecordService auctionBidRecordService; |
| | | private final AuctionAsyncMethodService auctionAsyncMethodService; |
| | | // 创建一个静态共享的ObjectMapper实例以重用 |
| | |
| | | .select(AuctionGoods::getId, AuctionGoods::getGoodsSkuId, |
| | | AuctionGoods::getListingStatus, AuctionGoods::getStartStatus, |
| | | AuctionGoods::getStartTime, AuctionGoods::getEndTime, |
| | | AuctionGoods::getAuctionStock, AuctionGoods::getMinimumMarkupAmount).in( |
| | | AuctionGoods::getAuctionStock, AuctionGoods::getMinimumMarkupAmount, |
| | | AuctionGoods::getAuthentication, AuctionGoods::getStartingPrice).in( |
| | | StringUtils.isNotEmpty(goodsSkuIdList), AuctionGoods::getGoodsSkuId, |
| | | goodsSkuIdList).eq(StringUtils.isNotNull(query.getAuthentication()), |
| | | AuctionGoods::getAuthentication, query.getAuthentication()) |
| | |
| | | .eq(StringUtils.isNotNull(query.getStartStatus()), AuctionGoods::getStartStatus, |
| | | query.getStartStatus()) |
| | | .page(new Page<>(query.getPageCurr(), query.getPageSize())); |
| | | return PageDTO.of(page, MgtAuctionGoodsVO.class); |
| | | if (StringUtils.isEmpty(page.getRecords())) { |
| | | return PageDTO.empty(page.getTotal(), page.getPages()); |
| | | } |
| | | // 查询商品信息 |
| | | Set<Long> goodsIdList = page.getRecords().stream().map(AuctionGoods::getGoodsSkuId) |
| | | .collect(Collectors.toSet()); |
| | | List<GoodsSku> data = goodsSkuClient.getGoodsListByIds(goodsIdList, SecurityConstants.INNER) |
| | | .getData(); |
| | | PageDTO<MgtAuctionGoodsVO> pageDTO = PageDTO.of(page, |
| | | MgtAuctionGoodsVO.class); |
| | | if (StringUtils.isNotEmpty(data)) { |
| | | Map<Long, GoodsSku> goodsSkuMap = data.stream() |
| | | .collect(Collectors.toMap(GoodsSku::getId, e -> e)); |
| | | for (MgtAuctionGoodsVO mgtAuctionGoodsVO : pageDTO.getList()) { |
| | | GoodsSku goodsSku = goodsSkuMap.get(mgtAuctionGoodsVO.getGoodsSkuId()); |
| | | if (StringUtils.isNotNull(goodsSku)) { |
| | | mgtAuctionGoodsVO.setGoodsSkuName(goodsSku.getSkuName()); |
| | | mgtAuctionGoodsVO.setSpec(goodsSku.getSpec()); |
| | | } |
| | | } |
| | | } |
| | | return pageDTO; |
| | | } |
| | | |
| | | @Override |
| | |
| | | } |
| | | MgtAuctionGoodsVO auctionGoodsVO = BeanUtils.copyBean(auctionGoods, |
| | | MgtAuctionGoodsVO.class); |
| | | // 远程调用商品服务,获取商品信息 |
| | | GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(auctionGoods.getGoodsSkuId(), |
| | | SecurityConstants.INNER).getData(); |
| | | if (StringUtils.isNotNull(goodsSku)) { |
| | | auctionGoodsVO.setGoodsSkuName(goodsSku.getSkuName()); |
| | | } |
| | | if (!auctionGoods.getStartStatus().equals(AuctionStartStatusEnum.IN_PREVIEW)) { |
| | | List<AuctionBidRecord> list = auctionBidRecordService.lambdaQuery() |
| | | .eq(AuctionBidRecord::getTargetId, auctionGoodsVO.getId()) |
| | |
| | | }else { |
| | | auctionGoodsinfoVO.setIsCollection(1); |
| | | } |
| | | List<OrderAuctionBond> datas = orderClient.getAuctionGoodsOrderAuctionBondList(auctionGoodsListDTO, SecurityConstants.INNER).getData(); |
| | | List<OrderAuctionBond> datas = auctionClient.getAuctionGoodsOrderAuctionBondList(auctionGoodsListDTO, SecurityConstants.INNER).getData(); |
| | | if (datas.size()>0){ |
| | | auctionGoodsinfoVO.setIsApply(2); |
| | | }else{ |
| | |
| | | public PageDTO<AuctionGoodsListVO> getWdAuctionSalesList(AuctionGoodsListDTO auctionGoodsListDTO) { |
| | | MemberAuctionSalesroomDTO memberAuctionSalesroomDTO =new MemberAuctionSalesroomDTO(); |
| | | memberAuctionSalesroomDTO.setMemberId(auctionGoodsListDTO.getMemberId()); |
| | | List<OrderAuctionBond> data = orderClient.getAuctionGoodsOrderAuctionBondList(auctionGoodsListDTO, SecurityConstants.INNER).getData(); |
| | | List<OrderAuctionBond> data = auctionClient.getAuctionGoodsOrderAuctionBondList(auctionGoodsListDTO, SecurityConstants.INNER).getData(); |
| | | Set<Long> goodsSkuIdList = null; |
| | | goodsSkuIdList = data.stream().map(OrderAuctionBond::getAuctionSalesroomId) |
| | | .collect(Collectors.toSet()); |
| | |
| | | AuctionGoods auctionGoods = this.getById(id); |
| | | if (StringUtils.isNotNull(auctionGoods) && auctionGoods.getListingStatus().equals( |
| | | ListingStatusEnum.ON_SHELVES) && auctionGoods.getStartStatus() |
| | | .equals(AuctionStartStatusEnum.IN_AUCTION)) { |
| | | this.lambdaUpdate().set(AuctionGoods::getStartStatus, AuctionStartStatusEnum.ENDED) |
| | | .eq(AuctionGoods::getId, id); |
| | | Map<String, Object> map = new ConcurrentHashMap<>(); |
| | | map.put("notification_type", NotificationTypeConstant.AUCTION_GOODS); |
| | | map.put("notification_time", LocalDateTime.now()); |
| | | map.put("target_id", id); |
| | | map.put("message_type", "end"); |
| | | String msg = objectMapper.writeValueAsString(map); |
| | | WebSocketUsers.sendMessageToUsersByText(msg); |
| | | log.info("===================>发送websocket通知,消息体{}", msg); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void startAuctionGoods(Long id) throws JsonProcessingException { |
| | | AuctionGoods auctionGoods = this.getById(id); |
| | | if (StringUtils.isNotNull(auctionGoods) && auctionGoods.getListingStatus().equals( |
| | | ListingStatusEnum.ON_SHELVES) && auctionGoods.getStartStatus() |
| | | .equals(AuctionStartStatusEnum.IN_PREVIEW)) { |
| | | this.lambdaUpdate().set(AuctionGoods::getStartStatus, AuctionStartStatusEnum.IN_AUCTION) |
| | | .eq(AuctionGoods::getId, id); |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 下架/上架 拍卖商品 |
| | | * |
| | | * @param dto 商品上下架状态对象 |
| | | */ |
| | | @Override |
| | | public void startAuctionGoods(Long id) throws JsonProcessingException { |
| | | AuctionGoods auctionGoods = this.getById(id); |
| | | if (StringUtils.isNotNull(auctionGoods) && auctionGoods.getListingStatus().equals( |
| | | ListingStatusEnum.ON_SHELVES) && auctionGoods.getStartStatus() |
| | | .equals(AuctionStartStatusEnum.IN_AUCTION)) { |
| | | this.lambdaUpdate().set(AuctionGoods::getStartStatus, AuctionStartStatusEnum.ENDED) |
| | | .eq(AuctionGoods::getId, id); |
| | | Map<String, Object> map = new ConcurrentHashMap<>(); |
| | | map.put("notification_type", NotificationTypeConstant.AUCTION_GOODS); |
| | | map.put("notification_time", LocalDateTime.now()); |
| | | map.put("target_id", id); |
| | | map.put("message_type", "end"); |
| | | String msg = objectMapper.writeValueAsString(map); |
| | | WebSocketUsers.sendMessageToUsersByText(msg); |
| | | log.info("===================>发送websocket通知,消息体{}", msg); |
| | | public void updStatus(ListStatusDTO dto) { |
| | | AuctionGoods auctionGoods = this.getById(dto.getId()); |
| | | if (StringUtils.isNull(auctionGoods)) { |
| | | throw new ServiceException("拍卖商品不存在"); |
| | | } |
| | | auctionGoods.setListingStatus(dto.getListingStatus()); |
| | | this.updateById(auctionGoods); |
| | | } |
| | | } |