From b29becf95484be48aa09e87fcc7cc19f94cf9c81 Mon Sep 17 00:00:00 2001 From: rentaiming <806181062@qq.com> Date: 星期三, 10 七月 2024 18:16:23 +0800 Subject: [PATCH] 修改bug --- ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java | 271 +++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 239 insertions(+), 32 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 69c7b40..cdcd3ee 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,6 +4,8 @@ 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.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.collect.Lists; import com.ruoyi.auction.controller.management.dto.MgtAuctionGoodsDTO; import com.ruoyi.auction.controller.management.dto.MgtAuctionGoodsQuery; @@ -17,17 +19,24 @@ 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.CustomConfig; import com.ruoyi.system.api.domain.GoodsBrand; import com.ruoyi.system.api.domain.GoodsCategory; import com.ruoyi.system.api.domain.GoodsFlavorType; @@ -35,26 +44,37 @@ 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.time.format.DateTimeFormatter; 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; @@ -78,8 +98,13 @@ private final GoodsSkuClient goodsSkuClient; private final MemberClient memberClient; private final OrderClient orderClient; - private final IAuctionBidRecordService auctionBidRecordService; + 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 IMemberAuctionCollectionService memberAuctionCollectionService; @@ -98,18 +123,23 @@ @Override 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()) @@ -117,8 +147,30 @@ 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, MgtAuctionGoodsVO.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 @@ -168,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()); @@ -179,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)); } /** @@ -203,6 +258,12 @@ } 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()) @@ -241,6 +302,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( @@ -253,15 +318,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)) { @@ -269,6 +344,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 { @@ -321,7 +401,7 @@ return null; }).filter(Objects::nonNull).collect(Collectors.toList()); // 远程调用订单服务修改订单状态 - orderClient.updateOrderAuctionBondStatus(ids, BondStatusEnum.PAID); + orderClient.updateOrderAuctionBondStatus(ids, BondStatusEnum.PAID,SecurityConstants.INNER); } } } @@ -352,12 +432,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); } @@ -378,28 +460,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){ @@ -407,6 +504,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); } @@ -432,19 +538,15 @@ } LocalDateTime now = LocalDateTime.now(); - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - String formattedDate = now.format(formatter); - LocalDateTime parseTime = LocalDateTime.parse(formattedDate, formatter); LocalDateTime newTime7 = now.minusDays(7); - String formattedDate7 = newTime7.format(formatter); - LocalDateTime parseTime7 = LocalDateTime.parse(formattedDate7, formatter); 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, parseTime7) - .le(AuctionBrowseRecord::getCreateTime, parseTime); + wrapper3.ge(AuctionBrowseRecord::getCreateTime, newTime7) + .le(AuctionBrowseRecord::getCreateTime, now); List<AuctionBrowseRecord> list = iAuctionBrowseRecordService.list(wrapper3); if (list.size()==0){ AuctionBrowseRecord auctionBrowseRecord=new AuctionBrowseRecord(); @@ -454,7 +556,31 @@ 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; } @@ -465,13 +591,27 @@ 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){ - auctionGoodsListPageDTO.setStartStatus(auctionGoodsListDTO.getStartStatus()); + if (auctionGoodsListDTO.getStartStatus()==0){ + auctionGoodsListPageDTO.setStartStatus(5); + }else{ + auctionGoodsListPageDTO.setStartStatus(auctionGoodsListDTO.getStartStatus()); + } + } Page<AuctionGoodsListVO> page = new Page<>(); @@ -516,4 +656,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