From f44e4d609e7efaed9eac545137970b1e334f8106 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期六, 21 九月 2024 09:01:36 +0800 Subject: [PATCH] 修改bug --- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java | 226 +++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 190 insertions(+), 36 deletions(-) diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java index f760ddc..042c48e 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.collect.Lists; +import com.google.common.collect.Sets; import com.ruoyi.common.core.constant.CacheConstants; import com.ruoyi.common.core.constant.SecurityConstants; import com.ruoyi.common.core.enums.AuctionOrderTypeEnum; @@ -19,6 +20,7 @@ import com.ruoyi.common.core.enums.PointStatusEnum; import com.ruoyi.common.core.enums.RequestTypeEnum; import com.ruoyi.common.core.enums.ReturnRequestStatusEnum; +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; @@ -93,7 +95,9 @@ import java.util.stream.Collectors; import javax.annotation.Resource; import lombok.Synchronized; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.map.HashedMap; +import org.jetbrains.annotations.NotNull; import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import org.springframework.stereotype.Service; @@ -107,6 +111,7 @@ * @author mitao * @since 2024-05-16 */ +@Slf4j @Service @SuppressWarnings("unchecked") public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements IOrderService { @@ -195,6 +200,7 @@ order.setPrice(OrderDTO.getPrice()); order.setCoverPic(OrderDTO.getCoverPic()); order.setOrderTimeSx(OrderDTO.getOrderTimeSx()); + order.setGoodsId(OrderDTO.getGoodsId()); this.save(order); @@ -293,7 +299,6 @@ @Override @Synchronized public MemberTiOrderVO saveMemberOrder(MemberOrderDTO memberOrderDTO) { - MemberTiOrderVO memberOrderVO=new MemberTiOrderVO(); BigDecimal pice=new BigDecimal(0); @@ -335,6 +340,7 @@ order.setSkuName(goodsSku.getSkuName()); order.setPrice(goodsSku.getPrice()); order.setCoverPic(goodsSku.getCoverPic()); + order.setGoodsId(goodsSku.getId()); } memberOrderVO.setGoodsSkuId(memberOrderDTO.getGoodsSkuId()); memberOrderVO.setPrice(goodsSku.getPrice()); @@ -405,6 +411,7 @@ order.setPrice(data.getSeckillPrice()); order.setCoverPic(goodsSku.getCoverPic()); order.setSjPrice(goodsSku.getPrice()); + order.setGoodsId(goodsSku.getId()); redisService.setCacheObject(CacheConstants.SECKILL_GOODS + data.getId(), surpNum - memberOrderDTO.getGoodsQuantity()); } if (memberOrderDTO.getOrderFrom()==3){ @@ -452,6 +459,7 @@ order.setPrice(data.getGroupPurchasePrice()); order.setCoverPic(goodsSku.getCoverPic()); order.setSjPrice(goodsSku.getPrice()); + order.setGoodsId(goodsSku.getId()); } order.setOrderRemark(memberOrderDTO.getOrderRemark()); order.setMemberId(memberOrderDTO.getMemberId()); @@ -482,6 +490,16 @@ memberOrderVO.setReceiverCity(data.getReceiverCity()); memberOrderVO.setReceiverDetailAddress(data.getDetailedAddress()); memberOrderVO.setReceiverphone(data.getRecipientPhone()); + } else { + order.setReceiverName(memberOrderDTO.getReceiverName()); + order.setReceiverCity(memberOrderDTO.getReceiverCity()); + order.setReceiverDetailAddress(memberOrderDTO.getReceiverDetailAddress()); + order.setReceiverPhone(memberOrderDTO.getReceiverphone()); + + memberOrderVO.setReceiverName(memberOrderDTO.getReceiverName()); + memberOrderVO.setReceiverCity(memberOrderDTO.getReceiverCity()); + memberOrderVO.setReceiverDetailAddress(memberOrderDTO.getReceiverDetailAddress()); + memberOrderVO.setReceiverphone(memberOrderDTO.getReceiverphone()); } order.setGoodsSkuId(memberOrderDTO.getGoodsSkuId()); @@ -803,6 +821,7 @@ PageDTO<MemberOrderListVO> memberOrderListVOPageDTO = PageDTO.of(page1, MemberOrderListVO.class); List<MemberOrderListVO> list = memberOrderListVOPageDTO.getList(); + Map<Long, GoodsSku> goodsUnitMap = getGoodsUnitMap(list); for (MemberOrderListVO MemberOrderList:list){ if (MemberOrderList.getOrderStatus().getCode()==1){ if (MemberOrderList.getOrderFrom().getCode()==1||MemberOrderList.getOrderFrom().getCode()==2||MemberOrderList.getOrderFrom().getCode()==3){ @@ -858,7 +877,8 @@ Wrappers.lambdaQuery(OrderReturnRequest.class) .eq(OrderReturnRequest::getOrderId, MemberOrderList.getId()).last("limit 1")); - if (StringUtils.isNotNull(orderReturnRequest)&&orderReturnRequest!=null) { + if (StringUtils.isNotNull(orderReturnRequest) + && orderReturnRequest.getStatus() != ReturnRequestStatusEnum.QX) { MemberOrderList.setStatus(orderReturnRequest.getStatus()); MemberOrderList.setRequestId(orderReturnRequest.getId()); MemberOrderList.setIsRequest(2); @@ -882,46 +902,122 @@ MemberOrderList.setOrderShuoMin(memberPointsPoints.getConfigValue()); CustomConfig ReturnCycle = sysUserClient.getconfig("RETURN_CYCLE").getData(); MemberOrderList.setOrderZq(Integer.valueOf(ReturnCycle.getConfigValue())); + + GoodsSku goodsSku = + Objects.nonNull(goodsUnitMap.get(MemberOrderList.getGoodsId())) + ? goodsUnitMap.get(MemberOrderList.getGoodsId()) + : goodsUnitMap.get(MemberOrderList.getGoodsSkuId()); + if (Objects.nonNull(goodsSku)) { + MemberOrderList.setUnit(goodsSku.getUnit()); + MemberOrderList.setSpec(goodsSku.getSpec()); + MemberOrderList.setSpecUnit(goodsSku.getSpecUnit()); + } } return memberOrderListVOPageDTO; } + @NotNull + private Map<Long, GoodsSku> getGoodsUnitMap(List<MemberOrderListVO> list) { + Map<Long, GoodsSku> goodsSkuMap = new HashedMap(); + Set<Long> goodsSkuIdSet = list.stream() + .filter(vo -> vo.getOrderFrom().equals(OrderFromEnum.COMMODITY_ORDER)) + .map(MemberOrderListVO::getGoodsSkuId) + .collect(Collectors.toSet()); + if (CollUtils.isNotEmpty(goodsSkuIdSet)) { + goodsSkuMap = goodsSkuClient.getGoodsListByIds(goodsSkuIdSet, + SecurityConstants.INNER).getData().stream() + .collect(Collectors.toMap(GoodsSku::getId, Function.identity())); + } + Set<Long> seckillIdSet = list.stream() + .filter(vo -> vo.getOrderFrom().equals(OrderFromEnum.SNAP_ORDERS)) + .map(MemberOrderListVO::getGoodsSkuId) + .collect(Collectors.toSet()); + + if (CollUtils.isNotEmpty(seckillIdSet)) { + Map<Long, GoodsSku> goodsSkuMap2 = goodsSkuClient.getGoodsSkuBySeckillIdSet( + seckillIdSet, + SecurityConstants.INNER).getData().stream() + .collect(Collectors.toMap(GoodsSku::getId, Function.identity())); + // 将goodsSkuMap2合并到goodsSkuMap中 + goodsSkuMap.putAll(goodsSkuMap2); + } + Set<Long> groupPurchaseIdSet = list.stream() + .filter(vo -> vo.getOrderFrom().equals(OrderFromEnum.GROUP_PURCHASE_ORDERS)) + .map(MemberOrderListVO::getGoodsSkuId) + .collect(Collectors.toSet()); + if (CollUtils.isNotEmpty(groupPurchaseIdSet)) { + Map<Long, GoodsSku> goodsSkuMap3 = goodsSkuClient.getGoodsSkuByGroupPurchaseIdSet( + groupPurchaseIdSet, + SecurityConstants.INNER).getData().stream() + .collect(Collectors.toMap(GoodsSku::getId, Function.identity())); + goodsSkuMap.putAll(goodsSkuMap3); + } + Set<Long> auctionGoodsIdSet = list.stream() + .filter(vo -> vo.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS) + && vo.getAuctionOrderType().equals(AuctionOrderTypeEnum.REGULAR_ITEMS)) + .map(MemberOrderListVO::getGoodsSkuId) + .collect(Collectors.toSet()); + if (CollUtils.isNotEmpty(auctionGoodsIdSet)) { + Map<Long, GoodsSku> goodsSkuMap4 = auctionClient.getGoodsSkuByAuctionGoodsIdSet( + auctionGoodsIdSet, + SecurityConstants.INNER).getData().stream() + .collect(Collectors.toMap(GoodsSku::getId, Function.identity())); + goodsSkuMap.putAll(goodsSkuMap4); + } + Set<Long> auctionSalesroomGoodsSet = list.stream() + .filter(vo -> vo.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS) + && vo.getAuctionOrderType().equals(AuctionOrderTypeEnum.AUCTION_ITEMS)) + .map(MemberOrderListVO::getGoodsSkuId) + .collect(Collectors.toSet()); + if (CollUtils.isNotEmpty(auctionSalesroomGoodsSet)) { + Map<Long, GoodsSku> goodsSkuMap5 = auctionClient.getGoodsSkuByAuctionSalesroomGoodsSet( + auctionSalesroomGoodsSet, + SecurityConstants.INNER).getData().stream() + .collect(Collectors.toMap(GoodsSku::getId, Function.identity())); + goodsSkuMap.putAll(goodsSkuMap5); + } + return goodsSkuMap; + } + @Override public OrderVO MemberOrderOne(MemberOrderListDTO memberOrderListDTO) { Order order = baseMapper.selectById(memberOrderListDTO.getId()); OrderVO orderVO=new OrderVO(); - try { - orderVO = BeanUtils.copyBean(order, OrderVO.class); - orderVO.setAuctionType(order.getAuctionOrderType()); - orderVO.setCouponId(order.getCouponId()); - orderVO.setBound(order.getBound()); - orderVO.setIsRequest(order.getIsRequest()); - if (orderVO.getOrderFrom().getCode()==3){ - GoodsGroupPurchase data = GoodsSkuClient.getGoodsSeckiGoodsGroupPurchaseOne(order.getGoodsSkuId(), SecurityConstants.INNER).getData(); - orderVO.setGroupTime(data.getGroupTime()); - orderVO.setSkuId(data.getGoodsSkuId()); - } + orderVO = BeanUtils.copyBean(order, OrderVO.class); + orderVO.setAuctionType(order.getAuctionOrderType()); + orderVO.setCouponId(order.getCouponId()); + orderVO.setBound(order.getBound()); + orderVO.setIsRequest(order.getIsRequest()); + if (orderVO.getOrderFrom().getCode() == 3) { + GoodsGroupPurchase data = GoodsSkuClient.getGoodsSeckiGoodsGroupPurchaseOne( + order.getGoodsSkuId(), SecurityConstants.INNER).getData(); + orderVO.setGroupTime(data.getGroupTime()); + orderVO.setSkuId(data.getGoodsSkuId()); + } - LambdaQueryWrapper<OrderAuctionBond> wrapper3= Wrappers.lambdaQuery(); - wrapper3.eq(OrderAuctionBond::getOrderId,order.getId()); - OrderAuctionBond orderAuctionBond = orderAuctionBondMapper.selectOne(wrapper3); - if (orderAuctionBond!=null){ - if (orderAuctionBond.getBoundStatus().getCode()==1||orderAuctionBond.getBoundStatus().getCode()==2){ - orderVO.setIsAuctionBond(1); - }else{ - orderVO.setIsAuctionBond(2); - } - }else { + LambdaQueryWrapper<OrderAuctionBond> wrapper3 = Wrappers.lambdaQuery(); + wrapper3.eq(OrderAuctionBond::getOrderId, order.getId()); + OrderAuctionBond orderAuctionBond = orderAuctionBondMapper.selectOne(wrapper3); + if (orderAuctionBond != null) { + if (orderAuctionBond.getBoundStatus().getCode() == 1 + || orderAuctionBond.getBoundStatus().getCode() == 2) { orderVO.setIsAuctionBond(1); + } else { + orderVO.setIsAuctionBond(2); } - - } catch (Exception e) { - throw new RuntimeException(e); + } else { + orderVO.setIsAuctionBond(1); } if (order.getTotalAmount()==null){ order.setTotalAmount(new BigDecimal(0)); + } + GoodsSku goodsSku = getGoodsSku(orderVO); + if (Objects.nonNull(goodsSku)) { + orderVO.setUnit(goodsSku.getUnit()); + orderVO.setSpec(goodsSku.getSpec()); + orderVO.setSpecUnit(goodsSku.getSpecUnit()); } CustomConfig memberPointsPoints = sysUserClient.getconfig("MALL_ORDER_DESCRIPTION").getData(); orderVO.setOrderShuoMin(memberPointsPoints.getConfigValue()); @@ -935,6 +1031,51 @@ orderVO.setStatus(orderReturnRequest.getStatus()); } return orderVO; + } + + private GoodsSku getGoodsSku(OrderVO orderVO) { + GoodsSku goodsSku = null; + switch (orderVO.getOrderFrom()) { + case COMMODITY_ORDER: + goodsSku = goodsSkuClient.getGoodsSkuOne(orderVO.getGoodsSkuId(), + SecurityConstants.INNER).getData(); + break; + case SNAP_ORDERS: + List<GoodsSku> skuList = goodsSkuClient.getGoodsSkuBySeckillIdSet( + Sets.newHashSet(orderVO.getGoodsSkuId()), + SecurityConstants.INNER).getData(); + if (CollUtils.isNotEmpty(skuList)) { + goodsSku = skuList.get(0); + } + break; + case GROUP_PURCHASE_ORDERS: + List<GoodsSku> data = goodsSkuClient.getGoodsSkuByGroupPurchaseIdSet( + Sets.newHashSet(orderVO.getGoodsSkuId()), + SecurityConstants.INNER).getData(); + if (CollUtils.isNotEmpty(data)) { + goodsSku = data.get(0); + } + break; + case AUCTION_ORDERS: + List<GoodsSku> goodsSkuList; + if (orderVO.getAuctionType().equals(AuctionOrderTypeEnum.REGULAR_ITEMS)) { + goodsSkuList = auctionClient.getGoodsSkuByAuctionGoodsIdSet( + Sets.newHashSet(orderVO.getGoodsSkuId()), + SecurityConstants.INNER).getData(); + if (CollUtils.isNotEmpty(goodsSkuList)) { + goodsSku = goodsSkuList.get(0); + } + } else { + goodsSkuList = auctionClient.getGoodsSkuByAuctionSalesroomGoodsSet( + Sets.newHashSet(orderVO.getGoodsSkuId()), + SecurityConstants.INNER).getData(); + } + if (CollUtils.isNotEmpty(goodsSkuList)) { + goodsSku = goodsSkuList.get(0); + } + break; + } + return goodsSku; } @Override @@ -977,6 +1118,12 @@ goodsStockUpdDTO1.setSoldQuantity(data.getSoldQuantity()-order.getGoodsQuantity()); } goodsSkuClient.updGoodsSeckill(goodsStockUpdDTO1,SecurityConstants.INNER); + if (data.getStartStatus().equals(StartStatusEnum.ENDED)) { + GoodsStockUpdDTO dto = new GoodsStockUpdDTO(); + dto.setGoodsSkuId(data.getGoodsSkuId()); + dto.setAuctionStock(order.getGoodsQuantity()); + goodsSkuClient.updGoodsStock(Lists.newArrayList(dto), SecurityConstants.INNER); + } } @@ -1103,7 +1250,7 @@ Order byId = this.getById(memberOrderListDTO.getId()); - if(byId.getOrderNo().contains("TG")){ + if (byId.getOrderNo().contains("TG") && StringUtils.isNotBlank(byId.getGroupNo())) { GoodsGroupPurchaseInfo goodsSeckiGoodsGroupPurchaseInfo = GoodsSkuClient.getGoodsSeckiGoodsGroupPurchaseInfo2(byId.getGroupNo(), SecurityConstants.INNER).getData(); if (goodsSeckiGoodsGroupPurchaseInfo!=null){ goodsSeckiGoodsGroupPurchaseInfo.setPurchaseNum(byId.getGoodsQuantity()); @@ -1260,16 +1407,21 @@ if(order.getOrderNo().contains("SP")){ GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(order.getGoodsSkuId(), SecurityConstants.INNER).getData(); - GoodsStockUpdDTO goodsStockUpdDTO1 = new GoodsStockUpdDTO(); - goodsStockUpdDTO1.setGoodsSkuId(order.getGoodsSkuId()); - goodsStockUpdDTO1.setAuctionStock(goodsSku.getStock()+order.getGoodsQuantity()); - if (goodsSku.getSoldQuantity()-order.getGoodsQuantity()<0){ - goodsStockUpdDTO1.setSoldQuantity(0); - }else { - goodsStockUpdDTO1.setSoldQuantity(goodsSku.getSoldQuantity()-order.getGoodsQuantity()); - } + if (Objects.nonNull(goodsSku)) { + GoodsStockUpdDTO goodsStockUpdDTO1 = new GoodsStockUpdDTO(); + goodsStockUpdDTO1.setGoodsSkuId(order.getGoodsSkuId()); + goodsStockUpdDTO1.setAuctionStock( + goodsSku.getStock() + order.getGoodsQuantity()); + if (goodsSku.getSoldQuantity() - order.getGoodsQuantity() < 0) { + goodsStockUpdDTO1.setSoldQuantity(0); + } else { + goodsStockUpdDTO1.setSoldQuantity( + goodsSku.getSoldQuantity() - order.getGoodsQuantity()); + } - goodsSkuClient.updGoodsStock1(goodsStockUpdDTO1,SecurityConstants.INNER); + goodsSkuClient.updGoodsStock1(goodsStockUpdDTO1, + SecurityConstants.INNER); + } } if(order.getOrderNo().contains("MS")){ @@ -1871,9 +2023,11 @@ @Override public void updateOrderStatusByMubres1(String formedGroupMubres) { + LambdaQueryWrapper<Order> wrapper = Wrappers.lambdaQuery(); wrapper.eq(Order::getGroupNo, formedGroupMubres); List<Order> page1 = this.list(wrapper); + log.info("开始更新订单,已成团的团购订单:{}", page1); for (Order p:page1){ p.setIsOrder(1); this.updateById(p); -- Gitblit v1.7.1