Commit 85ba6314 by 周晓航

优化NPE

parent e60f6782
...@@ -1062,7 +1062,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1062,7 +1062,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo = goodsList.getResult(); ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo = goodsList.getResult();
// fisherman -> 储值卡互斥需求 发现bug 导致返回购物车数据不对 当前时间节点无法修复 重新请求一次 // fisherman -> 储值卡互斥需求 发现bug 导致返回购物车数据不对 当前时间节点无法修复 重新请求一次
if (Objects.nonNull(shoppingCartInfoRequestVo.getEnableSharing()) && shoppingCartInfoRequestVo.getEnableSharing().compareTo(0) == 0) { if (Objects.nonNull(shoppingCartInfoRequestVo.getEnableSharing()) && shoppingCartInfoRequestVo.getEnableSharing().compareTo(0) == 0) {
if (shoppingCartGoodsResponseVo.getChanged() != null && shoppingCartGoodsResponseVo.getChanged().booleanValue()==true) { if (shoppingCartGoodsResponseVo.getChanged() != null && shoppingCartGoodsResponseVo.getChanged() ==true) {
goodsList = getGoodsList(shoppingCartInfoRequestVo); goodsList = getGoodsList(shoppingCartInfoRequestVo);
if (goodsList == null || !ResponseResult.SUCCESS.getCode().equals(goodsList.getCode())) { if (goodsList == null || !ResponseResult.SUCCESS.getCode().equals(goodsList.getCode())) {
return goodsList; return goodsList;
......
...@@ -70,7 +70,7 @@ public class CalculationCommonService { ...@@ -70,7 +70,7 @@ public class CalculationCommonService {
, List<CartGoods> cartGoodsList , List<CartGoods> cartGoodsList
, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, , ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo,
String couponCode, String couponCode,
ShoppingCartInfoRequestVo shoppingCartInfoRequestVo ) { ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) {
/** /**
* 使用促销算价赋值行记录 * 使用促销算价赋值行记录
...@@ -82,7 +82,9 @@ public class CalculationCommonService { ...@@ -82,7 +82,9 @@ public class CalculationCommonService {
long totalOriginalAmount = 0L, totalAmount = 0L, totalPackageAmount = 0L; long totalOriginalAmount = 0L, totalAmount = 0L, totalPackageAmount = 0L;
long originalAmount = 0L, amount = 0L, packageAmount = 0L; long originalAmount = 0L, amount = 0L, packageAmount = 0L;
for (CartGoods cartGoods : cartGoodsList) { for (CartGoods cartGoods : cartGoodsList) {
originalAmount = 0L;amount = 0L;packageAmount = 0L; originalAmount = 0L;
amount = 0L;
packageAmount = 0L;
this.rowRealAmount(goods, cartGoods, couponCode); this.rowRealAmount(goods, cartGoods, couponCode);
...@@ -112,7 +114,7 @@ public class CalculationCommonService { ...@@ -112,7 +114,7 @@ public class CalculationCommonService {
// fisehrman 总优惠金额 需要+配送券的优惠金额 // fisehrman 总优惠金额 需要+配送券的优惠金额
if (discountResult == null) { if (discountResult == null) {
shoppingCartGoodsResponseVo.setTotalDiscountAmount(0L); shoppingCartGoodsResponseVo.setTotalDiscountAmount(0L);
}else { } else {
// 需要算上配送券的优惠金额 // 需要算上配送券的优惠金额
Integer discountAmount = 0; Integer discountAmount = 0;
if (CollectionUtils.isNotEmpty(discountResult.getDiscounts())) { if (CollectionUtils.isNotEmpty(discountResult.getDiscounts())) {
...@@ -133,23 +135,23 @@ public class CalculationCommonService { ...@@ -133,23 +135,23 @@ public class CalculationCommonService {
return; return;
} }
Goods find = goods Goods find = goods
.stream().filter((k) -> Objects.equals(k.getCartGoodsUid(),cartGoods.getCartGoodsUid())) .stream().filter((k) -> Objects.equals(k.getCartGoodsUid(), cartGoods.getCartGoodsUid()))
.findFirst().orElse(null); .findFirst().orElse(null);
if (find == null) return; if (find == null) return;
cartGoods.setAmount(find.getRealAmount()); cartGoods.setAmount(find.getRealAmount());
cartGoods.setCurrentCouponDiscount(0); cartGoods.setCurrentCouponDiscount(0);
cartGoods.setFinalPrice(find.getNowPrice()); cartGoods.setFinalPrice(find.getNowPrice());
if (CollectionUtils.isNotEmpty(find.getDiscounts())){ if (CollectionUtils.isNotEmpty(find.getDiscounts())) {
// ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount goodsDiscount = find.getDiscounts().stream() // ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount goodsDiscount = find.getDiscounts().stream()
// .filter(p -> p.getActivityCode().equals(couponCode)).findFirst().orElse(null); // .filter(p -> p.getActivityCode().equals(couponCode)).findFirst().orElse(null);
// if (goodsDiscount != null){ // if (goodsDiscount != null){
// } // }
for (GoodsDiscount goodsDiscount : find.getDiscounts()){ for (GoodsDiscount goodsDiscount : find.getDiscounts()) {
if(goodsDiscount.getActivityCode().equals(couponCode)){ if (goodsDiscount.getActivityCode().equals(couponCode)) {
cartGoods.setCurrentCouponDiscount(goodsDiscount.getDiscount() == null ? 0 : goodsDiscount.getDiscount().intValue()); cartGoods.setCurrentCouponDiscount(goodsDiscount.getDiscount() == null ? 0 : goodsDiscount.getDiscount().intValue());
} }
if(StringUtils.isNotEmpty(goodsDiscount.getCurrentMembershipLevel())){ if (StringUtils.isNotEmpty(goodsDiscount.getCurrentMembershipLevel())) {
cartGoods.setCurrentMemberLevel(goodsDiscount.getCurrentMembershipLevel()); cartGoods.setCurrentMemberLevel(goodsDiscount.getCurrentMembershipLevel());
} }
} }
...@@ -180,14 +182,13 @@ public class CalculationCommonService { ...@@ -180,14 +182,13 @@ public class CalculationCommonService {
SmallMaterial mt = gChoices.get(choice.getGoodsId()); SmallMaterial mt = gChoices.get(choice.getGoodsId());
if (mt == null) { if (mt == null) {
amount += choice.getAmount() * choice.getQty(); amount += choice.getAmount() * choice.getQty();
} } else {
else {
amount += mt.getRealAmount(); amount += mt.getRealAmount();
choice.setCurrentCouponDiscount(0); choice.setCurrentCouponDiscount(0);
if (CollectionUtils.isNotEmpty(mt.getDiscounts())){ if (CollectionUtils.isNotEmpty(mt.getDiscounts())) {
GoodsDiscount goodsDiscount = mt.getDiscounts().stream() GoodsDiscount goodsDiscount = mt.getDiscounts().stream()
.filter(p -> p.getActivityCode().equals(couponCode)).findFirst().orElse(null); .filter(p -> p.getActivityCode().equals(couponCode)).findFirst().orElse(null);
if (goodsDiscount != null){ if (goodsDiscount != null) {
choice.setCurrentCouponDiscount(goodsDiscount.getDiscount() == null ? 0 : goodsDiscount.getDiscount().intValue()); choice.setCurrentCouponDiscount(goodsDiscount.getDiscount() == null ? 0 : goodsDiscount.getDiscount().intValue());
} }
} }
...@@ -210,10 +211,10 @@ public class CalculationCommonService { ...@@ -210,10 +211,10 @@ public class CalculationCommonService {
SmallMaterial sm = sChoices.get(mg.getSpuId()); SmallMaterial sm = sChoices.get(mg.getSpuId());
if (sm != null) { if (sm != null) {
mg.setCurrentCouponDiscount(0); mg.setCurrentCouponDiscount(0);
if (CollectionUtils.isNotEmpty(sm.getDiscounts())){ if (CollectionUtils.isNotEmpty(sm.getDiscounts())) {
GoodsDiscount goodsDiscount = sm.getDiscounts().stream() GoodsDiscount goodsDiscount = sm.getDiscounts().stream()
.filter(p -> p.getActivityCode().equals(couponCode)).findFirst().orElse(null); .filter(p -> p.getActivityCode().equals(couponCode)).findFirst().orElse(null);
if (goodsDiscount != null){ if (goodsDiscount != null) {
mg.setCurrentCouponDiscount(goodsDiscount.getDiscount() == null ? 0 : goodsDiscount.getDiscount().intValue()); mg.setCurrentCouponDiscount(goodsDiscount.getDiscount() == null ? 0 : goodsDiscount.getDiscount().intValue());
} }
} }
...@@ -242,7 +243,7 @@ public class CalculationCommonService { ...@@ -242,7 +243,7 @@ public class CalculationCommonService {
public ShoppingCartGoodsDto.CartGoodsDetailDto convertCartGoods2DetailGoodsList(Goods calculationGoods public ShoppingCartGoodsDto.CartGoodsDetailDto convertCartGoods2DetailGoodsList(Goods calculationGoods
, CartGoods cartGoods , CartGoods cartGoods
, String partnerId) { , String partnerId) {
ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto = this.convertCartGoods2DetailGoods(calculationGoods, cartGoods,partnerId); ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto = this.convertCartGoods2DetailGoods(calculationGoods, cartGoods, partnerId);
return cartGoodsDetailDto; return cartGoodsDetailDto;
} }
...@@ -286,13 +287,16 @@ public class CalculationCommonService { ...@@ -286,13 +287,16 @@ public class CalculationCommonService {
toastMsg = shoppingCartInfoRequestVo != null && ObjectUtils.equals(SubmitPageEnum.YES.getCode(), shoppingCartInfoRequestVo.getFlag()) ? SHOPPING_CART_EMPTY_GOODS_LIST : SHOPPING_CART_INVALIAD_GOODS; toastMsg = shoppingCartInfoRequestVo != null && ObjectUtils.equals(SubmitPageEnum.YES.getCode(), shoppingCartInfoRequestVo.getFlag()) ? SHOPPING_CART_EMPTY_GOODS_LIST : SHOPPING_CART_INVALIAD_GOODS;
setToastMsgIfNotExist(shoppingCartGoodsResponseVo, toastMsg); setToastMsgIfNotExist(shoppingCartGoodsResponseVo, toastMsg);
//结算页,只有商品全部非法(即products为空)时,才提示changed为true toastMsg 不为空 //结算页,只有商品全部非法(即products为空)时,才提示changed为true toastMsg 不为空
Boolean changed = shoppingCartGoodsResponseVo.getChanged(); // 请求里面的 enableSharing = 0 并且 changed = true
if (shoppingCartInfoRequestVo.getEnableSharing().compareTo(0) == 0 boolean changed = shoppingCartInfoRequestVo != null
&& Objects.nonNull(changed) &&shoppingCartInfoRequestVo.getEnableSharing() != null
&& shoppingCartGoodsResponseVo.getChanged().compareTo(true) == 0) { && shoppingCartInfoRequestVo.getEnableSharing().compareTo(0) == 0
&& Objects.nonNull(shoppingCartGoodsResponseVo.getChanged())
&& shoppingCartGoodsResponseVo.getChanged().compareTo(true) == 0;
if (changed) {
shoppingCartGoodsResponseVo.setChanged(true); shoppingCartGoodsResponseVo.setChanged(true);
shoppingCartGoodsResponseVo.setToastMsg("购物车数据异常,需要重新请求购物车list接口"); shoppingCartGoodsResponseVo.setToastMsg("购物车数据异常,需要重新请求购物车list接口");
}else { } else {
shoppingCartGoodsResponseVo.setChanged(CollectionUtils.isEmpty(cartGoodsList)); shoppingCartGoodsResponseVo.setChanged(CollectionUtils.isEmpty(cartGoodsList));
shoppingCartGoodsResponseVo.setToastMsg(CollectionUtils.isEmpty(cartGoodsList) ? toastMsg : ""); shoppingCartGoodsResponseVo.setToastMsg(CollectionUtils.isEmpty(cartGoodsList) ? toastMsg : "");
} }
...@@ -426,7 +430,7 @@ public class CalculationCommonService { ...@@ -426,7 +430,7 @@ public class CalculationCommonService {
cartGoodsDetailDto.setSkuName(StringUtils.isEmpty(cartGoods.getSkuName()) ? cartGoods.getSpuName() : cartGoods.getSkuName()); cartGoodsDetailDto.setSkuName(StringUtils.isEmpty(cartGoods.getSkuName()) ? cartGoods.getSpuName() : cartGoods.getSkuName());
cartGoodsDetailDto.setSkuForeignName(StringUtils.isEmpty(cartGoods.getSkuForeignName()) ? cartGoods.getSpuForeignName() : cartGoods.getSkuForeignName()); cartGoodsDetailDto.setSkuForeignName(StringUtils.isEmpty(cartGoods.getSkuForeignName()) ? cartGoods.getSpuForeignName() : cartGoods.getSkuForeignName());
cartGoodsDetailDto.setIsSendGoods(false); cartGoodsDetailDto.setIsSendGoods(false);
if (calculationGoods!=null) { if (calculationGoods != null) {
// 修复购物车NPE 是否为赠品 // 修复购物车NPE 是否为赠品
cartGoodsDetailDto.setIsSendGoods(ObjectUtils.equals(1, calculationGoods.getCartGoodType())); cartGoodsDetailDto.setIsSendGoods(ObjectUtils.equals(1, calculationGoods.getCartGoodType()));
} }
...@@ -449,13 +453,12 @@ public class CalculationCommonService { ...@@ -449,13 +453,12 @@ public class CalculationCommonService {
if (cartGoods.isWeightType()) { if (cartGoods.isWeightType()) {
cartGoodsDetailDto.setProductType(ProductType.WEIGHT_PRODUCT.getCode()); cartGoodsDetailDto.setProductType(ProductType.WEIGHT_PRODUCT.getCode());
} }
if (calculationGoods!=null) { if (calculationGoods != null) {
cartGoodsDetailDto.setOriginalPrice(calculationGoods.getOriginalPrice()); cartGoodsDetailDto.setOriginalPrice(calculationGoods.getOriginalPrice());
} } else {
else {
cartGoodsDetailDto.setOriginalPrice(cartGoods.getOriginalPrice()); cartGoodsDetailDto.setOriginalPrice(cartGoods.getOriginalPrice());
} }
if (calculationGoods!=null) { if (calculationGoods != null) {
if (cartGoodsDetailDto.getIsSendGoods()) { if (cartGoodsDetailDto.getIsSendGoods()) {
// 由于买赠活动中,赠品有属性的时候会裂为多行,所有优惠金额不能直接用促销返回的, 需要根据实际购物车行中的数量来计算 // 由于买赠活动中,赠品有属性的时候会裂为多行,所有优惠金额不能直接用促销返回的, 需要根据实际购物车行中的数量来计算
int discountAmt = calculationGoods.getDiscountAmount().intValue(); int discountAmt = calculationGoods.getDiscountAmount().intValue();
...@@ -464,13 +467,12 @@ public class CalculationCommonService { ...@@ -464,13 +467,12 @@ public class CalculationCommonService {
} else { } else {
cartGoodsDetailDto.setTotalDiscountAmount(calculationGoods.getDiscountAmount().intValue()); cartGoodsDetailDto.setTotalDiscountAmount(calculationGoods.getDiscountAmount().intValue());
} }
} } else {
else {
cartGoodsDetailDto.setTotalDiscountAmount(cartGoods.getOriginalAmount().intValue() - cartGoods.getAmount().intValue()); cartGoodsDetailDto.setTotalDiscountAmount(cartGoods.getOriginalAmount().intValue() - cartGoods.getAmount().intValue());
} }
//设置行优惠 //设置行优惠
List<ActivityDiscountsDto> activityDiscountsDtoList = new ArrayList<>(); List<ActivityDiscountsDto> activityDiscountsDtoList = new ArrayList<>();
if (calculationGoods!=null && CollectionUtils.isNotEmpty(calculationGoods.getDiscounts())) { if (calculationGoods != null && CollectionUtils.isNotEmpty(calculationGoods.getDiscounts())) {
for (GoodsDiscount discount : calculationGoods.getDiscounts()) { for (GoodsDiscount discount : calculationGoods.getDiscounts()) {
ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto(); ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto();
activityDiscountsDto.setActivityCode(discount.getActivityCode()); activityDiscountsDto.setActivityCode(discount.getActivityCode());
...@@ -511,7 +513,7 @@ public class CalculationCommonService { ...@@ -511,7 +513,7 @@ public class CalculationCommonService {
} }
goods.setOriginalProductType(mg.getOriginalProductType()); goods.setOriginalProductType(mg.getOriginalProductType());
materialList.add(goods); materialList.add(goods);
cartGoodsDetailDto.setOriginalPrice(cartGoodsDetailDto.getOriginalPrice() + goods.getOriginalPrice() * (goods.getQty()/cartGoodsDetailDto.getQty())); cartGoodsDetailDto.setOriginalPrice(cartGoodsDetailDto.getOriginalPrice() + goods.getOriginalPrice() * (goods.getQty() / cartGoodsDetailDto.getQty()));
cartGoodsDetailDto.setTotalDiscountAmount(cartGoodsDetailDto.getTotalDiscountAmount() + goods.getTotalDiscountAmount()); cartGoodsDetailDto.setTotalDiscountAmount(cartGoodsDetailDto.getTotalDiscountAmount() + goods.getTotalDiscountAmount());
} }
cartGoodsDetailDto.setProductType(ProductType.MATERIAL.getCode()); cartGoodsDetailDto.setProductType(ProductType.MATERIAL.getCode());
...@@ -529,9 +531,9 @@ public class CalculationCommonService { ...@@ -529,9 +531,9 @@ public class CalculationCommonService {
List<ShoppingCartGoodsDto.CartGoodsDetailDto> comboLists = this.com2DetailGoods(gxDiscount, cartGoods.getProductComboList(), cartGoods, true); List<ShoppingCartGoodsDto.CartGoodsDetailDto> comboLists = this.com2DetailGoods(gxDiscount, cartGoods.getProductComboList(), cartGoods, true);
combs.addAll(comboLists); combs.addAll(comboLists);
cartGoodsDetailDto.setProductType(ProductType.SETMEAL.getCode()); cartGoodsDetailDto.setProductType(ProductType.SETMEAL.getCode());
if (calculationGoods !=null) { if (calculationGoods != null) {
originalPriceSum = calculationGoods.getOriginalPrice(); originalPriceSum = calculationGoods.getOriginalPrice();
}else { } else {
for (ShoppingCartGoodsDto.CartGoodsDetailDto comboList : comboLists) { for (ShoppingCartGoodsDto.CartGoodsDetailDto comboList : comboLists) {
originalPriceSum += (comboList.getQty() / cartGoods.getQty()) * comboList.getOriginalPrice(); originalPriceSum += (comboList.getQty() / cartGoods.getQty()) * comboList.getOriginalPrice();
} }
...@@ -654,8 +656,8 @@ public class CalculationCommonService { ...@@ -654,8 +656,8 @@ public class CalculationCommonService {
HashMap<String, BlockRow> map = new HashMap<>(); HashMap<String, BlockRow> map = new HashMap<>();
if (goods == null) return map; if (goods == null) return map;
//固定搭配 //固定搭配
if (isFixed ) { if (isFixed) {
if(CollectionUtils.isNotEmpty(goods.getGroupCombox())){ if (CollectionUtils.isNotEmpty(goods.getGroupCombox())) {
for (GroupCombox gx : goods.getGroupCombox()) { for (GroupCombox gx : goods.getGroupCombox()) {
BlockRow blockRow = new BlockRow(); BlockRow blockRow = new BlockRow();
blockRow.setDiscountAmount(gx.getDiscountAmount()); blockRow.setDiscountAmount(gx.getDiscountAmount());
...@@ -746,7 +748,7 @@ public class CalculationCommonService { ...@@ -746,7 +748,7 @@ public class CalculationCommonService {
uid = goods.getCartGoodsUid(); uid = goods.getCartGoodsUid();
} }
} }
if(StringUtils.isNotBlank(toastMsg)){ if (StringUtils.isNotBlank(toastMsg)) {
shoppingCartGoodsResponseVo.setToastMsg(toastMsg); shoppingCartGoodsResponseVo.setToastMsg(toastMsg);
} }
shoppingCartGoodsResponseVo.setUid(uid); shoppingCartGoodsResponseVo.setUid(uid);
......
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