From a53a1f481278f981bab8030853b353a823a9cd81 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期五, 01 十一月 2024 18:41:57 +0800 Subject: [PATCH] 09.25心愿求购新增 --- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java | 119 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 112 insertions(+), 7 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 042c48e..a6c20d4 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 @@ -56,6 +56,7 @@ 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.PromotionWishRecommend; import com.ruoyi.system.api.domain.dto.CouponMemberDTO; import com.ruoyi.system.api.domain.dto.GoodsStockUpdDTO; import com.ruoyi.system.api.domain.dto.HomeGoodsSkuDTO; @@ -71,6 +72,7 @@ import com.ruoyi.system.api.domain.vo.MemberOrderListVO; import com.ruoyi.system.api.domain.vo.MemberOrderNumVO; import com.ruoyi.system.api.domain.vo.MemberTiOrderVO; +import com.ruoyi.system.api.domain.vo.MgtPromotionWishRecommendVO; import com.ruoyi.system.api.domain.vo.OrderVO; import com.ruoyi.system.api.feignClient.AuctionClient; import com.ruoyi.system.api.feignClient.GoodsSkuClient; @@ -317,6 +319,10 @@ order.setOrderNo(OrderUtil.getOrderNoForPrefix("TG")); order.setIsOrder(2); } + if (memberOrderDTO.getOrderFrom() == OrderFromEnum.WISH_ORDER.getCode()) { + order.setOrderFrom(OrderFromEnum.WISH_ORDER); + order.setOrderNo(OrderUtil.getOrderNoForPrefix("QG")); + } if (memberOrderDTO.getPaymentMethod()==1){ order.setPaymentMethod(PaymentMethodEnum.WECHAT); }if (memberOrderDTO.getPaymentMethod()==2){ @@ -461,6 +467,33 @@ order.setSjPrice(goodsSku.getPrice()); order.setGoodsId(goodsSku.getId()); } + if (memberOrderDTO.getOrderFrom() == OrderFromEnum.WISH_ORDER.getCode()) { + // 远程调用营销服务,获取推荐商品信息 + PromotionWishRecommend recommend = promotionClient.getPromotionWishRecommend( + memberOrderDTO.getGoodsSkuId(), + SecurityConstants.INNER).getData(); + if (Objects.isNull(recommend)) { + throw new ServiceException("推荐商品不存在"); + } + if (recommend.getExpireTime().isBefore(LocalDateTime.now())) { + throw new ServiceException("推荐商品已过期"); + } + if (recommend.getAvailableNum().compareTo(memberOrderDTO.getGoodsQuantity()) < 0) { + throw new ServiceException("推荐商品可购数量不足"); + } + // 远程调用,更新可购数量 + Integer res = promotionClient.subRecommendAvailableNum( + memberOrderDTO.getGoodsQuantity(), + recommend.getId(), SecurityConstants.INNER).getData(); + if (res == 0) { + throw new ServiceException("推荐商品可购数量不足"); + } + memberOrderVO.setGoodsSkuId(memberOrderDTO.getGoodsSkuId()); + memberOrderVO.setPrice(recommend.getSellingPrice()); + memberOrderVO.setCoverPic(recommend.getGoodsImageUrl()); + memberOrderVO.setSkuName(recommend.getGoodsName()); + pice = recommend.getSellingPrice(); + } order.setOrderRemark(memberOrderDTO.getOrderRemark()); order.setMemberId(memberOrderDTO.getMemberId()); order.setGoodsQuantity(memberOrderDTO.getGoodsQuantity()); @@ -574,8 +607,6 @@ memberOrderVO.setCoverPic(goodsSku.getCoverPic()); memberOrderVO.setSkuName(goodsSku.getSkuName()); } - - if (order.getOrderFrom().getCode()==2){ MemberOrderDTO memberOrderDTO1=new MemberOrderDTO(); memberOrderDTO1.setMemberId(order.getMemberId()); @@ -629,8 +660,8 @@ memberOrderVO.setYouhiPrice(data.getSeckillPrice()); - - } if (order.getOrderFrom().getCode()==3){ + } + if (order.getOrderFrom().getCode() == 3) { order.setOrderFrom(OrderFromEnum.GROUP_PURCHASE_ORDERS); GoodsGroupPurchase data = goodsSkuClient.getGoodsSeckiGoodsGroupPurchaseOne(order.getGoodsSkuId(), SecurityConstants.INNER).getData(); GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(data.getGoodsSkuId(), SecurityConstants.INNER).getData(); @@ -660,6 +691,40 @@ } } } + } + if (memberOrderDTO.getOrderFrom() == OrderFromEnum.WISH_ORDER.getCode()) { + // 远程调用营销服务,获取推荐商品信息 + PromotionWishRecommend recommend = promotionClient.getPromotionWishRecommend( + memberOrderDTO.getGoodsSkuId(), + SecurityConstants.INNER).getData(); + if (Objects.isNull(recommend)) { + throw new ServiceException("推荐商品不存在"); + } + Integer availableNum = recommend.getAvailableNum() + order.getGoodsQuantity(); + if (availableNum.compareTo(memberOrderDTO.getGoodsQuantity()) < 0) { + throw new ServiceException("推荐商品可购数量不足"); + } + // 如果最新购买数比锁定库存数大,则扣减多出来的商品数量,否则恢复多出的锁定库存 + if (memberOrderDTO.getGoodsQuantity().compareTo(order.getGoodsQuantity()) > 0) { + // 远程调用,更新可购数量 + Integer res = promotionClient.subRecommendAvailableNum( + memberOrderDTO.getGoodsQuantity() - order.getGoodsQuantity(), + recommend.getId(), SecurityConstants.INNER).getData(); + if (res == 0) { + throw new ServiceException("推荐商品可购数量不足"); + } + } else { + promotionClient.addRecommendAvailableNum( + order.getGoodsQuantity() - memberOrderDTO.getGoodsQuantity(), + recommend.getId(), SecurityConstants.INNER); + } + order.setTotalAmount(recommend.getSellingPrice() + .multiply(new BigDecimal(memberOrderDTO.getGoodsQuantity()))); + order.setGoodsQuantity(memberOrderDTO.getGoodsQuantity()); + memberOrderVO.setGoodsSkuId(memberOrderDTO.getGoodsSkuId()); + memberOrderVO.setPrice(recommend.getSellingPrice()); + memberOrderVO.setCoverPic(recommend.getGoodsImageUrl()); + memberOrderVO.setSkuName(recommend.getGoodsName()); } } if (memberOrderDTO.getGoodsQuantity()!=null){ @@ -824,7 +889,10 @@ 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){ + if (MemberOrderList.getOrderFrom().getCode() == 1 + || MemberOrderList.getOrderFrom().getCode() == 2 + || MemberOrderList.getOrderFrom().getCode() == 3 + || MemberOrderList.getOrderFrom().equals(OrderFromEnum.WISH_ORDER)) { LocalDateTime localDateTime = MemberOrderList.getOrderTime().plusMinutes(30); if (LocalDateTime.now().isAfter(localDateTime)) { // dateTime1 在 dateTime2 之后 @@ -865,7 +933,12 @@ } goodsSkuClient.updGoodsSeckill(goodsStockUpdDTO1,SecurityConstants.INNER); } - + // 恢复推荐商品可购数量 + if (MemberOrderList.getOrderFrom().equals(OrderFromEnum.WISH_ORDER)) { + promotionClient.addRecommendAvailableNum( + MemberOrderList.getGoodsQuantity(), + MemberOrderList.getGoodsSkuId(), SecurityConstants.INNER); + } this.updateById(order); } @@ -1138,6 +1211,11 @@ } } + // 恢复可购数量 + if (order.getOrderFrom().equals(OrderFromEnum.WISH_ORDER)) { + promotionClient.addRecommendAvailableNum( + order.getGoodsQuantity(), order.getGoodsSkuId(), SecurityConstants.INNER); + } } if (order.getOrderStatus().getCode() == 2) { @@ -1181,7 +1259,11 @@ } } - + // 恢复可购数量 + if (order.getOrderFrom().equals(OrderFromEnum.WISH_ORDER)) { + promotionClient.addRecommendAvailableNum( + order.getGoodsQuantity(), order.getGoodsSkuId(), SecurityConstants.INNER); + } if (order.getCouponId()!=0){ CouponMemberDTO couponMemberDTO1=new CouponMemberDTO(); couponMemberDTO1.setId(order.getCouponId()); @@ -2042,4 +2124,27 @@ List<Order> page1 = this.list(wrapper); return page1; } + + /** + * 根据skuId获取心愿求购详情数据 + * + * @param id + * @return + */ + @Override + public MgtPromotionWishRecommendVO getWishDataBySkuId(Long id) { + MgtPromotionWishRecommendVO vo = null; + List<Order> list = this.lambdaQuery().eq(Order::getGoodsSkuId, id) + .eq(Order::getOrderFrom, OrderFromEnum.WISH_ORDER) + .ne(Order::getOrderStatus, OrderStatusEnum.CANCELED).list(); + if (CollUtils.isNotEmpty(list)) { + vo = new MgtPromotionWishRecommendVO(); + Integer purchasedNum = list.stream().map(Order::getGoodsQuantity) + .reduce(0, Integer::sum); + String orderNo = list.stream().map(Order::getOrderNo).collect(Collectors.joining(",")); + vo.setPurchasedNum(purchasedNum); + vo.setOrderNo(orderNo); + } + return vo; + } } -- Gitblit v1.7.1