rentaiming
2024-07-31 20b8e50ddb2daf21d65a43ec363e5925edb5b10e
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;
@@ -32,6 +34,7 @@
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.page.BeanUtils;
import com.ruoyi.common.core.utils.page.CollUtils;
import com.ruoyi.common.core.utils.page.PageDTO;
import com.ruoyi.system.api.constants.ConfigEnum;
import com.ruoyi.system.api.constants.NotificationTypeConstant;
@@ -114,6 +117,9 @@
    @Resource
    private IAuctionBrowseRecordService iAuctionBrowseRecordService;
    @Resource
    private AuctionBondJlMapper auctionBondJlMapper;
    /**
     * 获取拍卖商品列表的分页数据
@@ -242,7 +248,19 @@
            auctionGoodsOrg.setSharePic(dto.getSharePic());
            this.updateById(auctionGoodsOrg);
        }
        auctionAsyncMethodService.auctionGoodsScheduleTask(Lists.newArrayList(auctionGoods));
        if (auctionGoods.getEndTime().isBefore(LocalDateTime.now())) {
            // 退回剩余库存
            GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO();
            goodsStockUpdDTO.setAuctionStock(auctionGoods.getAuctionStock());
            goodsStockUpdDTO.setGoodsSkuId(auctionGoods.getGoodsSkuId());
            goodsSkuClient.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO),
                    SecurityConstants.INNER);
            auctionGoods.setStartStatus(AuctionStartStatusEnum.ENDED);
            this.updateById(auctionGoods);
        } else {
            auctionAsyncMethodService.auctionGoodsScheduleTask(Lists.newArrayList(auctionGoods));
        }
    }
    /**
@@ -404,20 +422,22 @@
                for (OrderAuctionBond orderAuctionBond : auctionBondList) {
                    // 已中标需在订单完成后退保证金
                    if (unRefundMemberIdList.contains(orderAuctionBond.getMemberId())) {
                    if (unRefundMemberIdList.contains(orderAuctionBond.getMemberId())
                            || Objects.isNull(orderAuctionBond.getBond())) {
                        continue;
                    }
                    RefundDTO refundDTO = new RefundDTO();
                    refundDTO.setOrderNo(orderAuctionBond.getOrderNo());
                    refundDTO.setAmount(orderAuctionBond.getBond());
                    refundDTOList.add(refundDTO);
                }
                // 远程调用订单服务进行退款
                Map<String, Object> data = orderClient.refund(refundDTOList,
                        SecurityConstants.INNER).getData();
                if (CollUtils.isNotEmpty(data)) {
                // 处理退款返回结果
                List<String> successfulOrders = new ArrayList<>();
                List<String> failedOrders = new ArrayList<>();
                data.forEach((key, value) -> {
                    if ((boolean) value) {
                        successfulOrders.add(key);
@@ -433,8 +453,11 @@
                    }
                    return null;
                }).filter(Objects::nonNull).collect(Collectors.toList());
                // 远程调用订单服务修改订单状态
                orderClient.updateOrderAuctionBondStatus(ids, BondStatusEnum.PAID,SecurityConstants.INNER);
                orderClient.updateOrderAuctionBondStatus(ids, BondStatusEnum.REFUNDED,
                        SecurityConstants.INNER);
                }
            }
        }
    }
@@ -446,12 +469,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());
@@ -563,15 +597,18 @@
        }else {
            auctionGoodsinfoVO.setIsCollection(1);
        }
        List<OrderAuctionBond> datas = orderClient.getAuctionGoodsOrderAuctionBondList(auctionGoodsListDTO, SecurityConstants.INNER).getData();
       if(datas!=null){
           if (datas.size()>0){
        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);
@@ -588,6 +625,7 @@
            AuctionBrowseRecord auctionBrowseRecord=new AuctionBrowseRecord();
            auctionBrowseRecord.setBrowseType(AuctionOrderTypeEnum.REGULAR_ITEMS);
            auctionBrowseRecord.setMemberId(auctionGoodsListDTO.getMemberId());
            auctionBrowseRecord.setSkuName(goodsSkuOne.getSkuName());
            auctionBrowseRecord.setTargetId(auctionGoodsListDTO.getGoodsSkuId());
            iAuctionBrowseRecordService.save(auctionBrowseRecord);
        }
@@ -698,8 +736,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(),
@@ -804,6 +841,7 @@
                        RefundDTO refundDTO = new RefundDTO();
                        refundDTO.setOrderNo(orderAuctionBond.getOrderNo());
                        refundDTO.setAmount(orderAuctionBond.getBond());
                        refundDTOList.add(refundDTO);
                    }
                    // 远程调用订单服务进行退款
                    Map<String, Object> data = orderClient.refund(refundDTOList,
@@ -879,6 +917,19 @@
        this.updateById(auctionGoods);
    }
    /**
     * 根据商品id获取正在进行的拍卖商品
     *
     * @param id 商品id
     * @return
     */
    @Override
    public List<AuctionGoods> getAuctionGoodsBySkuId(Long id) {
        return this.list(new LambdaQueryWrapper<AuctionGoods>().eq(AuctionGoods::getGoodsSkuId,
                        id).eq(AuctionGoods::getListingStatus, ListingStatusEnum.ON_SHELVES)
                .eq(AuctionGoods::getStartStatus, AuctionStartStatusEnum.IN_AUCTION));
    }
    public static void main(String[] args) throws JsonProcessingException {
        Map<String, Object> map = new ConcurrentHashMap<>();
        map.put("notification_type", NotificationTypeConstant.AUCTION_GOODS);
@@ -888,4 +939,5 @@
        String msg = objectMapper.writeValueAsString(map);
        System.out.println(msg);
    }
}