From 31267d9b3a33c8b3fbb1b9f810ab08e01c49b846 Mon Sep 17 00:00:00 2001 From: rentaiming <806181062@qq.com> Date: 星期二, 16 七月 2024 19:12:28 +0800 Subject: [PATCH] 修改bug --- ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java | 351 +++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 298 insertions(+), 53 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 2352ce6..8b60268 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 @@ -4,59 +4,83 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.ruoyi.auction.controller.forepart.vo.MemberAuctionSalesroomVO; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.collect.Lists; -import com.ruoyi.auction.controller.management.dto.AuctionGoodsDTO; -import com.ruoyi.auction.controller.management.dto.AuctionGoodsQuery; -import com.ruoyi.auction.controller.management.vo.AuctionBidRecordVO; -import com.ruoyi.auction.controller.management.vo.AuctionGoodsVO; +import com.ruoyi.auction.controller.management.dto.MgtAuctionGoodsDTO; +import com.ruoyi.auction.controller.management.dto.MgtAuctionGoodsQuery; +import com.ruoyi.auction.controller.management.vo.MgtAuctionBidRecordVO; +import com.ruoyi.auction.controller.management.vo.MgtAuctionGoodsVO; import com.ruoyi.auction.domain.AuctionBidRecord; +import com.ruoyi.auction.domain.AuctionBrowseRecord; import com.ruoyi.auction.domain.MemberAuctionCollection; -import com.ruoyi.common.core.domain.R; -import com.ruoyi.system.api.domain.*; import com.ruoyi.auction.mapper.AuctionGoodsMapper; import com.ruoyi.auction.service.IAuctionBidRecordService; +import com.ruoyi.auction.service.IAuctionBrowseRecordService; import com.ruoyi.auction.service.IAuctionGoodsService; +import com.ruoyi.auction.service.IMemberAuctionCollectionService; +import com.ruoyi.auction.service.async.AuctionAsyncMethodService; 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.BondStatusEnum; +import com.ruoyi.common.core.enums.ClientTypeEnum; +import com.ruoyi.common.core.enums.ListingStatusEnum; import com.ruoyi.common.core.enums.OrderFromEnum; import com.ruoyi.common.core.exception.ServiceException; +import com.ruoyi.common.core.utils.DateUtils; 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.constants.ConfigEnum; +import com.ruoyi.system.api.constants.NotificationTypeConstant; import com.ruoyi.system.api.domain.AuctionGoods; -import com.ruoyi.system.api.domain.dto.*; -import com.ruoyi.system.api.domain.dto.AuctionGoodsListDTO; -import com.ruoyi.system.api.domain.dto.AuctionGoodsListPageDTO; +import com.ruoyi.system.api.domain.CustomConfig; +import com.ruoyi.system.api.domain.GoodsBrand; +import com.ruoyi.system.api.domain.GoodsCategory; +import com.ruoyi.system.api.domain.GoodsFlavorType; +import com.ruoyi.system.api.domain.GoodsSeries; 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.Order; import com.ruoyi.system.api.domain.OrderAuctionBond; +import com.ruoyi.system.api.domain.WebsocketMessageDTO; +import com.ruoyi.system.api.domain.dto.AuctionGoodsListDTO; +import com.ruoyi.system.api.domain.dto.AuctionGoodsListPageDTO; import com.ruoyi.system.api.domain.dto.GoodsStockUpdDTO; +import com.ruoyi.system.api.domain.dto.ListStatusDTO; +import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomDTO; import com.ruoyi.system.api.domain.dto.OrderDTO; import com.ruoyi.system.api.domain.dto.RefundDTO; import com.ruoyi.system.api.domain.vo.AuctionGoodsListVO; import com.ruoyi.system.api.domain.vo.AuctionGoodsinfoVO; +import com.ruoyi.system.api.domain.vo.GoodsInfoTitleValueVO; +import com.ruoyi.system.api.domain.vo.getHomeGoodsSkuXxiVO; +import com.ruoyi.system.api.feignClient.AuctionClient; 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.Collections; +import java.util.Comparator; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; +import javax.annotation.Resource; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; - -import javax.annotation.Resource; /** * <p> @@ -74,16 +98,21 @@ private final GoodsSkuClient goodsSkuClient; private final MemberClient memberClient; private final OrderClient orderClient; + private final SysUserClient sysUserClient; + + private final AuctionClient auctionClient; private final IAuctionBidRecordService auctionBidRecordService; - + private final AuctionAsyncMethodService auctionAsyncMethodService; + // 创建一个静态共享的ObjectMapper实例以重用 + private static final ObjectMapper objectMapper = new ObjectMapper(); @Resource - private MemberAuctionCollectionServiceImpl memberAuctionCollectionServiceImpl; - - @Resource - private IAuctionGoodsService auctionGoodsService; + private IMemberAuctionCollectionService memberAuctionCollectionService; @Resource private AuctionGoodsMapper auctionGoodsMapper; + + @Resource + private IAuctionBrowseRecordService iAuctionBrowseRecordService; /** * 获取拍卖商品列表的分页数据 @@ -92,20 +121,25 @@ * @return PageDTO<AuctionGoodsVO> */ @Override - public PageDTO<AuctionGoodsVO> getAuctionGoodsPage(AuctionGoodsQuery query) { + public PageDTO<MgtAuctionGoodsVO> getAuctionGoodsPage(MgtAuctionGoodsQuery query) { Set<Long> goodsSkuIdList = null; + Page<AuctionGoods> page = new Page<>(query.getPageCurr(), query.getPageSize()); if (StringUtils.isNotEmpty(query.getGoodsSkuName())) { List<GoodsSku> goodsSku = goodsSkuClient.getGoodsByName(query.getGoodsSkuName(), - SecurityConstants.INNER) - .getData(); + SecurityConstants.INNER).getData(); + if (StringUtils.isEmpty(goodsSku)) { + return PageDTO.empty(page); + } goodsSkuIdList = goodsSku.stream().map(GoodsSku::getId) .collect(Collectors.toSet()); + } - Page<AuctionGoods> page = this.lambdaQuery() + page = this.lambdaQuery() .select(AuctionGoods::getId, AuctionGoods::getGoodsSkuId, AuctionGoods::getListingStatus, AuctionGoods::getStartStatus, AuctionGoods::getStartTime, AuctionGoods::getEndTime, - AuctionGoods::getAuctionStock, AuctionGoods::getMinimumMarkupAmount).in( + AuctionGoods::getAuctionStock, AuctionGoods::getMinimumMarkupAmount, + AuctionGoods::getAuthentication, AuctionGoods::getStartingPrice).in( StringUtils.isNotEmpty(goodsSkuIdList), AuctionGoods::getGoodsSkuId, goodsSkuIdList).eq(StringUtils.isNotNull(query.getAuthentication()), AuctionGoods::getAuthentication, query.getAuthentication()) @@ -113,14 +147,36 @@ query.getListingStatus()) .eq(StringUtils.isNotNull(query.getStartStatus()), AuctionGoods::getStartStatus, query.getStartStatus()) + .orderByDesc(AuctionGoods::getCreateTime) .page(new Page<>(query.getPageCurr(), query.getPageSize())); - return PageDTO.of(page, AuctionGoodsVO.class); + if (StringUtils.isEmpty(page.getRecords())) { + return PageDTO.empty(page); + } + // 查询商品信息 + Set<Long> goodsIdList = page.getRecords().stream().map(AuctionGoods::getGoodsSkuId) + .collect(Collectors.toSet()); + List<GoodsSku> data = goodsSkuClient.getGoodsListByIds(goodsIdList, SecurityConstants.INNER) + .getData(); + PageDTO<MgtAuctionGoodsVO> pageDTO = PageDTO.of(page, + MgtAuctionGoodsVO.class); + if (StringUtils.isNotEmpty(data)) { + Map<Long, GoodsSku> goodsSkuMap = data.stream() + .collect(Collectors.toMap(GoodsSku::getId, e -> e)); + for (MgtAuctionGoodsVO mgtAuctionGoodsVO : pageDTO.getList()) { + GoodsSku goodsSku = goodsSkuMap.get(mgtAuctionGoodsVO.getGoodsSkuId()); + if (StringUtils.isNotNull(goodsSku)) { + mgtAuctionGoodsVO.setGoodsSkuName(goodsSku.getSkuName()); + mgtAuctionGoodsVO.setSpec(goodsSku.getSpec()); + } + } + } + return pageDTO; } @Override @Transactional @GlobalTransactional(rollbackFor = Exception.class) - public void saveAuctionGoods(AuctionGoodsDTO dto) { + public void saveAuctionGoods(MgtAuctionGoodsDTO dto) { Long id = dto.getId(); Long goodsSkuId = dto.getGoodsSkuId(); AuctionGoods auctionGoods = BeanUtils.copyBean(dto, AuctionGoods.class); @@ -164,6 +220,15 @@ if (goodsSku.getStock() + auctionGoodsOrg.getAuctionStock() < dto.getAuctionStock()) { throw new ServiceException("商品库存不足"); } + if (!auctionGoodsOrg.getAuctionStock().equals(dto.getAuctionStock())) { + // 更新商品库存 + GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); + goodsStockUpdDTO.setGoodsSkuId(goodsSkuId); + goodsStockUpdDTO.setAuctionStock( + auctionGoodsOrg.getAuctionStock() - dto.getAuctionStock()); + goodsSkuClient.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO), + SecurityConstants.INNER); + } auctionGoodsOrg.setStartingPrice(dto.getStartingPrice()); auctionGoodsOrg.setMinimumMarkupAmount(dto.getMinimumMarkupAmount()); auctionGoodsOrg.setStartTime(dto.getStartTime()); @@ -175,14 +240,8 @@ auctionGoodsOrg.setShareTitle(dto.getShareTitle()); auctionGoodsOrg.setSharePic(dto.getSharePic()); this.updateById(auctionGoodsOrg); - // 更新商品库存 - GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); - goodsStockUpdDTO.setGoodsSkuId(goodsSkuId); - goodsStockUpdDTO.setAuctionStock( - auctionGoodsOrg.getAuctionStock() - dto.getAuctionStock()); - goodsSkuClient.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO), - SecurityConstants.INNER); } + auctionAsyncMethodService.auctionGoodsScheduleTask(Lists.newArrayList(auctionGoods)); } /** @@ -192,12 +251,19 @@ * @return AuctionGoodsVO */ @Override - public AuctionGoodsVO getAuctionGoodsById(Long id) { + public MgtAuctionGoodsVO getAuctionGoodsById(Long id) { AuctionGoods auctionGoods = this.getById(id); if (StringUtils.isNull(auctionGoods)) { throw new ServiceException("拍卖商品不存在"); } - AuctionGoodsVO auctionGoodsVO = BeanUtils.copyBean(auctionGoods, AuctionGoodsVO.class); + MgtAuctionGoodsVO auctionGoodsVO = BeanUtils.copyBean(auctionGoods, + MgtAuctionGoodsVO.class); + // 远程调用商品服务,获取商品信息 + GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(auctionGoods.getGoodsSkuId(), + SecurityConstants.INNER).getData(); + if (StringUtils.isNotNull(goodsSku)) { + auctionGoodsVO.setGoodsSkuName(goodsSku.getSkuName()); + } if (!auctionGoods.getStartStatus().equals(AuctionStartStatusEnum.IN_PREVIEW)) { List<AuctionBidRecord> list = auctionBidRecordService.lambdaQuery() .eq(AuctionBidRecord::getTargetId, auctionGoodsVO.getId()) @@ -208,15 +274,19 @@ .collect(Collectors.toSet()); List<Member> memberList = memberClient. getMemberListByIds(collect, SecurityConstants.INNER).getData(); - Map<Long, String> memberMap = memberList.stream() - .collect(Collectors.toMap(Member::getId, Member::getNickname)); - List<AuctionBidRecordVO> auctionBidRecordVOS = BeanUtils.copyList(list, - AuctionBidRecordVO.class); - for (AuctionBidRecordVO vo : auctionBidRecordVOS) { - String memberName = memberMap.get(vo.getMemberId()); - vo.setMemberName(StringUtils.isNotEmpty(memberName) ? memberName : ""); + Map<Long, Member> memberMap = memberList.stream() + .collect(Collectors.toMap(Member::getId, e -> e)); + List<MgtAuctionBidRecordVO> mgtAuctionBidRecordVOS = BeanUtils.copyList(list, + MgtAuctionBidRecordVO.class); + for (MgtAuctionBidRecordVO vo : mgtAuctionBidRecordVOS) { + Member member = memberMap.get(vo.getMemberId()); + if (StringUtils.isNotNull(member)) { + vo.setMemberName(member.getNickname()); + vo.setPhone(member.getPhone()); + } + } - auctionGoodsVO.setRecordList(auctionBidRecordVOS); + auctionGoodsVO.setRecordList(mgtAuctionBidRecordVOS); } } return auctionGoodsVO; @@ -236,6 +306,10 @@ if (StringUtils.isNull(auctionGoods)) { throw new ServiceException("拍卖商品不存在"); } + // 远程调用商品服务,获取商品信息 + GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(auctionGoods.getGoodsSkuId(), + SecurityConstants.INNER) + .getData(); if (auctionGoods.getStartStatus().equals(AuctionStartStatusEnum.IN_AUCTION)) { // 查询出价记录 List<AuctionBidRecord> auctionBidRecords = auctionBidRecordService.getBidRecordByGoodsId( @@ -248,15 +322,25 @@ auctionBidRecordService.updateById(auctionBidRecord); memberId = auctionBidRecord.getMemberId(); // 创建待支付订单 + CustomConfig moneyConfig = sysUserClient.getconfig( + ConfigEnum.MEMBER_POINTS_MONEY.getKey()).getData(); + CustomConfig pointsConfig = sysUserClient.getconfig( + ConfigEnum.MEMBER_POINTS_POINTS.getKey()).getData(); + double ratio = + Double.parseDouble( + pointsConfig.getConfigValue()) / Double.parseDouble( + moneyConfig.getConfigValue()); OrderDTO orderDTO = new OrderDTO(); orderDTO.setAuctionType(AuctionOrderTypeEnum.REGULAR_ITEMS); orderDTO.setGoodsQuantity(auctionGoods.getAuctionStock()); - orderDTO.setGoodsSkuId(auctionGoods.getGoodsSkuId()); + orderDTO.setGoodsSkuId(auctionGoods.getId()); orderDTO.setBound(auctionGoods.getBond()); orderDTO.setMemberId(auctionBidRecord.getMemberId()); orderDTO.setTotalAmount(auctionBidRecord.getLastBidAmount()); orderDTO.setOrderFrom(OrderFromEnum.AUCTION_ORDERS); orderDTO.setOrderTime(LocalDateTime.now()); + orderDTO.setPoints(auctionBidRecord.getLastBidAmount() + .multiply(BigDecimal.valueOf(ratio)).intValue()); MemberAddress data = memberClient.getMemberAddressOne( auctionBidRecord.getMemberId(), SecurityConstants.INNER).getData(); if (StringUtils.isNotNull(data)) { @@ -264,6 +348,11 @@ orderDTO.setReceiverCity(data.getReceiverCity()); orderDTO.setReceiverDetailAddress(data.getDetailedAddress()); orderDTO.setReceiverphone(data.getRecipientPhone()); + } + if (StringUtils.isNotNull(goodsSku)) { + orderDTO.setCoverPic(goodsSku.getCoverPic()); + orderDTO.setPrice(goodsSku.getPrice()); + orderDTO.setSkuName(goodsSku.getSkuName()); } orderClient.saveOrderOne(orderDTO, SecurityConstants.INNER); } else { @@ -316,7 +405,7 @@ return null; }).filter(Objects::nonNull).collect(Collectors.toList()); // 远程调用订单服务修改订单状态 - orderClient.updateOrderAuctionBondStatus(ids, BondStatusEnum.PAID); + orderClient.updateOrderAuctionBondStatus(ids, BondStatusEnum.PAID,SecurityConstants.INNER); } } } @@ -347,12 +436,14 @@ auctionGoodsVO.setStartTime(auctionGoods.getStartTime()); auctionGoodsVO.setStartingPrice(auctionGoods.getStartingPrice()); auctionGoodsVO.setStartStatus(auctionGoods.getStartStatus()); + auctionGoodsVO.setAuctionStock(auctionGoods.getAuctionStock()); GoodsSku goodsSkuOne = goodsSkuClient.getGoodsSkuOne(auctionGoods.getGoodsSkuId(), SecurityConstants.INNER).getData(); auctionGoodsVO.setUnit(goodsSkuOne.getUnit()); auctionGoodsVO.setSpec(goodsSkuOne.getSpec()); auctionGoodsVO.setSpecUnit(goodsSkuOne.getSpecUnit()); auctionGoodsVO.setGoodsSkuName(goodsSkuOne.getSkuName()); auctionGoodsVO.setCoverPic(goodsSkuOne.getCoverPic()); + auctionGoodsVO.setYears(String.valueOf(goodsSkuOne.getYears())); auctionGoodsVOS.add(auctionGoodsVO); } @@ -362,7 +453,7 @@ @Override public AuctionGoodsinfoVO getAuctionGoodsInfo(AuctionGoodsListDTO auctionGoodsListDTO) { - AuctionGoods byId = auctionGoodsService.getById(auctionGoodsListDTO.getGoodsSkuId()); + AuctionGoods byId = auctionGoodsMapper.selectById(auctionGoodsListDTO.getGoodsSkuId()); GoodsSku goodsSkuOne = goodsSkuClient.getGoodsSkuOne(byId.getGoodsSkuId(), SecurityConstants.INNER).getData(); AuctionGoodsinfoVO auctionGoodsinfoVO=new AuctionGoodsinfoVO(); auctionGoodsinfoVO.setGoodsSkuId(byId.getGoodsSkuId()); @@ -373,28 +464,43 @@ auctionGoodsinfoVO.setStartTime(byId.getStartTime()); auctionGoodsinfoVO.setEndTime(byId.getEndTime()); auctionGoodsinfoVO.setUnit(goodsSkuOne.getUnit()); + auctionGoodsinfoVO.setBond(byId.getBond()); auctionGoodsinfoVO.setDescription(goodsSkuOne.getDescription()); + auctionGoodsinfoVO.setExplain(byId.getDescription()); auctionGoodsinfoVO.setYears(goodsSkuOne.getYears()); GoodsBrand data = goodsSkuClient.getBrandOne(goodsSkuOne.getBrandId(), SecurityConstants.INNER).getData(); GoodsCategory data1 = goodsSkuClient.getCategoryOne(goodsSkuOne.getCategoryId(), SecurityConstants.INNER).getData(); GoodsSeries data2 = goodsSkuClient.getSeriesOne(goodsSkuOne.getSeriesId(), SecurityConstants.INNER).getData(); GoodsFlavorType data3 = goodsSkuClient.getFlavorTypeOne(goodsSkuOne.getFlavorTypeId(), SecurityConstants.INNER).getData(); - auctionGoodsinfoVO.setBrand(data.getBrandName()); - auctionGoodsinfoVO.setCategory(data1.getCategoryName()); + if (data!=null){ + auctionGoodsinfoVO.setBrand(data.getBrandName()); + } + if (data1!=null){ + auctionGoodsinfoVO.setCategory(data1.getCategoryName()); + } + if (data2!=null){ auctionGoodsinfoVO.setSeries(data2.getSeriesName()); - auctionGoodsinfoVO.setFlavorType(data3.getFlavorTypeName()); + } + if (data3!=null) { + auctionGoodsinfoVO.setFlavorType(data3.getFlavorTypeName()); + } auctionGoodsinfoVO.setCoverPic(goodsSkuOne.getCoverPic()); auctionGoodsinfoVO.setAlbum(goodsSkuOne.getAlbum()); - auctionGoodsinfoVO.setAuthentication(byId.getAuthentication()); + auctionGoodsinfoVO.setAuthentication(byId.getAuthentication().getCode()); auctionGoodsinfoVO.setMinimumMarkupAmount(byId.getMinimumMarkupAmount()); auctionGoodsinfoVO.setSpec(goodsSkuOne.getSpec()); auctionGoodsinfoVO.setSpecUnit(goodsSkuOne.getSpecUnit()); auctionGoodsinfoVO.setShareTitle(goodsSkuOne.getShareTitle()); auctionGoodsinfoVO.setSpecUnit(goodsSkuOne.getSpecUnit()); + auctionGoodsinfoVO.setDetail(goodsSkuOne.getDetail()); + auctionGoodsinfoVO.setBond(byId.getBond()); + auctionGoodsinfoVO.setYears(goodsSkuOne.getYears()); + auctionGoodsinfoVO.setSharePic(byId.getSharePic()); + auctionGoodsinfoVO.setShareTitle(byId.getShareTitle()); LambdaQueryWrapper<AuctionBidRecord> wrapper1= Wrappers.lambdaQuery(); - wrapper1.eq(AuctionBidRecord::getMemberId,auctionGoodsListDTO.getMemberId()); wrapper1.eq(AuctionBidRecord::getAuctionType,1); wrapper1.eq(AuctionBidRecord::getTargetId,byId.getId()); + wrapper1.eq(AuctionBidRecord::getMemberId,auctionGoodsListDTO.getMemberId()); wrapper1.eq(AuctionBidRecord::getDelFlag,0); AuctionBidRecord list1 = auctionBidRecordService.getOne(wrapper1); if (list1!=null){ @@ -402,6 +508,15 @@ auctionGoodsinfoVO.setPresentBid(list1.getLastBidAmount()); if (list1.getStatus().getCode()==2){ auctionGoodsinfoVO.setIsStatus(2); + + OrderDTO orderDTO =new OrderDTO(); + orderDTO.setMemberId(auctionGoodsListDTO.getMemberId()); + orderDTO.setGoodsSkuId(byId.getId()); + Order data4 = orderClient.getOrderOne1(orderDTO, SecurityConstants.INNER).getData(); + if (data4!=null){ + auctionGoodsinfoVO.setOrderId(data4.getId()); + auctionGoodsinfoVO.setOrderNo(data4.getOrderNo()); + } }else{ auctionGoodsinfoVO.setIsStatus(1); } @@ -413,7 +528,7 @@ wrapper2.eq(MemberAuctionCollection::getMemberId,auctionGoodsListDTO.getMemberId()); wrapper2.eq(MemberAuctionCollection::getTargetId,byId.getId()); wrapper2.eq(MemberAuctionCollection::getDelFlag,0); - MemberAuctionCollection one = memberAuctionCollectionServiceImpl.getOne(wrapper2); + MemberAuctionCollection one = memberAuctionCollectionService.getOne(wrapper2); if (one!=null){ auctionGoodsinfoVO.setIsCollection(2); }else { @@ -425,6 +540,52 @@ }else{ auctionGoodsinfoVO.setIsApply(1); } + + LocalDateTime now = LocalDateTime.now(); + LocalDateTime newTime7 = now.minusDays(7); + + LambdaQueryWrapper<AuctionBrowseRecord> wrapper3=Wrappers.lambdaQuery(); + wrapper3.eq(AuctionBrowseRecord::getDelFlag,0); + wrapper3.eq(AuctionBrowseRecord::getTargetId,auctionGoodsListDTO.getGoodsSkuId()); + wrapper3.eq(AuctionBrowseRecord::getBrowseType,AuctionOrderTypeEnum.REGULAR_ITEMS); + wrapper3.eq(AuctionBrowseRecord::getMemberId,auctionGoodsListDTO.getMemberId()); + wrapper3.ge(AuctionBrowseRecord::getCreateTime, newTime7) + .le(AuctionBrowseRecord::getCreateTime, now); + List<AuctionBrowseRecord> list = iAuctionBrowseRecordService.list(wrapper3); + if (list.size()==0){ + AuctionBrowseRecord auctionBrowseRecord=new AuctionBrowseRecord(); + auctionBrowseRecord.setBrowseType(AuctionOrderTypeEnum.REGULAR_ITEMS); + auctionBrowseRecord.setMemberId(auctionGoodsListDTO.getMemberId()); + auctionBrowseRecord.setTargetId(auctionGoodsListDTO.getGoodsSkuId()); + iAuctionBrowseRecordService.save(auctionBrowseRecord); + } + + LambdaQueryWrapper<AuctionBidRecord> wrapper5= Wrappers.lambdaQuery(); + wrapper5.eq(AuctionBidRecord::getAuctionType,1); + wrapper5.eq(AuctionBidRecord::getTargetId,byId.getId()); + wrapper5.eq(AuctionBidRecord::getMemberId,auctionGoodsListDTO.getMemberId()); + wrapper5.eq(AuctionBidRecord::getDelFlag,0); + AuctionBidRecord list5 = auctionBidRecordService.getOne(wrapper5); + if (list5!=null){ + auctionGoodsinfoVO.setZgBid(list5.getLastBidAmount()); + } + + + /*CustomConfig returnAddressUserName = sysUserClient.getconfig("MALL_ORDER_DESCRIPTION").getData(); + auctionGoodsinfoVO.setExplain(returnAddressUserName.getConfigValue());*/ + + + List<getHomeGoodsSkuXxiVO> homeGoodsSkuXxiVOS=new ArrayList<>(); + List<GoodsInfoTitleValueVO> goodsInfoTitleValueVOList = goodsSkuClient.getlistByGoodsId(goodsSkuOne.getId(), SecurityConstants.INNER).getData(); + Collections.sort(goodsInfoTitleValueVOList, Comparator.comparingInt(GoodsInfoTitleValueVO::getSortNum)); + for (GoodsInfoTitleValueVO goodsInfoTitleValueVO:goodsInfoTitleValueVOList){ + getHomeGoodsSkuXxiVO getHomeGoodsSkuXxiVOs=new getHomeGoodsSkuXxiVO(); + getHomeGoodsSkuXxiVOs.setContent(goodsInfoTitleValueVO.getContent()); + getHomeGoodsSkuXxiVOs.setTitleName(goodsInfoTitleValueVO.getTitleName()); + homeGoodsSkuXxiVOS.add(getHomeGoodsSkuXxiVOs); + } + auctionGoodsinfoVO.setXxiVOS(homeGoodsSkuXxiVOS); + return auctionGoodsinfoVO; } @@ -434,11 +595,28 @@ memberAuctionSalesroomDTO.setMemberId(auctionGoodsListDTO.getMemberId()); List<OrderAuctionBond> data = orderClient.getAuctionGoodsOrderAuctionBondList(auctionGoodsListDTO, SecurityConstants.INNER).getData(); Set<Long> goodsSkuIdList = null; - goodsSkuIdList = data.stream().map(OrderAuctionBond::getAuctionSalesroomId) - .collect(Collectors.toSet()); + if (data.size()>0){ + goodsSkuIdList = data.stream().map(OrderAuctionBond::getAuctionGoodsId) + .collect(Collectors.toSet()); + }else { + Set<Long> goodsSkuIdList1 =new HashSet<>(); + goodsSkuIdList1.add(0L); + goodsSkuIdList=goodsSkuIdList1; + } AuctionGoodsListPageDTO auctionGoodsListPageDTO=new AuctionGoodsListPageDTO(); - auctionGoodsListPageDTO.setGoodsSkuIdList(goodsSkuIdList); + if (goodsSkuIdList!=null){ + auctionGoodsListPageDTO.setGoodsSkuIdList(goodsSkuIdList); + } + + if (auctionGoodsListDTO.getStartStatus()!=4){ + if (auctionGoodsListDTO.getStartStatus()==0){ + auctionGoodsListPageDTO.setStartStatus(5); + }else{ + auctionGoodsListPageDTO.setStartStatus(auctionGoodsListDTO.getStartStatus()); + } + + } Page<AuctionGoodsListVO> page = new Page<>(); page.setSize(auctionGoodsListDTO.getPageSize()); @@ -482,4 +660,71 @@ page.setRecords(auctionGoodsVOS); return PageDTO.of(page); } + + @Override + public void endAuctionGoods(Long id) throws JsonProcessingException { + AuctionGoods auctionGoods = this.getById(id); + if (StringUtils.isNotNull(auctionGoods) && auctionGoods.getListingStatus().equals( + ListingStatusEnum.ON_SHELVES) && auctionGoods.getStartStatus() + .equals(AuctionStartStatusEnum.IN_AUCTION)) { + auctionGoods.setStartStatus(AuctionStartStatusEnum.ENDED); + this.updateById(auctionGoods); + orderClient.returnBondByAuctionGoodsId(id, SecurityConstants.INNER); + + Map<String, Object> map = new ConcurrentHashMap<>(); + map.put("notification_type", NotificationTypeConstant.AUCTION_GOODS); + map.put("notification_time", DateUtils.dateTimeNow("yyyy-MM-dd HH:mm:ss")); + map.put("target_id", id); + map.put("message_type", "end"); + String msg = objectMapper.writeValueAsString(map); + sysUserClient.pushByClientType(WebsocketMessageDTO.builder().message(msg) + .clientType(ClientTypeEnum.MEMBER).build(), SecurityConstants.INNER); + log.info("===================>发送websocket通知,消息体{}", msg); + } + } + + @Override + public void startAuctionGoods(Long id) throws JsonProcessingException { + AuctionGoods auctionGoods = this.getById(id); + if (StringUtils.isNotNull(auctionGoods) && auctionGoods.getListingStatus().equals( + ListingStatusEnum.ON_SHELVES) && auctionGoods.getStartStatus() + .equals(AuctionStartStatusEnum.IN_PREVIEW)) { + auctionGoods.setStartStatus(AuctionStartStatusEnum.IN_AUCTION); + this.updateById(auctionGoods); + Map<String, Object> map = new ConcurrentHashMap<>(); + map.put("notification_type", NotificationTypeConstant.AUCTION_GOODS); + map.put("notification_time", DateUtils.dateTimeNow("yyyy-MM-dd HH:mm:ss")); + map.put("target_id", id); + map.put("message_type", "start"); + String msg = objectMapper.writeValueAsString(map); + sysUserClient.pushByClientType(WebsocketMessageDTO.builder().message(msg) + .clientType(ClientTypeEnum.MEMBER).build(), SecurityConstants.INNER); + log.info("===================>发送websocket通知,消息体{}", msg); + } + } + + /** + * 下架/上架 拍卖商品 + * + * @param dto 商品上下架状态对象 + */ + @Override + public void updStatus(ListStatusDTO dto) { + AuctionGoods auctionGoods = this.getById(dto.getId()); + if (StringUtils.isNull(auctionGoods)) { + throw new ServiceException("拍卖商品不存在"); + } + auctionGoods.setListingStatus(dto.getListingStatus()); + this.updateById(auctionGoods); + } + + public static void main(String[] args) throws JsonProcessingException { + Map<String, Object> map = new ConcurrentHashMap<>(); + map.put("notification_type", NotificationTypeConstant.AUCTION_GOODS); + map.put("notification_time", DateUtils.dateTimeNow("yyyy-MM-dd HH:mm:ss")); + map.put("target_id", 1); + map.put("message_type", "end"); + String msg = objectMapper.writeValueAsString(map); + System.out.println(msg); + } } -- Gitblit v1.7.1