Commit 8aff1693 authored by wlx@33.cn's avatar wlx@33.cn

优惠券指定商品时,如果商品销售方式为盲盒销售,则默认指定该商品的所有规格

parent fa88ccc7
......@@ -51,6 +51,11 @@ public class Spu implements Serializable {
public static final Integer NFT_SALES_TYPE_COPY = 2;
/**
* 盲盒销售
*/
public static final Integer BLIND_BOX_SALES = 2;
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
......@@ -151,6 +156,9 @@ public class Spu implements Serializable {
@ApiModelProperty(value = "延迟提货(0--否 1--是)")
private Integer delayDelivery;
@ApiModelProperty(value = "销售方式 1.普通 2.盲盒")
private Integer salesType;
@ApiModelProperty(value = "ntf文件")
private String nftFile;
......
......@@ -6,9 +6,11 @@ import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.SystemClock;
import com.fzm.mall.server.admin.constant.MallResponseError;
import com.fzm.mall.server.admin.exception.MyException;
import com.fzm.mall.server.admin.goods_center.mapper.SkuMapper;
import com.fzm.mall.server.admin.goods_center.mapper.SpuMapper;
import com.fzm.mall.server.admin.goods_center.model.Category;
import com.fzm.mall.server.admin.goods_center.model.Sku;
import com.fzm.mall.server.admin.goods_center.model.Spu;
import com.fzm.mall.server.admin.goods_center.service.ICategoryService;
import com.fzm.mall.server.admin.marketing.service.ICouponCategoryService;
import com.fzm.mall.server.admin.marketing.service.ICouponSkuService;
......@@ -23,6 +25,7 @@ import org.apache.commons.lang3.StringUtils;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
......@@ -141,20 +144,48 @@ public class Coupon implements Serializable {
setAmt(circulation);
}
public void saveCouponSku(ICouponSkuService couponSkuService) {
List<CouponSku> skuList = getCouponSkuList();
if (CollectionUtils.isNotEmpty(skuList)) {
skuList.forEach(couponSku -> {
couponSku.setMerchantId(this.getMerchantId());
couponSku.setCouponId(this.getCouponId());
couponSku.setStatus(CouponSku.COUPON_SKU_STATUS_EFFECTIVE);
});
couponSkuService.saveBatch(skuList);
public void saveCouponSku(ICouponSkuService couponSkuService, SpuMapper spuMapper, SkuMapper skuMapper) {
batchSaveCouponSku(this.couponSkuList, couponSkuService, spuMapper, skuMapper);
}
public void batchSaveCouponSku(List<CouponSku> paramList, ICouponSkuService couponSkuService, SpuMapper spuMapper, SkuMapper skuMapper) {
if (CollectionUtils.isEmpty(paramList)) {
return;
}
/**
* 如果商品销售类型为盲盒,默认勾选盲盒的所有规格(即使前台勾选不完全)
*/
List<String> goodsIdList = paramList.stream().map(CouponSku::getGoodsId).collect(Collectors.toList());
QueryWrapper<Spu> queryWrapper = new QueryWrapper<>();
queryWrapper.in("goods_id", goodsIdList);
List<Spu> spuList = spuMapper.selectList(queryWrapper);
List<String> blindBoxSpuIdList = spuList.stream().filter(spu -> spu.getSalesType().equals(Spu.BLIND_BOX_SALES)).map(Spu::getGoodsId).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(blindBoxSpuIdList)) {
List<String> paramSkuIdList = paramList.stream().map(CouponSku::getSkuId).collect(Collectors.toList());
QueryWrapper<Sku> skuQueryWrapper = new QueryWrapper<>();
skuQueryWrapper.in("goods_id", goodsIdList);
List<Sku> dataSkuList = skuMapper.selectList(skuQueryWrapper);
List<Sku> skuToAddList = dataSkuList.stream().filter(sku -> !paramSkuIdList.contains(sku.getSkuId())).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(skuToAddList)) {
skuToAddList.forEach(sku -> {
CouponSku couponSku = new CouponSku();
couponSku.setSkuId(sku.getSkuId());
couponSku.setGoodsId(sku.getGoodsId());
paramList.add(couponSku);
});
}
}
paramList.forEach(couponSku -> {
couponSku.setMerchantId(this.getMerchantId());
couponSku.setCouponId(this.getCouponId());
couponSku.setStatus(CouponSku.COUPON_SKU_STATUS_EFFECTIVE);
});
couponSkuService.saveBatch(paramList);
}
public void updateCouponSku(ICouponSkuService couponSkuService) {
List<CouponSku> paramSkuList = getCouponSkuList();
public void updateCouponSku(ICouponSkuService couponSkuService, SpuMapper spuMapper, SkuMapper skuMapper) {
List<CouponSku> paramSkuList = this.couponSkuList;
List<CouponSku> dataSkuList = couponSkuService.list(new QueryWrapper<CouponSku>().eq("coupon_id", this.getCouponId())
.eq("merchant_id", this.getMerchantId())
.eq("status", CouponSku.COUPON_SKU_STATUS_EFFECTIVE));
......@@ -163,13 +194,7 @@ public class Coupon implements Serializable {
List<CouponSku> reaminList = paramSkuList;
reaminList.removeAll(toAddList);
toAddList.forEach(couponSku -> {
couponSku.setCouponId(this.getCouponId());
couponSku.setMerchantId(this.getMerchantId());
couponSku.setStatus(CouponSku.COUPON_SKU_STATUS_EFFECTIVE);
});
couponSkuService.saveBatch(toAddList);
batchSaveCouponSku(toAddList, couponSkuService, spuMapper, skuMapper);
List<String> reaminCouponIdList = reaminList.stream().map(CouponSku::getGoodsId).collect(Collectors.toList());
......
......@@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fzm.mall.server.admin.constant.MallResponseError;
import com.fzm.mall.server.admin.exception.MyException;
import com.fzm.mall.server.admin.goods_center.mapper.SkuMapper;
import com.fzm.mall.server.admin.goods_center.mapper.SpuMapper;
import com.fzm.mall.server.admin.goods_center.service.ICategoryService;
import com.fzm.mall.server.admin.marketing.entity.dto.CouponDTO;
import com.fzm.mall.server.admin.marketing.entity.dto.CouponSaveDTO;
......@@ -44,6 +46,8 @@ public class CouponServiceImpl extends ServiceImpl<CouponMapper, Coupon> impleme
private final ICouponSkuService couponSkuService;
private final ICouponCategoryService couponCategoryService;
private final ICategoryService categoryService;
private final SpuMapper spuMapper;
private final SkuMapper skuMapper;
@Override
public List<Coupon> listByOid(String oid, String uid, List<String> goodsIdList) {
......@@ -58,7 +62,7 @@ public class CouponServiceImpl extends ServiceImpl<CouponMapper, Coupon> impleme
coupon.init();
coupon.saveCouponSku(couponSkuService);
coupon.saveCouponSku(couponSkuService, spuMapper, skuMapper);
coupon.saveCategory(couponCategoryService);
couponMapper.insert(coupon);
......@@ -86,7 +90,7 @@ public class CouponServiceImpl extends ServiceImpl<CouponMapper, Coupon> impleme
throw new MyException(MallResponseError.UPDATE_FAIL);
}
coupon.updateCouponSku(couponSkuService);
coupon.updateCouponSku(couponSkuService, spuMapper, skuMapper);
coupon.updateCategory(couponCategoryService);
}
......
......@@ -26,6 +26,7 @@
<result column="delay_delivery" property="delayDelivery"/>
<result column="nft_file" property="nftFile"/>
<result column="hash" property="hash"/>
<result column="sales_type" property="salesType"/>
<result column="create_time" property="createTime"/>
<result column="update_time" property="updateTime"/>
</resultMap>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment