Commit 882a4ef7 by 缪晖

拼单新增加车时间,用于给促销调用进行商品排序

parent caf094dc
...@@ -26,6 +26,12 @@ public class CartGoods { ...@@ -26,6 +26,12 @@ public class CartGoods {
* 购物车一行的Id(后台生成) * 购物车一行的Id(后台生成)
*/ */
private String cartGoodsUid = UUID.randomUUID().toString(); private String cartGoodsUid = UUID.randomUUID().toString();
/**
* 加车时间
*/
private Long addCartTime;
/** /**
* 单规格spuId,多规格skuId * 单规格spuId,多规格skuId
*/ */
......
...@@ -96,6 +96,10 @@ public class ActivityCalculationDiscountRequestDto { ...@@ -96,6 +96,10 @@ public class ActivityCalculationDiscountRequestDto {
*/ */
private String cartGoodsUid; private String cartGoodsUid;
/** /**
* 加车时间
*/
private Long addCartTime;
/**
* 商品品类 * 商品品类
*/ */
private String category; private String category;
......
...@@ -35,6 +35,11 @@ public class CartGoods { ...@@ -35,6 +35,11 @@ public class CartGoods {
private String originalGoodsUid; private String originalGoodsUid;
/** /**
* 加车时间
*/
private Long addCartTime;
/**
* 单规格spuId,多规格skuId * 单规格spuId,多规格skuId
*/ */
private String goodsId; private String goodsId;
......
...@@ -93,6 +93,7 @@ public class BuyAndGiftsPromotionService implements IPromotionService { ...@@ -93,6 +93,7 @@ public class BuyAndGiftsPromotionService implements IPromotionService {
cartGoods.setClassificationName(product.getCategoryName()); cartGoods.setClassificationName(product.getCategoryName());
// nodeId标识activeCode,用于计算均摊时每个商品在每个活动上均摊金额 // nodeId标识activeCode,用于计算均摊时每个商品在每个活动上均摊金额
cartGoods.setNodeId(sendActivity.getActivityCode()); cartGoods.setNodeId(sendActivity.getActivityCode());
cartGoods.setOriginalGoodsUid(sendGoods.getOriginalGoodsUid());
this.setGiftExtra(cartGoods,product,cartGoodsList); this.setGiftExtra(cartGoods,product,cartGoodsList);
cartGoodsList.add(cartGoods); cartGoodsList.add(cartGoods);
totalGiftAmount += product.getFinalPrice() * sendGoods.getSendNumber(); totalGiftAmount += product.getFinalPrice() * sendGoods.getSendNumber();
...@@ -170,7 +171,10 @@ public class BuyAndGiftsPromotionService implements IPromotionService { ...@@ -170,7 +171,10 @@ public class BuyAndGiftsPromotionService implements IPromotionService {
long count = cartGoodsList.stream().filter(c -> c.getSpuId().equals(cartGoods.getSpuId())).count(); long count = cartGoodsList.stream().filter(c -> c.getSpuId().equals(cartGoods.getSpuId())).count();
//购物车内存在同类 //购物车内存在同类
if (count>0) { if (count>0) {
CartGoods find = cartGoodsList.stream().filter(c -> c.getSpuId().equals(cartGoods.getSpuId())).findFirst().get(); CartGoods find = cartGoodsList.stream().filter(c -> c.getCartGoodsUid().equals(cartGoods.getOriginalGoodsUid())).findFirst().orElseGet(null);
if (null == find) {
find = cartGoodsList.stream().filter(c -> c.getSpuId().equals(cartGoods.getSpuId())).findFirst().get();
}
cartGoods.setExtra(find.getExtra()); cartGoods.setExtra(find.getExtra());
cartGoods.setSpuName(find.getSpuName()); cartGoods.setSpuName(find.getSpuName());
cartGoods.setSkuName(find.getSkuName()); cartGoods.setSkuName(find.getSkuName());
......
...@@ -144,6 +144,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -144,6 +144,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
cartGoods.setOpenId(currentUserInfoVo.getOpenId()); cartGoods.setOpenId(currentUserInfoVo.getOpenId());
cartGoods.setUserName(currentUserInfoVo.getNickName()); cartGoods.setUserName(currentUserInfoVo.getNickName());
cartGoods.setPhotoUrl(currentUserInfoVo.getPhotoUrl()); cartGoods.setPhotoUrl(currentUserInfoVo.getPhotoUrl());
cartGoods.setAddCartTime(System.currentTimeMillis());
List<Long> productIds = new ArrayList<>(); List<Long> productIds = new ArrayList<>();
productIds.add(Long.parseLong(goodsId)); productIds.add(Long.parseLong(goodsId));
...@@ -770,6 +771,17 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -770,6 +771,17 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
if (CollectionUtils.isEmpty(calculationDiscountGoodsList)) { if (CollectionUtils.isEmpty(calculationDiscountGoodsList)) {
return null; return null;
} }
// 调用促销前先对购物车行id进行排序
calculationDiscountGoodsList.sort((o1, o2) -> {
if (o1.getAddCartTime() == null || o2.getAddCartTime() == null) { return 0;}
if (o1.getAddCartTime() > o2.getAddCartTime()) {
return 1;
} else if (o1.getCartGoodsUid().hashCode() > o2.getCartGoodsUid().hashCode()) {
return -1;
} else {
return 0;
}
});
activityCalculationDiscountRequestDto.setGoods(calculationDiscountGoodsList); activityCalculationDiscountRequestDto.setGoods(calculationDiscountGoodsList);
activityCalculationDiscountRequestDto.setCoupons(coupons); activityCalculationDiscountRequestDto.setCoupons(coupons);
activityCalculationDiscountRequestDto.setOrgIds(commonService.getOrgIds(partnerId, storeId)); activityCalculationDiscountRequestDto.setOrgIds(commonService.getOrgIds(partnerId, storeId));
...@@ -777,8 +789,6 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -777,8 +789,6 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
activityCalculationDiscountRequestDto.setIsMember(isMember); activityCalculationDiscountRequestDto.setIsMember(isMember);
ActivityCalculationDiscountResponseDto activityCalculationDiscountResponseDto; ActivityCalculationDiscountResponseDto activityCalculationDiscountResponseDto;
try { try {
System.out.println("start discount");
System.out.println(JSON.toJSONString(activityCalculationDiscountRequestDto));
// 调用老促销接口 // 调用老促销接口
activityCalculationDiscountResponseDto = activityClient.calculationDiscount(activityCalculationDiscountRequestDto); activityCalculationDiscountResponseDto = activityClient.calculationDiscount(activityCalculationDiscountRequestDto);
} catch (Exception ex) { } catch (Exception ex) {
...@@ -1027,6 +1037,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -1027,6 +1037,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
calculationDiscountGoods.setOriginalPrice(cartGoods.getFinalPrice()); calculationDiscountGoods.setOriginalPrice(cartGoods.getFinalPrice());
calculationDiscountGoods.setMemberDiscount(cartGoods.getMemberDiscount()); calculationDiscountGoods.setMemberDiscount(cartGoods.getMemberDiscount());
calculationDiscountGoods.setSpuId(cartGoods.getSpuId()); calculationDiscountGoods.setSpuId(cartGoods.getSpuId());
calculationDiscountGoods.setAddCartTime(cartGoods.getAddCartTime());
//加料 //加料
if (CollectionUtils.isNotEmpty(cartGoods.getProductMaterialList())) { if (CollectionUtils.isNotEmpty(cartGoods.getProductMaterialList())) {
...@@ -1062,6 +1073,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -1062,6 +1073,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
calculationDiscountGoods.setGoodsQuantity(goodsQuantity); calculationDiscountGoods.setGoodsQuantity(goodsQuantity);
calculationDiscountGoods.setOriginalPrice(originalPrice); calculationDiscountGoods.setOriginalPrice(originalPrice);
calculationDiscountGoods.setMemberDiscount(memberDiscount); calculationDiscountGoods.setMemberDiscount(memberDiscount);
calculationDiscountGoods.setAddCartTime(System.currentTimeMillis());
this.addCalculationDiscountGoods(calculationDiscountGoodsList, calculationDiscountGoods); this.addCalculationDiscountGoods(calculationDiscountGoodsList, calculationDiscountGoods);
} }
......
...@@ -10,6 +10,7 @@ import cn.freemud.service.IPromotionService; ...@@ -10,6 +10,7 @@ import cn.freemud.service.IPromotionService;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import lombok.Data; import lombok.Data;
import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
...@@ -37,6 +38,22 @@ public class TwoNDiscountServiceImpl implements IPromotionService { ...@@ -37,6 +38,22 @@ public class TwoNDiscountServiceImpl implements IPromotionService {
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) {
List<ApportionGoodsDetail> apportionGoodsDetailList = getApportionGoodsDetail(calculationDiscountResult); List<ApportionGoodsDetail> apportionGoodsDetailList = getApportionGoodsDetail(calculationDiscountResult);
if (!CollectionUtils.isEmpty(apportionGoodsDetailList)) { if (!CollectionUtils.isEmpty(apportionGoodsDetailList)) {
if (apportionGoodsDetailList.stream().filter(goodsDetail -> StringUtils.isBlank(goodsDetail.getCartGoodsUid())).collect(Collectors.toList()).isEmpty()) {
// 若促销返回优惠信息均包含购物车行ID,则按行ID进行优惠均摊
List<String> cartGoodsUidList = apportionGoodsDetailList.stream().map(ApportionGoodsDetail::getCartGoodsUid).collect(Collectors.toList());
List<CartGoods> list = cartGoodsList.stream().filter(cartGoods -> cartGoodsUidList.contains(cartGoods.getCartGoodsUid())).collect(Collectors.toList());
Map<String, ApportionGoodsDetail> map = apportionGoodsDetailList.stream().collect(Collectors.toMap(ApportionGoodsDetail::getCartGoodsUid, detail -> detail));
Map<String, Long> mapPro = apportionGoodsDetailList.stream().collect(Collectors.toMap(ApportionGoodsDetail::getCartGoodsUid, detail -> detail.getActivityApportionAmount()));
if (!CollectionUtils.isEmpty(list)) {
for (CartGoods cartGoods : list) {
if (mapPro.get(cartGoods.getCartGoodsUid()) > 0) {
cartGoods.setAmount(cartGoods.getAmount() - map.get(cartGoods.getCartGoodsUid()).getActivityApportionAmount());
mapPro.put(cartGoods.getCartGoodsUid(), mapPro.get(cartGoods.getCartGoodsUid()) - map.get(cartGoods.getCartGoodsUid()).getActivityApportionAmount());
}
}
}
} else {
// 原算价逻辑,根据购物车商品ID进行优惠均摊
List<String> goodIdsList = apportionGoodsDetailList.stream().map(ApportionGoodsDetail::getGoodsId).collect(Collectors.toList()); List<String> goodIdsList = apportionGoodsDetailList.stream().map(ApportionGoodsDetail::getGoodsId).collect(Collectors.toList());
List<CartGoods> list = cartGoodsList.stream().filter(cartGoods -> goodIdsList.contains(cartGoods.getGoodsId())).collect(Collectors.toList()); List<CartGoods> list = cartGoodsList.stream().filter(cartGoods -> goodIdsList.contains(cartGoods.getGoodsId())).collect(Collectors.toList());
Map<String, ApportionGoodsDetail> map = apportionGoodsDetailList.stream().collect(Collectors.toMap(ApportionGoodsDetail::getGoodsId, detail -> detail)); Map<String, ApportionGoodsDetail> map = apportionGoodsDetailList.stream().collect(Collectors.toMap(ApportionGoodsDetail::getGoodsId, detail -> detail));
...@@ -51,6 +68,7 @@ public class TwoNDiscountServiceImpl implements IPromotionService { ...@@ -51,6 +68,7 @@ public class TwoNDiscountServiceImpl 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) {
...@@ -72,6 +90,7 @@ public class TwoNDiscountServiceImpl implements IPromotionService { ...@@ -72,6 +90,7 @@ public class TwoNDiscountServiceImpl implements IPromotionService {
apportionGoodsDetail.setActivityCode(apportionDetail.getActivityCode()); apportionGoodsDetail.setActivityCode(apportionDetail.getActivityCode());
apportionGoodsDetail.setActivityName(apportionDetail.getActivityName()); apportionGoodsDetail.setActivityName(apportionDetail.getActivityName());
apportionGoodsDetail.setGoodsId(apportionGood.getGoodsId()); apportionGoodsDetail.setGoodsId(apportionGood.getGoodsId());
apportionGoodsDetail.setCartGoodsUid(apportionGood.getCartGoodsUid());
list.add(apportionGoodsDetail); list.add(apportionGoodsDetail);
} }
} }
...@@ -96,5 +115,9 @@ public class TwoNDiscountServiceImpl implements IPromotionService { ...@@ -96,5 +115,9 @@ public class TwoNDiscountServiceImpl implements IPromotionService {
*/ */
private Long activityApportionAmount; private Long activityApportionAmount;
private String goodsId; private String goodsId;
/**
* 购物车行记录
*/
private String cartGoodsUid;
} }
} }
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