From 7ce97a95ba44b18aa525b2c0540e5162c59d1474 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期五, 31 五月 2024 11:51:50 +0800 Subject: [PATCH] 解决冲突 --- ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java | 252 +++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 237 insertions(+), 15 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 40e972c..6abdf2d 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 @@ -20,26 +20,32 @@ 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.controller.management.dto.MgtAuctionSaleroomBidRecordQuery; +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.MgtAuctionBidRecordVO; +import com.ruoyi.auction.controller.management.vo.MgtAuctionSalesroomGoodsVO; import com.ruoyi.auction.controller.management.vo.MgtAuctionSalesroomVO; import com.ruoyi.auction.domain.AuctionBidRecord; 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.service.*; 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; @@ -49,25 +55,32 @@ import com.ruoyi.system.api.domain.OrderAuctionBond; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO; -import com.ruoyi.system.api.domain.dto.BidVO; +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.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 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.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Set; +import java.util.function.Function; 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; /** * <p> @@ -79,8 +92,6 @@ */ @Service public class AuctionSalesroomServiceImpl extends ServiceImpl<AuctionSalesroomMapper, AuctionSalesroom> implements IAuctionSalesroomService { - @Resource - private IAuctionSalesroomService iAuctionSalesroomService; @Resource private IAuctionBidRecordService auctionBidRecordService; @@ -113,6 +124,9 @@ private OrderClient orderClient; @Resource private MemberClient memberClient; + + @Resource + private IAuctionBrowseRecordService iAuctionBrowseRecordService; //微信 @@ -157,7 +171,7 @@ LambdaQueryWrapper<AuctionSalesroom> wrapper=Wrappers.lambdaQuery(); wrapper.eq(AuctionSalesroom::getSalesroomName,ationSalesroomGoodsDTO.getSalesroomName()); wrapper.eq(AuctionSalesroom::getDelFlag,0); - Page<AuctionSalesroom> page1=iAuctionSalesroomService.page(page, wrapper); + Page<AuctionSalesroom> page1 = this.page(page, wrapper); return PageDTO.of(page1); } @@ -168,7 +182,8 @@ wrapper.eq(AuctionVideo::getDelFlag,0); AuctionVideo auctionVideo=iAuctionVideoService.getOne(wrapper); ForepartAuctionSalesroomVO forepartAuctionSalesroomVO =new ForepartAuctionSalesroomVO(); - AuctionSalesroom auctionSalesroom=iAuctionSalesroomService.getById(ationSalesroomGoodsDTO.getAuctionSalesroomId()); + AuctionSalesroom auctionSalesroom = this.getById( + ationSalesroomGoodsDTO.getAuctionSalesroomId()); forepartAuctionSalesroomVO.setAuctionSalesroomStatus(auctionSalesroom.getStatus().getCode()); if (auctionVideo!=null){ forepartAuctionSalesroomVO.setUrl(auctionVideo.getPromotionVideoUrl()); @@ -198,7 +213,7 @@ LambdaQueryWrapper<AuctionSalesroom> wrapper=Wrappers.lambdaQuery(); wrapper.eq(AuctionSalesroom::getAuctionSalesroomNo,arepartAuctionBidRecordDTO.getAuctionSalesroomQrcode()); wrapper.eq(AuctionSalesroom::getDelFlag,0); - AuctionSalesroom auctionBidRecord=iAuctionSalesroomService.getOne(wrapper); + AuctionSalesroom auctionBidRecord = this.getOne(wrapper); return auctionBidRecord; } @@ -334,10 +349,10 @@ @Override public MemberAuctionSalesroomInfoVO getMemberAuctionSalesroomInfo(MemberAuctionSalesroomDTO memberAuctionSalesroomDTO) { - AuctionSalesroom byId = iAuctionSalesroomService.getById(memberAuctionSalesroomDTO.getAuctionSalesroomId()); + AuctionSalesroom byId = this.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()); @@ -397,7 +412,7 @@ LambdaQueryWrapper<AuctionSalesroom> wrapper=Wrappers.lambdaQuery(); wrapper.eq(AuctionSalesroom::getAuctionSalesroomNo,MemberAuctionSalesroomDTO.getSalesroomNO()); wrapper.eq(AuctionSalesroom::getDelFlag,0); - AuctionSalesroom auctionSalesroom=iAuctionSalesroomService.getOne(wrapper); + AuctionSalesroom auctionSalesroom = this.getOne(wrapper); MemberAuctionSalesroomVO memberAuctionSalesroomVO=new MemberAuctionSalesroomVO(); memberAuctionSalesroomVO.setSalesroomName(auctionSalesroom.getSalesroomName()); memberAuctionSalesroomVO.setStatus(auctionSalesroom.getStatus().getCode()); @@ -412,7 +427,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()); @@ -576,4 +591,211 @@ 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); + if(memberAuctionSalesroomWdDTO.getStatus()!=4){ + memberAuctionSalesroomWdDTO.setStatus(memberAuctionSalesroomWdDTO.getStatus()); + } + 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); + + } + + /** + * 查看详情 + * + * @param id 拍卖会id + * @return 拍卖场视图对象 + */ + @Override + public MgtAuctionSalesroomVO getAuctionSalesroom(Long id) { + // 获取拍卖场 + AuctionSalesroom auctionSalesroom = this.getById(id); + MgtAuctionSalesroomVO mgtAuctionSalesroomVO = BeanUtils.copyBean(auctionSalesroom, + MgtAuctionSalesroomVO.class); + // 获取拍卖场商品 + List<AuctionSalesroomGoods> list = auctionSalesroomGoodsService.lambdaQuery() + .eq(AuctionSalesroomGoods::getAuctionSalesroomId, id).list(); + if (StringUtils.isNotEmpty(list)) { + List<MgtAuctionSalesroomGoodsVO> mgtAuctionSalesroomGoodsVOS = BeanUtils.copyList(list, + MgtAuctionSalesroomGoodsVO.class); + Set<Long> goodsIdList = mgtAuctionSalesroomGoodsVOS.stream() + .map(MgtAuctionSalesroomGoodsVO::getGoodsSkuId).collect( + Collectors.toSet()); + // 获取商品信息 + List<GoodsSku> goodsSkuList = goodsSkuClient.getGoodsListByIds(goodsIdList, + SecurityConstants.INNER).getData(); + Map<Long, GoodsSku> goodsSkuMap = goodsSkuList.stream() + .collect(Collectors.toMap(GoodsSku::getId, Function.identity())); + + // 封装商品名称 + for (MgtAuctionSalesroomGoodsVO vo : mgtAuctionSalesroomGoodsVOS) { + GoodsSku goodsSku = goodsSkuMap.get(vo.getGoodsSkuId()); + if (StringUtils.isNotNull(goodsSku)) { + vo.setGoodsSkuName(goodsSku.getSkuName()); + } + } + mgtAuctionSalesroomVO.setAuctionSalesroomGoodsVOS(mgtAuctionSalesroomGoodsVOS); + } + return mgtAuctionSalesroomVO; + } + + /** + * 查看详情-出价记录 + * + * @param query 拍卖场出价记录查询对象 + * @return PageDTO<MgtAuctionBidRecordVO> + */ + @Override + public PageDTO<MgtAuctionBidRecordVO> getAuctionSalesroomBidRecordList( + MgtAuctionSaleroomBidRecordQuery query) { + Page<AuctionBidRecord> page = auctionBidRecordService.lambdaQuery() + .eq(AuctionBidRecord::getTargetId, query.getId()) + .eq(AuctionBidRecord::getAuctionType, AuctionOrderTypeEnum.AUCTION_ITEMS) + .orderByDesc(query.getSortType() == 1, AuctionBidRecord::getLastBidAmount) + .orderByDesc(query.getSortType() == 2, AuctionBidRecord::getBidCount) + .page(new Page<>(query.getPageCurr(), query.getPageSize())); + if (StringUtils.isNull(page.getRecords())) { + return PageDTO.empty(page); + } + PageDTO<MgtAuctionBidRecordVO> mgtAuctionBidRecordVOPageDTO = PageDTO.of(page, + MgtAuctionBidRecordVO.class); + List<MgtAuctionBidRecordVO> list = mgtAuctionBidRecordVOPageDTO.getList(); + Set<Long> goodsIdList = list.stream().map(MgtAuctionBidRecordVO::getGoodsSkuId) + .collect(Collectors.toSet()); + Set<Long> memberIdList = list.stream().map(MgtAuctionBidRecordVO::getMemberId) + .collect(Collectors.toSet()); + List<GoodsSku> goodsSkuList = goodsSkuClient.getGoodsListByIds(goodsIdList, + SecurityConstants.INNER) + .getData(); + List<Member> memberList = memberClient.getMemberListByIds(memberIdList, + SecurityConstants.INNER) + .getData(); + Map<Long, GoodsSku> goodsSkuMap = goodsSkuList.stream() + .collect(Collectors.toMap(GoodsSku::getId, Function.identity())); + Map<Long, Member> memberMap = memberList.stream() + .collect(Collectors.toMap(Member::getId, Function.identity())); + for (MgtAuctionBidRecordVO vo : list) { + GoodsSku goodsSku = goodsSkuMap.get(vo.getGoodsSkuId()); + Member member = memberMap.get(vo.getMemberId()); + if (StringUtils.isNotNull(goodsSku)) { + vo.setGoodsSkuName(goodsSku.getSkuName()); + } + if (StringUtils.isNotNull(member)) { + vo.setMemberName(member.getNickname()); + vo.setPhone(member.getPhone()); + } + } + return mgtAuctionBidRecordVOPageDTO; + } } -- Gitblit v1.7.1