Commit 2696c7dc by 姜海波

更新最新master代码

parent 5f086fa0
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-test</artifactId> <artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
......
...@@ -44,6 +44,7 @@ import com.freemud.application.sdk.api.log.LogThreadLocal; ...@@ -44,6 +44,7 @@ import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.api.assortment.datamanager.manager.cache.CacheOpenPlatformPartnerWxappConfigManager; import com.freemud.api.assortment.datamanager.manager.cache.CacheOpenPlatformPartnerWxappConfigManager;
import com.freemud.application.sdk.api.ordercenter.enums.AfterSalesType; import com.freemud.application.sdk.api.ordercenter.enums.AfterSalesType;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType; import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.enums.OrderSettlementType;
import com.freemud.application.sdk.api.ordercenter.enums.ProductTypeEnum; import com.freemud.application.sdk.api.ordercenter.enums.ProductTypeEnum;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq; import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq;
import com.freemud.application.sdk.api.promotioncenter.dto.promotion.GoodsStockDTO; import com.freemud.application.sdk.api.promotioncenter.dto.promotion.GoodsStockDTO;
...@@ -924,6 +925,7 @@ public class OrderAdapter { ...@@ -924,6 +925,7 @@ public class OrderAdapter {
} }
//商品信息转换 //商品信息转换
convent2ProductVos(ordersBean.getProductList(), responseVo); convent2ProductVos(ordersBean.getProductList(), responseVo);
responseVo.setOrderAccounts(convent2OrderAccountVo(ordersBean.getApportionDetails()));
Long promotionAmount = 0L; Long promotionAmount = 0L;
Long deliveryAmount = 0L; Long deliveryAmount = 0L;
Long packageAmount = 0L; Long packageAmount = 0L;
...@@ -1507,6 +1509,39 @@ public class OrderAdapter { ...@@ -1507,6 +1509,39 @@ public class OrderAdapter {
return canRefund; return canRefund;
} }
public List<OrderAccountVo> convent2OrderAccountVo(List<QueryOrdersResponse.DataBean.OrderBean.OrderSettlement> orderSettlements){
List<OrderAccountVo> orderAccountVos = new ArrayList<>();
if(CollectionUtils.isEmpty(orderSettlements)){
return orderAccountVos;
}
//过滤订单级别优惠
orderSettlements = orderSettlements.stream().filter(orderSettlement -> ("0".equals(orderSettlement.getProductId()) || orderSettlement.getProductId()== null) ).collect(Collectors.toList());
if(CollectionUtils.isEmpty(orderSettlements)){
return orderAccountVos;
}
List<Integer> list = Arrays.asList(OrderSettlementType.FULL_REDUCTION.getIndex(),OrderSettlementType.CASH_COUPON.getIndex(),
OrderSettlementType.PRODUCT_COUPON.getIndex(),OrderSettlementType.DISCOUNT_COUPON.getIndex(),OrderSettlementType.POINTS.getIndex());
for (QueryOrdersResponse.DataBean.OrderBean.OrderSettlement orderSettlement : orderSettlements){
if(list.contains(orderSettlement.getSettlementType())){
OrderAccountVo accountVo = new OrderAccountVo();
Integer type = orderSettlement.getSettlementType();
accountVo.setType(type);
if(type == OrderSettlementType.PRODUCT_COUPON.getIndex() || type == OrderSettlementType.CASH_COUPON.getIndex()
||type == OrderSettlementType.DISCOUNT_COUPON.getIndex() ){
accountVo.setTypeName("优惠券");
}else if(type == OrderSettlementType.FULL_REDUCTION.getIndex()){
accountVo.setTypeName("满减");
} else if(type == OrderSettlementType.POINTS.getIndex()){
accountVo.setTypeName("积分抵扣");
}
int value = orderSettlement.getSettlementAmount().intValue();
accountVo.setDiscountAmount(value < 0 ? -value : value);
orderAccountVos.add(accountVo);
}
}
return orderAccountVos;
}
public void convent2ProductVos(List<QueryOrdersResponse.DataBean.OrderBean.ProductBean> productBeans, QueryOrderResponseVo responseVo) { public void convent2ProductVos(List<QueryOrdersResponse.DataBean.OrderBean.ProductBean> productBeans, QueryOrderResponseVo responseVo) {
if (CollectionUtils.isEmpty(productBeans)) { if (CollectionUtils.isEmpty(productBeans)) {
...@@ -1561,6 +1596,8 @@ public class OrderAdapter { ...@@ -1561,6 +1596,8 @@ public class OrderAdapter {
Long discountTotalAmount = 0L; Long discountTotalAmount = 0L;
//判断当前商品内是否包含商品券商品 如果包含,商品名称改为商品券名称 //判断当前商品内是否包含商品券商品 如果包含,商品名称改为商品券名称
Boolean hasProductCoupon = false; Boolean hasProductCoupon = false;
Long couponDiscount = 0L;
Long fullReduction = 0L;
Integer activityType = 0; Integer activityType = 0;
if (CollectionUtils.isNotEmpty(productBean.getDiscountList())) { if (CollectionUtils.isNotEmpty(productBean.getDiscountList())) {
for (QueryOrdersResponse.DataBean.OrderBean.ProductBean.ProductDiscount productDiscount : productBean.getDiscountList()) { for (QueryOrdersResponse.DataBean.OrderBean.ProductBean.ProductDiscount productDiscount : productBean.getDiscountList()) {
...@@ -1578,11 +1615,27 @@ public class OrderAdapter { ...@@ -1578,11 +1615,27 @@ public class OrderAdapter {
if (OrderAccountType.BUYM_SENDN.getCode().equals(productDiscount.getDiscountType())) { if (OrderAccountType.BUYM_SENDN.getCode().equals(productDiscount.getDiscountType())) {
activityType = ActivityTypeEnum.TYPE_61.getCode(); activityType = ActivityTypeEnum.TYPE_61.getCode();
} }
if (OrderAccountType.PRODUCT_COUPON.getCode().equals(productDiscount.getDiscountType())) {
activityType = ActivityTypeEnum.TYPE_32.getCode();
couponDiscount = productDiscount.getDiscountAmount();
}
if (OrderAccountType.DISCOUNT_COUPON.getCode().equals(productDiscount.getDiscountType())) {
couponDiscount = productDiscount.getDiscountAmount();
}
if (OrderAccountType.COUPON.getCode().equals(productDiscount.getDiscountType())) {
couponDiscount = productDiscount.getDiscountAmount();
}
if (OrderAccountType.BUY_DISCOUNT.getCode().equals(productDiscount.getDiscountType())) {
fullReduction = productDiscount.getDiscountAmount();
}
} }
} }
Long saleTotalAmount = originalTotalAmount - discountTotalAmount; //优惠券满减总优惠
Long couponFull = couponDiscount + fullReduction;
// Long saleTotalAmount = originalTotalAmount - discountTotalAmount;
productVo.setOriginalTotalAmount(originalTotalAmount); productVo.setOriginalTotalAmount(originalTotalAmount);
productVo.setSaleTotalAmount(productBean.getSettlementPrice()); Long saleTotalAmount = productBean.getSettlementPrice() + couponFull;
productVo.setSaleTotalAmount(saleTotalAmount);
productVo.setHasProductCoupon(hasProductCoupon); productVo.setHasProductCoupon(hasProductCoupon);
productVo.setActivityType(activityType); productVo.setActivityType(activityType);
//套餐 //套餐
......
package cn.freemud.entities.vo; package cn.freemud.entities.vo;
import lombok.Data; import lombok.Data;
import org.hibernate.validator.constraints.NotEmpty;
/** /**
* All rights Reserved, Designed By www.freemud.cn * All rights Reserved, Designed By www.freemud.cn
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
package cn.freemud.entities.vo; package cn.freemud.entities.vo;
import cn.freemud.entities.dto.PromotionMessageDto; import cn.freemud.entities.dto.PromotionMessageDto;
import cn.freemud.entities.dto.order.OrderAccountDto;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
...@@ -238,6 +239,8 @@ public class QueryOrderResponseVo { ...@@ -238,6 +239,8 @@ public class QueryOrderResponseVo {
private List<ProductVo> products; private List<ProductVo> products;
private List<OrderAccountVo> orderAccounts;
private PromotionMessageDto promotionMessage; private PromotionMessageDto promotionMessage;
/** /**
......
...@@ -25,6 +25,7 @@ import com.freemud.sdk.api.assortment.order.response.order.OrderDetailResponse; ...@@ -25,6 +25,7 @@ import com.freemud.sdk.api.assortment.order.response.order.OrderDetailResponse;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse; import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService; import com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -89,6 +90,9 @@ public class EvaluationServiceImpl implements EvaluationService { ...@@ -89,6 +90,9 @@ public class EvaluationServiceImpl implements EvaluationService {
@Override @Override
public BaseResponse getEvaluationByOrderId(GetEvaluationDetailByOrderIdRequestVo request) { public BaseResponse getEvaluationByOrderId(GetEvaluationDetailByOrderIdRequestVo request) {
if (StringUtils.isEmpty(request.getOrder_id())) {
return ResponseUtil.success();
}
/** /**
* 根据order_id 查询订单评价详情 * 根据order_id 查询订单评价详情
*/ */
...@@ -143,6 +147,9 @@ public class EvaluationServiceImpl implements EvaluationService { ...@@ -143,6 +147,9 @@ public class EvaluationServiceImpl implements EvaluationService {
@Override @Override
public BaseResponse getEvaluationStatusNew(GetEvaluationStatusNewRequestVo request) { public BaseResponse getEvaluationStatusNew(GetEvaluationStatusNewRequestVo request) {
if (StringUtils.isEmpty(request.getOrderId())) {
return ResponseUtil.success(new OrderEvaluationStatus(2));
}
List<AssortmentOrderEvaluation> orderEvaluationListAmount = assortmentEvaluationManager.getOrderEvaluationDetailsByOrderId(request.getOrderId()); List<AssortmentOrderEvaluation> orderEvaluationListAmount = assortmentEvaluationManager.getOrderEvaluationDetailsByOrderId(request.getOrderId());
if (orderEvaluationListAmount != null && orderEvaluationListAmount.size() > 0) { if (orderEvaluationListAmount != null && orderEvaluationListAmount.size() > 0) {
return ResponseUtil.success(new OrderEvaluationStatus(1)); return ResponseUtil.success(new OrderEvaluationStatus(1));
......
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
<dependency> <dependency>
<groupId>com.freemud.sdk.api.assortment</groupId> <groupId>com.freemud.sdk.api.assortment</groupId>
<artifactId>assortment-shoppingcart-sdk</artifactId> <artifactId>assortment-shoppingcart-sdk</artifactId>
<version>cgy.0.0.1-beta</version> <version>2.4.4-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
......
...@@ -173,6 +173,10 @@ public class CartGoods { ...@@ -173,6 +173,10 @@ public class CartGoods {
* 购物车一行商品的原单机 * 购物车一行商品的原单机
*/ */
private Long originalPrice; private Long originalPrice;
/**
* 购物车一行商品的现售单价
*/
private Long finalPrice;
/** /**
* 购物车一行商品的包装费 * 购物车一行商品的包装费
......
...@@ -36,6 +36,7 @@ public enum ActivityTypeEnum { ...@@ -36,6 +36,7 @@ public enum ActivityTypeEnum {
TYPE_53(53, "第M件/杯N折"), TYPE_53(53, "第M件/杯N折"),
TYPE_6(6, "买M赠N"), TYPE_6(6, "买M赠N"),
TYPE_61(61, "单品买M赠N"), TYPE_61(61, "单品买M赠N"),
TYPE_62(62, "买赠"),
TYPE_7(7, "满额赠券"), TYPE_7(7, "满额赠券"),
TYPE_8(8, "满N件换购"), TYPE_8(8, "满N件换购"),
/** /**
......
...@@ -78,6 +78,7 @@ public enum ResponseResult { ...@@ -78,6 +78,7 @@ public enum ResponseResult {
SHOPPING_CART_ORDERING("44015", "有其他小伙伴正在下单,请稍后下单"), SHOPPING_CART_ORDERING("44015", "有其他小伙伴正在下单,请稍后下单"),
SHOPPING_CART_PRODUCT_NOT_EXIST("44016", "商品不存在"), SHOPPING_CART_PRODUCT_NOT_EXIST("44016", "商品不存在"),
SHOPPING_CART_REQUIRED_PRODUCT_NOT_EXIST("44017", "必选商品不存在"), SHOPPING_CART_REQUIRED_PRODUCT_NOT_EXIST("44017", "必选商品不存在"),
SHOPPING_CART_GIFTS_PRODUCT_NOT_EXIST("44018", "买赠商品不存在"),
/** /**
* 订单状态码 * 订单状态码
......
...@@ -22,7 +22,8 @@ public enum ShoppingCartPromotionEnum { ...@@ -22,7 +22,8 @@ public enum ShoppingCartPromotionEnum {
CUSTOMER_SCORE(6, "customerScoreService"), CUSTOMER_SCORE(6, "customerScoreService"),
SET_MEAL(7, "setMealService"), SET_MEAL(7, "setMealService"),
XY_DISCOUNT(8, "xyDiscountService"), XY_DISCOUNT(8, "xyDiscountService"),
TwoN_DISCOUNT(9, "twoNDiscountService"); TwoN_DISCOUNT(9, "twoNDiscountService"),
BUY_GIFTS(10,"buyAndGiftsPromotionService");
private Integer type; private Integer type;
private String msgType; private String msgType;
......
...@@ -31,7 +31,7 @@ import java.util.stream.Collectors; ...@@ -31,7 +31,7 @@ import java.util.stream.Collectors;
/** /**
* All rights Reserved, Designed By www.freemud.cn * All rights Reserved, Designed By www.freemud.cn
* * 加价购
* @version V1.0 * @version V1.0
* @Title: AdditionalPromotionService * @Title: AdditionalPromotionService
* @Package cn.freemud.service.impl * @Package cn.freemud.service.impl
......
...@@ -147,7 +147,7 @@ public class AssortmentSdkService { ...@@ -147,7 +147,7 @@ public class AssortmentSdkService {
checkCartRequest.setTrackingNo(LogThreadLocal.getTrackingNo()); checkCartRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
long checkStartTime = System.currentTimeMillis(); long checkStartTime = System.currentTimeMillis();
BaseResponse<CheckCartRequest> baseResponse = shoppingCartService.checkAllCartGoods(checkCartRequest); BaseResponse<CheckCartRequest> baseResponse = shoppingCartService.checkAllCartGoods(checkCartRequest);
LogUtil.info("shoppingCartBaseService checkAllCartGoods ", checkStartTime, JSON.toJSONString(checkCartRequest), JSON.toJSONString(baseResponse)); //LogUtil.info("shoppingCartBaseService checkAllCartGoods ", checkStartTime, JSON.toJSONString(checkCartRequest), JSON.toJSONString(baseResponse));
if (baseResponse == null || !ResponseResult.SUCCESS.getCode().equals(baseResponse.getCode())) { if (baseResponse == null || !ResponseResult.SUCCESS.getCode().equals(baseResponse.getCode())) {
return null; return null;
} }
......
...@@ -24,7 +24,7 @@ import java.util.stream.Stream; ...@@ -24,7 +24,7 @@ import java.util.stream.Stream;
/** /**
* All rights Reserved, Designed By www.freemud.cn * All rights Reserved, Designed By www.freemud.cn
* * 单品买M赠N
* @version V1.0 * @version V1.0
* @Title: BuySendPromotionService * @Title: BuySendPromotionService
* @Package cn.freemud.service.impl * @Package cn.freemud.service.impl
......
...@@ -52,9 +52,6 @@ public class DefaultPromotionService implements IPromotionService { ...@@ -52,9 +52,6 @@ public class DefaultPromotionService implements IPromotionService {
long totalAmount = 0L; long totalAmount = 0L;
long totalPackgeAmount = 0L; long totalPackgeAmount = 0L;
for (CartGoods cartGoods : cartGoodsList) { for (CartGoods cartGoods : cartGoodsList) {
if (ObjectUtils.equals(GoodsTypeEnum.SET_MEAL_GOODS.getGoodsType(), cartGoods.getGoodsType())) {
continue;
}
// 设置商品原价与商品现价的初始值 // 设置商品原价与商品现价的初始值
long originalAmount = cartGoods.getOriginalPrice() * cartGoods.getQty(); long originalAmount = cartGoods.getOriginalPrice() * cartGoods.getQty();
long amount = cartGoods.getOriginalPrice() * cartGoods.getQty(); long amount = cartGoods.getOriginalPrice() * cartGoods.getQty();
...@@ -87,9 +84,14 @@ public class DefaultPromotionService implements IPromotionService { ...@@ -87,9 +84,14 @@ public class DefaultPromotionService implements IPromotionService {
List<CartGoods> cartGoodsList = shoppingCartGoodsResponseVo.getProducts(); List<CartGoods> cartGoodsList = shoppingCartGoodsResponseVo.getProducts();
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods> apportionGoodsList = List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods> apportionGoodsList =
calculationDiscountResult == null ? new ArrayList<>() : calculationDiscountResult.getApportionGoods(); calculationDiscountResult == null ? new ArrayList<>() : calculationDiscountResult.getApportionGoods();
Map<String, String> duplicateGoodsMap = new HashMap<>();
cartGoodsList.stream().collect(Collectors.groupingBy(CartGoods::getGoodsId, Collectors.counting())).forEach((goodsId, count) -> {
duplicateGoodsMap.put(goodsId,String.format("%s,0", count));
});
for (int i = 0, len = cartGoodsList.size(); i < len; i++) { for (int i = 0, len = cartGoodsList.size(); i < len; i++) {
CartGoods cartGoods = cartGoodsList.get(i); CartGoods cartGoods = cartGoodsList.get(i);
List<ShoppingCartGoodsDto.CartGoodsDetailDto> cartGoodsDetailDtos = shoppingCartConvertAdapter.convertCartGoods2DetailGoodsList(cartGoods, apportionGoodsList); List<ShoppingCartGoodsDto.CartGoodsDetailDto> cartGoodsDetailDtos = shoppingCartConvertAdapter.convertCartGoods2DetailGoodsList(cartGoods, apportionGoodsList,duplicateGoodsMap);
cartGoodsDetailDtoList.addAll(cartGoodsDetailDtos); cartGoodsDetailDtoList.addAll(cartGoodsDetailDtos);
} }
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount> discounts = calculationDiscountResult == null ? new ArrayList<>() : calculationDiscountResult.getDiscounts(); List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount> discounts = calculationDiscountResult == null ? new ArrayList<>() : calculationDiscountResult.getDiscounts();
...@@ -152,7 +154,7 @@ public class DefaultPromotionService implements IPromotionService { ...@@ -152,7 +154,7 @@ public class DefaultPromotionService implements IPromotionService {
goodsStock.clear(); goodsStock.clear();
for (String goodId : needSendGoodsId) { for (String goodId : needSendGoodsId) {
SubtractStockVO.SubtractStockGoodsVO subtractStockGoodsVO = mapSubstractStocks.get(goodId); SubtractStockVO.SubtractStockGoodsVO subtractStockGoodsVO = mapSubstractStocks.get(goodId);
if(null != mapSubstractStocks.get(goodId)) { if (null != mapSubstractStocks.get(goodId)) {
goodsStock.add(subtractStockGoodsVO); goodsStock.add(subtractStockGoodsVO);
} }
} }
......
...@@ -362,17 +362,9 @@ public class ShoppingCartMealServiceImpl implements ShoppingCartNewService { ...@@ -362,17 +362,9 @@ public class ShoppingCartMealServiceImpl implements ShoppingCartNewService {
List<CartGoods> collectCartGoods = new ArrayList<>(); List<CartGoods> collectCartGoods = new ArrayList<>();
cartGoodsList.forEach(each -> addOrUpdate(collectCartGoods, each)); cartGoodsList.forEach(each -> addOrUpdate(collectCartGoods, each));
collectCartGoods.forEach(eachGoods -> { collectCartGoods.forEach(eachGoods -> {
ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto = shoppingCartConvertAdapter.convertCartGoods2DetailGoods(eachGoods, new ArrayList<>()); ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto = shoppingCartConvertAdapter.convertCartGoods2DetailGoods(eachGoods, new ArrayList<>(), new HashMap<>());
List<CartGoods.ComboxGoods> productGroupList = eachGoods.getProductGroupList();
if (CollectionUtils.isEmpty(productGroupList)) {
productGroupList = new ArrayList<>();
}
productGroupList.addAll(eachGoods.getProductComboList());
if (!CollectionUtils.isEmpty(productGroupList)) {
cartGoodsDetailDto.setProductType(ProductType.SETMEAL.getCode()); cartGoodsDetailDto.setProductType(ProductType.SETMEAL.getCode());
cartGoodsDetailDto.setComboProducts(shoppingCartConvertAdapter.convertComboxGoods2DetailGoods(eachGoods, productGroupList)); cartGoodsDetailDto.setComboProducts(shoppingCartConvertAdapter.convertComboxGoods2DetailGoods(eachGoods));
}
products.add(cartGoodsDetailDto); products.add(cartGoodsDetailDto);
}); });
} }
......
...@@ -2,12 +2,14 @@ package cn.freemud.service.impl; ...@@ -2,12 +2,14 @@ package cn.freemud.service.impl;
import cn.freemud.entities.dto.ActivityCalculationDiscountResponseDto; import cn.freemud.entities.dto.ActivityCalculationDiscountResponseDto;
import cn.freemud.entities.dto.UserLoginInfoDto; import cn.freemud.entities.dto.UserLoginInfoDto;
import cn.freemud.entities.dto.activity.ActivityDiscountsDto;
import cn.freemud.entities.dto.activity.ActivityQueryDto; import cn.freemud.entities.dto.activity.ActivityQueryDto;
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.service.IPromotionService; import cn.freemud.service.IPromotionService;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -35,7 +37,7 @@ public class TimeSalePromotionService implements IPromotionService { ...@@ -35,7 +37,7 @@ public class TimeSalePromotionService 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) {
if (calculationDiscountResult == null) { if (calculationDiscountResult == null || CollectionUtils.isEmpty(calculationDiscountResult.getDiscounts()) || !calculationDiscountResult.getDiscounts().stream().anyMatch(discount -> ActivityTypeEnum.TYPE_2.getCode().equals(discount.getType()))) {
return; return;
} }
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> goodsList = calculationDiscountResult.getGoods(); List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> goodsList = calculationDiscountResult.getGoods();
...@@ -48,13 +50,10 @@ public class TimeSalePromotionService implements IPromotionService { ...@@ -48,13 +50,10 @@ public class TimeSalePromotionService implements IPromotionService {
// 存储当前享受限时特价折扣的商品数量 // 存储当前享受限时特价折扣的商品数量
Map<String, Integer> numberMap = new HashMap<>(); Map<String, Integer> numberMap = new HashMap<>();
for (CartGoods cartGoods : cartGoodsList) { for (CartGoods cartGoods : cartGoodsList) {
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods goods ; ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods goods;
if ((goods = goodsMap.get(cartGoods.getGoodsId())) == null) { if ((goods = goodsMap.get(cartGoods.getGoodsId())) == null) {
continue; continue;
} }
if (CollectionUtils.isEmpty(goods.getDiscounts())) {
continue;
}
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount goodsDiscount = getGoodsDiscount(goods.getDiscounts(), ActivityTypeEnum.TYPE_2); ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount goodsDiscount = getGoodsDiscount(goods.getDiscounts(), ActivityTypeEnum.TYPE_2);
if (goodsDiscount == null) { if (goodsDiscount == null) {
continue; continue;
...@@ -102,15 +101,57 @@ public class TimeSalePromotionService implements IPromotionService { ...@@ -102,15 +101,57 @@ public class TimeSalePromotionService implements IPromotionService {
} }
} }
if (StringUtils.isNotBlank(toastMsg)){ if (StringUtils.isNotBlank(toastMsg)) {
shoppingCartGoodsResponseVo.setToastMsg(toastMsg); shoppingCartGoodsResponseVo.setToastMsg(toastMsg);
} }
} }
@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) {
if (calculationDiscountResult == null || CollectionUtils.isEmpty(calculationDiscountResult.getDiscounts()) || !calculationDiscountResult.getDiscounts().stream().anyMatch(discount -> ActivityTypeEnum.TYPE_2.getCode().equals(discount.getType()))) {
return; return;
} }
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> goodsList = calculationDiscountResult.getGoods();
if (CollectionUtils.isEmpty(goodsList)) {
return;
}
// 商品实际享受优惠的数量: key:skuId; value:实际数量
Map<String, Integer> numberMap = new HashMap<>();
Map<String, ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> goodsMap = goodsList.parallelStream()
.collect(Collectors.toMap(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods::getGoodsId, Function.identity(), (k1, k2) -> k1));
for (ShoppingCartGoodsDto.CartGoodsDetailDto cartGoods : shoppingCartGoodsDto.getProducts()) {
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods goods;
// 特价商品没有匹配 或 加价购商品 直接跳出循环
if ((goods = goodsMap.get(cartGoods.getSkuId())) == null || ObjectUtils.equals(ActivityTypeEnum.TYPE_81.getCode(), cartGoods.getActivityType())) {
continue;
}
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount goodsDiscount = getGoodsDiscount(goods.getDiscounts(), ActivityTypeEnum.TYPE_2);
if (goodsDiscount == null) {
continue;
}
if (numberMap.get(cartGoods.getSkuId()) == null) {
numberMap.put(cartGoods.getSkuId(), goods.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();
ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto();
activityDiscountsDto.setActivityCode(goodsDiscount.getActivityCode());
activityDiscountsDto.setActivityName(goodsDiscount.getActivityName());
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);
}
}
}
/** /**
* 获取指定促销类型的GoodsDiscount * 获取指定促销类型的GoodsDiscount
...@@ -120,6 +161,9 @@ public class TimeSalePromotionService implements IPromotionService { ...@@ -120,6 +161,9 @@ public class TimeSalePromotionService implements IPromotionService {
* @return * @return
*/ */
private ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount getGoodsDiscount(List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount> goodsDiscountList, ActivityTypeEnum type) { private ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount getGoodsDiscount(List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount> goodsDiscountList, ActivityTypeEnum type) {
if (CollectionUtils.isEmpty(goodsDiscountList)) {
return null;
}
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount goodsDiscount : goodsDiscountList) { for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount goodsDiscount : goodsDiscountList) {
if (Objects.equals(goodsDiscount.getType(), type.getCode())) { if (Objects.equals(goodsDiscount.getType(), type.getCode())) {
return goodsDiscount; return goodsDiscount;
......
...@@ -52,8 +52,7 @@ public class XyDiscountServiceImpl implements IPromotionService { ...@@ -52,8 +52,7 @@ public class XyDiscountServiceImpl implements IPromotionService {
Optional<ShoppingCartGoodsDto.CartGoodsDetailDto> firstCartGoods = shoppingCartGoodsDto.getProducts().stream().filter(cartGoods -> ObjectUtils.equals(apportionGoodsDetail.getGoodsId(), cartGoods.getSkuId())).findFirst(); Optional<ShoppingCartGoodsDto.CartGoodsDetailDto> firstCartGoods = shoppingCartGoodsDto.getProducts().stream().filter(cartGoods -> ObjectUtils.equals(apportionGoodsDetail.getGoodsId(), cartGoods.getSkuId())).findFirst();
if (firstCartGoods.isPresent()) { if (firstCartGoods.isPresent()) {
ShoppingCartGoodsDto.CartGoodsDetailDto cartGoods = firstCartGoods.get(); ShoppingCartGoodsDto.CartGoodsDetailDto cartGoods = firstCartGoods.get();
cartGoods.setTotalDiscountAmount(apportionGoodsDetail.getActivityApportionAmount().intValue()); cartGoods.setTotalDiscountAmount(cartGoods.getTotalDiscountAmount() + apportionGoodsDetail.getActivityApportionAmount().intValue());
cartGoods.setSalePrice(cartGoods.getOriginalPrice() - apportionGoodsDetail.getActivityApportionAmount() / cartGoods.getQty());
List<ActivityDiscountsDto> activityDiscountsDtoList = new ArrayList<>(); List<ActivityDiscountsDto> activityDiscountsDtoList = new ArrayList<>();
ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto(); ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto();
activityDiscountsDto.setActivityCode(apportionGoodsDetail.getActivityCode()); activityDiscountsDto.setActivityCode(apportionGoodsDetail.getActivityCode());
......
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