From 2dcde26e44e85d84c3a20fee0aaed3724edba3bc Mon Sep 17 00:00:00 2001
From: rentaiming <806181062@qq.com>
Date: 星期一, 03 六月 2024 14:11:40 +0800
Subject: [PATCH] 用户端商品

---
 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java |  149 ++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 144 insertions(+), 5 deletions(-)

diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java
index dd17481..bfb52e2 100644
--- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java
+++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java
@@ -24,8 +24,10 @@
 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.dto.MgtScreenBidPage;
 import com.ruoyi.auction.controller.management.vo.MgtAuctionBidRecordVO;
 import com.ruoyi.auction.controller.management.vo.MgtAuctionSalesroomGoodsVO;
+import com.ruoyi.auction.controller.management.vo.MgtAuctionSalesroomScreenVO;
 import com.ruoyi.auction.controller.management.vo.MgtAuctionSalesroomVO;
 import com.ruoyi.auction.domain.AuctionBidRecord;
 import com.ruoyi.auction.domain.AuctionSalesroomGoods;
@@ -33,11 +35,16 @@
 import com.ruoyi.auction.mapper.AuctionBidRecordMapper;
 import com.ruoyi.auction.mapper.AuctionSalesroomGoodsMapper;
 import com.ruoyi.auction.mapper.AuctionSalesroomMapper;
-import com.ruoyi.auction.service.*;
+import com.ruoyi.auction.service.IAuctionBidRecordService;
+import com.ruoyi.auction.service.IAuctionBrowseRecordService;
+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.SecurityConstants;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.enums.AuctionGoodsStatusEnum;
 import com.ruoyi.common.core.enums.AuctionOrderTypeEnum;
 import com.ruoyi.common.core.enums.AuctionStartStatusEnum;
 import com.ruoyi.common.core.enums.BidStatusEnum;
@@ -56,7 +63,13 @@
 import com.ruoyi.system.api.domain.Member;
 import com.ruoyi.system.api.domain.OrderAuctionBond;
 import com.ruoyi.system.api.domain.SysUser;
-import com.ruoyi.system.api.domain.dto.*;
+import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO;
+import com.ruoyi.system.api.domain.dto.BidDTO;
+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.MemberAuctionSalesroomWdDTO;
+import com.ruoyi.system.api.domain.dto.RefundDTO;
 import com.ruoyi.system.api.domain.vo.PayInfoVO;
 import com.ruoyi.system.api.domain.vo.WdMemberAuctionSalesroomVO;
 import com.ruoyi.system.api.feignClient.GoodsSkuClient;
@@ -66,7 +79,12 @@
 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.concurrent.atomic.AtomicReference;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 import javax.annotation.Resource;
@@ -104,7 +122,6 @@
     @Resource
     private AuctionSalesroomGoodsMapper auctionSalesroomGoodsMapper;
 
-
     @Resource
     private IAuctionGoodsService auctionGoodsService;
 
@@ -113,6 +130,7 @@
 
     @Resource
     private OrderClient orderClient;
+
     @Resource
     private MemberClient memberClient;
 
@@ -377,7 +395,7 @@
             forepartAuctionSalesroomGoodsVO.setStartingPrice(salesroomGoods.getStartingPrice());
             forepartAuctionSalesroomGoodsVO.setSalesroomStock(salesroomGoods.getSalesroomStock());
             forepartAuctionSalesroomGoodsVO.setGoodsSkustatus(salesroomGoods.getStatus().getCode());
-
+            forepartAuctionSalesroomGoodsVO.setYears(String.valueOf(goodsSku.getYears()));
             LambdaQueryWrapper<AuctionBidRecord> wrapper1=Wrappers.lambdaQuery();
             wrapper1.eq(AuctionBidRecord::getMemberId,memberAuctionSalesroomDTO.getMemberId());
             wrapper1.eq(AuctionBidRecord::getAuctionSalesroomId,byId.getId());
