3 Ревизии 13188701bb ... dd301fd119

Автор SHA1 Съобщение Дата
  lubo dd301fd119 dd преди 1 месец
  lubo 64c91334e8 Merge branch 'master' of http://115.29.66.169:10080/new-base-shop/api преди 1 месец
  lubo fc786080cf dd преди 1 месец
променени са 13 файла, в които са добавени 240 реда и са изтрити 28 реда
  1. 4 0
      ruoyi-shop/src/main/java/com/ruoyi/shop/order/domain/bo/ShopOrderDetailBo.java
  2. 12 0
      ruoyi-shop/src/main/java/com/ruoyi/shop/order/domain/bo/createorder/CreateOrderBo.java
  3. 7 0
      ruoyi-shop/src/main/java/com/ruoyi/shop/order/domain/bo/createorder/CreateOrderDetailBo.java
  4. 16 0
      ruoyi-shop/src/main/java/com/ruoyi/shop/order/service/createorder/CouponFilterFunction.java
  5. 22 0
      ruoyi-shop/src/main/java/com/ruoyi/shop/order/service/createorder/ICreateActivityOrderService.java
  6. 4 0
      ruoyi-shop/src/main/java/com/ruoyi/shop/order/service/createorder/ICreateOrderService.java
  7. 11 9
      ruoyi-shop/src/main/java/com/ruoyi/shop/order/service/createorder/impl/AbstractCreateOrderService.java
  8. 11 3
      ruoyi-shop/src/main/java/com/ruoyi/shop/order/service/createorder/impl/CreateCommonOrderService.java
  9. 110 0
      ruoyi-shop/src/main/java/com/ruoyi/shop/order/service/createorder/impl/CreateGroupBuyOrderService.java
  10. 14 14
      ruoyi-shop/src/main/java/com/ruoyi/shop/order/service/shopcoupon/CommonOrderUseShopCouponImpl.java
  11. 7 2
      ruoyi-shop/src/main/java/com/ruoyi/shop/order/service/shopcoupon/IUseShopCouponService.java
  12. 13 0
      ruoyi-shop/src/main/java/com/ruoyi/shop/product/service/IProductSkuSetService.java
  13. 9 0
      ruoyi-shop/src/main/java/com/ruoyi/shop/product/service/impl/ProductSkuSetServiceImpl.java

+ 4 - 0
ruoyi-shop/src/main/java/com/ruoyi/shop/order/domain/bo/ShopOrderDetailBo.java

