From 83c48e429783f463eba87670bb68ca6aa65692ae Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期三, 17 七月 2024 23:20:16 +0800 Subject: [PATCH] 修改bug --- ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java | 114 +++++++++++++++++++++++++++++++++------------------------ 1 files changed, 66 insertions(+), 48 deletions(-) diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java index 60dacaf..f544f53 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java @@ -17,12 +17,12 @@ 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.CollUtils; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.goods.controller.management.dto.GoodsGroupPurchaseDTO; import com.ruoyi.goods.controller.management.dto.GoodsGroupPurchaseQuery; import com.ruoyi.goods.controller.management.vo.GoodsGroupPurchaseVO; -import com.ruoyi.system.api.domain.GoodsGroupPurchaseInfo; import com.ruoyi.goods.domain.MemberGoodsCollection; import com.ruoyi.goods.mapper.GoodsGroupPurchaseMapper; import com.ruoyi.goods.service.IGoodsGroupPurchaseService; @@ -32,9 +32,11 @@ import com.ruoyi.system.api.constants.DelayTaskEnum; import com.ruoyi.system.api.constants.NotificationTypeConstant; import com.ruoyi.system.api.domain.GoodsGroupPurchase; +import com.ruoyi.system.api.domain.GoodsGroupPurchaseInfo; import com.ruoyi.system.api.domain.GoodsSku; import com.ruoyi.system.api.domain.Order; import com.ruoyi.system.api.domain.WebsocketMessageDTO; +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.dto.OrderUpdDTO; @@ -49,11 +51,10 @@ import java.util.Map; 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 javax.annotation.Resource; /** * <p> @@ -108,10 +109,10 @@ queryWrapper.eq(GoodsGroupPurchase::getGoodsSkuId, dto.getGoodsSkuId()); queryWrapper.eq(GoodsGroupPurchase::getListingStatus, ListingStatusEnum.ON_SHELVES.getCode()); - queryWrapper.between(GoodsGroupPurchase::getStartTime, dto.getStartTime(), - dto.getEndTime()); - List<GoodsGroupPurchase> list = this.list(queryWrapper); - if (StringUtils.isNotEmpty(list)) { + queryWrapper.le(GoodsGroupPurchase::getStartTime, dto.getStartTime()); + queryWrapper.ge(GoodsGroupPurchase::getEndTime, dto.getEndTime()); + long count = this.count(queryWrapper); + if (count > 0) { throw new ServiceException("添加失败,当前商品在该时间段内有其他团购活动"); } this.save(goodsGroupPurchase); @@ -120,10 +121,14 @@ throw new ServiceException("商品不存在"); } int groupPurchaseStock = dto.getLimitNumber() * dto.getGroupSize(); - goodsSkuService.lambdaUpdate() - .set(GoodsSku::getStock, goodsSku.getStock() - groupPurchaseStock) - .ge(GoodsSku::getStock, groupPurchaseStock) - .eq(GoodsSku::getId, goodsSku.getId()); + if (goodsSku.getStock() < groupPurchaseStock) { + throw new ServiceException(String.format("团购商品【%s】剩余库存不足,请修改团购库存", + goodsSku.getSkuName())); + } + GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); + goodsStockUpdDTO.setAuctionStock(groupPurchaseStock * -1); + goodsStockUpdDTO.setGoodsSkuId(goodsSku.getId()); + goodsSkuService.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO)); } else { GoodsGroupPurchase groupPurchase = this.getById(dto.getId()); if (StringUtils.isNull(groupPurchase)) { @@ -142,12 +147,17 @@ } int groupPurchaseStock = dto.getLimitNumber() * dto.getGroupSize(); int latestStock = originGroupStock - groupPurchaseStock; - goodsSkuService.lambdaUpdate() - .set(GoodsSku::getStock, - goodsSku.getStock() + latestStock) - .ge(GoodsSku::getStock, latestStock) - .eq(GoodsSku::getId, goodsSku.getId()); + if (goodsSku.getStock() < latestStock) { + throw new ServiceException(String.format("团购商品%s剩余库存不足,请修改团购库存", + goodsSku.getSkuName())); + } + GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); + goodsStockUpdDTO.setAuctionStock(latestStock); + goodsStockUpdDTO.setGoodsSkuId(goodsSku.getId()); + goodsSkuService.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO)); this.updateById(goodsGroupPurchase); + } + if (goodsGroupPurchase.getListingStatus().equals(ListingStatusEnum.ON_SHELVES)) { asyncMethodService.groupPurchaseScheduleTask(Lists.newArrayList(goodsGroupPurchase)); } } @@ -197,7 +207,14 @@ } //修改状态 groupPurchase.setListingStatus(dto.getListingStatus()); + groupPurchase.setStartStatus(StartStatusEnum.ENDED); + if (!groupPurchase.getGroupStatus().equals(GroupStatusEnum.FORMED_INTO_A_GROUP)) { + groupPurchase.setGroupStatus(GroupStatusEnum.GROUP_FAILURE); + } this.updateById(groupPurchase); + if (dto.getListingStatus().equals(ListingStatusEnum.ON_SHELVES)) { + asyncMethodService.groupPurchaseScheduleTask(Lists.newArrayList(groupPurchase)); + } } /** @@ -268,42 +285,43 @@ //查询关联订单 List<Order> orderList = orderClient.getOrderByGroupPurchaseId(id, SecurityConstants.INNER).getData(); + if (CollUtils.isNotEmpty(orderList)) { - List<RefundDTO> refundDTOList = orderList.stream().map(order -> { - RefundDTO refundDTO = new RefundDTO(); - refundDTO.setOrderNo(order.getOrderNo()); - refundDTO.setAmount(order.getTotalAmount()); - return refundDTO; - }).collect(Collectors.toList()); - Map<String, Object> data = orderClient.refund(refundDTOList, - SecurityConstants.INNER).getData(); - if (StringUtils.isNotEmpty(data)) { - // 处理退款返回结果 - List<String> successfulOrders = new ArrayList<>(); - List<String> failedOrders = new ArrayList<>(); + List<RefundDTO> refundDTOList = orderList.stream().map(order -> { + RefundDTO refundDTO = new RefundDTO(); + refundDTO.setOrderNo(order.getOrderNo()); + refundDTO.setAmount(order.getTotalAmount()); + return refundDTO; + }).collect(Collectors.toList()); + Map<String, Object> data = orderClient.refund(refundDTOList, + SecurityConstants.INNER).getData(); + if (StringUtils.isNotEmpty(data)) { + // 处理退款返回结果 + List<String> successfulOrders = new ArrayList<>(); + List<String> failedOrders = new ArrayList<>(); - data.forEach((key, value) -> { - if ((boolean) value) { - successfulOrders.add(key); - } else { - failedOrders.add(key); - } - }); - // 处理退款结果 - List<Order> updateOrderList = orderList.stream() - .filter(order -> successfulOrders.contains(order.getOrderNo())) - .peek(order -> { - order.setOrderStatus(OrderStatusEnum.CANCELED); - }).collect(Collectors.toList()); - List<OrderUpdDTO> orderUpdDTOS = BeanUtils.copyList(updateOrderList, - OrderUpdDTO.class); - orderClient.updateOrderList(orderUpdDTOS, SecurityConstants.INNER); + data.forEach((key, value) -> { + if ((boolean) value) { + successfulOrders.add(key); + } else { + failedOrders.add(key); + } + }); + // 处理退款结果 + List<Order> updateOrderList = orderList.stream() + .filter(order -> successfulOrders.contains(order.getOrderNo())) + .peek(order -> { + order.setOrderStatus(OrderStatusEnum.CANCELED); + }).collect(Collectors.toList()); + List<OrderUpdDTO> orderUpdDTOS = BeanUtils.copyList(updateOrderList, + OrderUpdDTO.class); + orderClient.updateOrderList(orderUpdDTOS, SecurityConstants.INNER); + } } - } else { - this.lambdaUpdate() - .set(GoodsGroupPurchase::getStartStatus, StartStatusEnum.ENDED) - .eq(GoodsGroupPurchase::getId, id).update(); + groupPurchase.setGroupStatus(GroupStatusEnum.GROUP_FAILURE); } + groupPurchase.setStartStatus(StartStatusEnum.ENDED); + this.updateById(groupPurchase); } @Override -- Gitblit v1.7.1