@@ -805,6 +823,7 @@
         // 获取拍卖场商品
         LambdaQueryWrapper<AuctionSalesroomGoods> wrappers=new LambdaQueryWrapper<AuctionSalesroomGoods>();
         wrappers.eq(AuctionSalesroomGoods::getAuctionSalesroomId, id);
+        wrappers.orderByDesc(AuctionSalesroomGoods::getSortNum);
         List<AuctionSalesroomGoods> list = auctionSalesroomGoodsMapper.selectList(wrappers);
         if (StringUtils.isNotEmpty(list)) {
             List<MgtAuctionSalesroomGoodsVO> mgtAuctionSalesroomGoodsVOS = BeanUtils.copyList(list,
@@ -823,6 +842,7 @@
                 GoodsSku goodsSku = goodsSkuMap.get(vo.getGoodsSkuId());
                 if (StringUtils.isNotNull(goodsSku)) {
                     vo.setGoodsSkuName(goodsSku.getSkuName());
+                    vo.setSpec(goodsSku.getSpec());
                 }
             }
             mgtAuctionSalesroomVO.setAuctionSalesroomGoodsVOS(mgtAuctionSalesroomGoodsVOS);
@@ -878,4 +898,123 @@
         }
         return mgtAuctionBidRecordVOPageDTO;
     }
