From 9bcc40d213a44498c46dae5e678e592b918b40b0 Mon Sep 17 00:00:00 2001 From: rentaiming <806181062@qq.com> Date: 星期四, 30 五月 2024 18:33:54 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java | 201 ++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 154 insertions(+), 47 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 4d38e20..8413461 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,79 +16,70 @@ 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.system.api.domain.OrderAuctionBond; -import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomDTO; import com.ruoyi.auction.controller.forepart.vo.ForepartAuctionSalesroomGoodsVO; 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.domain.*; -import com.ruoyi.auction.mapper.AuctionSalesroomGoodsMapper; -import com.ruoyi.auction.mapper.AuctionSalesroomMapper; -import com.ruoyi.auction.service.*; -import com.ruoyi.common.core.constant.SecurityConstants; -import com.ruoyi.common.core.domain.R; -import com.ruoyi.common.core.exception.ServiceException; -import com.ruoyi.common.core.utils.StringUtils; -import com.ruoyi.common.core.utils.page.PageDTO; -import com.ruoyi.auction.util.HttpUtils; -import com.ruoyi.system.api.domain.AppMiniLoginVO; -import com.ruoyi.system.api.domain.GoodsSku; -import com.ruoyi.system.api.domain.SysUser; -import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO; -import com.ruoyi.system.api.feignClient.GoodsSkuClient; -import com.ruoyi.system.api.feignClient.OrderClient; -import com.ruoyi.system.api.feignClient.SysUserClient; -import javax.annotation.Resource; - -import org.apache.http.HttpResponse; -import org.apache.http.util.EntityUtils; -import org.springframework.stereotype.Service; - - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -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.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.MgtAuctionSalesroomVO; import com.ruoyi.auction.domain.AuctionBidRecord; -import com.ruoyi.auction.domain.AuctionSalesroom; 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.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.AuctionOrderTypeEnum; +import com.ruoyi.common.core.enums.AuctionStartStatusEnum; +import com.ruoyi.common.core.enums.BidStatusEnum; +import com.ruoyi.common.core.exception.ServiceException; +import com.ruoyi.common.core.utils.IDhelper; +import com.ruoyi.common.core.utils.StringUtils; +import com.ruoyi.common.core.utils.page.BeanUtils; +import com.ruoyi.common.core.utils.page.Checker; +import com.ruoyi.common.core.utils.page.CollUtils; +import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.system.api.domain.AppMiniLoginVO; +import com.ruoyi.system.api.domain.AuctionGoods; +import com.ruoyi.system.api.domain.AuctionSalesroom; import com.ruoyi.system.api.domain.GoodsSku; +import com.ruoyi.system.api.domain.Member; import com.ruoyi.system.api.domain.OrderAuctionBond; import com.ruoyi.system.api.domain.SysUser; -import com.ruoyi.auction.util.HttpUtils; +import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO; +import com.ruoyi.system.api.domain.dto.BidDTO; +import com.ruoyi.system.api.domain.dto.BidVO; +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.vo.PayInfoVO; +import com.ruoyi.system.api.domain.vo.WdMemberAuctionSalesroomVO; +import com.ruoyi.system.api.feignClient.GoodsSkuClient; import com.ruoyi.system.api.feignClient.MemberClient; -import javax.annotation.Resource; - -import org.apache.http.HttpResponse; -import org.apache.http.util.EntityUtils; -import org.springframework.stereotype.Service; - - +import com.ruoyi.system.api.feignClient.OrderClient; +import com.ruoyi.system.api.feignClient.SysUserClient; +import io.seata.spring.annotation.GlobalTransactional; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.*; 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> @@ -358,7 +349,7 @@ AuctionSalesroom byId = iAuctionSalesroomService.getById(memberAuctionSalesroomDTO.getAuctionSalesroomId()); MemberAuctionSalesroomInfoVO memberAuctionSalesroomInfoVO=new MemberAuctionSalesroomInfoVO(); memberAuctionSalesroomInfoVO.setId(byId.getId()); - memberAuctionSalesroomInfoVO.setBound(byId.getBound()); + memberAuctionSalesroomInfoVO.setBound(byId.getBond()); memberAuctionSalesroomInfoVO.setAuthentication(byId.getAuthentication()); memberAuctionSalesroomInfoVO.setEndTime(byId.getEndTime()); memberAuctionSalesroomInfoVO.setSalesroomName(byId.getSalesroomName()); @@ -433,7 +424,7 @@ } @Override - public void SaveBid(BidVO bidVO) { + public void SaveBid(BidDTO bidVO) { Member membeOne = memberClient.getMembeOne(bidVO.getMemberId(), SecurityConstants.INNER).getData(); if (bidVO.getAuctionType()==2){ AuctionSalesroomGoods byId = auctionSalesroomGoodsService.getById(bidVO.getTargetId()); @@ -597,4 +588,120 @@ String auctionSalesroomNo = auctionSalesroom.getAuctionSalesroomNo(); return CreateQrCode.createQRCode(auctionSalesroomNo); } + + @Override + @Transactional + @GlobalTransactional(rollbackFor = Exception.class) + public void saveAuctionSalesroom(MgtAuctionSalesroomDTO dto) { + Long id = dto.getId(); + AuctionSalesroom auctionSalesroom = BeanUtils.copyBean(dto, AuctionSalesroom.class); + List<MgtAuctionSalesroomGoodsDTO> auctionSalesroomGoodsDTOS = dto.getAuctionSalesroomGoodsDTOS(); + CollUtils.check(auctionSalesroomGoodsDTOS, new Checker<MgtAuctionSalesroomGoodsDTO>() { + @Override + public void check(MgtAuctionSalesroomGoodsDTO data) { + if (StringUtils.isNull(data.getStartingPrice())) { + throw new ServiceException("拍卖商品起拍价格不能为空"); + } + if (StringUtils.isNull(data.getMinimumMarkupAmount())) { + throw new ServiceException("拍卖商品最低加价金额不能为空"); + } + if (StringUtils.isNull(data.getSalesroomStock())) { + throw new ServiceException("拍卖商品拍品数量不能为空"); + } + if (StringUtils.isNull(data.getListingDuration())) { + throw new ServiceException("拍卖商品拍卖时间不能为空"); + } + } + }); + List<AuctionSalesroomGoods> auctionSalesroomGoods = BeanUtils.copyList( + auctionSalesroomGoodsDTOS, AuctionSalesroomGoods.class); + + if (StringUtils.isNull(id)) { + // 生成唯一编号 + Long nextId = IDhelper.getNextId(); + auctionSalesroom.setAuctionSalesroomNo(nextId.toString()); + // 添加 + this.save(auctionSalesroom); + List<GoodsStockUpdDTO> goodsStockUpdDTOS = auctionSalesroomGoods.stream().map(item -> { + GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); + goodsStockUpdDTO.setGoodsSkuId(item.getGoodsSkuId()); + goodsStockUpdDTO.setAuctionStock(item.getSalesroomStock() * -1); + return goodsStockUpdDTO; + }).collect(Collectors.toList()); + goodsSkuClient.updGoodsStock(goodsStockUpdDTOS, SecurityConstants.INNER); + } else { + // 编辑 + AuctionSalesroom auctionSalesroomOrg = this.getById(id); + if (StringUtils.isNull(auctionSalesroomOrg)) { + throw new ServiceException("该拍卖场不存在"); + } + if (auctionSalesroomOrg.getStatus().equals(AuctionStartStatusEnum.IN_AUCTION)) { + throw new ServiceException("该拍卖场正在拍卖中,不能编辑"); + } + if (auctionSalesroomOrg.getStatus().equals(AuctionStartStatusEnum.ENDED)) { + throw new ServiceException("该拍卖场已结束,不能编辑"); + } + auctionSalesroom.setId(auctionSalesroomOrg.getId()); + this.updateById(auctionSalesroom); + List<AuctionSalesroomGoods> list = auctionSalesroomGoodsService.list( + Wrappers.<AuctionSalesroomGoods>lambdaQuery() + .eq(AuctionSalesroomGoods::getAuctionSalesroomId, id)); + // 封装库存修改实体 + List<GoodsStockUpdDTO> goodsStockUpdDTOS = list.stream() + .flatMap(salesroomGoods -> auctionSalesroomGoods.stream() + .filter(auctionSalesroomGood -> salesroomGoods.getId() + .equals(auctionSalesroomGood.getId())) + .map(auctionSalesroomGood -> { + GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); + goodsStockUpdDTO.setGoodsSkuId(salesroomGoods.getGoodsSkuId()); + goodsStockUpdDTO.setAuctionStock(salesroomGoods.getSalesroomStock() + - auctionSalesroomGood.getSalesroomStock()); + return goodsStockUpdDTO; + })) + .collect(Collectors.toList()); + goodsSkuClient.updGoodsStock(goodsStockUpdDTOS, SecurityConstants.INNER); + // 移除原来地拍卖商品 + auctionSalesroomGoodsService.remove(Wrappers.<AuctionSalesroomGoods>lambdaQuery() + .eq(AuctionSalesroomGoods::getAuctionSalesroomId, id)); + } + for (AuctionSalesroomGoods auctionSalesroomGood : auctionSalesroomGoods) { + auctionSalesroomGood.setAuctionSalesroomId(id); + } + // 添加拍卖商品 + auctionSalesroomGoodsService.saveBatch(auctionSalesroomGoods); + } + + @Override + public PageDTO<WdMemberAuctionSalesroomVO> getWdAuctionSalesroomList(MemberAuctionSalesroomDTO MemberAuctionSalesroomDTO) { + MemberAuctionSalesroomDTO memberAuctionSalesroomDTO =new MemberAuctionSalesroomDTO(); + memberAuctionSalesroomDTO.setMemberId(MemberAuctionSalesroomDTO.getMemberId()); + List<OrderAuctionBond> data = orderClient.getOrderAuctionBondList(memberAuctionSalesroomDTO, SecurityConstants.INNER).getData(); + Set<Long> goodsSkuIdList = null; + goodsSkuIdList = data.stream().map(OrderAuctionBond::getAuctionSalesroomId) + .collect(Collectors.toSet()); + Page<WdMemberAuctionSalesroomVO> page = new Page<>(); + page.setSize(memberAuctionSalesroomDTO.getPageSize()); + page.setCurrent(memberAuctionSalesroomDTO.getPageCurr()); + MemberAuctionSalesroomWdDTO memberAuctionSalesroomWdDTO=new MemberAuctionSalesroomWdDTO(); + memberAuctionSalesroomWdDTO.setGoodsSkuIdList(goodsSkuIdList); + List<AuctionSalesroom> auctionSalesroomList=auctionSalesroomMapper.pageMemberAuctionSalesroomWdList(page,memberAuctionSalesroomWdDTO); + List<WdMemberAuctionSalesroomVO> List=new ArrayList<>(); + for (AuctionSalesroom auctionSalesroom:auctionSalesroomList){ + WdMemberAuctionSalesroomVO memberAuctionSalesroomVO=new WdMemberAuctionSalesroomVO(); + memberAuctionSalesroomVO.setSalesroomName(auctionSalesroom.getSalesroomName()); + memberAuctionSalesroomVO.setDescription(auctionSalesroom.getDescription()); + memberAuctionSalesroomVO.setStatus(auctionSalesroom.getStatus().getCode()); + memberAuctionSalesroomVO.setSalesroomId(auctionSalesroom.getId()); + memberAuctionSalesroomVO.setCoverPic(auctionSalesroom.getCoverPic()); + MemberAuctionSalesroomDTO memberAuctionSalesroomDTO1=new MemberAuctionSalesroomDTO(); + memberAuctionSalesroomDTO1.setAuctionSalesroomId(auctionSalesroom.getId()); + memberAuctionSalesroomDTO1.setMemberId(MemberAuctionSalesroomDTO.getMemberId()); + List<OrderAuctionBond> data1 = orderClient.getOrderAuctionBondList(memberAuctionSalesroomDTO1, SecurityConstants.INNER).getData(); + memberAuctionSalesroomVO.setBondTime(data1.get(0).getCreateTime()); + List.add(memberAuctionSalesroomVO); + } + page.setRecords(List); + return PageDTO.of(page); + + } } -- Gitblit v1.7.1