Commit 975fba9c by xiaoer.li@freemud.com

fix:促销分摊

parent bba6fbd5
...@@ -8,6 +8,7 @@ import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto; ...@@ -8,6 +8,7 @@ import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.enums.GoodsTypeEnum; import cn.freemud.enums.GoodsTypeEnum;
import cn.freemud.service.IPromotionService; import cn.freemud.service.IPromotionService;
import lombok.Data;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -42,17 +43,15 @@ public class MaterialPromotionService implements IPromotionService { ...@@ -42,17 +43,15 @@ public class MaterialPromotionService implements IPromotionService {
*/ */
@Override @Override
public void updateShoppingCartGoodsDiscount(CouponPromotionVO couponPromotionVO, ActivityQueryDto activityQueryDto, ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, List<CartGoods> cartGoodsList, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, UserLoginInfoDto userLoginInfoDto, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) { public void updateShoppingCartGoodsDiscount(CouponPromotionVO couponPromotionVO, ActivityQueryDto activityQueryDto, ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, List<CartGoods> cartGoodsList, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, UserLoginInfoDto userLoginInfoDto, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) {
HashMap<String, ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods.Material> map = getApportionGoodsDetail(calculationDiscountResult); HashMap<String, MaterialApportion> map = getApportionGoodsDetail(calculationDiscountResult);
if (map != null && !map.isEmpty()) { if (map != null && !map.isEmpty()) {
for (CartGoods cartGoods : cartGoodsList) { for (CartGoods cartGoods : cartGoodsList) {
if (CollectionUtils.isEmpty(cartGoods.getProductMaterialList())) continue; if (CollectionUtils.isEmpty(cartGoods.getProductMaterialList())) continue;
for (CartGoods.MaterialGoods materialGoods : cartGoods.getProductMaterialList()) { for (CartGoods.MaterialGoods materialGoods : cartGoods.getProductMaterialList()) {
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods.Material material = map.get(materialGoods.getSpuId()); MaterialApportion apportion = map.get(materialGoods.getSpuId());
//设置小料行单价和行总价 //设置小料行单价和行总价
if (material.getNowPrice() > 0) { materialGoods.setFinalPrice(apportion.getSalePrice());
materialGoods.setFinalPrice(material.getNowPrice()); materialGoods.setAmount(apportion.getAmount());
materialGoods.setAmount(material.getNowPrice() * cartGoods.getQty());
}
} }
} }
} }
...@@ -63,7 +62,7 @@ public class MaterialPromotionService implements IPromotionService { ...@@ -63,7 +62,7 @@ public class MaterialPromotionService implements IPromotionService {
materialAmount = 0L; materialAmount = 0L;
materialOriginal = 0L; materialOriginal = 0L;
for (CartGoods.MaterialGoods materialGoods : cartGoods.getProductMaterialList()) { for (CartGoods.MaterialGoods materialGoods : cartGoods.getProductMaterialList()) {
materialAmount += materialGoods.getFinalPrice() * cartGoods.getQty(); materialAmount += materialGoods.getAmount();
materialOriginal += materialGoods.getOriginalPrice() * cartGoods.getQty(); materialOriginal += materialGoods.getOriginalPrice() * cartGoods.getQty();
} }
//设置商品行现总价\行原价 商品总价+小料商品总价 //设置商品行现总价\行原价 商品总价+小料商品总价
...@@ -83,22 +82,22 @@ public class MaterialPromotionService implements IPromotionService { ...@@ -83,22 +82,22 @@ public class MaterialPromotionService implements IPromotionService {
*/ */
@Override @Override
public void updateShoppingCartGoodsApportion(ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, ShoppingCartGoodsDto shoppingCartGoodsDto, CreateOrderVo.PremiumExchangeActivity premiumExchangeActivity, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) { public void updateShoppingCartGoodsApportion(ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, ShoppingCartGoodsDto shoppingCartGoodsDto, CreateOrderVo.PremiumExchangeActivity premiumExchangeActivity, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) {
HashMap<String, ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods.Material> map = getApportionGoodsDetail(calculationDiscountResult); HashMap<String, MaterialApportion> map = getApportionGoodsDetail(calculationDiscountResult);
if (map == null && map.isEmpty()) return; if (map == null && map.isEmpty()) return;
List<ShoppingCartGoodsDto.CartGoodsDetailDto> products = shoppingCartGoodsDto.getProducts(); List<ShoppingCartGoodsDto.CartGoodsDetailDto> products = shoppingCartGoodsDto.getProducts();
for (ShoppingCartGoodsDto.CartGoodsDetailDto product : products) { for (ShoppingCartGoodsDto.CartGoodsDetailDto product : products) {
if (CollectionUtils.isEmpty(product.getMaterialList())) continue; if (CollectionUtils.isEmpty(product.getMaterialList())) continue;
for (ShoppingCartGoodsDto.CartGoodsDetailDto.MaterialGoods materialGoods : product.getMaterialList()) { for (ShoppingCartGoodsDto.CartGoodsDetailDto.MaterialGoods materialGoods : product.getMaterialList()) {
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods.Material material = map.get(materialGoods.getSpuId()); MaterialApportion material = map.get(materialGoods.getSpuId());
if (material.getApportionAmount().intValue() == 0) continue; if (material.getApportionAmount().intValue() == 0) continue;
//设置行记录参加的活动及总优惠 //设置行记录参加的活动及总优惠
ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto(); ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto();
List<ActivityDiscountsDto> activityDiscountsDtoList = new ArrayList<>(); List<ActivityDiscountsDto> activityDiscountsDtoList = new ArrayList<>();
activityDiscountsDto.setActivityCode(material.getApportionDetails().get(0).getActivityCode()); activityDiscountsDto.setActivityCode(material.getDetails().activityCode);
activityDiscountsDto.setActivityName(material.getApportionDetails().get(0).getActivityName()); activityDiscountsDto.setActivityName(material.getDetails().activityName);
activityDiscountsDto.setActivityType(material.getApportionDetails().get(0).getActivityType()); activityDiscountsDto.setActivityType(material.getDetails().activityType);
activityDiscountsDto.setDiscountAmount(material.getApportionDetails().get(0).getActivityApportionAmount().intValue()); activityDiscountsDto.setDiscountAmount(material.getApportionAmount());
activityDiscountsDtoList.add(activityDiscountsDto); activityDiscountsDtoList.add(activityDiscountsDto);
materialGoods.setActivityDiscountsDtos(activityDiscountsDtoList); materialGoods.setActivityDiscountsDtos(activityDiscountsDtoList);
...@@ -123,12 +122,13 @@ public class MaterialPromotionService implements IPromotionService { ...@@ -123,12 +122,13 @@ public class MaterialPromotionService implements IPromotionService {
* @param calculationDiscountResult * @param calculationDiscountResult
* @return * @return
*/ */
private HashMap<String, ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods.Material> getApportionGoodsDetail(ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult) { private HashMap<String, MaterialApportion> getApportionGoodsDetail(ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult) {
// 遍历促销 // 遍历促销
if (calculationDiscountResult == null || CollectionUtils.isEmpty(calculationDiscountResult.getApportionGoods())) { if (calculationDiscountResult == null || CollectionUtils.isEmpty(calculationDiscountResult.getApportionGoods())) {
return null; return null;
} }
/*
HashMap<String, ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods.Material> hashMap = new HashMap<>(); HashMap<String, ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods.Material> hashMap = new HashMap<>();
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods apportionGood : calculationDiscountResult.getApportionGoods()) { for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods apportionGood : calculationDiscountResult.getApportionGoods()) {
if (CollectionUtils.isEmpty(apportionGood.getSmallMaterial())) continue; if (CollectionUtils.isEmpty(apportionGood.getSmallMaterial())) continue;
...@@ -137,6 +137,50 @@ public class MaterialPromotionService implements IPromotionService { ...@@ -137,6 +137,50 @@ public class MaterialPromotionService implements IPromotionService {
} }
} }
return hashMap; return hashMap;
*/
HashMap<String, MaterialApportion> mApportion = new HashMap<>();
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods apportionGood : calculationDiscountResult.getApportionGoods()) {
if (CollectionUtils.isEmpty(apportionGood.getSmallMaterial())) continue;
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods.Material material : apportionGood.getSmallMaterial()) {
if (mApportion.get(material.getGoodsId()) == null) {
MaterialApportion materialApportion = new MaterialApportion();
materialApportion.setSalePrice(material.getNowPrice());
materialApportion.setAmount(material.getNowPrice() * material.getGoodsQuantity());
materialApportion.setApportionAmount(material.getApportionAmount() * material.getGoodsQuantity());
materialApportion.setGoodsId(material.getGoodsId());
ApportionDetails apportionDetails = new ApportionDetails();
apportionDetails.setActivityCode(material.getApportionDetails().get(0).getActivityCode());
apportionDetails.setActivityName(material.getApportionDetails().get(0).getActivityName());
apportionDetails.setActivityType(material.getApportionDetails().get(0).getActivityType());
materialApportion.setDetails(apportionDetails);
mApportion.put(material.getGoodsId(), materialApportion);
continue;
}
MaterialApportion apportion = mApportion.get(material.getGoodsId());
apportion.setSalePrice(apportion.getSalePrice() + material.getNowPrice());
apportion.setAmount(apportion.getAmount() + material.getNowPrice() * material.getGoodsQuantity());
apportion.setApportionAmount(apportion.getApportionAmount() + material.getApportionAmount() * material.getGoodsQuantity());
mApportion.put(material.getGoodsId(), apportion);
}
}
return mApportion;
} }
@Data
private class MaterialApportion {
// 累计
private String goodsId;
private Long salePrice;
private Long amount;
private Integer apportionAmount;
private ApportionDetails details;
}
@Data
public class ApportionDetails {
private String activityCode;
private String activityName;
private Integer activityType;
}
} }
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