'价格记录详细处理'
This commit is contained in:
parent
0e3d582d13
commit
903b779ebe
@ -269,7 +269,7 @@ public class CouponRender implements CartRenderStep {
|
|||||||
//分发优惠券
|
//分发优惠券
|
||||||
promotionPriceUtil.recountPrice(tradeDTO, memberCouponDTO.getSkuDetail(), memberCouponDTO.getMemberCoupon().getPrice(),
|
promotionPriceUtil.recountPrice(tradeDTO, memberCouponDTO.getSkuDetail(), memberCouponDTO.getMemberCoupon().getPrice(),
|
||||||
Boolean.TRUE.equals(coupon.getPlatformFlag()) ?
|
Boolean.TRUE.equals(coupon.getPlatformFlag()) ?
|
||||||
PromotionTypeEnum.PLATFORM_COUPON : PromotionTypeEnum.COUPON);
|
PromotionTypeEnum.PLATFORM_COUPON : PromotionTypeEnum.COUPON, memberCouponDTO.getMemberCoupon().getCouponId());
|
||||||
//如果是平台券 则需要计算商家承担比例
|
//如果是平台券 则需要计算商家承担比例
|
||||||
if (Boolean.TRUE.equals(coupon.getPlatformFlag()) && coupon.getStoreCommission() > 0) {
|
if (Boolean.TRUE.equals(coupon.getPlatformFlag()) && coupon.getStoreCommission() > 0) {
|
||||||
|
|
||||||
|
@ -84,7 +84,7 @@ public class FullDiscountRender implements CartRenderStep {
|
|||||||
if (isFull(countPrice, cart)) {
|
if (isFull(countPrice, cart)) {
|
||||||
//如果减现金
|
//如果减现金
|
||||||
if (Boolean.TRUE.equals(fullDiscount.getFullMinusFlag())) {
|
if (Boolean.TRUE.equals(fullDiscount.getFullMinusFlag())) {
|
||||||
promotionPriceUtil.recountPrice(tradeDTO, skuPriceDetail, fullDiscount.getFullMinus(), PromotionTypeEnum.FULL_DISCOUNT);
|
promotionPriceUtil.recountPrice(tradeDTO, skuPriceDetail, fullDiscount.getFullMinus(), PromotionTypeEnum.FULL_DISCOUNT, fullDiscountVO.getId());
|
||||||
}
|
}
|
||||||
//打折
|
//打折
|
||||||
else if (Boolean.TRUE.equals(fullDiscount.getFullRateFlag())) {
|
else if (Boolean.TRUE.equals(fullDiscount.getFullRateFlag())) {
|
||||||
|
@ -15,6 +15,7 @@ import cn.lili.modules.order.cart.entity.enums.RenderStepEnums;
|
|||||||
import cn.lili.modules.order.cart.entity.vo.CartSkuVO;
|
import cn.lili.modules.order.cart.entity.vo.CartSkuVO;
|
||||||
import cn.lili.modules.order.cart.entity.vo.CartVO;
|
import cn.lili.modules.order.cart.entity.vo.CartVO;
|
||||||
import cn.lili.modules.order.cart.render.CartRenderStep;
|
import cn.lili.modules.order.cart.render.CartRenderStep;
|
||||||
|
import cn.lili.modules.order.order.entity.dto.DiscountPriceItem;
|
||||||
import cn.lili.modules.order.order.entity.dto.PriceDetailDTO;
|
import cn.lili.modules.order.order.entity.dto.PriceDetailDTO;
|
||||||
import cn.lili.modules.promotion.entity.dto.search.KanjiaActivitySearchParams;
|
import cn.lili.modules.promotion.entity.dto.search.KanjiaActivitySearchParams;
|
||||||
import cn.lili.modules.promotion.entity.enums.KanJiaStatusEnum;
|
import cn.lili.modules.promotion.entity.enums.KanJiaStatusEnum;
|
||||||
@ -117,6 +118,17 @@ public class SkuPromotionRender implements CartRenderStep {
|
|||||||
PromotionSkuVO promotionSkuVO = new PromotionSkuVO(PromotionTypeEnum.POINTS_GOODS.name(), cartSkuVO.getPointsId());
|
PromotionSkuVO promotionSkuVO = new PromotionSkuVO(PromotionTypeEnum.POINTS_GOODS.name(), cartSkuVO.getPointsId());
|
||||||
cartSkuVO.getPriceDetailDTO().getJoinPromotion().add(promotionSkuVO);
|
cartSkuVO.getPriceDetailDTO().getJoinPromotion().add(promotionSkuVO);
|
||||||
totalPayPoints += cartSkuVO.getPoint();
|
totalPayPoints += cartSkuVO.getPoint();
|
||||||
|
|
||||||
|
//记录优惠由来
|
||||||
|
cartSkuVO.getPriceDetailDTO().setDiscountPriceItem(
|
||||||
|
DiscountPriceItem.builder()
|
||||||
|
.discountPrice(CurrencyUtil.sub(cartSkuVO.getGoodsSku().getPrice(), cartSkuVO.getPurchasePrice()))
|
||||||
|
.promotionId(promotionSkuVO.getActivityId())
|
||||||
|
.promotionTypeEnum(PromotionTypeEnum.POINTS_GOODS)
|
||||||
|
.skuId(cartSkuVO.getGoodsSku().getId())
|
||||||
|
.goodsId(cartSkuVO.getGoodsSku().getGoodsId())
|
||||||
|
.build()
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (userInfo.getPoint() < totalPayPoints) {
|
if (userInfo.getPoint() < totalPayPoints) {
|
||||||
@ -138,9 +150,19 @@ public class SkuPromotionRender implements CartRenderStep {
|
|||||||
cartSkuVO.setSubTotal(kanjiaActivityVO.getPurchasePrice());
|
cartSkuVO.setSubTotal(kanjiaActivityVO.getPurchasePrice());
|
||||||
cartSkuVO.getPriceDetailDTO().setGoodsPrice(kanjiaActivityVO.getPurchasePrice());
|
cartSkuVO.getPriceDetailDTO().setGoodsPrice(kanjiaActivityVO.getPurchasePrice());
|
||||||
}
|
}
|
||||||
|
|
||||||
PromotionSkuVO promotionSkuVO = new PromotionSkuVO(PromotionTypeEnum.KANJIA.name(), cartSkuVO.getKanjiaId());
|
PromotionSkuVO promotionSkuVO = new PromotionSkuVO(PromotionTypeEnum.KANJIA.name(), cartSkuVO.getKanjiaId());
|
||||||
cartSkuVO.getPriceDetailDTO().getJoinPromotion().add(promotionSkuVO);
|
cartSkuVO.getPriceDetailDTO().getJoinPromotion().add(promotionSkuVO);
|
||||||
|
|
||||||
|
//记录优惠由来
|
||||||
|
cartSkuVO.getPriceDetailDTO().setDiscountPriceItem(
|
||||||
|
DiscountPriceItem.builder()
|
||||||
|
.discountPrice(CurrencyUtil.sub(cartSkuVO.getGoodsSku().getPrice(), cartSkuVO.getPurchasePrice()))
|
||||||
|
.promotionId(promotionSkuVO.getActivityId())
|
||||||
|
.promotionTypeEnum(PromotionTypeEnum.KANJIA)
|
||||||
|
.skuId(cartSkuVO.getGoodsSku().getId())
|
||||||
|
.goodsId(cartSkuVO.getGoodsSku().getGoodsId())
|
||||||
|
.build()
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
@ -149,6 +171,17 @@ public class SkuPromotionRender implements CartRenderStep {
|
|||||||
for (CartSkuVO cartSkuVO : cartVO.getCheckedSkuList()) {
|
for (CartSkuVO cartSkuVO : cartVO.getCheckedSkuList()) {
|
||||||
PromotionSkuVO promotionSkuVO = new PromotionSkuVO(PromotionTypeEnum.PINTUAN.name(), cartSkuVO.getPintuanId());
|
PromotionSkuVO promotionSkuVO = new PromotionSkuVO(PromotionTypeEnum.PINTUAN.name(), cartSkuVO.getPintuanId());
|
||||||
cartSkuVO.getPriceDetailDTO().getJoinPromotion().add(promotionSkuVO);
|
cartSkuVO.getPriceDetailDTO().getJoinPromotion().add(promotionSkuVO);
|
||||||
|
|
||||||
|
//记录优惠由来
|
||||||
|
cartSkuVO.getPriceDetailDTO().setDiscountPriceItem(
|
||||||
|
DiscountPriceItem.builder()
|
||||||
|
.discountPrice(CurrencyUtil.sub(cartSkuVO.getGoodsSku().getPrice(), cartSkuVO.getPurchasePrice()))
|
||||||
|
.promotionId(promotionSkuVO.getActivityId())
|
||||||
|
.promotionTypeEnum(PromotionTypeEnum.PINTUAN)
|
||||||
|
.skuId(cartSkuVO.getGoodsSku().getId())
|
||||||
|
.goodsId(cartSkuVO.getGoodsSku().getGoodsId())
|
||||||
|
.build()
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
@ -4,8 +4,8 @@ import cn.lili.common.enums.PromotionTypeEnum;
|
|||||||
import cn.lili.common.utils.CurrencyUtil;
|
import cn.lili.common.utils.CurrencyUtil;
|
||||||
import cn.lili.modules.order.cart.entity.dto.TradeDTO;
|
import cn.lili.modules.order.cart.entity.dto.TradeDTO;
|
||||||
import cn.lili.modules.order.cart.entity.vo.CartSkuVO;
|
import cn.lili.modules.order.cart.entity.vo.CartSkuVO;
|
||||||
|
import cn.lili.modules.order.order.entity.dto.DiscountPriceItem;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -17,7 +17,6 @@ import java.util.Map;
|
|||||||
* @author paulG
|
* @author paulG
|
||||||
* @since 2020/8/21
|
* @since 2020/8/21
|
||||||
**/
|
**/
|
||||||
@Service
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class PromotionPriceUtil {
|
public class PromotionPriceUtil {
|
||||||
|
|
||||||
@ -29,7 +28,7 @@ public class PromotionPriceUtil {
|
|||||||
* @param discountPrice 需要分发的优惠金额
|
* @param discountPrice 需要分发的优惠金额
|
||||||
* @param promotionTypeEnum 促销类型
|
* @param promotionTypeEnum 促销类型
|
||||||
*/
|
*/
|
||||||
public void recountPrice(TradeDTO tradeDTO, Map<String, Double> skuPromotionDetail, Double discountPrice, PromotionTypeEnum promotionTypeEnum) {
|
public void recountPrice(TradeDTO tradeDTO, Map<String, Double> skuPromotionDetail, Double discountPrice, PromotionTypeEnum promotionTypeEnum, String activityId) {
|
||||||
|
|
||||||
// sku 促销信息非空判定
|
// sku 促销信息非空判定
|
||||||
if (skuPromotionDetail == null || skuPromotionDetail.size() == 0) {
|
if (skuPromotionDetail == null || skuPromotionDetail.size() == 0) {
|
||||||
@ -102,6 +101,17 @@ public class PromotionPriceUtil {
|
|||||||
|
|
||||||
cartSkuVO.getPriceDetailDTO().setCouponPrice(
|
cartSkuVO.getPriceDetailDTO().setCouponPrice(
|
||||||
CurrencyUtil.add(cartSkuVO.getPriceDetailDTO().getCouponPrice(), skuDiscountPrice));
|
CurrencyUtil.add(cartSkuVO.getPriceDetailDTO().getCouponPrice(), skuDiscountPrice));
|
||||||
|
|
||||||
|
cartSkuVO.getPriceDetailDTO().addDiscountPriceItem(
|
||||||
|
DiscountPriceItem.builder()
|
||||||
|
.goodsId(cartSkuVO.getGoodsSku().getGoodsId())
|
||||||
|
.skuId(cartSkuVO.getGoodsSku().getId())
|
||||||
|
.discountPrice(skuDiscountPrice)
|
||||||
|
.promotionTypeEnum(PromotionTypeEnum.COUPON)
|
||||||
|
.promotionId(activityId)
|
||||||
|
.build()
|
||||||
|
);
|
||||||
|
|
||||||
} else if (promotionTypeEnum == PromotionTypeEnum.PLATFORM_COUPON) {
|
} else if (promotionTypeEnum == PromotionTypeEnum.PLATFORM_COUPON) {
|
||||||
|
|
||||||
cartSkuVO.getPriceDetailDTO().setSiteCouponPrice(
|
cartSkuVO.getPriceDetailDTO().setSiteCouponPrice(
|
||||||
@ -109,9 +119,32 @@ public class PromotionPriceUtil {
|
|||||||
|
|
||||||
cartSkuVO.getPriceDetailDTO().setCouponPrice(
|
cartSkuVO.getPriceDetailDTO().setCouponPrice(
|
||||||
CurrencyUtil.add(cartSkuVO.getPriceDetailDTO().getCouponPrice(), cartSkuVO.getPriceDetailDTO().getSiteCouponPrice()));
|
CurrencyUtil.add(cartSkuVO.getPriceDetailDTO().getCouponPrice(), cartSkuVO.getPriceDetailDTO().getSiteCouponPrice()));
|
||||||
|
|
||||||
|
|
||||||
|
cartSkuVO.getPriceDetailDTO().addDiscountPriceItem(
|
||||||
|
DiscountPriceItem.builder()
|
||||||
|
.goodsId(cartSkuVO.getGoodsSku().getGoodsId())
|
||||||
|
.skuId(cartSkuVO.getGoodsSku().getId())
|
||||||
|
.discountPrice(skuDiscountPrice)
|
||||||
|
.promotionTypeEnum(PromotionTypeEnum.PLATFORM_COUPON)
|
||||||
|
.promotionId(activityId)
|
||||||
|
.build()
|
||||||
|
);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
cartSkuVO.getPriceDetailDTO().setDiscountPrice(
|
cartSkuVO.getPriceDetailDTO().setDiscountPrice(
|
||||||
CurrencyUtil.add(cartSkuVO.getPriceDetailDTO().getDiscountPrice(), skuDiscountPrice));
|
CurrencyUtil.add(cartSkuVO.getPriceDetailDTO().getDiscountPrice(), skuDiscountPrice));
|
||||||
|
|
||||||
|
//目前剩余的只有满减金额活动。后续如果需要调整,这里建议传递活动类型进来
|
||||||
|
cartSkuVO.getPriceDetailDTO().addDiscountPriceItem(
|
||||||
|
DiscountPriceItem.builder()
|
||||||
|
.goodsId(cartSkuVO.getGoodsSku().getGoodsId())
|
||||||
|
.skuId(cartSkuVO.getGoodsSku().getId())
|
||||||
|
.discountPrice(skuDiscountPrice)
|
||||||
|
.promotionTypeEnum(PromotionTypeEnum.FULL_DISCOUNT)
|
||||||
|
.promotionId(activityId)
|
||||||
|
.build()
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package cn.lili.modules.order.order.entity.dto;
|
|||||||
|
|
||||||
import cn.lili.common.enums.PromotionTypeEnum;
|
import cn.lili.common.enums.PromotionTypeEnum;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -12,6 +13,7 @@ import lombok.Data;
|
|||||||
* @Description:
|
* @Description:
|
||||||
* @since 2022/12/23 14:52
|
* @since 2022/12/23 14:52
|
||||||
*/
|
*/
|
||||||
|
@Builder
|
||||||
@Data
|
@Data
|
||||||
public class DiscountPriceItem {
|
public class DiscountPriceItem {
|
||||||
|
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
package cn.lili.modules.order.order.entity.dto;
|
package cn.lili.modules.order.order.entity.dto;
|
||||||
|
|
||||||
|
|
||||||
|
import cn.hutool.json.JSONUtil;
|
||||||
import cn.lili.common.utils.CurrencyUtil;
|
import cn.lili.common.utils.CurrencyUtil;
|
||||||
|
import cn.lili.common.utils.StringUtils;
|
||||||
import cn.lili.modules.promotion.entity.vos.PromotionSkuVO;
|
import cn.lili.modules.promotion.entity.vos.PromotionSkuVO;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@ -42,6 +44,9 @@ public class PriceDetailDTO implements Serializable {
|
|||||||
@ApiModelProperty(value = "优惠金额")
|
@ApiModelProperty(value = "优惠金额")
|
||||||
private Double discountPrice;
|
private Double discountPrice;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @See List<DiscountPriceItem>
|
||||||
|
*/
|
||||||
@ApiModelProperty(value = "优惠详情")
|
@ApiModelProperty(value = "优惠详情")
|
||||||
private String discountPriceDetail;
|
private String discountPriceDetail;
|
||||||
|
|
||||||
@ -104,6 +109,29 @@ public class PriceDetailDTO implements Serializable {
|
|||||||
private List<PromotionSkuVO> joinPromotion;
|
private List<PromotionSkuVO> joinPromotion;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置促销详情
|
||||||
|
*
|
||||||
|
* @param discountPriceItem 促销信息
|
||||||
|
*/
|
||||||
|
public void setDiscountPriceItem(DiscountPriceItem discountPriceItem) {
|
||||||
|
List<DiscountPriceItem> discountPriceItems = new ArrayList<>();
|
||||||
|
this.discountPriceDetail = JSONUtil.toJsonStr(discountPriceItems);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置促销详情
|
||||||
|
*
|
||||||
|
* @param discountPriceItem 促销信息
|
||||||
|
*/
|
||||||
|
public void addDiscountPriceItem(DiscountPriceItem discountPriceItem) {
|
||||||
|
List<DiscountPriceItem> discountPriceItems = StringUtils.isEmpty(this.discountPriceDetail) ?
|
||||||
|
new ArrayList<>() : JSONUtil.toList(this.discountPriceDetail, DiscountPriceItem.class);
|
||||||
|
|
||||||
|
this.discountPriceDetail = JSONUtil.toJsonStr(discountPriceItems.add(discountPriceItem));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public Double getOriginalPrice() {
|
public Double getOriginalPrice() {
|
||||||
if (originalPrice == 0D) {
|
if (originalPrice == 0D) {
|
||||||
return flowPrice;
|
return flowPrice;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user