Commit c8d0ff41 by ping.wu

Merge branches 'feature/20200721_麦咖啡购物车_wuping' and 'qa' of…

Merge branches 'feature/20200721_麦咖啡购物车_wuping' and 'qa' of http://gitlab.freemud.com/order-group-application/order-group into qa
parents e3816e92 9e61932a
...@@ -101,6 +101,7 @@ public class ShoppingCartConvertAdapter { ...@@ -101,6 +101,7 @@ public class ShoppingCartConvertAdapter {
cartGoodsDetailDto.setCategoryName(cartGoods.getCategoryName()); cartGoodsDetailDto.setCategoryName(cartGoods.getCategoryName());
cartGoodsDetailDto.setCouponCode(cartGoods.getCouponCode()); cartGoodsDetailDto.setCouponCode(cartGoods.getCouponCode());
cartGoodsDetailDto.setStockLimit(cartGoods.isStockLimit()); cartGoodsDetailDto.setStockLimit(cartGoods.isStockLimit());
cartGoodsDetailDto.setProductCode(cartGoods.getCustomerCode());
cartGoodsDetailDto.setCustomerCode(cartGoods.getCustomerCode()); cartGoodsDetailDto.setCustomerCode(cartGoods.getCustomerCode());
cartGoodsDetailDto.setWeight(cartGoods.getWeight()); cartGoodsDetailDto.setWeight(cartGoods.getWeight());
cartGoodsDetailDto.setUnit(cartGoods.getUnit()); cartGoodsDetailDto.setUnit(cartGoods.getUnit());
......
...@@ -193,6 +193,11 @@ public class ActivityCalculationDiscountResponseDto { ...@@ -193,6 +193,11 @@ public class ActivityCalculationDiscountResponseDto {
private Integer actualGoodsNumber; private Integer actualGoodsNumber;
private List<GoodsDiscount> discounts; private List<GoodsDiscount> discounts;
/**
* 活动键位编号
*/
private String artNo;
@Data @Data
public static class GoodsDiscount { public static class GoodsDiscount {
......
...@@ -21,4 +21,9 @@ public class ActivityDiscountsDto { ...@@ -21,4 +21,9 @@ public class ActivityDiscountsDto {
private String activityName; private String activityName;
private Integer discountAmount; private Integer discountAmount;
private Integer activityType; private Integer activityType;
/**
* 实际参与活动商品数量
*/
private Integer actualActivityGoodsNumber;
} }
...@@ -20,7 +20,7 @@ public class ShoppingCartGoodsDto { ...@@ -20,7 +20,7 @@ public class ShoppingCartGoodsDto {
/** /**
* 购物车实际选择商品,包含加价购商品 * 购物车实际选择商品,包含加价购商品
*/ */
List<CartGoodsDetailDto> products; private List<CartGoodsDetailDto> products;
/** /**
* 购物车版本号 * 购物车版本号
*/ */
...@@ -68,7 +68,7 @@ public class ShoppingCartGoodsDto { ...@@ -68,7 +68,7 @@ public class ShoppingCartGoodsDto {
/** /**
* 请求计算的商品均摊信息 * 请求计算的商品均摊信息
*/ */
List<ShareDiscountActivityDto> shareDiscountActivityDtos; private List<ShareDiscountActivityDto> shareDiscountActivityDtos;
/** /**
* 第一次使用会员卡需多支付的金额 单位为分 * 第一次使用会员卡需多支付的金额 单位为分
...@@ -207,6 +207,10 @@ public class ShoppingCartGoodsDto { ...@@ -207,6 +207,10 @@ public class ShoppingCartGoodsDto {
*/ */
private boolean isStockLimit; private boolean isStockLimit;
/** /**
* 商品货号
*/
private String productCode;
/**
* 第三方商品编码 * 第三方商品编码
*/ */
private String customerCode; private String customerCode;
......
...@@ -115,13 +115,13 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -115,13 +115,13 @@ public class ShoppingCartMCoffeeServiceImpl {
String spuId2 = spuId; String spuId2 = spuId;
List<Long> productIds = new ArrayList<>(); List<Long> productIds = new ArrayList<>();
productIds.add(Long.parseLong(goodsId)); //商品券校验
CartGoods addCartGoods = convent2CartGoods(addShoppingCartGoodsRequestVo); if(spuId.startsWith(CommonsConstant.COUPON_PREFIX)){
couponCode = spuId.substring(CommonsConstant.COUPON_PREFIX.length());
if(StringUtils.isNotBlank(couponCode)){ spuId2 = validCoupon(partnerId, storeId, spuId, productIds,BusinessTypeEnum.getByType(addShoppingCartGoodsRequestVo.getMenuType()).getCode());
String couponCodespq = CommonsConstant.COUPON_PREFIX + couponCode; goodsId = spuId2;
spuId2 = validCoupon(partnerId, storeId, couponCodespq, productIds,BusinessTypeEnum.getByType(addShoppingCartGoodsRequestVo.getMenuType()).getCode());
} }
productIds.add(Long.parseLong(goodsId));
// 获取添加商品的详细信息 // 获取添加商品的详细信息
List<ProductBeanDTO> productBeanListSpuClass = assortmentSdkService.getProductsInfoSdk(partnerId, storeId, Collections.singletonList(spuId2), menuType, this.shoppingCartBaseService); List<ProductBeanDTO> productBeanListSpuClass = assortmentSdkService.getProductsInfoSdk(partnerId, storeId, Collections.singletonList(spuId2), menuType, this.shoppingCartBaseService);
...@@ -131,10 +131,9 @@ public class ShoppingCartMCoffeeServiceImpl { ...@@ -131,10 +131,9 @@ public class ShoppingCartMCoffeeServiceImpl {
oldCartGoodsList = new ArrayList<>(); oldCartGoodsList = new ArrayList<>();
} }
//商品券已添加情况校验 //商品券已添加情况校验
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = checkGoodsCoupon(oldCartGoodsList, operationType, couponCode); List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = checkGoodsCoupon(oldCartGoodsList, operationType, couponCode);
CartGoods addCartGoods = convent2CartGoods(addShoppingCartGoodsRequestVo);
setClassificationAndPrice(addCartGoods, productBeanListSpuClass); setClassificationAndPrice(addCartGoods, productBeanListSpuClass);
//查询多个商品库存信息 //查询多个商品库存信息
// Integer checkQty = this.checkSkuQty(oldCartGoodsList, addCartGoods); // Integer checkQty = this.checkSkuQty(oldCartGoodsList, addCartGoods);
......
...@@ -196,6 +196,7 @@ public class CalculationServiceImpl { ...@@ -196,6 +196,7 @@ public class CalculationServiceImpl {
} }
} }
//订单级别券优惠
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults discount : calculationDiscountResult.getCouponDiscounts()) { for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults discount : calculationDiscountResult.getCouponDiscounts()) {
int discountAmount = (discount.getDiscountAmount() == null) ? 0 : discount.getDiscountAmount(); int discountAmount = (discount.getDiscountAmount() == null) ? 0 : discount.getDiscountAmount();
Integer discountType = discount.getActivityType(); Integer discountType = discount.getActivityType();
...@@ -409,13 +410,15 @@ public class CalculationServiceImpl { ...@@ -409,13 +410,15 @@ public class CalculationServiceImpl {
} }
shoppingCartGoodsResponseVo.setOriginalTotalAmount(calculationDiscount == null ? totalOriginalAmount : calculationDiscount.getOriginalTotalAmount()); shoppingCartGoodsResponseVo.setOriginalTotalAmount(calculationDiscount == null ? totalOriginalAmount : calculationDiscount.getOriginalTotalAmount());
shoppingCartGoodsResponseVo.setTotalAmount(calculationDiscount == null ? totalAmount : calculationDiscount.getTotalAmount()); shoppingCartGoodsResponseVo.setTotalAmount(calculationDiscount == null ? totalAmount : calculationDiscount.getTotalAmount());
shoppingCartGoodsResponseVo.setOriginalTotalAmount(shoppingCartGoodsResponseVo.getOriginalTotalAmount() + totalPackgeAmount);
shoppingCartGoodsResponseVo.setTotalAmount(shoppingCartGoodsResponseVo.getTotalAmount() + totalPackgeAmount);
shoppingCartGoodsResponseVo.setNewPackAmount(totalPackgeAmount); shoppingCartGoodsResponseVo.setNewPackAmount(totalPackgeAmount);
shoppingCartGoodsResponseVo.setTotalDiscountAmount(calculationDiscount == null ? 0L : calculationDiscount.getTotalDiscountAmount()); shoppingCartGoodsResponseVo.setTotalDiscountAmount(calculationDiscount == null ? 0L : calculationDiscount.getTotalDiscountAmount());
if(calculationDiscount != null && calculationDiscount.getDeliveryAmount() == null){ if(calculationDiscount != null && calculationDiscount.getDeliveryAmount() == null){
shoppingCartGoodsResponseVo.setDeliveryAmount(deliveryAmount); shoppingCartGoodsResponseVo.setDeliveryAmount(deliveryAmount);
shoppingCartGoodsResponseVo.setDiscountDeliveryAmount(deliveryAmount); shoppingCartGoodsResponseVo.setDiscountDeliveryAmount(deliveryAmount);
shoppingCartGoodsResponseVo.setOriginalTotalAmount(shoppingCartGoodsResponseVo.getOriginalTotalAmount() + deliveryAmount);
shoppingCartGoodsResponseVo.setTotalAmount(shoppingCartGoodsResponseVo.getTotalAmount() + deliveryAmount);
} }
} }
......
...@@ -341,11 +341,11 @@ public class CouponDiscountCalculation { ...@@ -341,11 +341,11 @@ public class CouponDiscountCalculation {
continue; continue;
} }
// 过滤0得代金券 // 过滤0得代金券
if (Objects.equals(couponStateVo.getType(), CouponTypeEnum.TYPE_1.getCode()) // if (Objects.equals(couponStateVo.getType(), CouponTypeEnum.TYPE_1.getCode())
&& (couponStateVo.getOriginalPrice() == null // && (couponStateVo.getOriginalPrice() == null
|| couponStateVo.getOriginalPrice() == 0)) { // || couponStateVo.getOriginalPrice() == 0)) {
continue; // continue;
} // }
// 过滤折扣券为0折得 // 过滤折扣券为0折得
if (Objects.equals(couponStateVo.getType(), CouponTypeEnum.TYPE_3.getCode()) if (Objects.equals(couponStateVo.getType(), CouponTypeEnum.TYPE_3.getCode())
......
...@@ -8,6 +8,8 @@ import cn.freemud.entities.vo.CreateOrderVo; ...@@ -8,6 +8,8 @@ import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.ShoppingCartGoodsResponseVo; import cn.freemud.entities.vo.ShoppingCartGoodsResponseVo;
import cn.freemud.entities.vo.ShoppingCartInfoRequestVo; import cn.freemud.entities.vo.ShoppingCartInfoRequestVo;
import cn.freemud.enums.ActivityTypeEnum; import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.enums.ResponseResult;
import cn.freemud.interceptor.ServiceException;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
...@@ -64,6 +66,10 @@ public class TimeSaleCalculation { ...@@ -64,6 +66,10 @@ public class TimeSaleCalculation {
if (goodsDiscount == null) { if (goodsDiscount == null) {
continue; continue;
} }
// 商品参与限时特价返回,用于前端显示特价标签
if(discounts.contains(ActivityTypeEnum.TYPE_2.getCode()) || discounts.contains(ActivityTypeEnum.TYPE_21.getCode())){
cartGoods.setActivityType(ActivityTypeEnum.TYPE_2.getCode());
}
// 享受限时特价折扣的商品数量 // 享受限时特价折扣的商品数量
Integer specialActualGoodsNumber = null; Integer specialActualGoodsNumber = null;
// 商品现价 // 商品现价
...@@ -103,7 +109,7 @@ public class TimeSaleCalculation { ...@@ -103,7 +109,7 @@ public class TimeSaleCalculation {
return; return;
} }
// 商品实际享受优惠的数量: key:skuId; value:实际数量 // 商品实际享受优惠的数量: key:skuId; value:实际数量
Map<String, Integer> numberMap = new HashMap<>(); // Map<String, Integer> numberMap = new HashMap<>();
Map<String, ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> goodsMap = goodsList.parallelStream() Map<String, ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> goodsMap = goodsList.parallelStream()
.collect(Collectors.toMap(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods::getGoodsId, Function.identity(), (k1, k2) -> k1)); .collect(Collectors.toMap(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods::getGoodsId, Function.identity(), (k1, k2) -> k1));
...@@ -113,28 +119,39 @@ public class TimeSaleCalculation { ...@@ -113,28 +119,39 @@ public class TimeSaleCalculation {
if ((goods = goodsMap.get(cartGoods.getSkuId())) == null || ObjectUtils.equals(ActivityTypeEnum.TYPE_81.getCode(), cartGoods.getActivityType())) { if ((goods = goodsMap.get(cartGoods.getSkuId())) == null || ObjectUtils.equals(ActivityTypeEnum.TYPE_81.getCode(), cartGoods.getActivityType())) {
continue; continue;
} }
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount goodsDiscount = getGoodsDiscount(goods.getDiscounts(), Arrays.asList(ActivityTypeEnum.TYPE_21.getCode(), ActivityTypeEnum.TYPE_2.getCode())); // if(goods.getArtNo() == null){
// throw new ServiceException(ResponseResult.OPERATE_TOO_OFTEN);
// }
// cartGoods.setCustomerCode(goods.getArtNo());
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount goodsDiscount = getGoodsDiscount(goods.getDiscounts(), Arrays.asList(ActivityTypeEnum.TYPE_2.getCode(), ActivityTypeEnum.TYPE_21.getCode(), ActivityTypeEnum.TYPE_23.getCode()));
if (goodsDiscount == null) { if (goodsDiscount == null) {
continue; continue;
} }
if (numberMap.get(cartGoods.getSkuId()) == null) { Long totalDiscountAmount = goodsDiscount.getDiscount();
numberMap.put(cartGoods.getSkuId(), goods.getActualGoodsNumber()); ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto();
} activityDiscountsDto.setActivityCode(goodsDiscount.getActivityCode());
Integer actualGoodsNumber = numberMap.get(cartGoods.getSkuId()); activityDiscountsDto.setActualActivityGoodsNumber(goodsDiscount.getActualGoodsNumber());
if (actualGoodsNumber > 0) { activityDiscountsDto.setActivityName(goodsDiscount.getActivityName());
Long totalDiscountAmount = cartGoods.getQty() > actualGoodsNumber ? goods.getDiscountAmount() * actualGoodsNumber / goods.getActualGoodsNumber() : goods.getDiscountAmount() * cartGoods.getQty() / goods.getActualGoodsNumber(); if(ActivityTypeEnum.TYPE_23.getCode() == goodsDiscount.getType()){
ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto(); activityDiscountsDto.setActivityType(ActivityTypeEnum.TYPE_23.getCode());
activityDiscountsDto.setActivityCode(goodsDiscount.getActivityCode()); }else {
activityDiscountsDto.setActivityName(goodsDiscount.getActivityName());
activityDiscountsDto.setActivityType(ActivityTypeEnum.TYPE_2.getCode()); activityDiscountsDto.setActivityType(ActivityTypeEnum.TYPE_2.getCode());
activityDiscountsDto.setDiscountAmount(totalDiscountAmount.intValue());
cartGoods.getActivityDiscountsDtos().add(activityDiscountsDto);
cartGoods.setTotalDiscountAmount(cartGoods.getTotalDiscountAmount() + totalDiscountAmount.intValue());
numberMap.put(cartGoods.getSkuId(), actualGoodsNumber - cartGoods.getQty());
} else {
cartGoods.setTotalDiscountAmount(0);
} }
activityDiscountsDto.setDiscountAmount(totalDiscountAmount.intValue());
cartGoods.getActivityDiscountsDtos().add(activityDiscountsDto);
cartGoods.setTotalDiscountAmount(cartGoods.getTotalDiscountAmount() + totalDiscountAmount.intValue());
// if (numberMap.get(cartGoods.getSkuId()) == null) {
// numberMap.put(cartGoods.getSkuId(), goodsDiscount.getActualGoodsNumber());
// }
// Integer actualGoodsNumber = numberMap.get(cartGoods.getSkuId());
// if (actualGoodsNumber > 0) {
// Long totalDiscountAmount = cartGoods.getQty() > actualGoodsNumber ? goods.getDiscountAmount() * actualGoodsNumber / goods.getActualGoodsNumber() : goods.getDiscountAmount() * cartGoods.getQty() / goods.getActualGoodsNumber();
//
// numberMap.put(cartGoods.getSkuId(), actualGoodsNumber - cartGoods.getQty());
// } else {
// cartGoods.setTotalDiscountAmount(0);
// }
} }
} }
......
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