From 0af4429cca70d12e8e84cb2773b76ed1a72128c4 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期一, 10 二月 2025 14:53:59 +0800
Subject: [PATCH] 管理后台:会员管理-增加会员分类
---
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java | 125 +++++++++++++++++++++++++++++++++++++++--
1 files changed, 118 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..e4bd230 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,38 @@
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.setSkuName(recommend.getGoodsName());
+ order.setPrice(recommend.getSellingPrice());
+ order.setCoverPic(recommend.getGoodsImageUrl());
+ order.setSjPrice(recommend.getSellingPrice());
+ order.setGoodsId(recommend.getId());
+ }
order.setOrderRemark(memberOrderDTO.getOrderRemark());
order.setMemberId(memberOrderDTO.getMemberId());
order.setGoodsQuantity(memberOrderDTO.getGoodsQuantity());
@@ -574,8 +612,6 @@
memberOrderVO.setCoverPic(goodsSku.getCoverPic());
memberOrderVO.setSkuName(goodsSku.getSkuName());
}
-
-
if (order.getOrderFrom().getCode()==2){
MemberOrderDTO memberOrderDTO1=new MemberOrderDTO();
memberOrderDTO1.setMemberId(order.getMemberId());
@@ -629,8 +665,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 +696,40 @@
}
}
}
+ }
+ if (order.getOrderFrom() == OrderFromEnum.WISH_ORDER) {
+ // 远程调用营销服务,获取推荐商品信息
+ PromotionWishRecommend recommend = promotionClient.getPromotionWishRecommend(
+ order.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(order.getGoodsSkuId());
+ memberOrderVO.setPrice(recommend.getSellingPrice());
+ memberOrderVO.setCoverPic(recommend.getGoodsImageUrl());
+ memberOrderVO.setSkuName(recommend.getGoodsName());
}
}
if (memberOrderDTO.getGoodsQuantity()!=null){
@@ -824,7 +894,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 +938,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 +1216,11 @@
}
}
+ // 恢复可购数量
+ if (order.getOrderFrom().equals(OrderFromEnum.WISH_ORDER)) {
+ promotionClient.addRecommendAvailableNum(
+ order.getGoodsQuantity(), order.getGoodsSkuId(), SecurityConstants.INNER);
+ }
}
if (order.getOrderStatus().getCode() == 2) {
@@ -1181,7 +1264,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());
@@ -1778,6 +1865,7 @@
LogisticsDTO logisticsDTO = new LogisticsDTO();
logisticsDTO.setCompany(order.getLogisticsNum());
logisticsDTO.setPostid(order.getCourierNumber());
+ logisticsDTO.setReceiverPhone(order.getReceiverPhone());
Express100VO logisticsList = logisticsService.getLogisticsList(logisticsDTO);
if (StringUtils.isNotNull(logisticsList)) {
mgtOrderVO.setExpress100VO(logisticsList);
@@ -2042,4 +2130,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