+
+    /**
+     * 大屏操作台分页查询拍卖场
+     *
+     * @param query 拍卖场查询对象
+     * @return PageDTO<MgtAuctionSalesroomVO>
+     */
+    @Override
+    public PageDTO<MgtAuctionSalesroomVO> getAuctionSalesroom4ScreenPage(
+            MgtAuctionSalesroomQuery query) {
+        // 分页查询
+        Page<AuctionSalesroom> page = this.lambdaQuery()
+                .select(AuctionSalesroom::getId, AuctionSalesroom::getSalesroomName,
+                        AuctionSalesroom::getStartTime, AuctionSalesroom::getStatus)
+                .like(StringUtils.isNotEmpty(query.getSalesroomName()),
+                        AuctionSalesroom::getSalesroomName, query.getSalesroomName())
+                .eq(StringUtils.isNotNull(query.getStatus()), AuctionSalesroom::getStatus,
+                        query.getStatus())
+                .ne(AuctionSalesroom::getStatus, AuctionStartStatusEnum.ENDED)
+                .between(StringUtils.isNotNull(query.getStartTime()) && StringUtils.isNotNull(
+                                query.getEndTime()), AuctionSalesroom::getStartTime, query.getStartTime(),
+                        query.getEndTime())
+                .page(new Page<>(query.getPageCurr(), query.getPageSize()));
+        List<AuctionSalesroom> records = page.getRecords();
+        if (StringUtils.isNull(records)) {
+            return PageDTO.empty(page);
+        }
+        return PageDTO.of(page, MgtAuctionSalesroomVO.class);
+    }
+
+    /**
+     * 进入详情
+     *
+     * @param id 拍卖会id
+     * @return 大屏操作台拍卖场视图对象
+     */
+    @Override
+    public MgtAuctionSalesroomScreenVO getAuctionSalesroomDetail(Long id) {
+        MgtAuctionSalesroomVO mgtAuctionSalesroomVO = this.getAuctionSalesroom(id);
+        MgtAuctionSalesroomScreenVO vo = BeanUtils.copyBean(
+                mgtAuctionSalesroomVO, MgtAuctionSalesroomScreenVO.class);
+        if (vo.getStatus().equals(AuctionStartStatusEnum.IN_AUCTION)) {
+            List<MgtAuctionSalesroomGoodsVO> auctionSalesroomGoodsVOS = vo.getAuctionSalesroomGoodsVOS();
+            List<MgtAuctionSalesroomGoodsVO> collect = auctionSalesroomGoodsVOS.stream()
+                    .peek(goods -> {
+                        List<AuctionBidRecord> list = auctionBidRecordService.lambdaQuery()
+                                .eq(AuctionBidRecord::getTargetId, goods.getId())
+                                .eq(AuctionBidRecord::getAuctionType,
+                                        AuctionOrderTypeEnum.AUCTION_ITEMS)
+                                .list();
+                        if (StringUtils.isNotEmpty(list)) {
+                            long bidCount = list.stream()
+                                    .filter(item -> BidStatusEnum.SUCCESSFUL.equals(
+                                            item.getStatus()))
+                                    .count();
+                            goods.setBidCount((int) bidCount);
+                            goods.setBidQuantity((int) bidCount);
+                            goods.setBidPersonCount(list.size());
+                        }
+                        if (goods.getStatus().equals(AuctionGoodsStatusEnum.IN_PROGRESS)) {
+                            vo.setCurrentAuctionSalesroomGoods(goods);
+                        }
+                    }).collect(Collectors.toList());
+            vo.setAuctionSalesroomGoodsVOS(collect);
+            if (StringUtils.isNotNull(vo.getCurrentAuctionSalesroomGoods())) {
+                int index = collect.indexOf(vo.getCurrentAuctionSalesroomGoods());
+                vo.setNextAuctionSalesroomGoods(collect.get(index + 1));
+                // 分页查询当前拍品出价信息
+                List<AuctionBidRecord> list = auctionBidRecordService.lambdaQuery()
+                        .eq(AuctionBidRecord::getTargetId,
+                                vo.getCurrentAuctionSalesroomGoods().getId())
+                        .eq(AuctionBidRecord::getAuctionType,
+                                AuctionOrderTypeEnum.AUCTION_ITEMS)
+                        .list();
+                if (StringUtils.isNotEmpty(list)) {
+                    vo.setMgtAuctionBidRecordVOList(CollUtils.emptyList());
+                }
+                vo.setMgtAuctionBidRecordVOList(
+                        BeanUtils.copyList(list, MgtAuctionBidRecordVO.class));
+            } else {
+                vo.setNextAuctionSalesroomGoods(collect.get(0));
+            }
+        }
+        return vo;
+    }
+
+    /**
+     * 进入详情-出价会员列表
+     *
+     * @param mgtScreenBidPage
+     * @return PageDTO<MgtAuctionBidRecordVO>
+     */
+    @Override
+    public PageDTO<MgtAuctionBidRecordVO> getScreenBidRecordList(
+            MgtScreenBidPage mgtScreenBidPage) {
+        MgtAuctionSalesroomVO mgtAuctionSalesroomVO = this.getAuctionSalesroom(
+                mgtScreenBidPage.getId());
+        List<MgtAuctionSalesroomGoodsVO> auctionSalesroomGoodsVOS = mgtAuctionSalesroomVO.getAuctionSalesroomGoodsVOS();
+        if (StringUtils.isEmpty(auctionSalesroomGoodsVOS)) {
+            throw new ServiceException("该拍卖会暂无拍卖商品");
+        }
+        AtomicReference<Long> currentAuctionGoodsId = new AtomicReference<>();
+        auctionSalesroomGoodsVOS.stream()
+                .filter(item -> item.getStatus().equals(AuctionGoodsStatusEnum.IN_PROGRESS))
+                .findFirst().ifPresent(goods -> {
+                    currentAuctionGoodsId.set(goods.getId());
+                });
+        Page<AuctionBidRecord> page = auctionBidRecordService.lambdaQuery()
+                .eq(StringUtils.isNotNull(currentAuctionGoodsId.get()),
+                        AuctionBidRecord::getTargetId,
+                        currentAuctionGoodsId.get())
+                .eq(AuctionBidRecord::getAuctionType,
+                        AuctionOrderTypeEnum.AUCTION_ITEMS)
+                .page(new Page<>(mgtScreenBidPage.getPageCurr(), mgtScreenBidPage.getPageSize()));
+        if (StringUtils.isNotEmpty(page.getRecords())) {
+            return PageDTO.empty(page);
+        }
+        return PageDTO.of(page, MgtAuctionBidRecordVO.class);
+    }
 }

--
Gitblit v1.7.1