mitao
2024-05-30 9c79ad34c11eb1a51e41ab62eb1e1d801f479398
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java
@@ -20,9 +20,12 @@
import com.ruoyi.auction.controller.forepart.vo.ForepartAuctionSalesroomVO;
import com.ruoyi.auction.controller.forepart.vo.MemberAuctionSalesroomInfoVO;
import com.ruoyi.auction.controller.forepart.vo.MemberAuctionSalesroomVO;
import com.ruoyi.auction.controller.management.dto.MgtAuctionSaleroomBidRecordQuery;
import com.ruoyi.auction.controller.management.dto.MgtAuctionSalesroomDTO;
import com.ruoyi.auction.controller.management.dto.MgtAuctionSalesroomGoodsDTO;
import com.ruoyi.auction.controller.management.dto.MgtAuctionSalesroomQuery;
import com.ruoyi.auction.controller.management.vo.MgtAuctionBidRecordVO;
import com.ruoyi.auction.controller.management.vo.MgtAuctionSalesroomGoodsVO;
import com.ruoyi.auction.controller.management.vo.MgtAuctionSalesroomVO;
import com.ruoyi.auction.domain.AuctionBidRecord;
import com.ruoyi.auction.domain.AuctionSalesroomGoods;
@@ -60,7 +63,7 @@
import com.ruoyi.system.api.domain.dto.GoodsStockUpdDTO;
import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomBondDTO;
import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomDTO;
import com.ruoyi.system.api.domain.dto.*;
import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomWdDTO;
import com.ruoyi.system.api.domain.vo.PayInfoVO;
import com.ruoyi.system.api.domain.vo.WdMemberAuctionSalesroomVO;
import com.ruoyi.system.api.feignClient.GoodsSkuClient;
@@ -70,15 +73,18 @@
import io.seata.spring.annotation.GlobalTransactional;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import org.apache.http.HttpResponse;
import org.apache.http.util.EntityUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
/**
 * <p>
@@ -703,4 +709,92 @@
        return PageDTO.of(page);
    }
    /**
     * 查看详情
     *
     * @param id 拍卖会id
     * @return 拍卖场视图对象
     */
    @Override
    public MgtAuctionSalesroomVO getAuctionSalesroom(Long id) {
        // 获取拍卖场
        AuctionSalesroom auctionSalesroom = this.getById(id);
        MgtAuctionSalesroomVO mgtAuctionSalesroomVO = BeanUtils.copyBean(auctionSalesroom,
                MgtAuctionSalesroomVO.class);
        // 获取拍卖场商品
        List<AuctionSalesroomGoods> list = auctionSalesroomGoodsService.lambdaQuery()
                .eq(AuctionSalesroomGoods::getAuctionSalesroomId, id).list();
        if (StringUtils.isNotEmpty(list)) {
            List<MgtAuctionSalesroomGoodsVO> mgtAuctionSalesroomGoodsVOS = BeanUtils.copyList(list,
                    MgtAuctionSalesroomGoodsVO.class);
            Set<Long> goodsIdList = mgtAuctionSalesroomGoodsVOS.stream()
                    .map(MgtAuctionSalesroomGoodsVO::getGoodsSkuId).collect(
                            Collectors.toSet());
            // 获取商品信息
            List<GoodsSku> goodsSkuList = goodsSkuClient.getGoodsListByIds(goodsIdList,
                    SecurityConstants.INNER).getData();
            Map<Long, GoodsSku> goodsSkuMap = goodsSkuList.stream()
                    .collect(Collectors.toMap(GoodsSku::getId, Function.identity()));
            // 封装商品名称
            for (MgtAuctionSalesroomGoodsVO vo : mgtAuctionSalesroomGoodsVOS) {
                GoodsSku goodsSku = goodsSkuMap.get(vo.getGoodsSkuId());
                if (StringUtils.isNotNull(goodsSku)) {
                    vo.setGoodsSkuName(goodsSku.getSkuName());
                }
            }
            mgtAuctionSalesroomVO.setAuctionSalesroomGoodsVOS(mgtAuctionSalesroomGoodsVOS);
        }
        return mgtAuctionSalesroomVO;
    }
    /**
     * 查看详情-出价记录
     *
     * @param query 拍卖场出价记录查询对象
     * @return PageDTO<MgtAuctionBidRecordVO>
     */
    @Override
    public PageDTO<MgtAuctionBidRecordVO> getAuctionSalesroomBidRecordList(
            MgtAuctionSaleroomBidRecordQuery query) {
        Page<AuctionBidRecord> page = auctionBidRecordService.lambdaQuery()
                .eq(AuctionBidRecord::getTargetId, query.getId())
                .eq(AuctionBidRecord::getAuctionType, AuctionOrderTypeEnum.AUCTION_ITEMS)
                .orderByDesc(query.getSortType() == 1, AuctionBidRecord::getLastBidAmount)
                .orderByDesc(query.getSortType() == 2, AuctionBidRecord::getBidCount)
                .page(new Page<>(query.getPageCurr(), query.getPageSize()));
        if (StringUtils.isNull(page.getRecords())) {
            return PageDTO.empty(page);
        }
        PageDTO<MgtAuctionBidRecordVO> mgtAuctionBidRecordVOPageDTO = PageDTO.of(page,
                MgtAuctionBidRecordVO.class);
        List<MgtAuctionBidRecordVO> list = mgtAuctionBidRecordVOPageDTO.getList();
        Set<Long> goodsIdList = list.stream().map(MgtAuctionBidRecordVO::getGoodsSkuId)
                .collect(Collectors.toSet());
        Set<Long> memberIdList = list.stream().map(MgtAuctionBidRecordVO::getMemberId)
                .collect(Collectors.toSet());
        List<GoodsSku> goodsSkuList = goodsSkuClient.getGoodsListByIds(goodsIdList,
                        SecurityConstants.INNER)
                .getData();
        List<Member> memberList = memberClient.getMemberListByIds(memberIdList,
                        SecurityConstants.INNER)
                .getData();
        Map<Long, GoodsSku> goodsSkuMap = goodsSkuList.stream()
                .collect(Collectors.toMap(GoodsSku::getId, Function.identity()));
        Map<Long, Member> memberMap = memberList.stream()
                .collect(Collectors.toMap(Member::getId, Function.identity()));
        for (MgtAuctionBidRecordVO vo : list) {
            GoodsSku goodsSku = goodsSkuMap.get(vo.getGoodsSkuId());
            Member member = memberMap.get(vo.getMemberId());
            if (StringUtils.isNotNull(goodsSku)) {
                vo.setGoodsSkuName(goodsSku.getSkuName());
            }
            if (StringUtils.isNotNull(member)) {
                vo.setMemberName(member.getNickname());
                vo.setPhone(member.getPhone());
            }
        }
        return mgtAuctionBidRecordVOPageDTO;
    }
}