Commit 2696c7dc by 姜海波

更新最新master代码

parent 5f086fa0
......@@ -14,7 +14,7 @@
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-test</artifactId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
......
......@@ -44,6 +44,7 @@ import com.freemud.application.sdk.api.log.LogThreadLocal;
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.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.request.OrderExtendedReq;
import com.freemud.application.sdk.api.promotioncenter.dto.promotion.GoodsStockDTO;
......@@ -924,6 +925,7 @@ public class OrderAdapter {
}
//商品信息转换
convent2ProductVos(ordersBean.getProductList(), responseVo);
responseVo.setOrderAccounts(convent2OrderAccountVo(ordersBean.getApportionDetails()));
Long promotionAmount = 0L;
Long deliveryAmount = 0L;
Long packageAmount = 0L;
......@@ -1507,6 +1509,39 @@ public class OrderAdapter {
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) {
if (CollectionUtils.isEmpty(productBeans)) {
......@@ -1561,6 +1596,8 @@ public class OrderAdapter {
Long discountTotalAmount = 0L;
//判断当前商品内是否包含商品券商品 如果包含,商品名称改为商品券名称
Boolean hasProductCoupon = false;
Long couponDiscount = 0L;
Long fullReduction = 0L;
Integer activityType = 0;
if (CollectionUtils.isNotEmpty(productBean.getDiscountList())) {
for (QueryOrdersResponse.DataBean.OrderBean.ProductBean.ProductDiscount productDiscount : productBean.getDiscountList()) {
......@@ -1578,11 +1615,27 @@ public class OrderAdapter {
if (OrderAccountType.BUYM_SENDN.getCode().equals(productDiscount.getDiscountType())) {
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.setSaleTotalAmount(productBean.getSettlementPrice());
Long saleTotalAmount = productBean.getSettlementPrice() + couponFull;
productVo.setSaleTotalAmount(saleTotalAmount);
productVo.setHasProductCoupon(hasProductCoupon);
productVo.setActivityType(activityType);
//套餐
......
package cn.freemud.entities.vo;
import lombok.Data;
import org.hibernate.validator.constraints.NotEmpty;
/**
* All rights Reserved, Designed By www.freemud.cn
......
......@@ -13,6 +13,7 @@
package cn.freemud.entities.vo;
import cn.freemud.entities.dto.PromotionMessageDto;
import cn.freemud.entities.dto.order.OrderAccountDto;
import lombok.Builder;
import lombok.Data;
......@@ -238,6 +239,8 @@ public class QueryOrderResponseVo {
private List<ProductVo> products;
private List<OrderAccountVo> orderAccounts;
private PromotionMessageDto promotionMessage;
/**
......
......@@ -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.service.OrderCenterSdkService;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -89,6 +90,9 @@ public class EvaluationServiceImpl implements EvaluationService {
@Override
public BaseResponse getEvaluationByOrderId(GetEvaluationDetailByOrderIdRequestVo request) {
if (StringUtils.isEmpty(request.getOrder_id())) {
return ResponseUtil.success();
}
/**
* 根据order_id 查询订单评价详情
*/
......@@ -143,6 +147,9 @@ public class EvaluationServiceImpl implements EvaluationService {
@Override
public BaseResponse getEvaluationStatusNew(GetEvaluationStatusNewRequestVo request) {
if (StringUtils.isEmpty(request.getOrderId())) {
return ResponseUtil.success(new OrderEvaluationStatus(2));
}
List<AssortmentOrderEvaluation> orderEvaluationListAmount = assortmentEvaluationManager.getOrderEvaluationDetailsByOrderId(request.getOrderId());
if (orderEvaluationListAmount != null && orderEvaluationListAmount.size() > 0) {
return ResponseUtil.success(new OrderEvaluationStatus(1));
......
......@@ -45,7 +45,7 @@
<dependency>
<groupId>com.freemud.sdk.api.assortment</groupId>
<artifactId>assortment-shoppingcart-sdk</artifactId>
<version>cgy.0.0.1-beta</version>
<version>2.4.4-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
......
......@@ -173,6 +173,10 @@ public class CartGoods {
* 购物车一行商品的原单机
*/
private Long originalPrice;
/**
* 购物车一行商品的现售单价
*/
private Long finalPrice;
/**
* 购物车一行商品的包装费
......
......@@ -36,6 +36,7 @@ public enum ActivityTypeEnum {
TYPE_53(53, "第M件/杯N折"),
TYPE_6(6, "买M赠N"),
TYPE_61(61, "单品买M赠N"),
TYPE_62(62, "买赠"),
TYPE_7(7, "满额赠券"),
TYPE_8(8, "满N件换购"),
/**
......
......@@ -78,6 +78,7 @@ public enum ResponseResult {
SHOPPING_CART_ORDERING("44015", "有其他小伙伴正在下单,请稍后下单"),
SHOPPING_CART_PRODUCT_NOT_EXIST("44016", "商品不存在"),
SHOPPING_CART_REQUIRED_PRODUCT_NOT_EXIST("44017", "必选商品不存在"),
SHOPPING_CART_GIFTS_PRODUCT_NOT_EXIST("44018", "买赠商品不存在"),
/**
* 订单状态码
......
......@@ -22,7 +22,8 @@ public enum ShoppingCartPromotionEnum {
CUSTOMER_SCORE(6, "customerScoreService"),
SET_MEAL(7, "setMealService"),
XY_DISCOUNT(8, "xyDiscountService"),
TwoN_DISCOUNT(9, "twoNDiscountService");
TwoN_DISCOUNT(9, "twoNDiscountService"),
BUY_GIFTS(10,"buyAndGiftsPromotionService");
private Integer type;
private String msgType;
......
......@@ -31,7 +31,7 @@ import java.util.stream.Collectors;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* 加价购
* @version V1.0
* @Title: AdditionalPromotionService
* @Package cn.freemud.service.impl
......
......@@ -147,7 +147,7 @@ public class AssortmentSdkService {
checkCartRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
long checkStartTime = System.currentTimeMillis();
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())) {
return null;
}
......
......@@ -24,7 +24,7 @@ import java.util.stream.Stream;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* 单品买M赠N
* @version V1.0
* @Title: BuySendPromotionService
* @Package cn.freemud.service.impl
......
......@@ -52,9 +52,6 @@ public class DefaultPromotionService implements IPromotionService {
long totalAmount = 0L;
long totalPackgeAmount = 0L;
for (CartGoods cartGoods : cartGoodsList) {
if (ObjectUtils.equals(GoodsTypeEnum.SET_MEAL_GOODS.getGoodsType(), cartGoods.getGoodsType())) {
continue;
}
// 设置商品原价与商品现价的初始值
long originalAmount = cartGoods.getOriginalPrice() * cartGoods.getQty();
long amount = cartGoods.getOriginalPrice() * cartGoods.getQty();
......@@ -87,9 +84,14 @@ public class DefaultPromotionService implements IPromotionService {
List<CartGoods> cartGoodsList = shoppingCartGoodsResponseVo.getProducts();
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods> apportionGoodsList =
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++) {
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);
}
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount> discounts = calculationDiscountResult == null ? new ArrayList<>() : calculationDiscountResult.getDiscounts();
......@@ -123,9 +125,9 @@ public class DefaultPromotionService implements IPromotionService {
/**
* 库存扣减加价购商品 要过滤掉没有换购的商品
*
* @param stocks 扣减库存
* @param stocks 扣减库存
* @param shoppingCartInfoRequestVo 购物车请求信息
* @param addMoneyDiscounts 加价购活动
* @param addMoneyDiscounts 加价购活动
* @return 返回应该扣减的加价购商品库存
*/
private List<SubtractStockVO> filterSendGoodsStocks(List<SubtractStockVO> stocks, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo, List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount> addMoneyDiscounts) {
......@@ -152,7 +154,7 @@ public class DefaultPromotionService implements IPromotionService {
goodsStock.clear();
for (String goodId : needSendGoodsId) {
SubtractStockVO.SubtractStockGoodsVO subtractStockGoodsVO = mapSubstractStocks.get(goodId);
if(null != mapSubstractStocks.get(goodId)) {
if (null != mapSubstractStocks.get(goodId)) {
goodsStock.add(subtractStockGoodsVO);
}
}
......
......@@ -362,17 +362,9 @@ public class ShoppingCartMealServiceImpl implements ShoppingCartNewService {
List<CartGoods> collectCartGoods = new ArrayList<>();
cartGoodsList.forEach(each -> addOrUpdate(collectCartGoods, each));
collectCartGoods.forEach(eachGoods -> {
ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto = shoppingCartConvertAdapter.convertCartGoods2DetailGoods(eachGoods, new ArrayList<>());
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.setComboProducts(shoppingCartConvertAdapter.convertComboxGoods2DetailGoods(eachGoods, productGroupList));
}
ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto = shoppingCartConvertAdapter.convertCartGoods2DetailGoods(eachGoods, new ArrayList<>(), new HashMap<>());
cartGoodsDetailDto.setProductType(ProductType.SETMEAL.getCode());
cartGoodsDetailDto.setComboProducts(shoppingCartConvertAdapter.convertComboxGoods2DetailGoods(eachGoods));
products.add(cartGoodsDetailDto);
});
}
......
......@@ -2,12 +2,14 @@ package cn.freemud.service.impl;
import cn.freemud.entities.dto.ActivityCalculationDiscountResponseDto;
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.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.service.IPromotionService;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;
......@@ -35,7 +37,7 @@ public class TimeSalePromotionService implements IPromotionService {
@Override
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;
}
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> goodsList = calculationDiscountResult.getGoods();
......@@ -48,13 +50,10 @@ public class TimeSalePromotionService implements IPromotionService {
// 存储当前享受限时特价折扣的商品数量
Map<String, Integer> numberMap = new HashMap<>();
for (CartGoods cartGoods : cartGoodsList) {
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods goods ;
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods goods;
if ((goods = goodsMap.get(cartGoods.getGoodsId())) == null) {
continue;
}
if (CollectionUtils.isEmpty(goods.getDiscounts())) {
continue;
}
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount goodsDiscount = getGoodsDiscount(goods.getDiscounts(), ActivityTypeEnum.TYPE_2);
if (goodsDiscount == null) {
continue;
......@@ -102,14 +101,56 @@ public class TimeSalePromotionService implements IPromotionService {
}
}
if (StringUtils.isNotBlank(toastMsg)){
if (StringUtils.isNotBlank(toastMsg)) {
shoppingCartGoodsResponseVo.setToastMsg(toastMsg);
}
}
@Override
public void updateShoppingCartGoodsApportion(ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, ShoppingCartGoodsDto shoppingCartGoodsDto, CreateOrderVo.PremiumExchangeActivity premiumExchangeActivity, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) {
return;
if (calculationDiscountResult == null || CollectionUtils.isEmpty(calculationDiscountResult.getDiscounts()) || !calculationDiscountResult.getDiscounts().stream().anyMatch(discount -> ActivityTypeEnum.TYPE_2.getCode().equals(discount.getType()))) {
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);
}
}
}
/**
......@@ -120,6 +161,9 @@ public class TimeSalePromotionService implements IPromotionService {
* @return
*/
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) {
if (Objects.equals(goodsDiscount.getType(), type.getCode())) {
return goodsDiscount;
......
......@@ -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();
if (firstCartGoods.isPresent()) {
ShoppingCartGoodsDto.CartGoodsDetailDto cartGoods = firstCartGoods.get();
cartGoods.setTotalDiscountAmount(apportionGoodsDetail.getActivityApportionAmount().intValue());
cartGoods.setSalePrice(cartGoods.getOriginalPrice() - apportionGoodsDetail.getActivityApportionAmount() / cartGoods.getQty());
cartGoods.setTotalDiscountAmount(cartGoods.getTotalDiscountAmount() + apportionGoodsDetail.getActivityApportionAmount().intValue());
List<ActivityDiscountsDto> activityDiscountsDtoList = new ArrayList<>();
ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto();
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