From 4018acf3c494b4765b5f3afd93da185aedb77e54 Mon Sep 17 00:00:00 2001
From: rentaiming <806181062@qq.com>
Date: 星期三, 29 五月 2024 17:50:59 +0800
Subject: [PATCH] 写用户端接口

---
 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/ForepartAuctionSalesroomController.java |   10 +++++
 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomGoodsServiceImpl.java          |    1 
 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomService.java                       |    5 ++
 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/vo/AuctionSalesroomGoodsInfoVO.java     |    3 +
 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java               |   94 +++++++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 113 insertions(+), 0 deletions(-)

diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/ForepartAuctionSalesroomController.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/ForepartAuctionSalesroomController.java
index c0825cd..2f39a4e 100644
--- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/ForepartAuctionSalesroomController.java
+++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/ForepartAuctionSalesroomController.java
@@ -5,6 +5,7 @@
 import com.ruoyi.auction.controller.forepart.dto.ForepartAuctionBidRecordDTO;
 import com.ruoyi.common.security.annotation.InnerAuth;
 import com.ruoyi.system.api.domain.GoodsFlavorType;
+import com.ruoyi.system.api.domain.dto.BidVO;
 import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomBondDTO;
 import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomDTO;
 import com.ruoyi.auction.controller.forepart.vo.ForepartAuctionSalesroomVO;
@@ -115,4 +116,13 @@
         return R.ok( iAuctionSalesroomService.SaveSignUpNow(memberAuctionSalesroomBondDTO));
     }
 
+
+    @RequestMapping("/SaveBid")
+    @ResponseBody
+    @ApiOperation(value = "用户端拍卖出价")
+    public R SaveBid(@RequestBody BidVO BidVO) {
+        iAuctionSalesroomService.SaveBid(BidVO);
+        return R.ok();
+    }
+
 }
diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/vo/AuctionSalesroomGoodsInfoVO.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/vo/AuctionSalesroomGoodsInfoVO.java
index f1c9823..d0b2792 100644
--- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/vo/AuctionSalesroomGoodsInfoVO.java
+++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/vo/AuctionSalesroomGoodsInfoVO.java
@@ -74,5 +74,8 @@
     @ApiModelProperty(value = "当前出价")
    private BigDecimal presentBid;
 
+    @ApiModelProperty(value = "最低加价金额")
+    private BigDecimal minimumMarkupAmount;
+
 
 }
diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomService.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomService.java
index ffda5dc..f60b72c 100644
--- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomService.java
+++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomService.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.auction.controller.forepart.dto.AuctionSalesroomGoodsDTO;
 import com.ruoyi.auction.controller.forepart.dto.ForepartAuctionBidRecordDTO;
+import com.ruoyi.system.api.domain.dto.BidVO;
 import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomBondDTO;
 import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomDTO;
 import com.ruoyi.auction.controller.forepart.vo.ForepartAuctionSalesroomVO;
@@ -49,4 +50,8 @@
     MemberAuctionSalesroomVO getMemberAuctionSalesroomSweep( MemberAuctionSalesroomDTO MemberAuctionSalesroomDTO);
 
     PayInfoVO SaveSignUpNow(MemberAuctionSalesroomBondDTO memberAuctionSalesroomBondDTO);
+
+    void SaveBid(@RequestBody BidVO BidVO);
+
+
 }
diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomGoodsServiceImpl.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomGoodsServiceImpl.java
index 5ae12fb..5ff06a1 100644
--- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomGoodsServiceImpl.java
+++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomGoodsServiceImpl.java
@@ -397,6 +397,7 @@
         AuctionSalesroomGoodsInfoVO.setFlavorType(data3.getFlavorTypeName());
         AuctionSalesroomGoodsInfoVO.setCoverPic(goodsSku.getCoverPic());
         AuctionSalesroomGoodsInfoVO.setAlbum(goodsSku.getAlbum());
+        AuctionSalesroomGoodsInfoVO.setMinimumMarkupAmount(byId1.getMinimumMarkupAmount());
         LambdaQueryWrapper<AuctionBidRecord> wrapper1=Wrappers.lambdaQuery();
         wrapper1.eq(AuctionBidRecord::getMemberId,auctionSalesroomGoodsInfoDTO.getMemberId());
         wrapper1.eq(AuctionBidRecord::getAuctionSalesroomId,byId.getId());
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 24f758f..00c097f 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
@@ -16,7 +16,10 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.auction.controller.forepart.dto.AuctionSalesroomGoodsDTO;
 import com.ruoyi.auction.controller.forepart.dto.ForepartAuctionBidRecordDTO;
+import com.ruoyi.common.core.enums.AuctionOrderTypeEnum;
+import com.ruoyi.common.core.enums.BidStatusEnum;
 import com.ruoyi.system.api.domain.*;
+import com.ruoyi.system.api.domain.dto.BidVO;
 import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomBondDTO;
 import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomDTO;
 import com.ruoyi.auction.controller.forepart.vo.ForepartAuctionSalesroomGoodsVO;
@@ -36,6 +39,7 @@
 import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO;
 import com.ruoyi.system.api.domain.vo.PayInfoVO;
 import com.ruoyi.system.api.feignClient.GoodsSkuClient;
+import com.ruoyi.system.api.feignClient.MemberClient;
 import com.ruoyi.system.api.feignClient.OrderClient;
 import com.ruoyi.system.api.feignClient.SysUserClient;
 import javax.annotation.Resource;
@@ -45,6 +49,8 @@
 import org.springframework.stereotype.Service;
 
 
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -82,10 +88,18 @@
     private AuctionSalesroomGoodsMapper auctionSalesroomGoodsMapper;
 
     @Resource
