结算页优惠券金额错误问题处理。

购物车相关金额渲染代码优化
This commit is contained in:
Chopper 2021-08-13 18:18:01 +08:00
parent 6c95679ad2
commit db56984cf3
16 changed files with 341 additions and 135 deletions

View File

@ -6,13 +6,15 @@ package cn.lili.modules.order.cart.entity.enums;
public enum RenderStepEnums {
CHECK_DATA("校验商品"),
CHECKED_FILTER("选择商品过滤"),
CART_SN("交易编号创建"),
COUPON("优惠券价格渲染"),
SKU_FREIGHT("运费计算"),
SKU_PROMOTION("商品促销计算"),
FULL_DISCOUNT("满减计算"),
CART_PRICE("购物车金额计算"),
DISTRIBUTION("分销佣金计算"),
FULL_DISCOUNT("满减计算");
DISTRIBUTION("分销人员佣金计算"),
PLATFORM_COMMISSION("平台佣金");
private String distribution;

View File

@ -21,7 +21,6 @@ public interface CartRenderStep {
/**
* 渲染一笔交易
* 0- 校验商品 1- 满优惠渲染 2-渲染优惠 3-优惠券渲染 4-计算运费 5-计算价格 6-分销渲染 7-其他渲染
*
* @param tradeDTO 交易DTO
*/

View File

@ -0,0 +1,80 @@
package cn.lili.modules.order.cart.render;
import cn.lili.modules.order.cart.entity.enums.RenderStepEnums;
/**
* 价格渲染 步骤声明
*
* @author Chopper
* @version v1.0
* 2021-08-13 16:15
*/
public class RenderStepStatement {
/**
* 购物车购物车渲染
* 校验商品 满优惠渲染 渲染优惠 计算价格
*/
public static RenderStepEnums[] cartRender = {
RenderStepEnums.CHECK_DATA,
RenderStepEnums.FULL_DISCOUNT,
RenderStepEnums.SKU_PROMOTION,
RenderStepEnums.CART_PRICE};
/**
* 结算页渲染
* 过滤选择的商品 校验商品 满优惠渲染 渲染优惠
* 优惠券渲染 计算运费 计算价格
*/
public static RenderStepEnums[] checkedRender = {
RenderStepEnums.CHECKED_FILTER,
RenderStepEnums.CHECK_DATA,
RenderStepEnums.FULL_DISCOUNT,
RenderStepEnums.SKU_PROMOTION,
RenderStepEnums.COUPON,
RenderStepEnums.SKU_FREIGHT,
RenderStepEnums.CART_PRICE,
};
/**
* 单个商品优惠不需要渲染满减优惠
* 用于特殊场景例如积分商品拼团商品虚拟商品等等
*/
public static RenderStepEnums[] checkedSingleRender = {
RenderStepEnums.CHECK_DATA,
RenderStepEnums.SKU_PROMOTION,
RenderStepEnums.SKU_FREIGHT,
RenderStepEnums.CART_PRICE
};
/**
* 交易创建前渲染
* 渲染购物车 生成SN 分销人员佣金渲染 平台佣金渲染
*/
public static RenderStepEnums[] singleTradeRender = {
RenderStepEnums.CHECK_DATA,
RenderStepEnums.SKU_PROMOTION,
RenderStepEnums.SKU_FREIGHT,
RenderStepEnums.CART_PRICE,
RenderStepEnums.CART_SN,
RenderStepEnums.DISTRIBUTION,
RenderStepEnums.PLATFORM_COMMISSION
};
/**
* 交易创建前渲染
* 渲染购物车 生成SN 分销人员佣金渲染 平台佣金渲染
*/
public static RenderStepEnums[] tradeRender = {
RenderStepEnums.CHECKED_FILTER,
RenderStepEnums.CHECK_DATA,
RenderStepEnums.FULL_DISCOUNT,
RenderStepEnums.SKU_PROMOTION,
RenderStepEnums.COUPON,
RenderStepEnums.SKU_FREIGHT,
RenderStepEnums.CART_PRICE,
RenderStepEnums.CART_SN,
RenderStepEnums.DISTRIBUTION,
RenderStepEnums.PLATFORM_COMMISSION
};
}

View File

@ -3,8 +3,6 @@ package cn.lili.modules.order.cart.render;
import cn.lili.modules.order.cart.entity.dto.TradeDTO;
import cn.lili.modules.order.cart.entity.enums.CartTypeEnum;
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.CartVO;
import cn.lili.modules.order.cart.service.CartService;
import cn.lili.modules.order.order.entity.dos.Trade;
import cn.lili.modules.order.order.service.TradeService;
@ -12,9 +10,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* 交易构造&&创建
@ -43,44 +39,6 @@ public class TradeBuilder {
private CartService cartService;
/**
* 渲染整比交易
* 校验商品 满优惠渲染 渲染优惠 优惠券渲染 计算运费 计算价格 分销渲染 订单SN初始化
*/
RenderStepEnums[] defaultRender = {
RenderStepEnums.CHECK_DATA,
RenderStepEnums.FULL_DISCOUNT,
RenderStepEnums.SKU_PROMOTION,
RenderStepEnums.COUPON,
RenderStepEnums.SKU_FREIGHT,
RenderStepEnums.CART_PRICE,
RenderStepEnums.DISTRIBUTION,
RenderStepEnums.CART_SN
};
/**
* 单个商品优惠不需要渲染满减优惠
* 用于特殊场景例如积分商品拼团商品虚拟商品等等
*/
RenderStepEnums[] singleRender = {
RenderStepEnums.CHECK_DATA,
RenderStepEnums.SKU_PROMOTION,
RenderStepEnums.SKU_FREIGHT,
RenderStepEnums.CART_PRICE,
RenderStepEnums.DISTRIBUTION,
RenderStepEnums.CART_SN};
/**
* 购物车购物车渲染
* 校验商品 满优惠渲染 渲染优惠 计算价格
*/
RenderStepEnums[] cartRender = {
RenderStepEnums.CHECK_DATA,
RenderStepEnums.FULL_DISCOUNT,
RenderStepEnums.SKU_PROMOTION,
RenderStepEnums.CART_PRICE};
/**
* 构造购物车
* 购物车与结算信息不一致的地方主要是优惠券计算和运费计算其他规则都是一致都
@ -99,73 +57,23 @@ public class TradeBuilder {
}
//按照计划进行渲染
for (RenderStepEnums step : cartRender) {
for (CartRenderStep render : cartRenderSteps) {
try {
if (render.step().equals(step)) {
render.render(tradeDTO);
}
} catch (Exception e) {
log.error("购物车{}渲染异常:", render.getClass(), e);
}
}
}
renderCartBySteps(tradeDTO, RenderStepStatement.cartRender);
return tradeDTO;
}
/**
* 构造一笔交易
* 1.从缓存中读取交易数据
* 2.从购物车列表中筛选出已选择的SKU列表存入交易中
* 3.渲染整个交易0-> 校验商品 1- 满优惠渲染 2->渲染优惠 3->优惠券渲染 4->计算运费 5->计算价格 6->分销渲染 7->其他渲染
* 4.将已选择的购物车列表存入交易中
*
* @param checkedWay 购物车类型
* @return 购物车展示信息
* 构造结算页面
*/
public TradeDTO buildTrade(CartTypeEnum checkedWay) {
public TradeDTO buildChecked(CartTypeEnum checkedWay) {
//读取对应购物车的商品信息
TradeDTO tradeDTO = cartService.readDTO(checkedWay);
//将购物车到sku未选择信息过滤
List<CartSkuVO> collect = tradeDTO.getSkuList().parallelStream().filter(i -> Boolean.TRUE.equals(i.getChecked())).collect(Collectors.toList());
tradeDTO.setSkuList(collect);
if (checkedWay.equals(CartTypeEnum.CART) || checkedWay.equals(CartTypeEnum.BUY_NOW) || checkedWay.equals(CartTypeEnum.VIRTUAL)) {
//按照计划进行渲染
for (RenderStepEnums step : defaultRender) {
for (CartRenderStep render : cartRenderSteps) {
try {
if (render.step().equals(step)) {
render.render(tradeDTO);
}
} catch (Exception e) {
log.error("购物车{}渲染异常:", render.getClass(), e);
}
}
}
//需要对购物车渲染
if (isSingle(checkedWay)) {
renderCartBySteps(tradeDTO, RenderStepStatement.checkedRender);
} else {
for (RenderStepEnums step : singleRender) {
for (CartRenderStep render : cartRenderSteps) {
try {
if (render.step().equals(step)) {
render.render(tradeDTO);
}
} catch (Exception e) {
log.error("购物车{}渲染异常:", render.getClass(), e);
}
}
}
renderCartBySteps(tradeDTO, RenderStepStatement.checkedSingleRender);
}
//购物车信息接受
List<CartVO> cartVOList = new ArrayList<>();
//循环购物车信息
for (CartVO cartVO : tradeDTO.getCartList()) {
//如果商品选中则加入到对应购物车
cartVO.setSkuList(cartVO.getSkuList().stream().filter(j -> Boolean.TRUE.equals(j.getChecked())).collect(Collectors.toList()));
cartVOList.add(cartVO);
}
tradeDTO.setCartList(cartVOList);
return tradeDTO;
}
@ -178,7 +86,47 @@ public class TradeBuilder {
* @return 交易信息
*/
public Trade createTrade(CartTypeEnum checkedWay) {
TradeDTO tradeDTO = this.buildTrade(checkedWay);
//读取对应购物车的商品信息
TradeDTO tradeDTO = cartService.readDTO(checkedWay);
//需要对购物车渲染
if (isSingle(checkedWay)) {
renderCartBySteps(tradeDTO, RenderStepStatement.singleTradeRender);
} else {
renderCartBySteps(tradeDTO, RenderStepStatement.tradeRender);
}
return tradeService.createTrade(tradeDTO);
}
/**
* 是否为单品渲染
*
* @param checkedWay 购物车类型
* @return 返回是否单品
*/
private boolean isSingle(CartTypeEnum checkedWay) {
return (checkedWay.equals(CartTypeEnum.CART) || checkedWay.equals(CartTypeEnum.BUY_NOW) || checkedWay.equals(CartTypeEnum.VIRTUAL));
}
/**
* 根据渲染步骤渲染购物车信息
*
* @param tradeDTO 交易DTO
* @param defaultRender 渲染枚举
*/
private void renderCartBySteps(TradeDTO tradeDTO, RenderStepEnums[] defaultRender) {
for (RenderStepEnums step : defaultRender) {
for (CartRenderStep render : cartRenderSteps) {
try {
if (render.step().equals(step)) {
render.render(tradeDTO);
}
} catch (Exception e) {
log.error("购物车{}渲染异常:", render.getClass(), e);
}
}
}
}
}

View File

@ -15,7 +15,6 @@ import cn.lili.modules.promotion.entity.vos.PointsGoodsVO;
import cn.lili.modules.promotion.service.KanjiaActivityGoodsService;
import cn.lili.modules.promotion.service.PointsGoodsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
@ -29,7 +28,6 @@ import java.util.Map;
* @author Chopper
* @see CartVO
*/
@Order(5)
@Service
public class CartPriceRender implements CartRenderStep {

View File

@ -14,7 +14,6 @@ import org.springframework.stereotype.Service;
* @author Chopper
* @since 2020-07-02 14:47
*/
@Order(7)
@Service
public class CartSnRender implements CartRenderStep {

View File

@ -40,7 +40,6 @@ import java.util.stream.Collectors;
* @author Chopper
* @since 2020-07-02 14:47
*/
@Order(0)
@Service
public class CheckDataRender implements CartRenderStep {

View File

@ -0,0 +1,46 @@
package cn.lili.modules.order.cart.render.impl;
import cn.lili.modules.order.cart.entity.dto.TradeDTO;
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.CartVO;
import cn.lili.modules.order.cart.render.CartRenderStep;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* 佣金计算
*
* @author Chopper
* @see CartVO
*/
@Service
public class CheckedFilterRender implements CartRenderStep {
@Override
public RenderStepEnums step() {
return RenderStepEnums.CHECKED_FILTER;
}
@Override
public void render(TradeDTO tradeDTO) {
//将购物车到sku未选择信息过滤
List<CartSkuVO> collect = tradeDTO.getSkuList().parallelStream().filter(i -> Boolean.TRUE.equals(i.getChecked())).collect(Collectors.toList());
tradeDTO.setSkuList(collect);
//购物车信息过滤
List<CartVO> cartVOList = new ArrayList<>();
//循环购物车信息
for (CartVO cartVO : tradeDTO.getCartList()) {
//如果商品选中则加入到对应购物车
cartVO.setSkuList(cartVO.getSkuList().stream().filter(j -> Boolean.TRUE.equals(j.getChecked())).collect(Collectors.toList()));
cartVOList.add(cartVO);
}
tradeDTO.setCartList(cartVOList);
}
}

View File

@ -0,0 +1,118 @@
package cn.lili.modules.order.cart.render.impl;
import cn.hutool.core.util.StrUtil;
import cn.lili.modules.goods.service.CategoryService;
import cn.lili.modules.order.cart.entity.dto.TradeDTO;
import cn.lili.modules.order.cart.entity.enums.CartTypeEnum;
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.CartVO;
import cn.lili.modules.order.cart.render.CartRenderStep;
import cn.lili.modules.order.order.entity.dto.PriceDetailDTO;
import cn.lili.modules.promotion.entity.dto.KanjiaActivityGoodsDTO;
import cn.lili.modules.promotion.entity.vos.PointsGoodsVO;
import cn.lili.modules.promotion.service.KanjiaActivityGoodsService;
import cn.lili.modules.promotion.service.PointsGoodsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* 佣金计算
*
* @author Chopper
* @see CartVO
*/
@Service
public class CommissionRender implements CartRenderStep {
/**
* 商品分类
*/
@Autowired
private CategoryService categoryService;
/**
* 积分商品
*/
@Autowired
private PointsGoodsService pointsGoodsService;
/**
* 砍价商品
*/
@Autowired
private KanjiaActivityGoodsService kanjiaActivityGoodsService;
@Override
public RenderStepEnums step() {
return RenderStepEnums.PLATFORM_COMMISSION;
}
@Override
public void render(TradeDTO tradeDTO) {
buildCartPrice(tradeDTO);
buildTradePrice(tradeDTO);
}
/**
* 购物车佣金计算
*
* @param tradeDTO 购物车展示信息
*/
void buildCartPrice(TradeDTO tradeDTO) {
//购物车列表
List<CartVO> cartVOS = tradeDTO.getCartList();
//计算购物车价格
for (CartVO cart : cartVOS) {
//累加价格
List<PriceDetailDTO> priceDetailDTOS = new ArrayList<>();
for (CartSkuVO cartSkuVO : cart.getSkuList()) {
PriceDetailDTO priceDetailDTO = cartSkuVO.getPriceDetailDTO();
//平台佣金根据分类计算
String categoryId = cartSkuVO.getGoodsSku().getCategoryPath()
.substring(cartSkuVO.getGoodsSku().getCategoryPath().lastIndexOf(",") + 1);
if (StrUtil.isNotEmpty(categoryId)) {
Double commissionRate = categoryService.getById(categoryId).getCommissionRate();
priceDetailDTO.setCommission(commissionRate);
}
//如果积分订单 积分订单单独操作订单结算金额和商家结算字段
if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.POINTS)) {
PointsGoodsVO pointsGoodsVO = pointsGoodsService.getPointsGoodsVOByMongo(cartSkuVO.getGoodsSku().getId());
priceDetailDTO.setBillPrice(pointsGoodsVO.getSettlementPrice());
priceDetailDTO.setSettlementPrice(pointsGoodsVO.getSettlementPrice());
}
//如果砍价订单 计算金额单独操作订单结算金额和商家结算字段
else if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.KANJIA)) {
KanjiaActivityGoodsDTO kanjiaActivityGoodsDTO = kanjiaActivityGoodsService.getKanJiaGoodsBySku(cartSkuVO.getGoodsSku().getId());
priceDetailDTO.setBillPrice(kanjiaActivityGoodsDTO.getSettlementPrice());
priceDetailDTO.setSettlementPrice(kanjiaActivityGoodsDTO.getSettlementPrice());
}
priceDetailDTOS.add(priceDetailDTO);
}
cart.getPriceDetailDTO().accumulationPriceDTO(priceDetailDTOS);
}
}
/**
* 再次总计金额
*
* @param tradeDTO 购物车展示信息
*/
void buildTradePrice(TradeDTO tradeDTO) {
//购物车列表
List<CartVO> cartVOS = tradeDTO.getCartList();
List<PriceDetailDTO> priceDetailDTOS = new ArrayList<>();
for (CartVO cart : cartVOS) {
priceDetailDTOS.add(cart.getPriceDetailDTO());
}
tradeDTO.getPriceDetailDTO().accumulationPriceDTO(priceDetailDTOS);
}
}

View File

@ -18,7 +18,6 @@ import java.util.Map;
* @author Chopper
* @since 2020-07-02 14:47
*/
@Order(3)
@Service
public class CouponRender implements CartRenderStep {

View File

@ -18,7 +18,6 @@ import org.springframework.stereotype.Service;
* @since 2020-07-02 14:47
*/
@Service
@Order(6)
public class DistributionPriceRender implements CartRenderStep {
/**
* 缓存
@ -53,7 +52,6 @@ public class DistributionPriceRender implements CartRenderStep {
if(cartSkuVO.getDistributionGoods()!=null){
cartSkuVO.getPriceDetailDTO().setDistributionCommission(CurrencyUtil.mul(cartSkuVO.getNum(), cartSkuVO.getDistributionGoods().getCommission()));
}
}
}

View File

@ -24,7 +24,6 @@ import java.util.stream.Collectors;
* @since 2020-04-01 10:27 上午
*/
@Service
@Order(1)
public class FullDiscountRender implements CartRenderStep {
@Autowired

View File

@ -25,7 +25,6 @@ import java.util.List;
* @author Chopper
* @since 2020-07-02 14:47
*/
@Order(4)
@Service
public class SkuFreightRender implements CartRenderStep {

View File

@ -20,7 +20,6 @@ import cn.lili.modules.promotion.entity.dto.StorePromotionPriceDTO;
import cn.lili.modules.promotion.service.PromotionGoodsService;
import cn.lili.modules.promotion.service.PromotionPriceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
@ -36,11 +35,9 @@ import java.util.stream.Collectors;
* @since 2020-07-02 14:47
*/
@Service
@Order(2)
public class SkuPromotionRender implements CartRenderStep {
/**
* 促销计算
*/
@ -108,7 +105,7 @@ public class SkuPromotionRender implements CartRenderStep {
//店铺优惠券集合
List<MemberCoupon> memberCoupons = this.getMemberCoupons(tradeDTO);
//调用价格计算模块返回价格计算结果
PromotionPriceDTO promotionPrice = promotionPriceService.calculationPromotionPrice(promotionPriceParamList, memberCoupons,tradeDTO.getCartTypeEnum());
PromotionPriceDTO promotionPrice = promotionPriceService.calculationPromotionPrice(promotionPriceParamList, memberCoupons, tradeDTO.getCartTypeEnum());
// 分配计算后的促销
this.distributionPromotionPrice(tradeDTO, promotionPrice);
}
@ -174,27 +171,32 @@ public class SkuPromotionRender implements CartRenderStep {
*/
private void distributionPromotionPrice(TradeDTO tradeDTO, PromotionPriceDTO promotionPrice) {
//根据店铺分配店铺价格计算结果
for (CartVO cartVO : tradeDTO.getCartList()) {
//根据店铺分配店铺价格计算结果
Optional<StorePromotionPriceDTO> storePromotionPriceDTOOptional = promotionPrice.getStorePromotionPriceList().parallelStream().filter(i -> i.getStoreId().equals(cartVO.getStoreId())).findAny();
//根据店铺id分组
Optional<StorePromotionPriceDTO> storePromotionPriceDTOOptional =
promotionPrice.getStorePromotionPriceList().parallelStream().filter(i -> i.getStoreId().equals(cartVO.getStoreId())).findAny();
//参数有效 则分发
if (storePromotionPriceDTOOptional.isPresent()) {
StorePromotionPriceDTO storePromotionPriceDTO = storePromotionPriceDTOOptional.get();
//根据商品分配商品结果计算结果
this.distributionSkuPromotionPrice(cartVO.getSkuList(), storePromotionPriceDTO);
PriceDetailDTO sSpd = new PriceDetailDTO();
PriceDetailVO sPd = new PriceDetailVO();
sSpd.setGoodsPrice(storePromotionPriceDTO.getTotalOriginPrice());
sSpd.setDiscountPrice(storePromotionPriceDTO.getTotalDiscountPrice());
sSpd.setCouponPrice(storePromotionPriceDTO.getTotalCouponPrice());
sSpd.setPayPoint(storePromotionPriceDTO.getTotalPoints().intValue());
PriceDetailDTO priceDetailDTO = new PriceDetailDTO();
PriceDetailVO priceDetailVO = new PriceDetailVO();
priceDetailDTO.setGoodsPrice(storePromotionPriceDTO.getTotalOriginPrice());
priceDetailDTO.setDiscountPrice(storePromotionPriceDTO.getTotalDiscountPrice());
priceDetailDTO.setCouponPrice(storePromotionPriceDTO.getTotalCouponPrice());
priceDetailDTO.setPayPoint(storePromotionPriceDTO.getTotalPoints().intValue());
sPd.setOriginalPrice(storePromotionPriceDTO.getTotalOriginPrice());
sPd.setFinalePrice(storePromotionPriceDTO.getTotalFinalePrice());
sPd.setDiscountPrice(storePromotionPriceDTO.getTotalDiscountPrice());
sPd.setPayPoint(storePromotionPriceDTO.getTotalPoints().intValue());
cartVO.setPriceDetailDTO(sSpd);
cartVO.setPriceDetailVO(sPd);
priceDetailVO.setOriginalPrice(storePromotionPriceDTO.getTotalOriginPrice());
priceDetailVO.setFinalePrice(storePromotionPriceDTO.getTotalFinalePrice());
priceDetailVO.setDiscountPrice(storePromotionPriceDTO.getTotalDiscountPrice());
priceDetailVO.setPayPoint(storePromotionPriceDTO.getTotalPoints().intValue());
cartVO.setPriceDetailDTO(priceDetailDTO);
cartVO.setPriceDetailVO(priceDetailVO);
cartVO.setWeight(storePromotionPriceDTO.getTotalWeight());
}
}

View File

@ -324,7 +324,7 @@ public class CartServiceImpl implements CartService {
@Override
public TradeDTO getCheckedTradeDTO(CartTypeEnum way) {
return tradeBuilder.buildTrade(way);
return tradeBuilder.buildChecked(way);
}
/**

View File

@ -99,6 +99,9 @@ public class PriceDetailDTO implements Serializable {
if (originalPrice == 0D) {
return flowPrice;
}
if (originalPrice < 0) {
return 0d;
}
return originalPrice;
}
@ -160,9 +163,14 @@ public class PriceDetailDTO implements Serializable {
}
public void countBill() {
//如果结算信息包含结算金额则最终结算金额直接等于该交易 平台与商户的结算金额
if (settlementPrice > 0) {
billPrice = settlementPrice;
}
//如果是普通订单最终结算金额 = flowPrice - platFormCommission - distributionCommission
billPrice = CurrencyUtil.sub(CurrencyUtil.sub(flowPrice, platFormCommission), distributionCommission);
}
/**
@ -174,11 +182,13 @@ public class PriceDetailDTO implements Serializable {
public void accumulationPriceDTO(List<PriceDetailDTO> priceDetailDTOS) {
double originalPrice = 0d;
double goodsPrice = 0d;
double freightPrice = 0d;
int payPoint = 0;
double discountPrice = 0d;
double couponPrice = 0d;
double distributionCommission = 0d;
double platFormCommission = 0d;
@ -191,17 +201,21 @@ public class PriceDetailDTO implements Serializable {
double flowPrice = 0d;
double billPrice = 0d;
double settlementPrice = 0d;
for (PriceDetailDTO price : priceDetailDTOS) {
originalPrice = CurrencyUtil.add(originalPrice, price.getOriginalPrice());
goodsPrice = CurrencyUtil.add(goodsPrice, price.getGoodsPrice());
freightPrice = CurrencyUtil.add(freightPrice, price.getFreightPrice());
payPoint = payPoint + price.getPayPoint();
discountPrice = CurrencyUtil.add(discountPrice, price.getDiscountPrice());
couponPrice = CurrencyUtil.add(couponPrice, price.getCouponPrice());
updatePrice = CurrencyUtil.add(updatePrice, price.getUpdatePrice());
distributionCommission = CurrencyUtil.add(distributionCommission, price.getDistributionCommission());
platFormCommission = CurrencyUtil.add(platFormCommission, price.getPlatFormCommission());
@ -211,14 +225,19 @@ public class PriceDetailDTO implements Serializable {
flowPrice = CurrencyUtil.add(flowPrice, price.getFlowPrice());
billPrice = CurrencyUtil.add(billPrice, price.getBillPrice());
settlementPrice = CurrencyUtil.add(settlementPrice, price.getSettlementPrice());
}
this.setOriginalPrice(originalPrice);
this.setGoodsPrice(goodsPrice);
this.setFreightPrice(freightPrice);
this.setPayPoint(payPoint);
this.setUpdatePrice(updatePrice);
this.setCouponPrice(couponPrice);
this.setDiscountPrice(discountPrice);
this.setUpdatePrice(updatePrice);
this.setDistributionCommission(distributionCommission);
this.setPlatFormCommission(platFormCommission);
@ -228,6 +247,7 @@ public class PriceDetailDTO implements Serializable {
this.setFlowPrice(flowPrice);
this.setBillPrice(billPrice);
this.setSettlementPrice(settlementPrice);
}
/**