Commit f5544531 by 胡敬轩

Merge remote-tracking branch 'remotes/origin/feature/20210913-华莱士新算价互斥同享改版'

# Conflicts:
#	shopping-cart-application-service/src/main/java/cn/freemud/adapter/ActivityAdapter.java
#	shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartMallServiceImpl.java
#	shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
#	shopping-cart-application-service/src/main/java/cn/freemud/service/impl/calculate/CalculationSharingDiscountService.java
parents 750b3422 e23c13a4
......@@ -15,8 +15,8 @@ package cn.freemud.adapter;
import cn.freemud.base.constant.Version;
import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.activity.ActivityQueryDto;
import cn.freemud.entities.dto.calculate.ActivityCalculationDiscountRequestDto;
import cn.freemud.entities.dto.calculate.ActivityCalculationDiscountResponseDto;
import cn.freemud.entities.dto.calculate.ActivityTypeSharedExclusive;
import cn.freemud.entities.dto.order.CreateOrderDto;
import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.PremiumExchangeResponseVo;
......@@ -30,13 +30,12 @@ import com.freemud.application.sdk.api.ordercenter.entities.v1.ProductBeanV1;
import com.freemud.application.sdk.api.ordercenter.entities.v1.ProductDiscountV1;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang3.tuple.Triple;
import org.springframework.beans.BeanUtils;
import org.springframework.data.util.Pair;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.*;
import java.util.stream.Collectors;
@Component
......@@ -358,6 +357,11 @@ public class ActivityAdapter {
// Long sendDiscountAmount = 0L;//赠送和换购商品优惠不算在内
// Long sendRealAmount = 0L;//赠送和换购商品实付不算在内
if(discountResult!=null){
boolean newCalculation = CollectionUtils.isNotEmpty(discountResult.getCouponSharedExclusive());
if(newCalculation){
couponAvailableCartInfo.setNewCalculation(newCalculation);
buildOrderDiscount(couponAvailableCartInfo,discountResult.getDiscounts(),discountResult.getCouponSharedExclusive());
}
//已使用券
if(CollectionUtils.isNotEmpty(discountResult.getDiscounts())){
List<String> couponCodes = discountResult.getDiscounts().stream().filter(discount -> Objects.equals(discount.getType(),ActivityTypeEnum.TYPE_3.getCode())
......@@ -374,7 +378,7 @@ public class ActivityAdapter {
List<CartProduct> goods = new ArrayList<>();
for(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods discountGood : discountResult.getGoods()){
//小料和可选搭配金额
Pair<Long,Long> pair = getSmallMaterialAmountSharing(discountGood.getSmallMaterial());//value1=总实付 value2=总优惠
Triple<Long,Long,Long> triple = getSmallMaterialAmountSharing(discountGood.getSmallMaterial());//value1=总实付 value2=总优惠 value3=单个主商品下总原价
if(Objects.equals(CalculationGoodsType.TYPE_1.getType(),discountGood.getCartGoodType()) || Objects.equals(CalculationGoodsType.TYPE_2.getType(),discountGood.getCartGoodType())){
// sendRealAmount += discountGood.getRealAmount() + pair.getFirst();
// sendDiscountAmount += discountGood.getDiscountAmount() + pair.getSecond();
......@@ -383,6 +387,7 @@ public class ActivityAdapter {
CartProduct cartProduct = new CartProduct();
cartProduct.setProductId(discountGood.getGoodsId());
cartProduct.setQuantity(discountGood.getGoodsQuantity());
cartProduct.setOriginalPrice(discountGood.getOriginalPrice()+triple.getRight());
Long mealDiscountAmount = 0L;//套餐优惠不算在内
if(CollectionUtils.isNotEmpty(discountGood.getDiscounts())){
......@@ -395,9 +400,12 @@ public class ActivityAdapter {
mealDiscountAmount = discountGood.getDiscounts().stream().filter(goodsDiscount -> Objects.equals(goodsDiscount.getType(),ActivityTypeEnum.TYPE_310.getCode())).mapToLong(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount::getDiscount).sum();
}
cartProduct.setOriginalTotalAmount(discountGood.getRealAmount()+discountGood.getDiscountAmount() + pair.getFirst() + pair.getSecond() - mealDiscountAmount);
cartProduct.setRealAmount(discountGood.getRealAmount() + pair.getFirst());
cartProduct.setDiscountAmount(discountGood.getDiscountAmount()+pair.getSecond() - mealDiscountAmount);
cartProduct.setOriginalTotalAmount(discountGood.getRealAmount()+discountGood.getDiscountAmount() + triple.getLeft() + triple.getMiddle() - mealDiscountAmount);
cartProduct.setRealAmount(discountGood.getRealAmount() + triple.getLeft());
cartProduct.setDiscountAmount(discountGood.getDiscountAmount()+triple.getMiddle() - mealDiscountAmount);
if(newCalculation){
buildGoodDiscount(cartProduct,discountGood,discountResult.getCouponSharedExclusive());
}
goods.add(cartProduct);
}
couponAvailableCartInfo.setProductList(goods);
......@@ -481,16 +489,18 @@ public class ActivityAdapter {
return couponAvailableCartInfo;
}
private Pair<Long,Long> getSmallMaterialAmountSharing(List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.SmallMaterial> smallMaterial){
private Triple<Long,Long,Long> getSmallMaterialAmountSharing(List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.SmallMaterial> smallMaterial){
long realAmount = 0;
long discountAmount = 0;
long originalPrice = 0;
if(org.apache.commons.collections.CollectionUtils.isNotEmpty(smallMaterial)){
for(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.SmallMaterial small :smallMaterial){
realAmount += small.getRealAmount();
discountAmount += small.getDiscountAmount();
originalPrice += small.getOriginalPrice() * small.getGoodsQuantity();
}
}
return Pair.of(realAmount,discountAmount);
return Triple.of(realAmount,discountAmount,originalPrice);
}
private Pair<Long,Long> getSmallMaterialAmount(List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.SmallMaterial> smallMaterial){
long realAmount = 0;
......@@ -503,4 +513,121 @@ public class ActivityAdapter {
}
return Pair.of(realAmount,discountAmount);
}
private void buildGoodDiscount(CartProduct cartProduct, ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods discountGood, Set<ActivityTypeSharedExclusive> couponSharedExclusive){
if(CollectionUtils.isEmpty(discountGood.getDiscounts())){
return;
}
HashMap<Integer,Integer> cashExclusiveMap = new HashMap<>();
HashMap<Integer,Integer> cashMultipleMap = new HashMap<>();
HashMap<Integer,Integer> discountExclusiveMap = new HashMap<>();
HashMap<Integer,Integer> discountMultipleMap = new HashMap<>();
for(ActivityTypeSharedExclusive sharedExclusive : couponSharedExclusive){
if(Objects.equals(sharedExclusive.getActivityType(),ActivityTypeEnum.TYPE_3.getCode())){
cashExclusiveMap.put(sharedExclusive.getSharedExclusiveActivityType(),sharedExclusive.getSharedExclusive());
cashMultipleMap.put(sharedExclusive.getSharedExclusiveActivityType(),sharedExclusive.getMultiple());
}
if(Objects.equals(sharedExclusive.getActivityType(),ActivityTypeEnum.TYPE_31.getCode())){
discountExclusiveMap.put(sharedExclusive.getSharedExclusiveActivityType(),sharedExclusive.getSharedExclusive());
discountMultipleMap.put(sharedExclusive.getSharedExclusiveActivityType(),sharedExclusive.getMultiple());
}
}
List<CartProduct.Discount> cartProductDiscountList = new ArrayList<>();
for(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount discount : discountGood.getDiscounts()){
if(Objects.equals(discount.getType(),ActivityTypeEnum.TYPE_310.getCode())){
continue;
}
CartProduct.Discount cartProductDiscount = new CartProduct.Discount();
BeanUtils.copyProperties(discount,cartProductDiscount);
cartProductDiscount.setActualGoodsNumber(discount.getAddOnQuantity());
//小料或者可选搭配的优惠金额合并至主商品
long smallDiscountAmount = getSmallActivityDiscountAmount(discountGood.getSmallMaterial(),discount.getType());
cartProductDiscount.setDiscount(cartProductDiscount.getDiscount() + smallDiscountAmount);
//是否与代金券互斥
boolean cashExclusive = Objects.equals(cashExclusiveMap.get(discount.getType()),YesOrNoEnum.NO.getCode());
cartProductDiscount.setCashExclusive(cashExclusive);
//是否与代金券叠加门槛
boolean cashMultiple = !Objects.equals(cashMultipleMap.get(discount.getType()),YesOrNoEnum.NO.getCode());
cartProductDiscount.setCashMultiple(cashMultiple);
//是否与折扣券互斥
boolean discountExclusive = Objects.equals(discountExclusiveMap.get(discount.getType()),YesOrNoEnum.NO.getCode());
cartProductDiscount.setDiscountExclusive(discountExclusive);
//是否与折扣券叠加门槛
boolean discountMultiple = !Objects.equals(discountMultipleMap.get(discount.getType()),YesOrNoEnum.NO.getCode());
cartProductDiscount.setDiscountMultiple(discountMultiple);
cartProductDiscountList.add(cartProductDiscount);
}
cartProduct.setDiscounts(cartProductDiscountList);
}
private void buildOrderDiscount(CouponAvailableCartInfo couponAvailableCartInfo,List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount> discounts, Set<ActivityTypeSharedExclusive> couponSharedExclusive){
if(CollectionUtils.isEmpty(discounts)){
return;
}
HashMap<Integer,Integer> cashExclusiveMap = new HashMap<>();
HashMap<Integer,Integer> cashMultipleMap = new HashMap<>();
HashMap<Integer,Integer> discountExclusiveMap = new HashMap<>();
HashMap<Integer,Integer> discountMultipleMap = new HashMap<>();
for(ActivityTypeSharedExclusive sharedExclusive : couponSharedExclusive){
if(Objects.equals(sharedExclusive.getActivityType(),ActivityTypeEnum.TYPE_3.getCode())){
cashExclusiveMap.put(sharedExclusive.getSharedExclusiveActivityType(),sharedExclusive.getSharedExclusive());
cashMultipleMap.put(sharedExclusive.getSharedExclusiveActivityType(),sharedExclusive.getMultiple());
}
if(Objects.equals(sharedExclusive.getActivityType(),ActivityTypeEnum.TYPE_31.getCode())){
discountExclusiveMap.put(sharedExclusive.getSharedExclusiveActivityType(),sharedExclusive.getSharedExclusive());
discountMultipleMap.put(sharedExclusive.getSharedExclusiveActivityType(),sharedExclusive.getMultiple());
}
}
List<CouponAvailableCartInfo.Discount> cartDiscountList = new ArrayList<>();
for(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount discount : discounts){
if(Objects.equals(discount.getType(),ActivityTypeEnum.TYPE_310.getCode())){
continue;
}
CouponAvailableCartInfo.Discount cartProductDiscount = new CouponAvailableCartInfo.Discount();
BeanUtils.copyProperties(discount,cartProductDiscount);
//是否与代金券互斥
boolean cashExclusive = Objects.equals(cashExclusiveMap.get(discount.getType()),YesOrNoEnum.NO.getCode());
cartProductDiscount.setCashExclusive(cashExclusive);
//是否与代金券叠加门槛
boolean cashMultiple = !Objects.equals(cashMultipleMap.get(discount.getType()),YesOrNoEnum.NO.getCode());
cartProductDiscount.setCashMultiple(cashMultiple);
//是否与折扣券互斥
boolean discountExclusive = Objects.equals(discountExclusiveMap.get(discount.getType()),YesOrNoEnum.NO.getCode());
cartProductDiscount.setDiscountExclusive(discountExclusive);
//是否与折扣券叠加门槛
boolean discountMultiple = !Objects.equals(discountMultipleMap.get(discount.getType()),YesOrNoEnum.NO.getCode());
cartProductDiscount.setDiscountMultiple(discountMultiple);
cartDiscountList.add(cartProductDiscount);
}
couponAvailableCartInfo.setDiscounts(cartDiscountList);
}
private Long getSmallActivityDiscountAmount(List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.SmallMaterial> smallMaterial,Integer activityType){
long discountAmount = 0;
if(org.apache.commons.collections.CollectionUtils.isNotEmpty(smallMaterial)){
for(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.SmallMaterial small :smallMaterial){
if(CollectionUtils.isNotEmpty(small.getDiscounts())){
for(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount smallDiscount :small.getDiscounts()){
if(Objects.equals(smallDiscount.getType(),activityType)){
discountAmount += smallDiscount.getDiscount();
}
}
}
}
}
return discountAmount;
}
}
package cn.freemud.entities.dto.activity;
import lombok.Data;
/**
* All rights Reserved, Designed By www.freemud.com
*
* @version V1.0
* @Title:
* @Package: cn.freemud.entities.dto.activity
* @Descripttion:
* @author: shuhu.hou
* @date: 2019/7/11
* @Copyright: 2017 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目.
*/
@Data
public class DiscountSharingDto {
//当前请求是否自动勾选优惠券
private Boolean autoCoupon;
}
......@@ -84,6 +84,9 @@ public class ActivityCalculationDiscountRequestDto {
*/
private Boolean isMember;
//当前请求是否自动勾选优惠券
private Boolean autoCoupon;
@Data
public static class CalculationDiscountCoupon {
/**
......
......@@ -9,6 +9,7 @@ import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;
@Data
public class ActivityCalculationDiscountResponseDto {
......@@ -126,7 +127,10 @@ public class ActivityCalculationDiscountResponseDto {
*/
private MonthCardDiscount monthlyEnjoyCardDiscount;
/**
* 代金券和折扣券与活动的互斥共享关系(可用优惠券列表使用)
*/
private Set<ActivityTypeSharedExclusive> couponSharedExclusive;
......@@ -353,6 +357,9 @@ public class ActivityCalculationDiscountResponseDto {
* 优惠现单价
*/
private Long signleDiscount;
//活动覆盖商品数量,比如第二件实际优惠一件,但是两件商品都算活动叠加数量
private Integer addOnQuantity = 0;
}
/**
......
package cn.freemud.entities.dto.calculate;
import lombok.Data;
import java.io.Serializable;
@Data
public class ActivityTypeSharedExclusive implements Serializable {
/**
* 活动类型
*/
private Integer activityType;
/**
* 共享或排他活动类型
*/
private Integer sharedExclusiveActivityType;
/**
* 0:排他 1:共享
*/
private Integer sharedExclusive;
/**
* 商品数量和金额门槛是否叠加 0:不叠加,1:叠加
*/
private Integer multiple;
}
\ No newline at end of file
......@@ -2,6 +2,8 @@ package cn.freemud.entities.vo.coupon;
import lombok.Data;
import java.util.List;
/**
* All rights Reserved, Designed By www.freemud.cn
*
......@@ -19,6 +21,10 @@ public class CartProduct {
*/
private String productId;
/**
* 商品原价(分)
*/
private Long originalPrice;
/**
* 总原价金额(包括主商品+可选搭配+加料商品)
*/
private Long originalTotalAmount;
......@@ -36,4 +42,47 @@ public class CartProduct {
//使用的商品券号
private String couponCode;
private List<Discount> discounts;
@Data
public static class Discount{
/**
* 活动号
*/
private String activityCode;
/**
* 活动名称
*/
private String activityName;
/**
* 折扣金额
*/
private Long discount;
/**
* 活动类型
*/
private Integer type;
/**
* 当前活动实际优惠的商品数量
*/
private Integer actualGoodsNumber;
//是否与代金券互斥
private boolean cashExclusive = false;
//是否与代金券叠加门槛
private boolean cashMultiple = true;
//是否与折扣券互斥
private boolean discountExclusive = false;
//是否与折扣券叠加门槛
private boolean discountMultiple = true;
}
}
......@@ -55,4 +55,54 @@ public class CouponAvailableCartInfo {
* 优惠后 配送费
*/
private Long distributionFee;
/**
* 是否是新版互斥同享算价
*/
private boolean newCalculation = false;
//活动总优惠 newCalculation=true时封装
private List<Discount> discounts;
@Data
public static class Discount{
/**
* 活动号
*/
private String activityCode;
/**
* 活动名称
*/
private String activityName;
/**
* 折扣金额
*/
private Long discount;
/**
* 活动类型
*/
private Integer type;
/**
* 当前活动实际优惠的商品数量
*/
private Integer actualGoodsNumber;
//是否与代金券互斥
private boolean cashExclusive = false;
//是否与代金券叠加门槛
private boolean cashMultiple = true;
//是否与折扣券互斥
private boolean discountExclusive = false;
//是否与折扣券叠加门槛
private boolean discountMultiple = true;
}
}
......@@ -18,8 +18,12 @@ import cn.freemud.adapter.ShoppingCartConvertAdapter;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.constant.ShoppingCartConstant;
import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.BuriedPointShoppingCartRequestDto;
import cn.freemud.entities.dto.GetProductStockRequestDto;
import cn.freemud.entities.dto.GetProductStockResponseDto;
import cn.freemud.entities.dto.UserLoginInfoDto;
import cn.freemud.entities.dto.activity.ActivityQueryDto;
import cn.freemud.entities.dto.activity.DiscountSharingDto;
import cn.freemud.entities.dto.calculate.ActivityCalculationDiscountRequestDto;
import cn.freemud.entities.dto.calculate.ActivityCalculationDiscountResponseDto;
import cn.freemud.entities.dto.delivery.DeliveryFeeInfo;
......@@ -190,7 +194,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
ActivityQueryDto activityQueryDto = activityAdapter.getActivityQueryDto(partnerId, storeId, userId, appId, addShoppingCartGoodsRequestVo.getOrderType());
ActivityCalculationDiscountResponseDto.CalculationDiscountResult discountResult = null;
discountResult = sharingDiscountService.getCalculationSharingDiscountResult(menuType, partnerId, storeId, userId, appId, orderType, assortmentCustomerInfoVo.isMemberPaid(), allCartGoodsList, new ArrayList<>(), null, deliveryAmount, null,null, accountType);
discountResult = sharingDiscountService.getCalculationSharingDiscountResult(menuType, partnerId, storeId, userId, appId, orderType, assortmentCustomerInfoVo.isMemberPaid(), allCartGoodsList, new ArrayList<>(), null, deliveryAmount, null,null, accountType,new DiscountSharingDto());
sharingCartService.distribute(discountResult, allCartGoodsList, shoppingCartGoodsResponseVo, null, null, null, activityQueryDto, menuType, deliveryAmount, ShoppingCartConstant.ADD_AND_UPDATE, partnerId, null, userId, storeId);
buildShoppingCartGoodsResponse(shoppingCartGoodsResponseVo,discountResult,null,partnerId);
......@@ -285,7 +289,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
, new ArrayList() //券
, null //加价购商品
, deliveryAmount
, null,null, accountFlag);
, null,null, accountFlag,new DiscountSharingDto());
sharingCartService.distribute(discountResult
, cartGoodsList
......@@ -444,7 +448,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
, coupons
, sendGoods
, deliveryAmount
, null,null, accountFlag);
, null,null, accountFlag,new DiscountSharingDto());
sharingCartService.distribute(calculationSharingDiscountResult
, cartGoodsList
, shoppingCartGoodsResponseVo
......@@ -602,7 +606,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
, coupons
, shoppingCartInfoRequestVo.getSendGoods()
, deliveryAmount
, shoppingCartInfoRequestVo,null, accountFlag);
, shoppingCartInfoRequestVo,null, accountFlag,new DiscountSharingDto());
// 活动校验
calculationSharingValidatorService.validator(discountResult
......
......@@ -26,6 +26,7 @@ import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.GetMenuResponseDto.DataBean.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean;
import cn.freemud.entities.dto.activity.ActivityQueryDto;
import cn.freemud.entities.dto.activity.ActivityQueryResponseDto;
import cn.freemud.entities.dto.activity.DiscountSharingDto;
import cn.freemud.entities.dto.calculate.ActivityCalculationDiscountRequestDto;
import cn.freemud.entities.dto.calculate.ActivityCalculationDiscountResponseDto;
import cn.freemud.entities.dto.openplatform.WeixinProductRequestDto;
......@@ -382,7 +383,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
, new ArrayList<>() //券
, null //加价购商品
, deliveryAmount
, null,bizType, accountFlag);
, null,bizType, accountFlag,new DiscountSharingDto());
//更新购物车券状态
newCalculationUpdateCouponStatus(userId, partnerId, storeId, bizType, cartGoods, allCartGoodsList, discountResult);
sharingCartService.distribute(discountResult
......@@ -541,7 +542,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
, new ArrayList() //券
, null //加价购商品
, deliveryAmount
, null,bizType, accountFlag);
, null,bizType, accountFlag,new DiscountSharingDto());
//校验加购数量
if (discountResult != null) {
sendGoodsQtyCheckForUpdate(cartGoodsList, oldQty, appId, partnerId, userId, storeId, cartGoodsUid, "", shoppingCartBaseService, discountResult.getSendGoods(),bizType);
......@@ -782,7 +783,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
, sendGoods
, deliveryAmount
, null
,bizType, accountFlag);
,bizType, accountFlag,new DiscountSharingDto());
sharingCartService.distribute(calculationSharingDiscountResult
, cartGoodsList
, shoppingCartGoodsResponseVo
......@@ -1162,7 +1163,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
, coupons
, shoppingCartInfoRequestVo.getSendGoods()
, deliveryAmount
, shoppingCartInfoRequestVo,bizType, accountFlag);
, shoppingCartInfoRequestVo,bizType, accountFlag,new DiscountSharingDto());
// 活动校验
calculationSharingValidatorService.validator(discountResult
......@@ -1503,8 +1504,11 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
} else {
CheckSpqInfoRequestDto checkSpqInfoRequestDto = new CheckSpqInfoRequestDto(partnerId, storeId, couponCode, menuType);
CheckSpqInfoResponseDto checkSpqInfoResponseDto = null;
// fisherman 删除商品券导致 购物车显示商品名称 为换购券 券名称
boolean viewProductName = false;
if (GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType().equals(cartGoods.getGoodsType())
|| GoodsTypeEnum.BUY_M_SEND_N_COUPON.getGoodsType().equals(cartGoods.getGoodsType())) {
viewProductName = true;
checkSpqInfoResponseDto = couponService.checkSpqInfo(checkSpqInfoRequestDto, cartGoods.getSkuId());
} else {
checkSpqInfoResponseDto = couponService.checkSpqInfo(checkSpqInfoRequestDto);
......@@ -1530,8 +1534,14 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
uuidList.add(cartGoods.getCartGoodsUid());
spqIdToCartUuid.put(couponCode, uuidList);
}
if (viewProductName) {
cartGoods.setName(checkSpqInfoResponseDto.getSkuName());
cartGoods.setSpuName(checkSpqInfoResponseDto.getSkuName());
cartGoods.setSkuName(checkSpqInfoResponseDto.getSkuName());
}else {
cartGoods.setName(checkSpqInfoResponseDto.getCouponName());
cartGoods.setSpuName(checkSpqInfoResponseDto.getCouponName());
}
cartGoods.setStockLimit(checkSpqInfoResponseDto.isStockLimit());
if (GoodsTypeEnum.BUY_M_SEND_N_COUPON.getGoodsType().equals(cartGoods.getGoodsType())) {
cartGoods.setName(checkSpqInfoResponseDto.getSkuName());
......@@ -3045,7 +3055,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
, coupons //券
, null //加价购商品
, 0L
, null,bizType, accountFlag);
, null,bizType, accountFlag,new DiscountSharingDto());
premiumExchangeResponseVo = activityAdapter.convert2PremiumExchangeSharing(discountResult);
} else {
......@@ -3200,6 +3210,9 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
// 获取购物车商品
List<CartGoods> cartGoodsList = assortmentSdkService.getShoppingCartForCoupon(partnerId, requestVo.getStoreId(), userId, "", shoppingCartBaseService,bizType);
if (grayPush(partnerId, storeId, "2")) {
//此对象用于传递参数,省的一直增加方法参数个数
DiscountSharingDto sharingDto = new DiscountSharingDto();
sharingDto.setAutoCoupon(true);
ActivityCalculationDiscountResponseDto.CalculationDiscountResult discountResult = sharingDiscountService.getCalculationSharingDiscountResult(menuType
, partnerId
, storeId
......@@ -3211,7 +3224,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
, new ArrayList<>() //券
, null //加价购商品
, deliveryAmount
, null,bizType, accountFlag);
, null,bizType, accountFlag,sharingDto);
couponAvailableCartInfo = activityAdapter.convert2CouponAvailableCartInfoSharing(partnerId, storeId, discountResult, orgCodes);
} else {
......
......@@ -705,7 +705,9 @@ public class CalculationCommonService {
uid = goods.getCartGoodsUid();
}
}
if(StringUtils.isNotBlank(toastMsg)){
shoppingCartGoodsResponseVo.setToastMsg(toastMsg);
}
shoppingCartGoodsResponseVo.setUid(uid);
}
......
package cn.freemud.service.impl.calculate;
import cn.freemud.base.util.JsonUtil;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.dto.CheckSpqInfoRequestDto;
import cn.freemud.entities.dto.CheckSpqInfoResponseDto;
......@@ -22,7 +21,7 @@ import cn.freemud.service.active.ActiveService;
import cn.freemud.service.impl.AssortmentSdkService;
import cn.freemud.service.thirdparty.ActivityClient;
import cn.freemud.utils.PropertyConvertUtil;
import com.freemud.application.sdk.api.log.ErrorLog;
import cn.freemud.entities.dto.activity.DiscountSharingDto;
import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant;
import com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum;
import com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl;
......@@ -83,7 +82,7 @@ public class CalculationSharingDiscountService {
, List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons
, List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList
, Long deliveryAmount
, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo,Integer bizType, Integer accountFlag) {
, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo,Integer bizType, Integer accountFlag, DiscountSharingDto sharingDto) {
ActivityCalculationDiscountRequestDto calculationSharingDiscountRequestDto = this.commonSharingDto(partnerId, storeId, userId, appId, orderType);
......@@ -114,9 +113,11 @@ public class CalculationSharingDiscountService {
//商品券->商品券ID换取商品
CheckSpqInfoRequestDto checkSpqInfoRequestDto = new CheckSpqInfoRequestDto(partnerId, storeId, couponCode, menuType);
CheckSpqInfoResponseDto checkSpqInfo = null;
boolean viewProductName = false;
if (GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType().equals(cartGoods.getGoodsType())
|| GoodsTypeEnum.BUY_M_SEND_N_COUPON.getGoodsType().equals(cartGoods.getGoodsType())) {
checkSpqInfo = couponService.checkSpqInfo(checkSpqInfoRequestDto, cartGoods.getSkuId());
viewProductName = true;
} else {
checkSpqInfo = couponService.checkSpqInfo(checkSpqInfoRequestDto);
}
......@@ -143,8 +144,14 @@ public class CalculationSharingDiscountService {
uuidList.add(cartGoods.getCartGoodsUid());
spqIdToCartUuid.put(couponCode, uuidList);
}
if (viewProductName) {
cartGoods.setName(checkSpqInfo.getSkuName());
cartGoods.setSpuName(checkSpqInfo.getSkuName());
cartGoods.setSkuName(checkSpqInfo.getSkuName());
}else {
cartGoods.setName(checkSpqInfo.getCouponName());
cartGoods.setSpuName(checkSpqInfo.getCouponName());
}
cartGoods.setStockLimit(checkSpqInfo.isStockLimit());
//买M送N券不赋值券名称
if (GoodsTypeEnum.BUY_M_SEND_N_COUPON.getGoodsType().equals(cartGoods.getGoodsType())) {
......@@ -209,6 +216,9 @@ public class CalculationSharingDiscountService {
// 构建买一送一寄杯活动用户选择信息
ActiveService activeService = activeFactory.getBuildChooseGoodsService(partnerId);
activeService.buildChooseGoodsService(calculationSharingDiscountRequestDto, shoppingCartInfoRequestVo == null ? null : shoppingCartInfoRequestVo.getChooseGoods());
if(sharingDto != null){
calculationSharingDiscountRequestDto.setAutoCoupon(sharingDto.getAutoCoupon());
}
//算价
ActivityCalculationDiscountResponseDto sharingDiscountResponseDto = activityClient.calculationSharingDiscount(calculationSharingDiscountRequestDto);
if(sharingDiscountResponseDto == null){
......
......@@ -8,6 +8,8 @@ import cn.freemud.enums.AvailableCouponQueryFlagEnum;
import cn.freemud.enums.GoodsTypeEnum;
import cn.freemud.service.CouponService;
import cn.freemud.service.impl.AssortmentSdkService;
import com.alibaba.fastjson.JSON;
import com.freemud.application.sdk.api.log.ApiLog;
import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant;
import com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl;
import com.google.common.collect.Lists;
......@@ -128,7 +130,7 @@ public class CouponSharingService {
}
}
}
ApiLog.printLog("优惠券问题处理 fisherman-------->", JSON.toJSONString(cartGoodsList),JSON.toJSONString(validCouponMap),JSON.toJSONString(calculationDiscountResult));
//循环购物车商品券
for (CartGoods cartGoods : cartGoodsList) {
if (StringUtils.isNotBlank(cartGoods.getCouponCode()) || cartGoods.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)) {
......
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