商品价格DTO参与活动问题处理

This commit is contained in:
Chopper 2021-08-28 03:42:06 +08:00
parent 20f1d58386
commit 07fae7a531
6 changed files with 61 additions and 15 deletions

View File

@ -57,9 +57,6 @@ public class CartSkuVO extends CartBase implements Serializable {
@ApiModelProperty(value = "是否免运费")
private Boolean isFreeFreight;
@ApiModelProperty(value = "积分购买 积分数量")
private Long point;
@ApiModelProperty(value = "是否失效 ")
private Boolean invalid;
@ -79,6 +76,9 @@ public class CartSkuVO extends CartBase implements Serializable {
@ApiModelProperty(value = "积分兑换ID")
private String pointsId;
@ApiModelProperty(value = "积分购买 积分数量")
private Long point;
@ApiModelProperty(value = "可参与的单品活动")
private List<PromotionGoods> promotions;

View File

@ -1,5 +1,6 @@
package cn.lili.modules.order.cart.render.impl;
import cn.lili.common.enums.PromotionTypeEnum;
import cn.lili.common.security.context.UserContext;
import cn.lili.common.utils.CurrencyUtil;
import cn.lili.modules.order.cart.entity.dto.TradeDTO;
@ -9,6 +10,7 @@ import cn.lili.modules.order.cart.entity.vo.CartVO;
import cn.lili.modules.order.cart.render.CartRenderStep;
import cn.lili.modules.order.order.entity.dto.PriceDetailDTO;
import cn.lili.modules.promotion.entity.enums.KanJiaStatusEnum;
import cn.lili.modules.promotion.entity.vos.PromotionSkuVO;
import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivitySearchParams;
import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivityVO;
import cn.lili.modules.promotion.service.KanjiaActivityService;
@ -76,16 +78,18 @@ public class SkuPromotionRender implements CartRenderStep {
switch (tradeDTO.getCartTypeEnum()) {
//这里是双重循环但是实际积分购买或者是砍价购买时购物车只有一个商品所以没有循环操作数据库或者其他的问题
case POINTS:
//处理积分商品购买
for (CartVO cartVO : tradeDTO.getCartList()) {
for (CartSkuVO cartSkuVO : cartVO.getSkuList()) {
cartSkuVO.getPriceDetailDTO().setPayPoint(cartSkuVO.getPoint());
PromotionSkuVO promotionSkuVO = new PromotionSkuVO(PromotionTypeEnum.PINTUAN.name(), cartSkuVO.getPointsId());
cartSkuVO.getPriceDetailDTO().getJoinPromotion().add(promotionSkuVO);
}
}
return;
case KANJIA:
for (CartVO cartVO : tradeDTO.getCartList()) {
for (CartSkuVO cartSkuVO : cartVO.getSkuList()) {
@ -101,11 +105,20 @@ public class SkuPromotionRender implements CartRenderStep {
cartSkuVO.setSubTotal(kanjiaActivityVO.getPurchasePrice());
cartSkuVO.getPriceDetailDTO().setGoodsPrice(kanjiaActivityVO.getPurchasePrice());
}
PromotionSkuVO promotionSkuVO = new PromotionSkuVO(PromotionTypeEnum.KANJIA.name(), cartSkuVO.getKanjiaId());
cartSkuVO.getPriceDetailDTO().getJoinPromotion().add(promotionSkuVO);
}
}
return;
case PINTUAN:
for (CartVO cartVO : tradeDTO.getCartList()) {
for (CartSkuVO cartSkuVO : cartVO.getSkuList()) {
PromotionSkuVO promotionSkuVO = new PromotionSkuVO(PromotionTypeEnum.PINTUAN.name(), cartSkuVO.getPintuanId());
cartSkuVO.getPriceDetailDTO().getJoinPromotion().add(promotionSkuVO);
}
}
return;
case CART:
case BUY_NOW:
case VIRTUAL:

View File

@ -730,6 +730,7 @@ public class CartServiceImpl implements CartService {
throw new ServiceException(ResultCode.KANJIA_ACTIVITY_NOT_PASS_ERROR);
}
//砍价商品默认一件货物
cartSkuVO.setKanjiaId(kanjiaActivity.getId());
cartSkuVO.setNum(1);
}
@ -745,6 +746,7 @@ public class CartServiceImpl implements CartService {
if (pointsGoodsVO != null) {
cartSkuVO.setPoint(pointsGoodsVO.getPoints());
cartSkuVO.setPurchasePrice(0D);
cartSkuVO.setPointsId(pointsGoodsVO.getId());
}
}
}

View File

@ -2,17 +2,17 @@ package cn.lili.modules.order.order.entity.dos;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.json.JSONUtil;
import cn.lili.mybatis.BaseEntity;
import cn.lili.common.utils.BeanUtil;
import cn.lili.common.utils.SnowFlake;
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.CartVO;
import cn.lili.modules.order.order.entity.dto.PriceDetailDTO;
import cn.lili.modules.order.order.entity.enums.CommentStatusEnum;
import cn.lili.modules.order.order.entity.enums.OrderComplaintStatusEnum;
import cn.lili.modules.order.order.entity.enums.OrderItemAfterSaleStatusEnum;
import cn.lili.modules.promotion.entity.dto.BasePromotion;
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.CartVO;
import cn.lili.modules.promotion.entity.vos.PromotionSkuVO;
import cn.lili.mybatis.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ -126,8 +126,8 @@ public class OrderItem extends BaseEntity {
BeanUtil.copyProperties(cartSkuVO, this);
this.setId(oldId);
if (cartSkuVO.getPriceDetailDTO().getJoinPromotion() != null && !cartSkuVO.getPriceDetailDTO().getJoinPromotion().isEmpty()) {
this.setPromotionType(CollUtil.join(cartSkuVO.getPriceDetailDTO().getJoinPromotion().stream().map(BasePromotion::getPromotionName).collect(Collectors.toList()), ","));
this.setPromotionId(CollUtil.join(cartSkuVO.getPriceDetailDTO().getJoinPromotion().stream().map(BasePromotion::getId).collect(Collectors.toList()), ","));
this.setPromotionType(CollUtil.join(cartSkuVO.getPriceDetailDTO().getJoinPromotion().stream().map(PromotionSkuVO::getPromotionType).collect(Collectors.toList()), ","));
this.setPromotionId(CollUtil.join(cartSkuVO.getPriceDetailDTO().getJoinPromotion().stream().map(PromotionSkuVO::getActivityId).collect(Collectors.toList()), ","));
}
this.setAfterSaleStatus(OrderItemAfterSaleStatusEnum.NEW.name());
this.setCommentStatus(CommentStatusEnum.NEW.name());

View File

@ -2,7 +2,7 @@ package cn.lili.modules.order.order.entity.dto;
import cn.lili.common.utils.CurrencyUtil;
import cn.lili.modules.promotion.entity.dto.BasePromotion;
import cn.lili.modules.promotion.entity.vos.PromotionSkuVO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -95,7 +95,7 @@ public class PriceDetailDTO implements Serializable {
* 参与的促销活动
*/
@ApiModelProperty(value = "参与的促销活动")
private List<BasePromotion> joinPromotion;
private List<PromotionSkuVO> joinPromotion;
public Double getOriginalPrice() {

View File

@ -0,0 +1,31 @@
package cn.lili.modules.promotion.entity.vos;
import cn.lili.common.enums.PromotionTypeEnum;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 促销skuVO
*
* @author Chopper
* @version v1.0
* 2021-08-28 03:24
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class PromotionSkuVO {
/**
* 促销类型
* @see PromotionTypeEnum
*/
private String promotionType;
/**
* 促销活动
*/
private String activityId;
}