Commit 6b461566 by 周晓航

提取公共方法,移除重复代码

Signed-off-by: 周晓航 <xiaohang.zhou@freemud.com>
parent a9161f2f
...@@ -25,6 +25,10 @@ public class SubtractStockVO { ...@@ -25,6 +25,10 @@ public class SubtractStockVO {
private Integer activityType; private Integer activityType;
//商品库存扣除列表 //商品库存扣除列表
private List<SubtractStockGoodsVO> goodsStock; private List<SubtractStockGoodsVO> goodsStock;
/**
* 商品限购
*/
private List<SubtractStockGoodsVO> userLimit;
@Data @Data
public static class SubtractStockGoodsVO { public static class SubtractStockGoodsVO {
......
package cn.freemud.handle;
import cn.freemud.entities.dto.calculate.Discount;
import cn.freemud.entities.vo.ShoppingCartInfoRequestVo;
import cn.freemud.entities.vo.SubtractStockVO;
import cn.freemud.enums.ActivityTypeEnum;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/11/18 下午2:42
* @description :
*/
@Component
public class PromotionCommonMethodHandle {
/**
* 库存扣减加价购商品 要过滤掉没有换购的商品
*
* @param stocks 扣减库存
* @param shoppingCartInfoRequestVo 购物车请求信息
* @param addMoneyDiscounts 加价购活动
* @return 返回应该扣减的加价购商品库存
*/
public List<SubtractStockVO> filterSendGoodsStocks(List<SubtractStockVO> stocks, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo, List<Discount> addMoneyDiscounts) {
if (CollectionUtils.isEmpty(stocks) || CollectionUtils.isEmpty(addMoneyDiscounts)) {
return stocks;
}
List<SubtractStockVO> subtractStockVOs = stocks.stream().filter(subtractStockVO -> ActivityTypeEnum.TYPE_81.getCode().equals(subtractStockVO.getActivityType())).collect(Collectors.toList());
List<SubtractStockVO.SubtractStockGoodsVO> goodsStock = null;
if (CollectionUtils.isNotEmpty(subtractStockVOs)) {
SubtractStockVO subtractStockVO = subtractStockVOs.get(0);
goodsStock = subtractStockVO.getGoodsStock();
}
if (null == goodsStock) {
return stocks;
}
Map<String, SubtractStockVO.SubtractStockGoodsVO> mapSubstractStocks = new HashMap<>();
if (CollectionUtils.isNotEmpty(goodsStock)) {
mapSubstractStocks = goodsStock.stream().collect(Collectors.toMap(SubtractStockVO.SubtractStockGoodsVO::getGoodsId, Function.identity(), (k1, k2) -> k1));
}
//获取加价购商品
List<ShoppingCartInfoRequestVo.SendGoods> sendGoods = shoppingCartInfoRequestVo.getSendGoods();
if (CollectionUtils.isNotEmpty(sendGoods)) {
List<String> needSendGoodsId = sendGoods.stream().map(ShoppingCartInfoRequestVo.SendGoods::getGoodsId).collect(Collectors.toList());
goodsStock.clear();
for (String goodId : needSendGoodsId) {
SubtractStockVO.SubtractStockGoodsVO subtractStockGoodsVO = mapSubstractStocks.get(goodId);
if (null != mapSubstractStocks.get(goodId)) {
goodsStock.add(subtractStockGoodsVO);
}
}
} else {
return stocks.stream().filter(subtractStockVO -> !ActivityTypeEnum.TYPE_81.getCode().equals(subtractStockVO.getActivityType())).collect(Collectors.toList());
}
return stocks;
}
}
...@@ -9,6 +9,7 @@ import cn.freemud.entities.dto.calculate.*; ...@@ -9,6 +9,7 @@ import cn.freemud.entities.dto.calculate.*;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto; import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityTypeEnum; import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.handle.PromotionCommonMethodHandle;
import cn.freemud.service.IPromotionService; import cn.freemud.service.IPromotionService;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -35,6 +36,9 @@ public class DefaultPromotionService implements IPromotionService { ...@@ -35,6 +36,9 @@ public class DefaultPromotionService implements IPromotionService {
@Autowired @Autowired
private ShoppingCartConvertAdapter shoppingCartConvertAdapter; private ShoppingCartConvertAdapter shoppingCartConvertAdapter;
@Autowired
private PromotionCommonMethodHandle promotionCommonMethodHandle;
@Override @Override
public void updateShoppingCartGoodsDiscount(CouponPromotionVO couponPromotionVO, ActivityQueryDto activityQueryDto, CalculationDiscountResult calculationDiscountResult, List<CartGoods> cartGoodsList, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, UserLoginInfoDto userLoginInfoDto, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) { public void updateShoppingCartGoodsDiscount(CouponPromotionVO couponPromotionVO, ActivityQueryDto activityQueryDto, CalculationDiscountResult calculationDiscountResult, List<CartGoods> cartGoodsList, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, UserLoginInfoDto userLoginInfoDto, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) {
long totalOriginalAmount = 0L; long totalOriginalAmount = 0L;
...@@ -163,36 +167,6 @@ public class DefaultPromotionService implements IPromotionService { ...@@ -163,36 +167,6 @@ public class DefaultPromotionService implements IPromotionService {
* @return 返回应该扣减的加价购商品库存 * @return 返回应该扣减的加价购商品库存
*/ */
private List<SubtractStockVO> filterSendGoodsStocks(List<SubtractStockVO> stocks, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo, List<Discount> addMoneyDiscounts) { private List<SubtractStockVO> filterSendGoodsStocks(List<SubtractStockVO> stocks, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo, List<Discount> addMoneyDiscounts) {
if (CollectionUtils.isEmpty(stocks) || CollectionUtils.isEmpty(addMoneyDiscounts)) { return promotionCommonMethodHandle.filterSendGoodsStocks(stocks, shoppingCartInfoRequestVo, addMoneyDiscounts);
return stocks;
}
List<SubtractStockVO> subtractStockVOs = stocks.stream().filter(subtractStockVO -> ActivityTypeEnum.TYPE_81.getCode().equals(subtractStockVO.getActivityType())).collect(Collectors.toList());
List<SubtractStockVO.SubtractStockGoodsVO> goodsStock = null;
if (CollectionUtils.isNotEmpty(subtractStockVOs)) {
SubtractStockVO subtractStockVO = subtractStockVOs.get(0);
goodsStock = subtractStockVO.getGoodsStock();
}
if (null == goodsStock) {
return stocks;
}
Map<String, SubtractStockVO.SubtractStockGoodsVO> mapSubstractStocks = new HashMap<>();
if (CollectionUtils.isNotEmpty(goodsStock)) {
mapSubstractStocks = goodsStock.stream().collect(Collectors.toMap(SubtractStockVO.SubtractStockGoodsVO::getGoodsId, Function.identity(), (k1, k2) -> k1));
}
//获取加价购商品
List<ShoppingCartInfoRequestVo.SendGoods> sendGoods = shoppingCartInfoRequestVo.getSendGoods();
if (CollectionUtils.isNotEmpty(sendGoods)) {
List<String> needSendGoodsId = sendGoods.stream().map(ShoppingCartInfoRequestVo.SendGoods::getGoodsId).collect(Collectors.toList());
goodsStock.clear();
for (String goodId : needSendGoodsId) {
SubtractStockVO.SubtractStockGoodsVO subtractStockGoodsVO = mapSubstractStocks.get(goodId);
if (null != mapSubstractStocks.get(goodId)) {
goodsStock.add(subtractStockGoodsVO);
}
}
} else {
return stocks.stream().filter(subtractStockVO -> !ActivityTypeEnum.TYPE_81.getCode().equals(subtractStockVO.getActivityType())).collect(Collectors.toList());
}
return stocks;
} }
} }
...@@ -9,14 +9,17 @@ import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto; ...@@ -9,14 +9,17 @@ import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityTypeEnum; import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.enums.OrderChannelType; import cn.freemud.enums.OrderChannelType;
import cn.freemud.handle.PromotionCommonMethodHandle;
import cn.freemud.service.impl.calculate.promotion.*; import cn.freemud.service.impl.calculate.promotion.*;
import com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum; import com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.*; import java.util.ArrayList;
import java.util.function.Function; import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -48,6 +51,8 @@ public class CalculationSharingEquallyService { ...@@ -48,6 +51,8 @@ public class CalculationSharingEquallyService {
@Autowired @Autowired
private CouponSharingService promotionSharingService; private CouponSharingService promotionSharingService;
@Autowired
private PromotionCommonMethodHandle promotionCommonMethodHandle;
/** /**
* 均摊服务 * 均摊服务
* @param discountResult * @param discountResult
...@@ -242,37 +247,7 @@ public class CalculationSharingEquallyService { ...@@ -242,37 +247,7 @@ public class CalculationSharingEquallyService {
private List<SubtractStockVO> filterSendGoodsStocks(List<SubtractStockVO> stocks private List<SubtractStockVO> filterSendGoodsStocks(List<SubtractStockVO> stocks
, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo , ShoppingCartInfoRequestVo shoppingCartInfoRequestVo
, List<Discount> addMoneyDiscounts) { , List<Discount> addMoneyDiscounts) {
if (CollectionUtils.isEmpty(stocks) || CollectionUtils.isEmpty(addMoneyDiscounts)) { return promotionCommonMethodHandle.filterSendGoodsStocks(stocks, shoppingCartInfoRequestVo, addMoneyDiscounts);
return stocks;
}
List<SubtractStockVO> subtractStockVOs = stocks.stream().filter(subtractStockVO -> ActivityTypeEnum.TYPE_81.getCode().equals(subtractStockVO.getActivityType())).collect(Collectors.toList());
List<SubtractStockVO.SubtractStockGoodsVO> goodsStock = null;
if (CollectionUtils.isNotEmpty(subtractStockVOs)) {
SubtractStockVO subtractStockVO = subtractStockVOs.get(0);
goodsStock = subtractStockVO.getGoodsStock();
}
if (null == goodsStock) {
return stocks;
}
Map<String, SubtractStockVO.SubtractStockGoodsVO> mapSubstractStocks = new HashMap<>();
if (CollectionUtils.isNotEmpty(goodsStock)) {
mapSubstractStocks = goodsStock.stream().collect(Collectors.toMap(SubtractStockVO.SubtractStockGoodsVO::getGoodsId, Function.identity(), (k1, k2) -> k1));
}
//获取加价购商品
List<ShoppingCartInfoRequestVo.SendGoods> sendGoods = shoppingCartInfoRequestVo.getSendGoods();
if (CollectionUtils.isNotEmpty(sendGoods)) {
List<String> needSendGoodsId = sendGoods.stream().map(ShoppingCartInfoRequestVo.SendGoods::getGoodsId).collect(Collectors.toList());
goodsStock.clear();
for (String goodId : needSendGoodsId) {
SubtractStockVO.SubtractStockGoodsVO subtractStockGoodsVO = mapSubstractStocks.get(goodId);
if (null != mapSubstractStocks.get(goodId)) {
goodsStock.add(subtractStockGoodsVO);
}
}
} else {
return stocks.stream().filter(subtractStockVO -> !ActivityTypeEnum.TYPE_81.getCode().equals(subtractStockVO.getActivityType())).collect(Collectors.toList());
}
return stocks;
} }
} }
...@@ -13,6 +13,7 @@ import cn.freemud.entities.vo.*; ...@@ -13,6 +13,7 @@ import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityChannelEnum; import cn.freemud.enums.ActivityChannelEnum;
import cn.freemud.enums.ActivityTypeEnum; import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.enums.ResponseResult; import cn.freemud.enums.ResponseResult;
import cn.freemud.handle.PromotionCommonMethodHandle;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.CommonService; import cn.freemud.service.CommonService;
import cn.freemud.service.impl.ItemServiceImpl; import cn.freemud.service.impl.ItemServiceImpl;
...@@ -34,7 +35,6 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -34,7 +35,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.*; import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -84,6 +84,9 @@ public class CalculationServiceImpl { ...@@ -84,6 +84,9 @@ public class CalculationServiceImpl {
@Autowired @Autowired
private FreightCalculation freightCalculation; private FreightCalculation freightCalculation;
@Autowired
private PromotionCommonMethodHandle promotionCommonMethodHandle;
/** /**
* 更新购物车行优惠信息 * 更新购物车行优惠信息
*/ */
...@@ -315,37 +318,7 @@ public class CalculationServiceImpl { ...@@ -315,37 +318,7 @@ public class CalculationServiceImpl {
* @return 返回应该扣减的加价购商品库存 * @return 返回应该扣减的加价购商品库存
*/ */
private List<SubtractStockVO> filterSendGoodsStocks(List<SubtractStockVO> stocks, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo, List<Discount> addMoneyDiscounts) { private List<SubtractStockVO> filterSendGoodsStocks(List<SubtractStockVO> stocks, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo, List<Discount> addMoneyDiscounts) {
if (CollectionUtils.isEmpty(stocks) || CollectionUtils.isEmpty(addMoneyDiscounts)) { return promotionCommonMethodHandle.filterSendGoodsStocks(stocks, shoppingCartInfoRequestVo, addMoneyDiscounts);
return stocks;
}
List<SubtractStockVO> subtractStockVOs = stocks.stream().filter(subtractStockVO -> ActivityTypeEnum.TYPE_81.getCode().equals(subtractStockVO.getActivityType())).collect(Collectors.toList());
List<SubtractStockVO.SubtractStockGoodsVO> goodsStock = null;
if (CollectionUtils.isNotEmpty(subtractStockVOs)) {
SubtractStockVO subtractStockVO = subtractStockVOs.get(0);
goodsStock = subtractStockVO.getGoodsStock();
}
if (null == goodsStock) {
return stocks;
}
Map<String, SubtractStockVO.SubtractStockGoodsVO> mapSubstractStocks = new HashMap<>();
if (CollectionUtils.isNotEmpty(goodsStock)) {
mapSubstractStocks = goodsStock.stream().collect(Collectors.toMap(SubtractStockVO.SubtractStockGoodsVO::getGoodsId, Function.identity(), (k1, k2) -> k1));
}
//获取加价购商品
List<ShoppingCartInfoRequestVo.SendGoods> sendGoods = shoppingCartInfoRequestVo.getSendGoods();
if (CollectionUtils.isNotEmpty(sendGoods)) {
List<String> needSendGoodsId = sendGoods.stream().map(ShoppingCartInfoRequestVo.SendGoods::getGoodsId).collect(Collectors.toList());
goodsStock.clear();
for (String goodId : needSendGoodsId) {
SubtractStockVO.SubtractStockGoodsVO subtractStockGoodsVO = mapSubstractStocks.get(goodId);
if (null != mapSubstractStocks.get(goodId)) {
goodsStock.add(subtractStockGoodsVO);
}
}
} else {
return stocks.stream().filter(subtractStockVO -> !ActivityTypeEnum.TYPE_81.getCode().equals(subtractStockVO.getActivityType())).collect(Collectors.toList());
}
return stocks;
} }
......
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