|
|
|
@ -18,6 +18,7 @@ import co.yixiang.yshop.module.product.dal.dataobject.storeproduct.StoreProductD
|
|
|
|
|
import co.yixiang.yshop.module.product.dal.dataobject.storeproductattrvalue.StoreProductAttrValueDO;
|
|
|
|
|
import co.yixiang.yshop.module.product.dal.mysql.campaigndetail.CampaignDetailMapper;
|
|
|
|
|
import co.yixiang.yshop.module.product.dal.mysql.campaigninfo.CampaignInfoMapper;
|
|
|
|
|
import co.yixiang.yshop.module.product.enums.campaign.CampaignTypeEnum;
|
|
|
|
|
import co.yixiang.yshop.module.product.enums.common.PageTypeEnum;
|
|
|
|
|
import co.yixiang.yshop.module.product.enums.spu.ProductSpuStatusEnum;
|
|
|
|
|
import co.yixiang.yshop.module.product.mq.producer.PayRefundProducer;
|
|
|
|
@ -35,6 +36,7 @@ import org.springframework.validation.annotation.Validated;
|
|
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
|
import java.math.RoundingMode;
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
@ -113,6 +115,13 @@ public class CampaignInfoServiceImpl implements CampaignInfoService {
|
|
|
|
|
for (CampaignDetailCreateReqVO detail : details) {
|
|
|
|
|
StoreProductAttrValueDO productAttrValueDO = productAttrValueDOMap.get(detail.getSkuId());
|
|
|
|
|
if (ObjectUtil.isNull(productAttrValueDO)) throw exception(STORE_PRODUCT_ATTR_VALUE_NOT_EXISTS);
|
|
|
|
|
// 计算折扣价格
|
|
|
|
|
if (CampaignTypeEnum.DISCOUNT.getValue().equals(createReqVO.getType()))
|
|
|
|
|
detail.setPrice(productAttrValueDO.getPrice().multiply(detail.getDiscount())
|
|
|
|
|
.divide(BigDecimal.TEN).setScale(2, RoundingMode.HALF_UP));
|
|
|
|
|
// 活动价格不能为0
|
|
|
|
|
if(productAttrValueDO.getPrice().compareTo(BigDecimal.ZERO) == 0)
|
|
|
|
|
throw exception(CAMPAIGN_PRICE_NOT_ZERO_ERROR, productAttrValueDO.getSku());
|
|
|
|
|
// 检测价格
|
|
|
|
|
if (productAttrValueDO.getPrice().compareTo(detail.getPrice()) < 0)
|
|
|
|
|
throw exception(CAMPAIGN_PASS_ORIGINAL_PRICE_ERROR, productAttrValueDO.getSku());
|
|
|
|
@ -223,6 +232,13 @@ public class CampaignInfoServiceImpl implements CampaignInfoService {
|
|
|
|
|
for (CampaignDetailCreateReqVO detail : details) {
|
|
|
|
|
StoreProductAttrValueDO productAttrValueDO = productAttrValueDOMap.get(detail.getSkuId());
|
|
|
|
|
if (ObjectUtil.isNull(productAttrValueDO)) throw exception(STORE_PRODUCT_ATTR_VALUE_NOT_EXISTS);
|
|
|
|
|
// 计算折扣价格
|
|
|
|
|
if (CampaignTypeEnum.DISCOUNT.getValue().equals(updateReqVO.getType()))
|
|
|
|
|
detail.setPrice(productAttrValueDO.getPrice().multiply(detail.getDiscount())
|
|
|
|
|
.divide(BigDecimal.TEN).setScale(2, RoundingMode.HALF_UP));
|
|
|
|
|
// 活动价格不能为0
|
|
|
|
|
if(productAttrValueDO.getPrice().compareTo(BigDecimal.ZERO) == 0)
|
|
|
|
|
throw exception(CAMPAIGN_PRICE_NOT_ZERO_ERROR, productAttrValueDO.getSku());
|
|
|
|
|
// 检测价格
|
|
|
|
|
if (productAttrValueDO.getPrice().compareTo(detail.getPrice()) < 0)
|
|
|
|
|
throw exception(CAMPAIGN_PASS_ORIGINAL_PRICE_ERROR, productAttrValueDO.getSku());
|
|
|
|
|