|
|
@@ -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())) {
|