| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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){ |
| | |
| | | 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()); |
| | |
| | | memberOrderVO.setCoverPic(goodsSku.getCoverPic()); |
| | | memberOrderVO.setSkuName(goodsSku.getSkuName()); |
| | | } |
| | | |
| | | |
| | | if (order.getOrderFrom().getCode()==2){ |
| | | MemberOrderDTO memberOrderDTO1=new MemberOrderDTO(); |
| | | memberOrderDTO1.setMemberId(order.getMemberId()); |
| | |
| | | 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(); |
| | |
| | | } |
| | | } |
| | | } |
| | | } |
| | | 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){ |
| | |
| | | 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 之后 |
| | |
| | | } |
| | | goodsSkuClient.updGoodsSeckill(goodsStockUpdDTO1,SecurityConstants.INNER); |
| | | } |
| | | |
| | | // 恢复推荐商品可购数量 |
| | | if (MemberOrderList.getOrderFrom().equals(OrderFromEnum.WISH_ORDER)) { |
| | | promotionClient.addRecommendAvailableNum( |
| | | MemberOrderList.getGoodsQuantity(), |
| | | MemberOrderList.getGoodsSkuId(), SecurityConstants.INNER); |
| | | } |
| | | |
| | | this.updateById(order); |
| | | } |
| | |
| | | |
| | | } |
| | | } |
| | | // 恢复可购数量 |
| | | if (order.getOrderFrom().equals(OrderFromEnum.WISH_ORDER)) { |
| | | promotionClient.addRecommendAvailableNum( |
| | | order.getGoodsQuantity(), order.getGoodsSkuId(), SecurityConstants.INNER); |
| | | } |
| | | |
| | | } |
| | | if (order.getOrderStatus().getCode() == 2) { |
| | |
| | | |
| | | } |
| | | } |
| | | |
| | | // 恢复可购数量 |
| | | 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()); |
| | |
| | | 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; |
| | | } |
| | | } |