@@ -53,6 +53,7 @@ public class ShopOrderDetailBo implements Serializable {
         commentStatus = CommentStatus.UNCOMMENT;
         rightsMethod = RightsMethod.UNKNOWN;
         rightsStatus = RightsStatus.NO_RIGHTS;
+        activityProductId = 0L;
         end = false;
         rightsNum = 0;
         receiptedNum = 0;
@@ -490,4 +491,7 @@ public class ShopOrderDetailBo implements Serializable {
     @ApiModelProperty(value = "运费模板ID", required = true)
     private Long freightTemplateId;
 
+    @ApiModelProperty(value = "活动商品ID")
+    private Long activityProductId;
+
 }

+ 12 - 0
ruoyi-shop/src/main/java/com/ruoyi/shop/order/domain/bo/createorder/CreateOrderBo.java

@@ -109,6 +109,18 @@ public class CreateOrderBo implements Serializable {
     private Long myCouponId;
 
 
+    //活动id
+    @ApiModelProperty(value = "活动id", required = true)
+    private Long activityId=0L;
+    //活动标题
+    @ApiModelProperty(value = "活动标题", required = true)
+    private String activityTitle="";
+
+    //活动发起信息id(如果是限时折扣和首单优惠活动,其为0,如果是拼团其为发起的团Id
+    @ApiModelProperty(value = "活动发起信息id(如果是限时折扣和首单优惠活动,其为0,如果是拼团其为发起的团Id)", required = true)
+    private Long sponsorActivityId=0L;
+
+
 
 
 }

+ 7 - 0
ruoyi-shop/src/main/java/com/ruoyi/shop/order/domain/bo/createorder/CreateOrderDetailBo.java

@@ -13,12 +13,19 @@ import java.io.Serializable;
 @Data
 public class CreateOrderDetailBo implements Serializable {
     private static final long serialVersionUID = 1L;
+    {
+        activityProductId = 0L;
+    }
     /**
      * 商品ID
      */
     @ApiModelProperty(value = "商品ID", required = true)
     private Long productId;
 
+    //活动商品id
+    @ApiModelProperty(value = "活动商品ID")
+    private Long activityProductId;
+
     /**
      * 商品数量
      */

+ 16 - 0
ruoyi-shop/src/main/java/com/ruoyi/shop/order/service/createorder/CouponFilterFunction.java

@@ -0,0 +1,16 @@
+package com.ruoyi.shop.order.service.createorder;
+
+import com.ruoyi.shop.coupon.domain.vo.CouponReceiveRecordVo;
+
+import java.util.List;
+
+/**
+ * @Description: 优惠券过滤函数
+ * @Author: jeecg-boot
+ * @Date:   2021-08-27
+ * @Version: V1.0
+ */
+@FunctionalInterface
+public interface CouponFilterFunction {
+    List<CouponReceiveRecordVo> filter(List<CouponReceiveRecordVo> coupons);
+}

+ 22 - 0
ruoyi-shop/src/main/java/com/ruoyi/shop/order/service/createorder/ICreateActivityOrderService.java

@@ -0,0 +1,22 @@
+package com.ruoyi.shop.order.service.createorder;
+
+
+import com.ruoyi.shop.order.domain.bo.ShopOrderBo;
+import com.ruoyi.shop.order.domain.bo.createorder.CreateOrderBo;
+
+/**
+ * 创建订单服务
+ *
+ * @author lubo
+ * @date 2025-10-23
+ */
+public  interface ICreateActivityOrderService {
+
+    /**
+     * 拼团活动订单信息初始化
+     * @param createOrderBo
+     * @param shopOrderBo
+     * @return
+     */
+    ShopOrderBo activityOrderBoInit(CreateOrderBo createOrderBo, ShopOrderBo shopOrderBo);
+}

+ 4 - 0
ruoyi-shop/src/main/java/com/ruoyi/shop/order/service/createorder/ICreateOrderService.java

@@ -3,8 +3,11 @@ package com.ruoyi.shop.order.service.createorder;
 
 import com.ruoyi.shop.order.domain.ShopOrder;
 import com.ruoyi.shop.order.domain.bo.ShopOrderBo;
+import com.ruoyi.shop.order.domain.bo.ShopOrderDetailBo;
 import com.ruoyi.shop.order.domain.bo.createorder.CreateOrderBo;
 
+import java.util.List;
+
 /**
  * 创建订单服务
  *
@@ -28,4 +31,5 @@ public  interface ICreateOrderService {
      * @return
      */
     ShopOrderBo buildOrder(CreateOrderBo createOrderBo);
+
 }

+ 11 - 9
ruoyi-shop/src/main/java/com/ruoyi/shop/order/service/createorder/impl/AbstractCreateOrderService.java

@@ -10,6 +10,7 @@ import com.ruoyi.business.service.IBusinessLogisticsConfigService;
 import com.ruoyi.business.service.IBusinessSalesConfigService;
 import com.ruoyi.business.service.IBusinessSelfPickupAddressService;
 import com.ruoyi.business.service.IBusinessService;
+import com.ruoyi.common.enums.order.MarketingType;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.BeanUtil;
 import com.ruoyi.common.utils.MathUtils;
@@ -93,7 +94,6 @@ public abstract class AbstractCreateOrderService implements ICreateOrderService
     @Resource
     protected IUserBusinessRoleService userBusinessRoleService;
 
-
     protected ShopOrderBo initShopOrderBo(CreateOrderBo createOrderBo) {
         ShopOrderBo shopOrderBo = new ShopOrderBo();
         shopOrderBo.init();
@@ -136,6 +136,8 @@ public abstract class AbstractCreateOrderService implements ICreateOrderService
         return order;
     }
 
+    protected abstract  ProductSkuSetVo biuldProductSkuSetVo(CreateOrderBo createOrderBo,CreateOrderDetailBo createOrderDetailBo);
+
     /**
      * 构建基础订单详情列表
      *
@@ -159,10 +161,10 @@ public abstract class AbstractCreateOrderService implements ICreateOrderService
             shopOrderDetailBo.setProductNum(createOrderDetailBo.getProductNum());
             shopOrderDetailBo.setSupplierId(product.getSupplierId());
             shopOrderDetailBo.setSupplierName(product.getSupplierName());
+            shopOrderDetailBo.setActivityProductId(createOrderDetailBo.getActivityProductId());
+
+            ProductSkuSetVo productSkuSetVo = biuldProductSkuSetVo(createOrderBo, createOrderDetailBo);
 
-            ProductSkuSetVo productSkuSetVo = productSkuSetService.loadVoByBusinessIdAndProductIdAndSkuHash(createOrderBo.getBusinessId(),
-                createOrderDetailBo.getProductId(),
-                createOrderDetailBo.getSkuHashCode(), true);
             BigDecimal productNum = BigDecimal.valueOf((long) shopOrderDetailBo.getProductNum());
             shopOrderDetailBo.setSkuCode(productSkuSetVo.getCode());
             shopOrderDetailBo.setSkuSetName(productSkuSetVo.getSkuSetName());
@@ -174,15 +176,15 @@ public abstract class AbstractCreateOrderService implements ICreateOrderService
             shopOrderDetailBo.setSkuPrice(productSkuSetVo.getSalePrice());
             shopOrderDetailBo.setTotalSkuPrice(MathUtils.multiply(productSkuSetVo.getSalePrice(), productNum));
             //ToDo: 会员价处理
-            BigDecimal originalSalePrice = productSkuSetVo.getSalePrice();
+            BigDecimal originalSalePrice = productSkuSetVo.getOriginalSalePrice();
             //ToDo: 会员价处理过程完成
-
             shopOrderDetailBo.setOriginalRealPrice(originalSalePrice);
             shopOrderDetailBo.setTotalOriginalRealPrice(MathUtils.multiply(originalSalePrice, productNum));
 
-            shopOrderDetailBo.setRealPrice(originalSalePrice);
-            shopOrderDetailBo.setTotalRealPrice(shopOrderDetailBo.getTotalOriginalRealPrice());
-            shopOrderDetailBo.setTotalActivityReduced(MathUtils.subtract(shopOrderDetailBo.getTotalSkuPrice(), shopOrderDetailBo.getTotalRealPrice()));
+            shopOrderDetailBo.setRealPrice(shopOrderDetailBo.getSkuPrice());
+            shopOrderDetailBo.setTotalRealPrice(shopOrderDetailBo.getTotalSkuPrice());
+
+            shopOrderDetailBo.setTotalActivityReduced(MathUtils.subtract(shopOrderDetailBo.getTotalOriginalRealPrice(),shopOrderDetailBo.getTotalRealPrice()));
             shopOrderDetailBo.setSingleUniversalCouponSharing(BigDecimal.ZERO);
             shopOrderDetailBo.setTotalUniversalCouponSharing(BigDecimal.ZERO);
             shopOrderDetailBo.setSingleProductCouponSharing(BigDecimal.ZERO);

+ 11 - 3
ruoyi-shop/src/main/java/com/ruoyi/shop/order/service/createorder/impl/CreateCommonOrderService.java

@@ -5,16 +5,19 @@ import cn.hutool.core.util.ObjectUtil;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.shop.order.domain.ShopOrder;
 import com.ruoyi.shop.order.domain.bo.ShopOrderBo;
+import com.ruoyi.shop.order.domain.bo.ShopOrderDetailBo;
 import com.ruoyi.shop.order.domain.bo.createorder.CreateOrderBo;
 import com.ruoyi.shop.order.domain.bo.createorder.CreateOrderDetailBo;
 import com.ruoyi.shop.order.service.createorder.ICreateOrderService;
 import com.ruoyi.shop.order.service.shopcoupon.IUseShopCouponService;
+import com.ruoyi.shop.product.domain.vo.ProductSkuSetVo;
 import com.ruoyi.shop.usershoppingcart.service.IUserShoppingCartService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 import com.ruoyi.shop.order.exception.ShopOrderExceptionEnum;
 
 import javax.annotation.Resource;
+import java.util.Collections;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -58,9 +61,9 @@ public class CreateCommonOrderService extends AbstractCreateOrderService impleme
         //计算总计
         totalHandle(shopOrderBo);
         //商品优惠券处理
-        useShopCouponService.handleProductCoupon(createOrderBo.getUserId(), shopOrderBo);
+        useShopCouponService.handleProductCoupon(createOrderBo.getUserId(), shopOrderBo,null);
         //通用优惠券处理
-        useShopCouponService.handleUniversalCoupon(createOrderBo.getUserId(), shopOrderBo);
+        useShopCouponService.handleUniversalCoupon(createOrderBo.getUserId(), shopOrderBo,null);
         //是否使用积分抵扣
         usePointHandle(shopOrderBo);
         //计算可送积分
@@ -70,5 +73,10 @@ public class CreateCommonOrderService extends AbstractCreateOrderService impleme
         return shopOrderBo;
     }
 
-
+    @Override
+    protected ProductSkuSetVo biuldProductSkuSetVo(CreateOrderBo createOrderBo, CreateOrderDetailBo createOrderDetailBo) {
+        return  productSkuSetService.loadVoByBusinessIdAndProductIdAndSkuHash(createOrderBo.getBusinessId(),
+            createOrderDetailBo.getProductId(),
+            createOrderDetailBo.getSkuHashCode(), true);
+    }
 }

+ 110 - 0
ruoyi-shop/src/main/java/com/ruoyi/shop/order/service/createorder/impl/CreateGroupBuyOrderService.java

@@ -0,0 +1,110 @@
+package com.ruoyi.shop.order.service.createorder.impl;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.shop.coupon.domain.vo.CouponReceiveRecordVo;
+import com.ruoyi.shop.marketing.groupbuy.domain.GroupBuyActivity;
+import com.ruoyi.shop.marketing.groupbuy.service.IGroupBuyActivityService;
+import com.ruoyi.shop.order.domain.ShopOrder;
+import com.ruoyi.shop.order.domain.bo.ShopOrderBo;
+import com.ruoyi.shop.order.domain.bo.ShopOrderDetailBo;
+import com.ruoyi.shop.order.domain.bo.createorder.CreateOrderBo;
+import com.ruoyi.shop.order.domain.bo.createorder.CreateOrderDetailBo;
+import com.ruoyi.shop.order.exception.ShopOrderExceptionEnum;
+import com.ruoyi.shop.order.service.createorder.ICreateActivityOrderService;
+import com.ruoyi.shop.order.service.createorder.ICreateOrderService;
+import com.ruoyi.shop.order.service.shopcoupon.IUseShopCouponService;
+import com.ruoyi.shop.product.domain.vo.ProductSkuSetVo;
+import com.ruoyi.shop.usershoppingcart.service.IUserShoppingCartService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 拼团订单服务
+ *
+ * @author lubo
+ * @date 2025-10-23
+ */
+@RequiredArgsConstructor
+@Service
+public class CreateGroupBuyOrderService extends AbstractCreateOrderService implements ICreateOrderService, ICreateActivityOrderService {
+
+    @Resource(name = "commonOrderUseShopCouponService")
+    private IUseShopCouponService useShopCouponService;
+
+    @Resource
+    private IGroupBuyActivityService groupBuyActivityService;
+
+    @Override
+    public ShopOrder createOrder(CreateOrderBo createOrderBo) {
+        ShopOrderBo shopOrderBo = this.buildOrder(createOrderBo);
+        if (!shopOrderBo.getPointEnough()) {
+            throw new ServiceException(ShopOrderExceptionEnum.POINT_NOT_ENOUGH);
+        }
+        ShopOrder orderEntity = createOrderEntity(shopOrderBo);
+
+        return orderEntity;
+    }
+
+    @Override
+    public ShopOrderBo buildOrder(CreateOrderBo createOrderBo) {
+        //初始化主单
+        ShopOrderBo shopOrderBo = initShopOrderBo(createOrderBo);
+        //拼团活动主单相关信息初始化
+        activityOrderBoInit(createOrderBo, shopOrderBo);
+        //初始化子单
+        shopOrderBo.setShopOrderDetailBoList(buildBaseOrderDetailList(createOrderBo));
+        //计算总计
+        totalHandle(shopOrderBo);
+        //商品优惠券处理
+        useShopCouponService.handleProductCoupon(createOrderBo.getUserId(), shopOrderBo, this::filterCouponList);
+        //通用优惠券处理
+        useShopCouponService.handleUniversalCoupon(createOrderBo.getUserId(), shopOrderBo, this::filterCouponList);
+
+        //计算可送积分
+        //givePointHandle(shopOrderBo);
+        //运费处理
+        freightHandle(shopOrderBo);
+        return shopOrderBo;
+    }
+
+
+    /**
+     * 过滤只适全拼团的优惠券
+     *
+     * @param list
+     * @return
+     */
+    public  List<CouponReceiveRecordVo> filterCouponList(List<CouponReceiveRecordVo> list) {
+        if (CollectionUtil.isEmpty(list)) {
+            return Collections.emptyList();
+        }
+        return list.stream()
+            .filter(couponReceiveRecordVo -> couponReceiveRecordVo.getCouponVo().isAdaptGroupBuy())
+            .collect(Collectors.toList());
+    }
+
+
+    @Override
+    public ShopOrderBo activityOrderBoInit(CreateOrderBo createOrderBo, ShopOrderBo shopOrderBo) {
+        shopOrderBo.setMarketingType(createOrderBo.getMarketingType());
+        shopOrderBo.setActivityId(createOrderBo.getActivityId());
+        GroupBuyActivity groupBuyActivity = groupBuyActivityService.loadById(createOrderBo.getActivityId(), true);
+        shopOrderBo.setActivityTitle(groupBuyActivity.getName());
+        shopOrderBo.setSponsorActivityId(groupBuyActivity.getId());
+        return shopOrderBo;
+    }
+
+    @Override
+    protected ProductSkuSetVo biuldProductSkuSetVo(CreateOrderBo createOrderBo, CreateOrderDetailBo createOrderDetailBo) {
+        return productSkuSetService.loadVoByBusinessIdAndProductIdAndActivityProductIdAndSkuHash(createOrderBo.getBusinessId(),
+            createOrderDetailBo.getProductId(),
+            createOrderDetailBo.getSkuHashCode(), createOrderDetailBo.getActivityProductId(), createOrderBo.getMarketingType());
+    }
+}

+ 14 - 14
ruoyi-shop/src/main/java/com/ruoyi/shop/order/service/shopcoupon/CommonOrderUseShopCouponImpl.java

@@ -3,6 +3,7 @@ package com.ruoyi.shop.order.service.shopcoupon;
 
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjectUtil;
+import com.ruoyi.common.enums.order.MarketingType;
 import com.ruoyi.common.utils.MathUtils;
 import com.ruoyi.shop.coupon.domain.vo.CouponReceiveRecordVo;
 import com.ruoyi.shop.coupon.service.ICouponReceiveRecordService;
@@ -10,11 +11,13 @@ import com.ruoyi.shop.coupon.service.ICouponService;
 import com.ruoyi.shop.order.domain.bo.ShopOrderBo;
 import com.ruoyi.shop.order.domain.bo.ShopOrderDetailBo;
 import com.ruoyi.shop.order.domain.bo.ShopOrderUseRecordBo;
+import com.ruoyi.shop.order.service.createorder.CouponFilterFunction;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
 import java.util.*;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 @Service("commonOrderUseShopCouponService")
@@ -25,7 +28,7 @@ public class CommonOrderUseShopCouponImpl implements IUseShopCouponService {
 
 
     @Override
-    public ShopOrderBo handleProductCoupon(Long userId, ShopOrderBo shopOrderBo) {
+    public ShopOrderBo handleProductCoupon(Long userId, ShopOrderBo shopOrderBo, CouponFilterFunction fun) {
         List<ShopOrderDetailBo> shopOrderDetailBoList = shopOrderBo.getShopOrderDetailBoList();
         // 按商品ID分组
         Map<Long, List<ShopOrderDetailBo>> productGroup = shopOrderDetailBoList.stream().collect(Collectors.groupingBy(ShopOrderDetailBo::getProductId));
@@ -34,6 +37,11 @@ public class CommonOrderUseShopCouponImpl implements IUseShopCouponService {
         for (Long productId : productIds) {
             // 按商品ID查询可用的商品优惠券
             List<CouponReceiveRecordVo> couponEntityVos = couponReceiveRecordService.loadMyBusinessCouponsAndProductId(userId, shopOrderBo.getBusinessId(), productId);
+            if(ObjectUtil.isNotNull(fun))
+            {
+                couponEntityVos = fun.filter(couponEntityVos);
+            }
+
             List<ShopOrderDetailBo> shopOrderDetailBos = productGroup.get(productId);
             //获取商品的总数
             int sum = shopOrderDetailBos.stream().mapToInt(ShopOrderDetailBo::getProductNum).sum();
@@ -115,12 +123,16 @@ public class CommonOrderUseShopCouponImpl implements IUseShopCouponService {
     }
 
     @Override
-    public ShopOrderBo handleUniversalCoupon(Long userId, ShopOrderBo shopOrderBo) {
+    public ShopOrderBo handleUniversalCoupon(Long userId, ShopOrderBo shopOrderBo,CouponFilterFunction fun) {
         BigDecimal universalCouponReduced = BigDecimal.ZERO;
         CouponReceiveRecordVo selectCouponEntityVo = null;
         BigDecimal totalProductAmount = shopOrderBo.getTotalProductAmount();
         if (ObjectUtil.isNull(shopOrderBo.getMyCouponId()) || shopOrderBo.getMyCouponId() == 0L) {
             List<CouponReceiveRecordVo> couponEntityVos = couponReceiveRecordService.loadMyBusinessCouponsUniversal(userId, shopOrderBo.getBusinessId());
+            if(ObjectUtil.isNotNull(fun))
+            {
+                couponEntityVos = fun.filter(couponEntityVos);
+            }
             List<CouponReceiveRecordVo> canUseCouponEntityVos = new ArrayList<>();
             for (CouponReceiveRecordVo couponEntityVo : couponEntityVos) {
                 //有门槛
@@ -213,16 +225,4 @@ public class CommonOrderUseShopCouponImpl implements IUseShopCouponService {
         }
         return shopOrderBo;
     }
-
-
-
-
-
-
-
-
-
-
-
-
 }

+ 7 - 2
ruoyi-shop/src/main/java/com/ruoyi/shop/order/service/shopcoupon/IUseShopCouponService.java

@@ -1,7 +1,12 @@
 package com.ruoyi.shop.order.service.shopcoupon;
 
 
+import com.ruoyi.shop.coupon.domain.vo.CouponReceiveRecordVo;
 import com.ruoyi.shop.order.domain.bo.ShopOrderBo;
+import com.ruoyi.shop.order.service.createorder.CouponFilterFunction;
+
+import java.util.List;
+import java.util.function.Function;
 
 public interface IUseShopCouponService {
 
@@ -11,7 +16,7 @@ public interface IUseShopCouponService {
       * @param bo
       * @return
       */
-     ShopOrderBo handleProductCoupon(Long userId, ShopOrderBo bo);
+     ShopOrderBo handleProductCoupon(Long userId, ShopOrderBo bo, CouponFilterFunction function);
 
      /**
       * 处理通用券
@@ -19,6 +24,6 @@ public interface IUseShopCouponService {
       * @param bo
       * @return
       */
-     ShopOrderBo handleUniversalCoupon(Long userId, ShopOrderBo bo);
+     ShopOrderBo handleUniversalCoupon(Long userId, ShopOrderBo bo,CouponFilterFunction function);
 
 }

+ 13 - 0
ruoyi-shop/src/main/java/com/ruoyi/shop/product/service/IProductSkuSetService.java

@@ -130,4 +130,17 @@ public interface IProductSkuSetService {
     ProductSkuSetVo loadVoByBusinessIdAndProductIdAndSkuHash( Long businessId, Long productId, String  skuHashCode, Boolean tw);
 
 
+    /**
+     * 根据业务id、商品id、活动商品Id和skuHash查询
+     *
+     * @param businessId
+     * @param productId
+     * @param activityProductId
+     * @param marketingType
+     * @param skuHashCode
+     * @return
+     */
+    ProductSkuSetVo loadVoByBusinessIdAndProductIdAndActivityProductIdAndSkuHash( Long businessId, Long productId, String  skuHashCode,Long activityProductId, MarketingType marketingType);
+
+
 }

+ 9 - 0
ruoyi-shop/src/main/java/com/ruoyi/shop/product/service/impl/ProductSkuSetServiceImpl.java

@@ -286,4 +286,13 @@ public class ProductSkuSetServiceImpl implements IProductSkuSetService {
         return productSkuSetVo;
     }
 
+    @Override
+    public ProductSkuSetVo loadVoByBusinessIdAndProductIdAndActivityProductIdAndSkuHash(Long businessId, Long productId, String skuHashCode, Long activityProductId, MarketingType marketingType) {
+        ProductSkuSetVo productSkuSetVo =this.baseMapper.loadVoByBusinessIdAndProductIdAndActivityProductIdAndSkuHash(businessId,productId,skuHashCode,activityProductId,marketingType);
+        if(ObjectUtil.isNull(productSkuSetVo)){
+            throw new ServiceException(String.format("活动商品规格%s不存在", skuHashCode));
+        }
+        return productSkuSetVo;
+    }
+
 }