mitao
2024-05-31 7ce97a95ba44b18aa525b2c0540e5162c59d1474
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java
@@ -20,20 +20,19 @@
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;
import com.ruoyi.auction.domain.AuctionVideo;
import com.ruoyi.auction.mapper.AuctionSalesroomGoodsMapper;
import com.ruoyi.auction.mapper.AuctionSalesroomMapper;
import com.ruoyi.auction.service.IAuctionBidRecordService;
import com.ruoyi.auction.service.IAuctionGoodsService;
import com.ruoyi.auction.service.IAuctionSalesroomGoodsService;
import com.ruoyi.auction.service.IAuctionSalesroomService;
import com.ruoyi.auction.service.IAuctionVideoService;
import com.ruoyi.auction.service.*;
import com.ruoyi.auction.util.CreateQrCode;
import com.ruoyi.auction.util.HttpUtils;
import com.ruoyi.common.core.constant.SecurityConstants;
@@ -60,7 +59,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 +69,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>
@@ -90,8 +92,6 @@
 */
@Service
public class AuctionSalesroomServiceImpl extends ServiceImpl<AuctionSalesroomMapper, AuctionSalesroom> implements IAuctionSalesroomService {
    @Resource
    private IAuctionSalesroomService iAuctionSalesroomService;
    @Resource
    private IAuctionBidRecordService auctionBidRecordService;
@@ -124,6 +124,9 @@
    private OrderClient orderClient;
    @Resource
    private MemberClient memberClient;
    @Resource
    private IAuctionBrowseRecordService  iAuctionBrowseRecordService;
    //微信
@@ -168,7 +171,7 @@
        LambdaQueryWrapper<AuctionSalesroom> wrapper=Wrappers.lambdaQuery();
        wrapper.eq(AuctionSalesroom::getSalesroomName,ationSalesroomGoodsDTO.getSalesroomName());
        wrapper.eq(AuctionSalesroom::getDelFlag,0);
        Page<AuctionSalesroom> page1=iAuctionSalesroomService.page(page, wrapper);
        Page<AuctionSalesroom> page1 = this.page(page, wrapper);
        return PageDTO.of(page1);
    }
@@ -179,7 +182,8 @@
        wrapper.eq(AuctionVideo::getDelFlag,0);
        AuctionVideo auctionVideo=iAuctionVideoService.getOne(wrapper);
        ForepartAuctionSalesroomVO forepartAuctionSalesroomVO =new ForepartAuctionSalesroomVO();
        AuctionSalesroom auctionSalesroom=iAuctionSalesroomService.getById(ationSalesroomGoodsDTO.getAuctionSalesroomId());
        AuctionSalesroom auctionSalesroom = this.getById(
                ationSalesroomGoodsDTO.getAuctionSalesroomId());
        forepartAuctionSalesroomVO.setAuctionSalesroomStatus(auctionSalesroom.getStatus().getCode());
        if (auctionVideo!=null){
            forepartAuctionSalesroomVO.setUrl(auctionVideo.getPromotionVideoUrl());
@@ -209,7 +213,7 @@
        LambdaQueryWrapper<AuctionSalesroom> wrapper=Wrappers.lambdaQuery();
        wrapper.eq(AuctionSalesroom::getAuctionSalesroomNo,arepartAuctionBidRecordDTO.getAuctionSalesroomQrcode());
        wrapper.eq(AuctionSalesroom::getDelFlag,0);
        AuctionSalesroom auctionBidRecord=iAuctionSalesroomService.getOne(wrapper);
        AuctionSalesroom auctionBidRecord = this.getOne(wrapper);
        return auctionBidRecord;
    }
@@ -345,7 +349,7 @@
    @Override
    public MemberAuctionSalesroomInfoVO getMemberAuctionSalesroomInfo(MemberAuctionSalesroomDTO memberAuctionSalesroomDTO) {
        AuctionSalesroom byId = iAuctionSalesroomService.getById(memberAuctionSalesroomDTO.getAuctionSalesroomId());
        AuctionSalesroom byId = this.getById(memberAuctionSalesroomDTO.getAuctionSalesroomId());
        MemberAuctionSalesroomInfoVO memberAuctionSalesroomInfoVO=new MemberAuctionSalesroomInfoVO();
        memberAuctionSalesroomInfoVO.setId(byId.getId());
        memberAuctionSalesroomInfoVO.setBound(byId.getBond());
@@ -408,7 +412,7 @@
        LambdaQueryWrapper<AuctionSalesroom> wrapper=Wrappers.lambdaQuery();
        wrapper.eq(AuctionSalesroom::getAuctionSalesroomNo,MemberAuctionSalesroomDTO.getSalesroomNO());
        wrapper.eq(AuctionSalesroom::getDelFlag,0);
        AuctionSalesroom auctionSalesroom=iAuctionSalesroomService.getOne(wrapper);
        AuctionSalesroom auctionSalesroom = this.getOne(wrapper);
        MemberAuctionSalesroomVO memberAuctionSalesroomVO=new MemberAuctionSalesroomVO();
        memberAuctionSalesroomVO.setSalesroomName(auctionSalesroom.getSalesroomName());
        memberAuctionSalesroomVO.setStatus(auctionSalesroom.getStatus().getCode());
@@ -683,6 +687,9 @@
        page.setCurrent(memberAuctionSalesroomDTO.getPageCurr());
        MemberAuctionSalesroomWdDTO memberAuctionSalesroomWdDTO=new MemberAuctionSalesroomWdDTO();
        memberAuctionSalesroomWdDTO.setGoodsSkuIdList(goodsSkuIdList);
        if(memberAuctionSalesroomWdDTO.getStatus()!=4){
            memberAuctionSalesroomWdDTO.setStatus(memberAuctionSalesroomWdDTO.getStatus());
        }
        List<AuctionSalesroom> auctionSalesroomList=auctionSalesroomMapper.pageMemberAuctionSalesroomWdList(page,memberAuctionSalesroomWdDTO);
        List<WdMemberAuctionSalesroomVO> List=new ArrayList<>();
        for (AuctionSalesroom auctionSalesroom:auctionSalesroomList){
@@ -703,4 +710,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;
    }
}