From e43e290ac0fdbfdf4187ccae8e9af02bec517911 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期二, 28 五月 2024 20:59:55 +0800
Subject: [PATCH] 提交【管理后台】拍卖商品管理 立即结束接口

---
 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java |   48 ++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 46 insertions(+), 2 deletions(-)

diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java
index 8c1c8df..e70ee71 100644
--- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java
+++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java
@@ -12,16 +12,23 @@
 import com.ruoyi.auction.service.IAuctionBidRecordService;
 import com.ruoyi.auction.service.IAuctionGoodsService;
 import com.ruoyi.common.core.constant.SecurityConstants;
+import com.ruoyi.common.core.enums.AuctionOrderTypeEnum;
 import com.ruoyi.common.core.enums.AuctionStartStatusEnum;
+import com.ruoyi.common.core.enums.BidStatusEnum;
+import com.ruoyi.common.core.enums.OrderFromEnum;
 import com.ruoyi.common.core.exception.ServiceException;
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.utils.page.BeanUtils;
 import com.ruoyi.common.core.utils.page.PageDTO;
 import com.ruoyi.system.api.domain.GoodsSku;
 import com.ruoyi.system.api.domain.Member;
+import com.ruoyi.system.api.domain.MemberAddress;
+import com.ruoyi.system.api.domain.dto.OrderDTO;
 import com.ruoyi.system.api.feignClient.GoodsSkuClient;
 import com.ruoyi.system.api.feignClient.MemberClient;
+import com.ruoyi.system.api.feignClient.OrderClient;
 import io.seata.spring.annotation.GlobalTransactional;
+import java.time.LocalDateTime;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -47,6 +54,7 @@
     private final GoodsSkuClient goodsSkuClient;
     private final IAuctionBidRecordService auctionBidRecordService;
     private final MemberClient memberClient;
+    private final OrderClient orderClient;
     /**
      * 获取拍卖商品列表的分页数据
      *
@@ -154,7 +162,8 @@
         AuctionGoodsVO auctionGoodsVO = BeanUtils.copyBean(auctionGoods, AuctionGoodsVO.class);
         if (!auctionGoods.getStartStatus().equals(AuctionStartStatusEnum.IN_PREVIEW)) {
             List<AuctionBidRecord> list = auctionBidRecordService.lambdaQuery()
-                    .eq(AuctionBidRecord::getGoodsSkuId, auctionGoods.getGoodsSkuId())
+                    .eq(AuctionBidRecord::getTargetId, auctionGoodsVO.getId())
+                    .eq(AuctionBidRecord::getAuctionType, AuctionOrderTypeEnum.REGULAR_ITEMS)
                     .orderByDesc(AuctionBidRecord::getLastBidAmount).list();
             if (StringUtils.isNotEmpty(list)) {
                 Set<Long> collect = list.stream().map(AuctionBidRecord::getMemberId)
@@ -181,12 +190,47 @@
      * @param id 拍卖商品id
      */
     @Override
+    @GlobalTransactional(rollbackFor = Exception.class)
+    @Transactional
     public void stopAuctionGoods(Long id) {
         AuctionGoods auctionGoods = this.lambdaQuery().eq(AuctionGoods::getId, id)
                 .eq(AuctionGoods::getStartStatus, AuctionStartStatusEnum.IN_AUCTION).one();
         if (StringUtils.isNull(auctionGoods)) {
             throw new ServiceException("拍卖商品不存在");
         }
-        
+        if (auctionGoods.getStartStatus().equals(AuctionStartStatusEnum.IN_AUCTION)) {
+            // 查询出价记录
+            List<AuctionBidRecord> auctionBidRecords = auctionBidRecordService.getBidRecordByGoodsId(
+                    id);
+            if (StringUtils.isNotEmpty(auctionBidRecords)) {
+                // 中标
+                AuctionBidRecord auctionBidRecord = auctionBidRecords.get(0);
+                auctionBidRecord.setStatus(BidStatusEnum.SUCCESSFUL);
+                auctionBidRecordService.updateById(auctionBidRecord);
+
+                // 创建待支付订单
+                OrderDTO orderDTO = new OrderDTO();
+                orderDTO.setAuctionType(AuctionOrderTypeEnum.REGULAR_ITEMS);
+                orderDTO.setGoodsQuantity(auctionGoods.getAuctionStock());
+                orderDTO.setGoodsSkuId(auctionGoods.getGoodsSkuId());
+                orderDTO.setBound(auctionGoods.getBond());
+                orderDTO.setMemberId(auctionBidRecord.getMemberId());
+                orderDTO.setTotalAmount(auctionBidRecord.getLastBidAmount());
+                orderDTO.setOrderFrom(OrderFromEnum.AUCTION_ORDERS);
+                orderDTO.setOrderTime(LocalDateTime.now());
+                MemberAddress data = memberClient.getMemberAddressOne(
+                        auctionBidRecord.getMemberId(), SecurityConstants.INNER).getData();
+                if (StringUtils.isNotNull(data)) {
+                    orderDTO.setReceiverName(data.getRecipientName());
+                    orderDTO.setReceiverCity(data.getReceiverCity());
+                    orderDTO.setReceiverDetailAddress(data.getDetailedAddress());
+                    orderDTO.setReceiverphone(data.getRecipientPhone());
+                }
+                orderClient.saveOrderOne(orderDTO, SecurityConstants.INNER);
+            }
+            // 结束拍卖
+            this.lambdaUpdate().set(AuctionGoods::getStartStatus, AuctionStartStatusEnum.ENDED)
+                    .eq(AuctionGoods::getId, id).update();
+        }
     }
 }

--
Gitblit v1.7.1