+    private IAuctionSalesroomGoodsService auctionSalesroomGoodsService;
+
+    @Resource
+    private IAuctionGoodsService auctionGoodsService;
+
+    @Resource
     private GoodsSkuClient goodsSkuClient;
 
     @Resource
     private OrderClient orderClient;
+    @Resource
+    private MemberClient memberClient;
 
 
     //微信
@@ -384,6 +398,86 @@
         return orderClient.SaveOrderAuctionBond(memberAuctionSalesroomBondDTO,SecurityConstants.INNER).getData();
     }
 
+    @Override
+    public void SaveBid(BidVO bidVO) {
+        Member membeOne = memberClient.getMembeOne(bidVO.getMemberId(), SecurityConstants.INNER).getData();
+        if (bidVO.getAuctionType()==2){
+            AuctionSalesroomGoods byId = auctionSalesroomGoodsService.getById(bidVO.getTargetId());
+            if (byId.getStartingPrice().doubleValue()<bidVO.getLastBidAmount().doubleValue()){
+                throw new ServiceException("出价不能比起拍价低");
+            }
+            BigDecimal bigDecimal=byId.getStartingPrice().add(byId.getMinimumMarkupAmount());
+            if (bigDecimal.doubleValue()<bidVO.getLastBidAmount().doubleValue()){
+                throw new ServiceException("出价不能比每次最少加价低");
+            }
+
+            LambdaQueryWrapper<AuctionBidRecord> wrapper1=Wrappers.lambdaQuery();
+            wrapper1.eq(AuctionBidRecord::getMemberId,bidVO.getMemberId());
+            wrapper1.eq(AuctionBidRecord::getAuctionSalesroomId,bidVO.getAuctionSalesroomId());
+            wrapper1.eq(AuctionBidRecord::getTargetId,bidVO.getTargetId());
+            wrapper1.eq(AuctionBidRecord::getDelFlag,0);
+            AuctionBidRecord one = auctionBidRecordService.getOne(wrapper1);
+            if (one!=null){
+                BigDecimal bigDecimal1=one.getLastBidAmount().add(byId.getMinimumMarkupAmount());
+                if (bigDecimal1.doubleValue()<bidVO.getLastBidAmount().doubleValue()){
+                    throw new ServiceException("出价不能比上次出价加每次最少加价低");
+                }
+                one.setLastBidAmount(bidVO.getLastBidAmount());
+                one.setLastBidTime(LocalDateTime.now());
+                one.setBidCount(one.getBidCount()+1);
+                auctionBidRecordService.updateById(one);
+            }else{
+                one=new AuctionBidRecord();
+                one.setAuctionSalesroomId(bidVO.getAuctionSalesroomId());
+                one.setTargetId(bidVO.getTargetId());
+                one.setMemberId(bidVO.getMemberId());
+                one.setLastBidTime(LocalDateTime.now());
+                one.setAuctionType(AuctionOrderTypeEnum.AUCTION_ITEMS);
+                one.setStatus(BidStatusEnum.ELIMINATE);
+                one.setBidCount(1);
+                one.setLastBidAmount(bidVO.getLastBidAmount());
+                auctionBidRecordService.save(one);
+            }
+
+
+        }else {
+            AuctionGoods byId = auctionGoodsService.getById(bidVO.getTargetId());
+            if (byId.getStartingPrice().doubleValue()<bidVO.getLastBidAmount().doubleValue()){
+                throw new ServiceException("出价不能比起拍价低");
+            }
+            BigDecimal bigDecimal=byId.getStartingPrice().add(byId.getMinimumMarkupAmount());
+            if (bigDecimal.doubleValue()<bidVO.getLastBidAmount().doubleValue()){
+                throw new ServiceException("出价不能比每次最少加价低");
+            }
+            LambdaQueryWrapper<AuctionBidRecord> wrapper1=Wrappers.lambdaQuery();
+            wrapper1.eq(AuctionBidRecord::getMemberId,bidVO.getMemberId());
+            wrapper1.eq(AuctionBidRecord::getTargetId,bidVO.getTargetId());
+            wrapper1.eq(AuctionBidRecord::getDelFlag,0);
+            AuctionBidRecord one = auctionBidRecordService.getOne(wrapper1);
+            if (one!=null){
+                BigDecimal bigDecimal1=one.getLastBidAmount().add(byId.getMinimumMarkupAmount());
+                if (bigDecimal1.doubleValue()<bidVO.getLastBidAmount().doubleValue()){
+                    throw new ServiceException("出价不能比上次出价加每次最少加价低");
+                }
+                one.setLastBidAmount(bidVO.getLastBidAmount());
+                one.setLastBidTime(LocalDateTime.now());
+                one.setBidCount(one.getBidCount()+1);
+                auctionBidRecordService.updateById(one);
+            }else{
+                one=new AuctionBidRecord();
+                one.setAuctionSalesroomId(bidVO.getAuctionSalesroomId());
+                one.setTargetId(bidVO.getTargetId());
+                one.setMemberId(bidVO.getMemberId());
+                one.setLastBidTime(LocalDateTime.now());
+                one.setAuctionType(AuctionOrderTypeEnum.REGULAR_ITEMS);
+                one.setStatus(BidStatusEnum.ELIMINATE);
+                one.setBidCount(1);
+                one.setLastBidAmount(bidVO.getLastBidAmount());
+                auctionBidRecordService.save(one);
+            }
+        }
+    }
+
 
     public static String getAccessTokenByWX() throws Exception {
         String host = ACCESS_TOKEN_HOST + "?appid=" + WX_APPID + "&secret=" + WX_SECRET + "&grant_type=client_credential";

--
Gitblit v1.7.1