From fc8b51f40e71aa09bb49f407c1e9f68ac94ceb58 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期一, 29 七月 2024 18:51:32 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSkuServiceImpl.java | 291 ++++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 211 insertions(+), 80 deletions(-) diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSkuServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSkuServiceImpl.java index 6f13d2d..a279095 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSkuServiceImpl.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSkuServiceImpl.java @@ -8,6 +8,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.ruoyi.common.core.constant.SecurityConstants; import com.ruoyi.common.core.enums.ListingStatusEnum; +import com.ruoyi.common.core.enums.StartStatusEnum; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.page.BeanUtils; @@ -17,13 +18,14 @@ import com.ruoyi.goods.controller.management.dto.GoodsInfoTitleValueDTO; import com.ruoyi.goods.controller.management.dto.GoodsSkuDTO; import com.ruoyi.goods.controller.management.dto.GoodsSkuQuery; -import com.ruoyi.goods.controller.management.vo.GoodsInfoTitleValueVO; import com.ruoyi.goods.controller.management.vo.GoodsSkuVO; +import com.ruoyi.goods.domain.GoodsBrowseRecord; import com.ruoyi.goods.domain.GoodsInfoTitleValue; import com.ruoyi.goods.domain.MemberGoodsCollection; import com.ruoyi.goods.mapper.GoodsGroupPurchaseMapper; import com.ruoyi.goods.mapper.GoodsSeckillMapper; import com.ruoyi.goods.mapper.GoodsSkuMapper; +import com.ruoyi.goods.service.IGoodsBrowseRecordService; import com.ruoyi.goods.service.IGoodsInfoTitleValueService; import com.ruoyi.goods.service.IGoodsSkuService; import com.ruoyi.goods.service.IMemberGoodsCollectionService; @@ -34,18 +36,23 @@ import com.ruoyi.system.api.domain.GoodsSeckill; import com.ruoyi.system.api.domain.GoodsSeries; import com.ruoyi.system.api.domain.GoodsSku; +import com.ruoyi.system.api.domain.Order; import com.ruoyi.system.api.domain.dto.GoodsStockUpdDTO; import com.ruoyi.system.api.domain.dto.HomeGoodsSkuDTO; import com.ruoyi.system.api.domain.dto.ListStatusDTO; +import com.ruoyi.system.api.domain.vo.GoodsInfoTitleValueVO; import com.ruoyi.system.api.domain.vo.HomeGoodsSkuInfoVO; import com.ruoyi.system.api.domain.vo.HomeGoodsSkuListVO; +import com.ruoyi.system.api.domain.vo.getHomeGoodsSkuXxiVO; import com.ruoyi.system.api.feignClient.GoodsSkuClient; - +import com.ruoyi.system.api.feignClient.OrderClient; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.List; -import java.util.Map; import java.util.Objects; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @@ -75,6 +82,13 @@ private final GoodsSeckillMapper goodsSeckillMapper; private final GoodsGroupPurchaseMapper goodsGroupPurchaseMapper; private final RedissonClient redissonClient; + + @Resource + private IGoodsBrowseRecordService iGoodsBrowseRecordService; + + + @Resource + private OrderClient orderClient; @Resource private GoodsSkuClient goodsSkuClient; @@ -181,13 +195,16 @@ Page<GoodsSku> page = this.lambdaQuery() .select(GoodsSku::getId, GoodsSku::getSkuName, GoodsSku::getPrice, GoodsSku::getStock, GoodsSku::getSoldQuantity, GoodsSku::getSortNum, - GoodsSku::getListingStatus) + GoodsSku::getListingStatus, GoodsSku::getUnit, GoodsSku::getSpec, + GoodsSku::getSpecUnit) .like(StringUtils.isNotEmpty(query.getSkuName()), GoodsSku::getSkuName, query.getSkuName()) .eq(StringUtils.isNotNull(query.getListingStatus() ), GoodsSku::getListingStatus, query.getListingStatus()) .eq(query.getQueryType().equals(1), GoodsSku::getListingStatus, ListingStatusEnum.ON_SHELVES) + .gt(query.getQueryType().equals(1), GoodsSku::getStock, 0) + .orderByDesc(GoodsSku::getCreateTime) .page(new Page<>(query.getPageCurr(), query.getPageSize())); return PageDTO.of(page, GoodsSkuVO.class); } @@ -216,20 +233,25 @@ .eq(GoodsSeckill::getGoodsSkuId, dto.getId()); List<GoodsSeckill> goodsSeckillList = goodsSeckillMapper.selectList(queryWrapper); if (StringUtils.isNotNull(goodsSeckillList)) { - for (GoodsSeckill goodsSeckill : goodsSeckillList) { + goodsSeckillList = goodsSeckillList.stream().peek(goodsSeckill -> { goodsSeckill.setListingStatus(ListingStatusEnum.REMOVED_FROM_THE_SHELF); - goodsSeckillMapper.updateById(goodsSeckill); - } + }).collect(Collectors.toList()); + goodsSeckillMapper.updateListingStatusBatch( + ListingStatusEnum.REMOVED_FROM_THE_SHELF.getCode(), goodsSeckillList); } LambdaQueryWrapper<GoodsGroupPurchase> queryWrapper1 =new LambdaQueryWrapper<>(); queryWrapper1.eq(GoodsGroupPurchase::getListingStatus, ListingStatusEnum.ON_SHELVES) .eq(GoodsGroupPurchase::getGoodsSkuId, dto.getId()); - GoodsGroupPurchase goodsGroupPurchase = goodsGroupPurchaseMapper.selectOne(queryWrapper1); - if (StringUtils.isNotNull(goodsGroupPurchase)) { - goodsGroupPurchase.setListingStatus(ListingStatusEnum.REMOVED_FROM_THE_SHELF); - goodsGroupPurchaseMapper.updateById(goodsGroupPurchase); + List<GoodsGroupPurchase> goodsGroupPurchaseList = goodsGroupPurchaseMapper.selectList( + queryWrapper1); + if (CollUtils.isNotEmpty(goodsGroupPurchaseList)) { + goodsGroupPurchaseList = goodsGroupPurchaseList.stream().peek(goodsGroupPurchase -> { + goodsGroupPurchase.setListingStatus(ListingStatusEnum.REMOVED_FROM_THE_SHELF); + }).collect(Collectors.toList()); + goodsGroupPurchaseMapper.updateListingStatusBatch( + ListingStatusEnum.REMOVED_FROM_THE_SHELF.getCode(), goodsGroupPurchaseList); } } @@ -255,44 +277,25 @@ @Override @Transactional(propagation = Propagation.REQUIRES_NEW) public void updGoodsStock(List<GoodsStockUpdDTO> goodsStockUpdDTOS) { - List<Long> goodsSkuIdList = goodsStockUpdDTOS.stream() - .map(GoodsStockUpdDTO::getGoodsSkuId) - .collect(Collectors.toList()); - List<GoodsSku> goodsSkus = this.listByIds(goodsSkuIdList); + log.info("开始批量更新商品库存"); + for (GoodsStockUpdDTO goodsStockUpdDTO : goodsStockUpdDTOS) { + updateGoodsStock(goodsStockUpdDTO.getGoodsSkuId(), + goodsStockUpdDTO.getAuctionStock()); + } + log.info("批量更新商品库存结束"); + } - if (StringUtils.isEmpty(goodsSkus)) { - throw new ServiceException("商品不存在"); - } - Map<Long, Integer> stockMap = goodsStockUpdDTOS.stream() - .collect(Collectors.toMap(GoodsStockUpdDTO::getGoodsSkuId, - GoodsStockUpdDTO::getAuctionStock)); - for (GoodsSku skus : goodsSkus) { - String goodsLock = "goods_lock:" + skus.getId(); - RLock redissonLock = redissonClient.getLock(goodsLock); - try { - redissonLock.lock(30, TimeUnit.SECONDS); - Integer auctionStock = stockMap.get(skus.getId()); - if (StringUtils.isNotNull(auctionStock) && auctionStock > 0) { - // 更新商品库存,更新五次失败抛出异常 - boolean isUpdated = false; - for (int i = 0; i < 5; i++) { - isUpdated = updateGoodsStock(skus, auctionStock); - if (isUpdated) { - break; - } else { - skus = this.getById(skus.getId()); - } - } - if (!isUpdated) { - throw new ServiceException("商品库存回退失败"); - } - } - } finally { - redissonLock.unlock(); - } - } + + @Override + @Transactional(propagation = Propagation.REQUIRES_NEW) + public void updGoodsStock1(GoodsStockUpdDTO goodsStockUpdDTOS) { + GoodsSku goodsSkus = this.getById(goodsStockUpdDTOS.getGoodsSkuId()); + goodsSkus.setStock(goodsStockUpdDTOS.getAuctionStock()); + goodsSkus.setSoldQuantity(goodsStockUpdDTOS.getSoldQuantity()); + this.updateById(goodsSkus); } + @Override public PageDTO<HomeGoodsSkuListVO> getHomeGoodsSkuVOList(HomeGoodsSkuDTO homeGoodsSkuDTO) { @@ -303,8 +306,18 @@ LambdaQueryWrapper<GoodsSku> wrapper3= Wrappers.lambdaQuery(); wrapper3.eq(GoodsSku::getDelFlag,0); wrapper3.eq(GoodsSku::getListingStatus,0); - if (homeGoodsSkuDTO.getSkuName()!=null){ + // if(homeGoodsSkuDTO.getId()!=null){ + // List arr=new ArrayList<>(); + // arr.add(homeGoodsSkuDTO.getId()); + // wrapper3.notIn(GoodsSku::getId,arr); + // } + if (homeGoodsSkuDTO.getSkuName()!=null&&homeGoodsSkuDTO.getSkuName()!=""){ wrapper3.like(GoodsSku::getSkuName,homeGoodsSkuDTO.getSkuName()); + } + if (homeGoodsSkuDTO.getGoodsSkuId()!=null){ + List<Long> id=new ArrayList<>(); + id.add(homeGoodsSkuDTO.getGoodsSkuId()); + wrapper3.notIn(GoodsSku::getId,id); } if (homeGoodsSkuDTO.getBrandId()!=null){ wrapper3.eq(GoodsSku::getBrandId,homeGoodsSkuDTO.getBrandId()); @@ -380,7 +393,10 @@ wrapper3.le(GoodsSku::getYears, parseTime7) .ge(GoodsSku::getYears, parseTime15); } - wrapper3.orderByAsc(GoodsSku::getSortNum); + wrapper3.orderByDesc(GoodsSku::getCreateTime); + wrapper3.last(",IF(isnull(sort_num),1,0), sort_num DESC"); + + Page<GoodsSku> page1 = this.page(page, wrapper3); PageDTO<HomeGoodsSkuListVO> articleCommentsVOPageDTO = PageDTO.of(page1, HomeGoodsSkuListVO.class); return articleCommentsVOPageDTO; @@ -398,10 +414,18 @@ GoodsCategory data1 = goodsSkuClient.getCategoryOne(byId.getCategoryId(), SecurityConstants.INNER).getData(); GoodsSeries data2 = goodsSkuClient.getSeriesOne(byId.getSeriesId(), SecurityConstants.INNER).getData(); GoodsFlavorType data3 = goodsSkuClient.getFlavorTypeOne(byId.getFlavorTypeId(), SecurityConstants.INNER).getData(); - homeGoodsSkuInfoVO.setBrand(data.getBrandName()); + if (data!=null){ + homeGoodsSkuInfoVO.setBrand(data.getBrandName()); + } + if (data1!=null){ homeGoodsSkuInfoVO.setCategory(data1.getCategoryName()); + } + if (data2!=null){ homeGoodsSkuInfoVO.setSeries(data2.getSeriesName()); - homeGoodsSkuInfoVO.setFlavorType(data3.getFlavorTypeName()); + } + if (data3!=null) { + homeGoodsSkuInfoVO.setFlavorType(data3.getFlavorTypeName()); + } homeGoodsSkuInfoVO.setPrice(byId.getPrice()); homeGoodsSkuInfoVO.setSoldQuantity(byId.getSoldQuantity()); homeGoodsSkuInfoVO.setUnit(byId.getUnit()); @@ -410,40 +434,76 @@ homeGoodsSkuInfoVO.setCoverPic(byId.getCoverPic()); homeGoodsSkuInfoVO.setAlbum(byId.getAlbum()); homeGoodsSkuInfoVO.setDescription(byId.getDescription()); + homeGoodsSkuInfoVO.setStock(byId.getStock()); homeGoodsSkuInfoVO.setDetail(byId.getDetail()); homeGoodsSkuInfoVO.setShareTitle(byId.getShareTitle()); homeGoodsSkuInfoVO.setSharePic(byId.getSharePic()); + LambdaQueryWrapper<GoodsGroupPurchase> queryWrapper1 =new LambdaQueryWrapper<>(); queryWrapper1.eq(GoodsGroupPurchase::getListingStatus, ListingStatusEnum.ON_SHELVES) - .eq(GoodsGroupPurchase::getGoodsSkuId, byId.getId()); + .eq(GoodsGroupPurchase::getGoodsSkuId, byId.getId()) + .eq(GoodsGroupPurchase::getStartStatus, + StartStatusEnum.STARTED); GoodsGroupPurchase goodsGroupPurchase = goodsGroupPurchaseMapper.selectOne(queryWrapper1); if(goodsGroupPurchase!=null){ - homeGoodsSkuInfoVO.setGroupPurchaseGoods(2); - }else { - homeGoodsSkuInfoVO.setGroupPurchaseGoods(1); + HomeGoodsSkuDTO homeGoodsSkuDTO1 =new HomeGoodsSkuDTO(); + homeGoodsSkuDTO1.setGoodsSkuId(goodsGroupPurchase.getId()); + homeGoodsSkuDTO1.setMemberId(homeGoodsSkuDTO.getMemberId()); + Order data4 = orderClient.getOrderByGroupPurchaseMemberId2(homeGoodsSkuDTO1, SecurityConstants.INNER).getData(); + if (data4!=null){ + homeGoodsSkuInfoVO.setIsGoodsGroupPurchase(2); + }else{ + homeGoodsSkuInfoVO.setIsGoodsGroupPurchase(1); + } + + }else{ + homeGoodsSkuInfoVO.setIsGoodsGroupPurchase(1); } + LambdaQueryWrapper<MemberGoodsCollection> wrapper3= Wrappers.lambdaQuery(); wrapper3.eq(MemberGoodsCollection::getDelFlag,0); wrapper3.eq(MemberGoodsCollection::getMemberId,homeGoodsSkuDTO.getMemberId()); wrapper3.eq(MemberGoodsCollection::getTargetId,homeGoodsSkuDTO.getGoodsSkuId()); + wrapper3.eq(MemberGoodsCollection::getType,1); List<MemberGoodsCollection> list = iMemberGoodsCollectionService.list(wrapper3); if (list.size()>0){ homeGoodsSkuInfoVO.setIsCollection(2); }else{ homeGoodsSkuInfoVO.setIsCollection(1); } - LambdaQueryWrapper<GoodsGroupPurchase> queryWrapper1 =new LambdaQueryWrapper<>(); - queryWrapper1.eq(GoodsGroupPurchase::getListingStatus, + List list1=new ArrayList<>(); + list1.add(0); + list1.add(1); + LambdaQueryWrapper<GoodsGroupPurchase> queryWrapper2 =new LambdaQueryWrapper<>(); + queryWrapper2.eq(GoodsGroupPurchase::getListingStatus, ListingStatusEnum.ON_SHELVES) - .eq(GoodsGroupPurchase::getGoodsSkuId, byId.getId()); - GoodsGroupPurchase goodsGroupPurchase = goodsGroupPurchaseMapper.selectOne(queryWrapper1); - if (goodsGroupPurchase!=null){ - homeGoodsSkuInfoVO.setIsGoodsGroupPurchase(2); + .eq(GoodsGroupPurchase::getGoodsSkuId, byId.getId()).in(GoodsGroupPurchase::getStartStatus, list1); + GoodsGroupPurchase goodsGroupPurchase2 = goodsGroupPurchaseMapper.selectOne(queryWrapper2); + if (goodsGroupPurchase2!=null){ + homeGoodsSkuInfoVO.setGroupPurchaseGoods(2); }else{ - homeGoodsSkuInfoVO.setIsGoodsGroupPurchase(1); + homeGoodsSkuInfoVO.setGroupPurchaseGoods(1); } + LocalDateTime now = LocalDateTime.now(); + LocalDateTime newTime7 = now.minusDays(7); + + LambdaQueryWrapper<GoodsBrowseRecord> wrapper4=Wrappers.lambdaQuery(); + wrapper4.eq(GoodsBrowseRecord::getDelFlag,0); + wrapper4.eq(GoodsBrowseRecord::getGoodsSkuId,homeGoodsSkuDTO.getGoodsSkuId()); + wrapper4.eq(GoodsBrowseRecord::getMemberId,homeGoodsSkuDTO.getMemberId()); + wrapper4.ge(GoodsBrowseRecord::getCreateTime, newTime7) + .le(GoodsBrowseRecord::getCreateTime,now ); + List<GoodsBrowseRecord> list2 = iGoodsBrowseRecordService.list(wrapper4); + if (list2.size()==0){ + GoodsBrowseRecord auctionBrowseRecord=new GoodsBrowseRecord(); + auctionBrowseRecord.setMemberId(homeGoodsSkuDTO.getMemberId()); + auctionBrowseRecord.setGoodsSkuId(homeGoodsSkuDTO.getGoodsSkuId()); + iGoodsBrowseRecordService.save(auctionBrowseRecord); + } + + return homeGoodsSkuInfoVO; } @@ -457,26 +517,89 @@ GoodsFlavorType data3 = goodsSkuClient.getFlavorTypeOne(byId.getFlavorTypeId(), SecurityConstants.INNER).getData(); - getHomeGoodsSkuXxiVO getHomeGoodsSkuXxiVO1=new getHomeGoodsSkuXxiVO(); - getHomeGoodsSkuXxiVO1.setContent(data1.getCategoryName()); - getHomeGoodsSkuXxiVO1.setTitleName("分类"); - homeGoodsSkuXxiVOS.add(getHomeGoodsSkuXxiVO1); + if (data1!=null){ + getHomeGoodsSkuXxiVO getHomeGoodsSkuXxiVO1=new getHomeGoodsSkuXxiVO(); + getHomeGoodsSkuXxiVO1.setContent(data1.getCategoryName()); + getHomeGoodsSkuXxiVO1.setTitleName("分类"); + homeGoodsSkuXxiVOS.add(getHomeGoodsSkuXxiVO1); + } + if (data2!=null){ getHomeGoodsSkuXxiVO getHomeGoodsSkuXxiVO2=new getHomeGoodsSkuXxiVO(); getHomeGoodsSkuXxiVO2.setContent(data2.getSeriesName()); getHomeGoodsSkuXxiVO2.setTitleName("系列"); homeGoodsSkuXxiVOS.add(getHomeGoodsSkuXxiVO2); + } + if (data!=null) { + getHomeGoodsSkuXxiVO getHomeGoodsSkuXxiVO = new getHomeGoodsSkuXxiVO(); + getHomeGoodsSkuXxiVO.setContent(data.getBrandName()); + getHomeGoodsSkuXxiVO.setTitleName("品牌"); + homeGoodsSkuXxiVOS.add(getHomeGoodsSkuXxiVO); + } + if (data3!=null) { + getHomeGoodsSkuXxiVO getHomeGoodsSkuXxiVO3 = new getHomeGoodsSkuXxiVO(); + getHomeGoodsSkuXxiVO3.setContent(data3.getFlavorTypeName()); + getHomeGoodsSkuXxiVO3.setTitleName("香型"); + homeGoodsSkuXxiVOS.add(getHomeGoodsSkuXxiVO3); + } - getHomeGoodsSkuXxiVO getHomeGoodsSkuXxiVO=new getHomeGoodsSkuXxiVO(); - getHomeGoodsSkuXxiVO.setContent(data.getBrandName()); - getHomeGoodsSkuXxiVO.setTitleName("品牌"); - homeGoodsSkuXxiVOS.add(getHomeGoodsSkuXxiVO); + List<GoodsInfoTitleValueVO> goodsInfoTitleValueVOList = goodsInfoTitleValueService.listByGoodsId(homeGoodsSkuDTO.getGoodsSkuId()); + List<getHomeGoodsSkuXxiVO> homeGoodsSkuXxiVOS1=new ArrayList<>(); + for (int i=0;i<goodsInfoTitleValueVOList.size();i++){ + getHomeGoodsSkuXxiVO getHomeGoodsSkuXxiVOs=new getHomeGoodsSkuXxiVO(); + getHomeGoodsSkuXxiVOs.setContent(goodsInfoTitleValueVOList.get(i).getContent()); + getHomeGoodsSkuXxiVOs.setTitleName(goodsInfoTitleValueVOList.get(i).getTitleName()); + if (goodsInfoTitleValueVOList.get(i).getSortNum()!=null){ + getHomeGoodsSkuXxiVOs.setNum(goodsInfoTitleValueVOList.get(i).getSortNum()); + }else{ + getHomeGoodsSkuXxiVOs.setNum(i+1); + } - getHomeGoodsSkuXxiVO getHomeGoodsSkuXxiVO3=new getHomeGoodsSkuXxiVO(); - getHomeGoodsSkuXxiVO3.setContent(data3.getFlavorTypeName()); - getHomeGoodsSkuXxiVO3.setTitleName("香型"); - homeGoodsSkuXxiVOS.add(getHomeGoodsSkuXxiVO3); + homeGoodsSkuXxiVOS1.add(getHomeGoodsSkuXxiVOs); + } + + + homeGoodsSkuXxiVOS1.sort((o1, o2) -> Integer.compare(o2.getNum(),o1.getNum())); + homeGoodsSkuXxiVOS.addAll(homeGoodsSkuXxiVOS1); + + return homeGoodsSkuXxiVOS; + } + + @Override + public List<getHomeGoodsSkuXxiVO> getMsHomeGoodsSkuXxi(HomeGoodsSkuDTO homeGoodsSkuDTO) { + List<getHomeGoodsSkuXxiVO> homeGoodsSkuXxiVOS=new ArrayList<>(); + GoodsSeckill goodsSeckill = goodsSeckillMapper.selectById(homeGoodsSkuDTO.getGoodsSkuId()); + GoodsSku byId = this.getById(goodsSeckill.getGoodsSkuId()); + GoodsBrand data = goodsSkuClient.getBrandOne(byId.getBrandId(), SecurityConstants.INNER).getData(); + GoodsCategory data1 = goodsSkuClient.getCategoryOne(byId.getCategoryId(), SecurityConstants.INNER).getData(); + GoodsSeries data2 = goodsSkuClient.getSeriesOne(byId.getSeriesId(), SecurityConstants.INNER).getData(); + GoodsFlavorType data3 = goodsSkuClient.getFlavorTypeOne(byId.getFlavorTypeId(), SecurityConstants.INNER).getData(); + if (data!=null){ + getHomeGoodsSkuXxiVO getHomeGoodsSkuXxiVO1=new getHomeGoodsSkuXxiVO(); + getHomeGoodsSkuXxiVO1.setContent(data1.getCategoryName()); + getHomeGoodsSkuXxiVO1.setTitleName("分类"); + homeGoodsSkuXxiVOS.add(getHomeGoodsSkuXxiVO1); + } + + if (data2!=null) { + getHomeGoodsSkuXxiVO getHomeGoodsSkuXxiVO2 = new getHomeGoodsSkuXxiVO(); + getHomeGoodsSkuXxiVO2.setContent(data2.getSeriesName()); + getHomeGoodsSkuXxiVO2.setTitleName("系列"); + homeGoodsSkuXxiVOS.add(getHomeGoodsSkuXxiVO2); + } + if (data!=null) { + getHomeGoodsSkuXxiVO getHomeGoodsSkuXxiVO = new getHomeGoodsSkuXxiVO(); + getHomeGoodsSkuXxiVO.setContent(data.getBrandName()); + getHomeGoodsSkuXxiVO.setTitleName("品牌"); + homeGoodsSkuXxiVOS.add(getHomeGoodsSkuXxiVO); + } + if (data3!=null) { + getHomeGoodsSkuXxiVO getHomeGoodsSkuXxiVO3 = new getHomeGoodsSkuXxiVO(); + getHomeGoodsSkuXxiVO3.setContent(data3.getFlavorTypeName()); + getHomeGoodsSkuXxiVO3.setTitleName("香型"); + homeGoodsSkuXxiVOS.add(getHomeGoodsSkuXxiVO3); + } List<GoodsInfoTitleValueVO> goodsInfoTitleValueVOList = goodsInfoTitleValueService.listByGoodsId(homeGoodsSkuDTO.getGoodsSkuId()); Collections.sort(goodsInfoTitleValueVOList, Comparator.comparingInt(GoodsInfoTitleValueVO::getSortNum)); @@ -491,13 +614,21 @@ return homeGoodsSkuXxiVOS; } - private boolean updateGoodsStock(GoodsSku skus, Integer auctionStock) { - return this.lambdaUpdate() - .set(skus.getStock() + auctionStock > 0, GoodsSku::getStock, - skus.getStock() + auctionStock) - .eq(GoodsSku::getId, skus.getId()) - .eq(GoodsSku::getStock, skus.getStock()) - .update(); + private void updateGoodsStock(Long goodsSkuId, Integer auctionStock) { + String goodsLock = "goods_lock:" + goodsSkuId; + RLock redissonLock = redissonClient.getLock(goodsLock); + try { + redissonLock.lock(30, TimeUnit.SECONDS); + // 加库存 + if (auctionStock > 0) { + this.baseMapper.addGoodsStock(goodsSkuId, auctionStock); + } else { + // 减库存 + this.baseMapper.subGoodsStock(goodsSkuId, auctionStock * -1); + } + } finally { + redissonLock.unlock(); + } } /** -- Gitblit v1.7.1