zoujiajian преди 3 години
родител
ревизия
5571f3873e
променени са 1 файла, в които са добавени 22 реда и са изтрити 7 реда
  1. 22 7
      netflix-service/src/main/java/com/cyksj/service/mange/coupon/impl/CouponCommonServiceImpl.java

+ 22 - 7
netflix-service/src/main/java/com/cyksj/service/mange/coupon/impl/CouponCommonServiceImpl.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.cyksj.common.exception.BusinessRuntimeException;
 import com.cyksj.common.util.Jsons;
 import com.cyksj.config.corp.YHLXWxCorpConfig;
+import com.cyksj.mapper.GoodsDonMapper;
 import com.cyksj.mapper.GoodsDonSkuMapper;
 import com.cyksj.mapper.UserMapper;
 import com.cyksj.mapper.corp.CorpUserMapper;
@@ -57,6 +58,8 @@ public class CouponCommonServiceImpl implements CouponCommonService {
 
 	private final CouponUserMapper couponUserMapper;
 
+	private final GoodsDonMapper goodsDonMapper;
+
 	@Override
 	@Transactional(rollbackFor = Throwable.class)
 	public void saveCoupon(Coupon coupon) throws Exception {
@@ -211,13 +214,25 @@ public class CouponCommonServiceImpl implements CouponCommonService {
 			if (goodsSkuList.isEmpty()) {
 				throw BusinessRuntimeException.getInstance("所选规格不存在");
 			}
-			List<Long> skuIds = goodsSkuList.stream().map(Coupon.CouponGoodsSku::getSkuId).collect(Collectors.toList());
-			GoodsDonSku sku = goodsDonSkuMapper.selectOne(Wrappers.lambdaQuery(GoodsDonSku.class).in(GoodsDonSku::getId, skuIds).orderByAsc(GoodsDonSku::getPrice).select(GoodsDonSku::getPrice).last("limit 1"));
-			if (sku == null) {
-				throw BusinessRuntimeException.getInstance("所选规格不存在");
-			}
-			if (coupon.getReduceMoney().compareTo(sku.getPrice()) > 0) {
-				throw BusinessRuntimeException.getInstance("可减金额必须小于规格金额");
+			if (coupon.getGoodsType() == Coupon.GoodsType.virtualGoods) {
+				List<Long> skuIds = goodsSkuList.stream().map(Coupon.CouponGoodsSku::getSkuId).collect(Collectors.toList());
+				skuIds.forEach(skuId->{
+					GoodsDonSku sku = goodsDonSkuMapper.selectOne(Wrappers.lambdaQuery(GoodsDonSku.class).in(GoodsDonSku::getId, skuId).select(GoodsDonSku::getPrice).last("limit 1"));
+					if (sku == null) {
+						throw BusinessRuntimeException.getInstance("所选规格不存在");
+					}
+					if (coupon.getReduceMoney().compareTo(sku.getPrice()) > 0) {
+						throw BusinessRuntimeException.getInstance("可减金额必须小于规格金额");
+					}
+				});
+			}else {
+				List<Long> goodsIds = goodsSkuList.stream().map(Coupon.CouponGoodsSku::getGoodsId).collect(Collectors.toList());
+				goodsIds.forEach(goodsId->{
+					GoodsDon goodsDon = goodsDonMapper.selectOne(Wrappers.lambdaQuery(GoodsDon.class).in(GoodsDon::getId, goodsId).eq(GoodsDon::getType, 2).select(GoodsDon::getId).last("limit 1"));
+					if (goodsDon == null) {
+						throw BusinessRuntimeException.getInstance("实物商品不存在");
+					}
+				});
 			}
 			if (coupon.getIsValidTime()) {
 				if (coupon.getValidStartTime() == null || coupon.getValidEndTime() == null || (coupon.getValidStartTime().getTime() > coupon.getValidEndTime().getTime())) {