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/AuctionBidRecordServiceImpl.java | 9 ++++ ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/domain/AuctionBidRecord.java | 12 ++--- ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java | 48 +++++++++++++++++++++++- ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/domain/MemberBond.java | 2 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionBidRecordService.java | 2 + ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/OrderFallbackFactory.java | 4 +- 6 files changed, 65 insertions(+), 12 deletions(-) diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/OrderFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/OrderFallbackFactory.java index 402d94d..c9d48f4 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/OrderFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/OrderFallbackFactory.java @@ -21,13 +21,13 @@ @Override public R<Boolean> saveOrderOne(OrderDTO orderDTO, String source) { - return R.fail("通过视频集合查询用户失败:" + cause.getMessage()); + return R.fail("保存订单失败:" + cause.getMessage()); } @Override public R<Boolean> getOrderAuctionBond(OrderAuctionBondDTO orderAuctionBondDTO, String source) { - return R.fail("通过视频集合查询用户失败:" + cause.getMessage()); + return R.fail("查询拍卖订单佣金失败:" + cause.getMessage()); } @Override public R<Integer> getSeckillMembers(Long id, String source) { diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/domain/AuctionBidRecord.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/domain/AuctionBidRecord.java index d175b74..a4c625a 100644 --- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/domain/AuctionBidRecord.java +++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/domain/AuctionBidRecord.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; +import com.ruoyi.common.core.enums.AuctionOrderTypeEnum; import com.ruoyi.common.core.enums.BidStatusEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -37,17 +38,14 @@ @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "拍卖场id") - private Long auctionSalesroomId; - - @ApiModelProperty(value = "商品id") - private Long goodsSkuId; + @ApiModelProperty(value = "目标商品id(普通拍品id 或 拍卖会拍品id)") + private Long targetId; @ApiModelProperty(value = "会员id") private Long memberId; - @ApiModelProperty(value = "商品名称") - private String goodsSkuName; + @ApiModelProperty("拍卖类型 (1=普通拍品 2=拍卖会拍品)") + private AuctionOrderTypeEnum auctionType; @ApiModelProperty(value = "最终出价时间") private LocalDateTime lastBidTime; diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/domain/MemberBond.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/domain/MemberBond.java index 5f18c36..6ec36a7 100644 --- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/domain/MemberBond.java +++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/domain/MemberBond.java @@ -34,7 +34,7 @@ private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键id") - @TableId(value = "id", type = IdType.AUTO) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; @ApiModelProperty(value = "会员id") diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionBidRecordService.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionBidRecordService.java index 34d961b..ab8cdaf 100644 --- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionBidRecordService.java +++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionBidRecordService.java @@ -19,4 +19,6 @@ * */ public List<AuctionBidRecord> getAuctionBidRecordList(AuctionSalesroomGoodsDTO auctionSalesroomGoodsDTO); + + List<AuctionBidRecord> getBidRecordByGoodsId(Long id); } diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionBidRecordServiceImpl.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionBidRecordServiceImpl.java index de23277..a07394a 100644 --- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionBidRecordServiceImpl.java +++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionBidRecordServiceImpl.java @@ -9,6 +9,7 @@ import com.ruoyi.auction.mapper.AuctionBidRecordMapper; import com.ruoyi.auction.service.IAuctionBidRecordService; import com.ruoyi.auction.service.IAuctionSalesroomGoodsService; +import com.ruoyi.common.core.enums.AuctionOrderTypeEnum; import com.ruoyi.common.core.enums.BidStatusEnum; import java.util.ArrayList; import java.util.List; @@ -65,4 +66,12 @@ } + + @Override + public List<AuctionBidRecord> getBidRecordByGoodsId(Long id) { + return this.lambdaQuery().eq(AuctionBidRecord::getTargetId, id) + .eq(AuctionBidRecord::getAuctionType, + AuctionOrderTypeEnum.REGULAR_ITEMS) + .orderByDesc(AuctionBidRecord::getLastBidAmount).list(); + } } 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