Commit 0c207dca by 周晓航

Merge branch 'feature_夜间配送ID1040499_zxh20211208'

# Conflicts:
#	shopping-cart-application-service/src/main/java/cn/freemud/service/delivery/impl/GradDeliveryServiceImpl.java
#	shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
parents 8866fd31 73d78e90
package cn.freemud.entities;
import lombok.Data;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/12/8 下午5:08
* @description :
*/
@Data
public class ExtraDeliveryDto {
/**
* 原有配送费类型
*/
public static int TYPE_DEFAULT = -1;
/**
* 晚间时段 附加配送费类型
*/
public static int TYPE_EXTRA_NIGHT = 1;
/**
* 早间时段 附加配送费类型
*/
public static int TYPE_EXTRA_MORNING = 0;
/**
* 费用类型
*/
private int type;
/**
* 费用
*/
private Long deliveryAmount;
private ExtraDeliveryDto() {
}
public ExtraDeliveryDto(int type, Long deliveryAmount) {
this.type = type;
this.deliveryAmount = deliveryAmount;
}
}
...@@ -76,6 +76,11 @@ public class ActivityCalculationDiscountRequestDto { ...@@ -76,6 +76,11 @@ public class ActivityCalculationDiscountRequestDto {
private Long distributionFee; private Long distributionFee;
/** /**
* 是否有夜间配送费, 白天配送费 综合, 该字段依据门店是否设置 为依据
*/
private Long nightDistributionFee = 0L;
/**
* 购买月卡费用(分) * 购买月卡费用(分)
*/ */
private Long payCardFee; private Long payCardFee;
......
...@@ -82,6 +82,11 @@ public class CalculationDiscountResult { ...@@ -82,6 +82,11 @@ public class CalculationDiscountResult {
*/ */
private Long distributionFee; private Long distributionFee;
/**
* 优惠后 夜间配送费
*/
private Long nightDistributionFee = 0L;
//积分商品活动购物车商品所需总积分") //积分商品活动购物车商品所需总积分")
private Integer totalScore; private Integer totalScore;
......
...@@ -71,4 +71,17 @@ public class DeliveryInfoDTO { ...@@ -71,4 +71,17 @@ public class DeliveryInfoDTO {
*/ */
private Integer scopeConfig; private Integer scopeConfig;
/**
* 门店计算好的 最终配送费价格, 包含阶梯算价之后 (单位分)
*/
private Integer finalDeliveryAmount;
/**
* 额外拓展属性 json
* @see cn.freemud.entities.dto.console.DeliveryInfoExpandFieldDTO
*/
private DeliveryInfoExpandFieldDTO expandFields;
} }
package cn.freemud.entities.dto.console;
import lombok.Data;
import java.util.List;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/12/10 上午11:04
* @description :
*/
@Data
public class DeliveryInfoExpandFieldDTO {
/**
* 夜间 早间 额外配送费配置
*/
private List<NightDeliveryuInfo> nightDeliveryInfo;
}
package cn.freemud.entities.dto.console;
import lombok.Data;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/12/10 上午11:05
* @description :
*/
@Data
public class NightDeliveryuInfo {
public static int COMMON_STATUS_CLOSE = 0;
public static int COMMON_STATUS_OPEN = 1;
/**
* 类型 0早间 1晚间
*/
private int type;
/**
* 开始时间
*/
private String startTime;
/**
* 结束时间
*/
private String endTime;
/**
* 是否开启 1开启 0关闭
*/
private int status;
/**
* 加的价格
*/
private Long price;
}
package cn.freemud.entities.vo;
import cn.freemud.entities.ExtraDeliveryDto;
import lombok.Data;
import java.util.List;
import java.util.Objects;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/12/8 下午5:03
* @description :
*/
@Data
public class DeliveryDto {
/**
* 总配送费
*/
public Long deliveryAmount;
/**
* 配送费为零的原因:0:正常,1:超出配送范围
*/
public Integer deliveryFeeZeroReason;
/**
* 附加配送费详细数据 上面的金额 已经加上 这里的金额了
*/
public List<ExtraDeliveryDto> deliveryAmountList;
private DeliveryDto() {
}
public DeliveryDto(Long deliveryAmount, Integer deliveryFeeZeroReason, List<ExtraDeliveryDto> deliveryAmountList) {
this.deliveryAmount = deliveryAmount;
this.deliveryFeeZeroReason = deliveryFeeZeroReason;
Objects.requireNonNull(deliveryAmountList);
this.deliveryAmountList = deliveryAmountList;
}
}
...@@ -12,16 +12,22 @@ ...@@ -12,16 +12,22 @@
*/ */
package cn.freemud.entities.vo; package cn.freemud.entities.vo;
import cn.freemud.entities.ExtraDeliveryDto;
import cn.freemud.entities.dto.calculate.Discount; import cn.freemud.entities.dto.calculate.Discount;
import cn.freemud.entities.dto.calculate.Goods; import cn.freemud.entities.dto.calculate.Goods;
import com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoodsStates; import com.freemud.sdk.api.assortment.shoppingcart.domain.CartGoodsStates;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import java.util.ArrayList;
import java.util.List; import java.util.List;
@Data @Data
public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseVo{ public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseVo{
/**
* 配送费的清单 包含 普通配送费 额外夜间配送费 额外白天配送费 下面的 deliveryAmount 是总的配送费
*/
List<ExtraDeliveryDto> deliveryAmountList = new ArrayList<>();
/** /**
* 商品额外的属性 * 商品额外的属性
......
...@@ -336,15 +336,15 @@ public abstract class AbstractShoppingCartImpl implements ShoppingCartNewService ...@@ -336,15 +336,15 @@ public abstract class AbstractShoppingCartImpl implements ShoppingCartNewService
public CalculationDiscountResult getCalculationDiscountResult(String menuType public CalculationDiscountResult getCalculationDiscountResult(String menuType
, String partnerId, String storeId, String userId, String appId, String wxappid, Integer orderType, boolean isMember , String partnerId, String storeId, String userId, String appId, String wxappid, Integer orderType, boolean isMember
, List<CartGoods> cartGoodsList, List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons , List<CartGoods> cartGoodsList, List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons
, List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList, String receiveId, Long deliveryAmount){ , List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList, String receiveId, Long deliveryAmount, long nightDistributionFee){
// 获取优惠信息 // 获取优惠信息
CalculationDiscountResult calculationDiscountResult=null; CalculationDiscountResult calculationDiscountResult=null;
//外卖场景下 查询门店配送信息 //外卖场景下 查询门店配送信息
if(BusinessTypeEnum.SAAS_DELIVERY.getCode().equals(menuType)){ if(BusinessTypeEnum.SAAS_DELIVERY.getCode().equals(menuType)){
calculationDiscountResult = this.getActivityCalculationDiscountResponse(partnerId, storeId, userId, appId, orderType,isMember, cartGoodsList, coupons, sendGoodsList,BusinessTypeEnum.getByType(menuType).getCode(),deliveryAmount,null, null); calculationDiscountResult = this.getActivityCalculationDiscountResponse(partnerId, storeId, userId, appId, orderType,isMember, cartGoodsList, coupons, sendGoodsList,BusinessTypeEnum.getByType(menuType).getCode(),deliveryAmount,null, null, nightDistributionFee);
}else{ }else{
calculationDiscountResult = this.getActivityCalculationDiscountResponse(partnerId, storeId, userId, appId, orderType,isMember, cartGoodsList, coupons, sendGoodsList,BusinessTypeEnum.getByType(menuType).getCode(),null,null, null); calculationDiscountResult = this.getActivityCalculationDiscountResponse(partnerId, storeId, userId, appId, orderType,isMember, cartGoodsList, coupons, sendGoodsList,BusinessTypeEnum.getByType(menuType).getCode(),null,null, null,0L);
} }
return calculationDiscountResult; return calculationDiscountResult;
...@@ -359,7 +359,8 @@ public abstract class AbstractShoppingCartImpl implements ShoppingCartNewService ...@@ -359,7 +359,8 @@ public abstract class AbstractShoppingCartImpl implements ShoppingCartNewService
* @param shoppingCartGoodsResponseVo * @param shoppingCartGoodsResponseVo
*/ */
public void updateShoppingCartGoodsDiscount(CouponPromotionVO couponPromotionVO, ActivityQueryDto activityQueryDto, CalculationDiscountResult calculationDiscountResult, List<CartGoods> cartGoodsList public void updateShoppingCartGoodsDiscount(CouponPromotionVO couponPromotionVO, ActivityQueryDto activityQueryDto, CalculationDiscountResult calculationDiscountResult, List<CartGoods> cartGoodsList
, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo, UserLoginInfoDto userLoginInfoDto,String menuType,Long deliveryAmount) { , ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo, UserLoginInfoDto userLoginInfoDto,String menuType,Long deliveryAmount,long nightDistributionFee) {
deliveryAmount = Objects.isNull(deliveryAmount) ? 0L : deliveryAmount;
//默认计算优惠 //默认计算优惠
DefaultPromotionService defaultPromotionService = (DefaultPromotionService) PromotionFactory.getPromotionService(ShoppingCartPromotionEnum.DEFAULT_PROMOTION); DefaultPromotionService defaultPromotionService = (DefaultPromotionService) PromotionFactory.getPromotionService(ShoppingCartPromotionEnum.DEFAULT_PROMOTION);
defaultPromotionService.updateShoppingCartGoodsDiscount(couponPromotionVO, activityQueryDto, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo, userLoginInfoDto, shoppingCartInfoRequestVo); defaultPromotionService.updateShoppingCartGoodsDiscount(couponPromotionVO, activityQueryDto, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo, userLoginInfoDto, shoppingCartInfoRequestVo);
...@@ -476,7 +477,8 @@ public abstract class AbstractShoppingCartImpl implements ShoppingCartNewService ...@@ -476,7 +477,8 @@ public abstract class AbstractShoppingCartImpl implements ShoppingCartNewService
shoppingCartGoodsResponseVo.setThresholdAmount(discount.getThresholdAmount()); shoppingCartGoodsResponseVo.setThresholdAmount(discount.getThresholdAmount());
shoppingCartGoodsResponseVo.setIsDiscountDelivery(true); shoppingCartGoodsResponseVo.setIsDiscountDelivery(true);
}else{ }else{
// fisherman 老算价, deliverAmount 不包含 nightDistributionFee 但是页面需要展示总价 所以 这里相加一下 做处理
Long deliverAmountNew = deliveryAmount + nightDistributionFee;
if (activityResponse!=null) { if (activityResponse!=null) {
if(beanDto.getBenefitType() == 1){ if(beanDto.getBenefitType() == 1){
...@@ -487,15 +489,15 @@ public abstract class AbstractShoppingCartImpl implements ShoppingCartNewService ...@@ -487,15 +489,15 @@ public abstract class AbstractShoppingCartImpl implements ShoppingCartNewService
shoppingCartGoodsResponseVo.setDeliveryDiscountDesc(String.format(desc, df.format(beanDto.getThresholdAmount().doubleValue() /100 ),df.format(beanDto.getDiscountAmount().doubleValue() / 100))); shoppingCartGoodsResponseVo.setDeliveryDiscountDesc(String.format(desc, df.format(beanDto.getThresholdAmount().doubleValue() /100 ),df.format(beanDto.getDiscountAmount().doubleValue() / 100)));
} }
shoppingCartGoodsResponseVo.setDeliveryAmount(deliveryAmount); shoppingCartGoodsResponseVo.setDeliveryAmount(deliverAmountNew);
shoppingCartGoodsResponseVo.setDiscountDeliveryAmount(deliveryAmount); shoppingCartGoodsResponseVo.setDiscountDeliveryAmount(deliverAmountNew);
shoppingCartGoodsResponseVo.setIsDiscountDelivery(false); shoppingCartGoodsResponseVo.setIsDiscountDelivery(false);
} else { } else {
String desc = DELIVERY_DISCOUNT_DESC3; String desc = DELIVERY_DISCOUNT_DESC3;
shoppingCartGoodsResponseVo.setDeliveryDiscountDesc(String.format(desc, df.format(deliveryAmount.doubleValue() / 100))); shoppingCartGoodsResponseVo.setDeliveryDiscountDesc(String.format(desc, df.format(deliverAmountNew.doubleValue() / 100)));
shoppingCartGoodsResponseVo.setDeliveryAmount(deliveryAmount); shoppingCartGoodsResponseVo.setDeliveryAmount(deliverAmountNew);
shoppingCartGoodsResponseVo.setDiscountDeliveryAmount(deliveryAmount); shoppingCartGoodsResponseVo.setDiscountDeliveryAmount(deliverAmountNew);
shoppingCartGoodsResponseVo.setIsDiscountDelivery(false); shoppingCartGoodsResponseVo.setIsDiscountDelivery(false);
} }
} }
......
...@@ -3,6 +3,7 @@ package cn.freemud.service; ...@@ -3,6 +3,7 @@ package cn.freemud.service;
import cn.freemud.adapter.ActivityAdapter; import cn.freemud.adapter.ActivityAdapter;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.constant.ShoppingCartConstant; import cn.freemud.constant.ShoppingCartConstant;
import cn.freemud.entities.ExtraDeliveryDto;
import cn.freemud.entities.dto.ActivityResponseDto; import cn.freemud.entities.dto.ActivityResponseDto;
import cn.freemud.entities.dto.GetMemberInfoRequestDto; import cn.freemud.entities.dto.GetMemberInfoRequestDto;
import cn.freemud.entities.dto.GetMemberInfoResponseVo; import cn.freemud.entities.dto.GetMemberInfoResponseVo;
...@@ -97,7 +98,8 @@ public interface ShoppingCartNewService { ...@@ -97,7 +98,8 @@ public interface ShoppingCartNewService {
boolean isMember, boolean isMember,
List<CartGoods> cartGoodsList, List<CartGoods> cartGoodsList,
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons, List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons,
List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList, String menuType, Long distributionFee, Integer bizType, Integer accountFlag); List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList, String menuType, Long distributionFee, Integer bizType, Integer accountFlag,
long nightDistributionFee);
List<CartGoods> updateCartGoodsLegal(CartGoods cartGoods, String userId, ShoppingCartGoodsBaseResponseVo shoppingCartGoodsResponseVo, AddShoppingCartGoodsRequestVo addShoppingCartGoodsRequestVo, List<CartGoods> oldAllCartGoodsList); List<CartGoods> updateCartGoodsLegal(CartGoods cartGoods, String userId, ShoppingCartGoodsBaseResponseVo shoppingCartGoodsResponseVo, AddShoppingCartGoodsRequestVo addShoppingCartGoodsRequestVo, List<CartGoods> oldAllCartGoodsList);
...@@ -317,4 +319,14 @@ public interface ShoppingCartNewService { ...@@ -317,4 +319,14 @@ public interface ShoppingCartNewService {
}; };
BaseResponse getV3Promotion(BaseRequestVo request); BaseResponse getV3Promotion(BaseRequestVo request);
default long getNightDistributionFee(List<ExtraDeliveryDto> deliveryAmountList){
if (CollectionUtils.isEmpty(deliveryAmountList)) {
return 0L;
}
return deliveryAmountList.stream()
.filter(s -> s.getType() != ExtraDeliveryDto.TYPE_DEFAULT)
.mapToLong(ExtraDeliveryDto::getDeliveryAmount)
.sum();
}
} }
...@@ -13,12 +13,27 @@ ...@@ -13,12 +13,27 @@
package cn.freemud.service.delivery; package cn.freemud.service.delivery;
import cn.freemud.base.util.DateUtil;
import cn.freemud.entities.ExtraDeliveryDto;
import cn.freemud.entities.dto.console.DeliveryInfoExpandFieldDTO;
import cn.freemud.entities.dto.console.NightDeliveryuInfo;
import cn.freemud.entities.vo.ShoppingCartGoodsResponseVo; import cn.freemud.entities.vo.ShoppingCartGoodsResponseVo;
import cn.freemud.utils.DateTimeUtil;
import lombok.SneakyThrows;
import org.apache.commons.collections4.CollectionUtils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
public interface DeliveryService { public interface DeliveryService {
/** /**
* 计算运费 * 计算运费
*
* @param receiveId * @param receiveId
* @param partnerId * @param partnerId
* @param storeId * @param storeId
...@@ -28,4 +43,43 @@ public interface DeliveryService { ...@@ -28,4 +43,43 @@ public interface DeliveryService {
Long calculateDeliveryAmount(String receiveId, String partnerId, String storeId, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo); Long calculateDeliveryAmount(String receiveId, String partnerId, String storeId, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo);
Long calculateDeliveryAmount(String receiveId, String partnerId, String storeId); Long calculateDeliveryAmount(String receiveId, String partnerId, String storeId);
/**
* 处理 额外配送费逻辑
*
* @param amount 原始配送费价格
* @param expandFields 门店反馈的额外配送费配置
*/
@SneakyThrows
default List<ExtraDeliveryDto> nightDeliveryAmountHandle(long amount, DeliveryInfoExpandFieldDTO expandFields) {
List<ExtraDeliveryDto> list = new ArrayList<>();
if (amount > 0) {
ExtraDeliveryDto defaultAmount = new ExtraDeliveryDto(ExtraDeliveryDto.TYPE_DEFAULT, amount);
list.add(defaultAmount);
}
if (Objects.nonNull(expandFields) && CollectionUtils.isNotEmpty(expandFields.getNightDeliveryInfo())) {
for (NightDeliveryuInfo info : expandFields.getNightDeliveryInfo()) {
if (info.getStatus() == NightDeliveryuInfo.COMMON_STATUS_OPEN) {
// 当前时间在区间内
try {
Date nowTime = new SimpleDateFormat(DateUtil.FORMAT_time).parse(DateTimeUtil.getCurrentTimeStr());
Date startTime = new SimpleDateFormat(DateUtil.FORMAT_time).parse(info.getStartTime());
Date endTime = new SimpleDateFormat(DateUtil.FORMAT_time).parse(info.getEndTime());
if (DateTimeUtil.isEffectiveDate(nowTime, startTime, endTime)) {
ExtraDeliveryDto extraDeliveryDto = new ExtraDeliveryDto(info.getType(), info.getPrice());
list.add(extraDeliveryDto);
// 金额 增加, 原来配送费金额不变
// amount += info.getPrice();
}
} catch (ParseException e) {
// 报错表示 时间格式设置错误, 默认当做不计算
e.printStackTrace();
}
}
}
}
return list;
}
} }
...@@ -13,24 +13,21 @@ ...@@ -13,24 +13,21 @@
package cn.freemud.service.delivery.impl; package cn.freemud.service.delivery.impl;
import cn.freemud.entities.ExtraDeliveryDto;
import cn.freemud.entities.dto.console.*;
import cn.freemud.entities.vo.ShoppingCartGoodsResponseVo; import cn.freemud.entities.vo.ShoppingCartGoodsResponseVo;
import cn.freemud.enums.CreateOrderType;
import cn.freemud.enums.ResponseResult; import cn.freemud.enums.ResponseResult;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.delivery.DeliveryService; import cn.freemud.service.delivery.DeliveryService;
import cn.freemud.utils.ResponseUtil; import cn.freemud.service.thirdparty.ConsoleApiClient;
import com.freemud.application.sdk.api.log.LogThreadLocal; import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.membercenter.request.QueryReceiveAddressRequest;
import com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddressResponse;
import com.freemud.application.sdk.api.storecenter.request.QueryDeliveryRequest;
import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest; import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest;
import com.freemud.application.sdk.api.storecenter.response.QueryDeliverDetailResponse;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse; import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService; import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
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;
import java.util.List;
import java.util.Objects; import java.util.Objects;
@Service("fixDeliveryService") @Service("fixDeliveryService")
...@@ -39,20 +36,28 @@ public class FixDeliveryServiceImpl extends AbstractDeliveryServiceImpl implemen ...@@ -39,20 +36,28 @@ public class FixDeliveryServiceImpl extends AbstractDeliveryServiceImpl implemen
@Autowired @Autowired
private StoreCenterService storeCenterService; private StoreCenterService storeCenterService;
@Autowired
private ConsoleApiClient consoleApiClient;
@Override @Override
public Long calculateDeliveryAmount(String receiveId, String partnerId, String storeId, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo) { public Long calculateDeliveryAmount(String receiveId, String partnerId, String storeId, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo) {
String trackingNo = LogThreadLocal.getTrackingNo();
// 获取门店信息,查询基础配送费用
StoreInfoRequest storeInfoRequest = new StoreInfoRequest(partnerId, storeId,null);
StoreResponse storeResponse = storeCenterService.getStoreInfo(storeInfoRequest, trackingNo);
if (storeResponse == null || storeResponse.getBizVO() == null) {
throw new ServiceException (ResponseResult.STORE_NOT_FOUND);
}
// 获取门店信息,查询基础配送费用 移除sdk使用, 使用feign
GetStoreMixRequest query = GetStoreMixRequest.builder()
.partnerId(partnerId)
.storeCode(storeId)
.query(QueryFlag.builder().queryDeliveryInfo(true).build())
.build();
ConsoleResponseDTO<BizDTO> responseDto = consoleApiClient.getStoreMix(query);
DeliveryInfoDTO deliveryInfo = responseDto.getBizVO().getDeliveryInfo();
// fisherman 处理 额外配送费
long amount = Objects.isNull(deliveryInfo.getFinalDeliveryAmount()) ? 0L : deliveryInfo.getFinalDeliveryAmount();
List<ExtraDeliveryDto> deliveryAmountList = super.nightDeliveryAmountHandle(amount, deliveryInfo.getExpandFields());
if (Objects.nonNull(shoppingCartGoodsResponseVo)) {
shoppingCartGoodsResponseVo.setDeliveryFeeZeroReason(0); shoppingCartGoodsResponseVo.setDeliveryFeeZeroReason(0);
shoppingCartGoodsResponseVo.setDeliveryAmountList(deliveryAmountList);
return new Double(storeResponse.getBizVO().getDeliveryPrice() * 100).longValue(); }
return amount;
} }
@Override @Override
......
...@@ -13,7 +13,9 @@ ...@@ -13,7 +13,9 @@
package cn.freemud.service.delivery.impl; package cn.freemud.service.delivery.impl;
import cn.freemud.entities.ExtraDeliveryDto;
import cn.freemud.entities.dto.console.*; import cn.freemud.entities.dto.console.*;
import cn.freemud.entities.vo.DeliveryDto;
import cn.freemud.entities.vo.QueryDeliveryDistanceRequest; import cn.freemud.entities.vo.QueryDeliveryDistanceRequest;
import cn.freemud.entities.vo.QueryDeliveryDistanceResponseVo; import cn.freemud.entities.vo.QueryDeliveryDistanceResponseVo;
import cn.freemud.entities.vo.ShoppingCartGoodsResponseVo; import cn.freemud.entities.vo.ShoppingCartGoodsResponseVo;
...@@ -32,6 +34,8 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -32,6 +34,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects; import java.util.Objects;
@Service("gradDeliveryService") @Service("gradDeliveryService")
...@@ -58,8 +62,13 @@ public class GradDeliveryServiceImpl extends AbstractDeliveryServiceImpl impleme ...@@ -58,8 +62,13 @@ public class GradDeliveryServiceImpl extends AbstractDeliveryServiceImpl impleme
queryReceiveAddressResponse.getData().getLongitude(), queryReceiveAddressResponse.getData().getLongitude(),
partnerId, partnerId,
storeId); storeId);
if (null != shoppingCartGoodsResponseVo) shoppingCartGoodsResponseVo.setDeliveryFeeZeroReason(deliveryDataMsg.deliveryFeeZeroReason); if (Objects.nonNull(shoppingCartGoodsResponseVo)) {
return deliveryDataMsg.deliveryAmount; shoppingCartGoodsResponseVo.setDeliveryFeeZeroReason(deliveryDataMsg.getDeliveryFeeZeroReason());
List<ExtraDeliveryDto> deliveryAmountList = deliveryDataMsg.getDeliveryAmountList();
shoppingCartGoodsResponseVo.setDeliveryAmountList(deliveryAmountList);
}
return deliveryDataMsg.getDeliveryAmount();
} }
@Override @Override
...@@ -68,21 +77,6 @@ public class GradDeliveryServiceImpl extends AbstractDeliveryServiceImpl impleme ...@@ -68,21 +77,6 @@ public class GradDeliveryServiceImpl extends AbstractDeliveryServiceImpl impleme
} }
class DeliveryDto {
/**
* 配送费
*/
Long deliveryAmount;
/**
* 配送费为零的原因:0:正常,1:超出配送范围
*/
Integer deliveryFeeZeroReason;
DeliveryDto(Long amount, Integer reason) {
deliveryAmount = amount;
deliveryFeeZeroReason = reason;
}
}
/** /**
* 获取 配送费 及预计送达时间接口 * 获取 配送费 及预计送达时间接口
* @param userLat 用户纬度 * @param userLat 用户纬度
...@@ -122,9 +116,12 @@ public class GradDeliveryServiceImpl extends AbstractDeliveryServiceImpl impleme ...@@ -122,9 +116,12 @@ public class GradDeliveryServiceImpl extends AbstractDeliveryServiceImpl impleme
} }
Long amount = calcDeliveryAmount(storeInfo, deliveryInfo, userLong, userLat); Long amount = calcDeliveryAmount(storeInfo, deliveryInfo, userLong, userLat);
if (amount < 0) { if (amount < 0) {
return new DeliveryDto(0L, 1); return new DeliveryDto(0L, 1, new ArrayList<>());
} else { } else {
return new DeliveryDto(amount, 0); // 标准配送费
// fisherman 处理 额外配送费
List<ExtraDeliveryDto> list = super.nightDeliveryAmountHandle(amount, deliveryInfo.getExpandFields());
return new DeliveryDto(amount, 0, list);
} }
} }
...@@ -202,7 +199,7 @@ public class GradDeliveryServiceImpl extends AbstractDeliveryServiceImpl impleme ...@@ -202,7 +199,7 @@ public class GradDeliveryServiceImpl extends AbstractDeliveryServiceImpl impleme
if (new BigDecimal(riderDistance).compareTo(new BigDecimal(defaultDeliveryRange)) <= 0) { if (new BigDecimal(riderDistance).compareTo(new BigDecimal(defaultDeliveryRange)) <= 0) {
return deliveryAmount; return deliveryAmount;
} else { } else {
//计算实际配送费 //计算实际配送费 (总距离-基础配送距离)/每公里增加基数*每公里配送加钱 + 基础配送费
BigDecimal extraAmount = (new BigDecimal(riderDistance).subtract(new BigDecimal(defaultDeliveryRange))) BigDecimal extraAmount = (new BigDecimal(riderDistance).subtract(new BigDecimal(defaultDeliveryRange)))
.divide(new BigDecimal(addRangeCount), 0, BigDecimal.ROUND_UP) .divide(new BigDecimal(addRangeCount), 0, BigDecimal.ROUND_UP)
.multiply(new BigDecimal(addRangeAmount)); .multiply(new BigDecimal(addRangeAmount));
......
...@@ -200,12 +200,12 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -200,12 +200,12 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
// 获取优惠信息 // 获取优惠信息
CalculationDiscountResult calculationDiscountResult CalculationDiscountResult calculationDiscountResult
=getCalculationDiscountResult(menuType,partnerId,storeId,currentUserId,appId,userLoginInfoDto.getWxAppid(),orderType,currentUserInfoVo.isMemberPaid(), allCartGoodsList,new ArrayList(),new ArrayList<>(),null,deliveryAmount); =getCalculationDiscountResult(menuType,partnerId,storeId,currentUserId,appId,userLoginInfoDto.getWxAppid(),orderType,currentUserInfoVo.isMemberPaid(), allCartGoodsList,new ArrayList(),new ArrayList<>(),null,deliveryAmount, this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList()));
ActivityQueryDto activityQueryDto = activityAdapter.getActivityQueryDto(partnerId, storeId, currentUserId, appId, addShoppingCartGoodsRequestVo.getOrderType()); ActivityQueryDto activityQueryDto = activityAdapter.getActivityQueryDto(partnerId, storeId, currentUserId, appId, addShoppingCartGoodsRequestVo.getOrderType());
// 促销活动的优惠金额计算 // 促销活动的优惠金额计算
updateShoppingCartGoodsDiscount(null, activityQueryDto, calculationDiscountResult, allCartGoodsList, shoppingCartGoodsResponseVo, null, userLoginInfoDto, addShoppingCartGoodsRequestVo.getMenuType(), deliveryAmount); updateShoppingCartGoodsDiscount(null, activityQueryDto, calculationDiscountResult, allCartGoodsList, shoppingCartGoodsResponseVo, null, userLoginInfoDto, addShoppingCartGoodsRequestVo.getMenuType(), deliveryAmount, this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList()));
clearMsg(shoppingCartGoodsResponseVo, cartGoods.getCartGoodsUid()); clearMsg(shoppingCartGoodsResponseVo, cartGoods.getCartGoodsUid());
//设置更新响应信息 //设置更新响应信息
setAddAndUpdateResponse(shoppingCartGoodsResponseVo, calculationDiscountResult, allCartGoodsList, null, partnerId, storeId, currentUserId, ShoppingCartConstant.ADD_AND_UPDATE, null); setAddAndUpdateResponse(shoppingCartGoodsResponseVo, calculationDiscountResult, allCartGoodsList, null, partnerId, storeId, currentUserId, ShoppingCartConstant.ADD_AND_UPDATE, null);
...@@ -392,7 +392,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -392,7 +392,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
Long deliveryAmount = calculateDeliveryAmount(receiveId, partnerId, storeId, userLoginInfoDto.getWxAppid(), shoppingCartGoodsResponseVo); Long deliveryAmount = calculateDeliveryAmount(receiveId, partnerId, storeId, userLoginInfoDto.getWxAppid(), shoppingCartGoodsResponseVo);
// 获取优惠信息 // 获取优惠信息
CalculationDiscountResult calculationDiscountResult CalculationDiscountResult calculationDiscountResult
=getCalculationDiscountResult(menuType,partnerId,storeId,crateUserId,appId,userLoginInfoDto.getWxAppid(),orderType,currentUserInfoVo.isMemberPaid(),cartGoodsList,new ArrayList(),new ArrayList<>(),null,deliveryAmount); =getCalculationDiscountResult(menuType,partnerId,storeId,crateUserId,appId,userLoginInfoDto.getWxAppid(),orderType,currentUserInfoVo.isMemberPaid(),cartGoodsList,new ArrayList(),new ArrayList<>(),null,deliveryAmount, this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList()));
if (calculationDiscountResult == null) { if (calculationDiscountResult == null) {
shoppingCartGoodsResponseVo.setProducts(cartGoodsList); shoppingCartGoodsResponseVo.setProducts(cartGoodsList);
} }
...@@ -400,7 +400,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -400,7 +400,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
ActivityQueryDto activityQueryDto = activityAdapter.getActivityQueryDto(partnerId, storeId, crateUserId, appId, updateShoppingCartGoodsQtyRequestVo.getOrderType()); ActivityQueryDto activityQueryDto = activityAdapter.getActivityQueryDto(partnerId, storeId, crateUserId, appId, updateShoppingCartGoodsQtyRequestVo.getOrderType());
// 促销活动的优惠金额计算 // 促销活动的优惠金额计算
updateShoppingCartGoodsDiscount(null, activityQueryDto, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo, null, userLoginInfoDto, updateShoppingCartGoodsQtyRequestVo.getMenuType(), deliveryAmount); updateShoppingCartGoodsDiscount(null, activityQueryDto, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo, null, userLoginInfoDto, updateShoppingCartGoodsQtyRequestVo.getMenuType(), deliveryAmount, this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList()));
clearMsg(shoppingCartGoodsResponseVo, cartGoodsUid); clearMsg(shoppingCartGoodsResponseVo, cartGoodsUid);
//设置更新响应信息 //设置更新响应信息
...@@ -523,7 +523,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -523,7 +523,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
Long deliveryAmount = calculateDeliveryAmount(receiveId, partnerId, storeId, userLoginInfoDto.getWxAppid(), shoppingCartGoodsResponseVo); Long deliveryAmount = calculateDeliveryAmount(receiveId, partnerId, storeId, userLoginInfoDto.getWxAppid(), shoppingCartGoodsResponseVo);
// 获取优惠信息 // 获取优惠信息
CalculationDiscountResult calculationDiscountResult = getCalculationDiscountResult(menuType,partnerId,storeId,crateUserId,appId,userLoginInfoDto.getWxAppid(),orderType,currentUserInfoVo.isMemberPaid(),cartGoodsList,coupons,null,shoppingCartInfoRequestVo.getReceiveId(),deliveryAmount); CalculationDiscountResult calculationDiscountResult = getCalculationDiscountResult(menuType,partnerId,storeId,crateUserId,appId,userLoginInfoDto.getWxAppid(),orderType,currentUserInfoVo.isMemberPaid(),cartGoodsList,coupons,null,shoppingCartInfoRequestVo.getReceiveId(),deliveryAmount, this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList()));
if (calculationDiscountResult == null) { if (calculationDiscountResult == null) {
shoppingCartGoodsResponseVo.setProducts(cartGoodsList); shoppingCartGoodsResponseVo.setProducts(cartGoodsList);
...@@ -533,7 +533,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -533,7 +533,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
CouponPromotionVO couponPromotionVO = couponAdapter.getCouponPromotionVO(shoppingCartInfoRequestVo, userLoginInfoDto); CouponPromotionVO couponPromotionVO = couponAdapter.getCouponPromotionVO(shoppingCartInfoRequestVo, userLoginInfoDto);
// 促销活动的优惠金额计算 // 促销活动的优惠金额计算
this.updateShoppingCartGoodsDiscount(couponPromotionVO, activityQueryDto, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo, shoppingCartInfoRequestVo, userLoginInfoDto,shoppingCartInfoRequestVo.getMenuType(),deliveryAmount); this.updateShoppingCartGoodsDiscount(couponPromotionVO, activityQueryDto, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo, shoppingCartInfoRequestVo, userLoginInfoDto,shoppingCartInfoRequestVo.getMenuType(),deliveryAmount, this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList()));
//设置更新响应信息 //设置更新响应信息
setAddAndUpdateResponse(shoppingCartGoodsResponseVo, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo.getToastMsg(), partnerId, storeId, crateUserId, ShoppingCartConstant.QUERY_INFO, shoppingCartInfoRequestVo); setAddAndUpdateResponse(shoppingCartGoodsResponseVo, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo.getToastMsg(), partnerId, storeId, crateUserId, ShoppingCartConstant.QUERY_INFO, shoppingCartInfoRequestVo);
// 在原价、现价、折扣价上增加第一次使用会员卡的费用 // 在原价、现价、折扣价上增加第一次使用会员卡的费用
...@@ -737,7 +737,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -737,7 +737,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
Long deliveryAmount = calculateDeliveryAmount(receiveId, partnerId, storeId, userLoginInfoDto.getWxAppid(), shoppingCartGoodsResponseVo); Long deliveryAmount = calculateDeliveryAmount(receiveId, partnerId, storeId, userLoginInfoDto.getWxAppid(), shoppingCartGoodsResponseVo);
// 获取优惠信息 // 获取优惠信息
CalculationDiscountResult calculationDiscountResult = getCalculationDiscountResult(menuType,partnerId,storeId,userId,appId,userLoginInfoDto.getWxAppid(),orderType,assortmentCustomerInfoVo.isMemberPaid(),cartGoodsList,coupons,sendGoodsList,shoppingCartInfoRequestVo.getReceiveId(),deliveryAmount); CalculationDiscountResult calculationDiscountResult = getCalculationDiscountResult(menuType,partnerId,storeId,userId,appId,userLoginInfoDto.getWxAppid(),orderType,assortmentCustomerInfoVo.isMemberPaid(),cartGoodsList,coupons,sendGoodsList,shoppingCartInfoRequestVo.getReceiveId(),deliveryAmount, this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList()));
ActivityQueryDto activityQueryDto = activityAdapter.getActivityQueryDto(partnerId, storeId, userId, appId, shoppingCartInfoRequestVo.getOrderType()); ActivityQueryDto activityQueryDto = activityAdapter.getActivityQueryDto(partnerId, storeId, userId, appId, shoppingCartInfoRequestVo.getOrderType());
...@@ -745,7 +745,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -745,7 +745,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
// 临时方案 // 临时方案
packgeAdditional(shoppingCartInfoRequestVo, premiumExchangeActivity); packgeAdditional(shoppingCartInfoRequestVo, premiumExchangeActivity);
// 促销活动的优惠金额计算 // 促销活动的优惠金额计算
updateShoppingCartGoodsDiscount(couponPromotionVO, activityQueryDto, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo, shoppingCartInfoRequestVo, userLoginInfoDto,shoppingCartInfoRequestVo.getMenuType(),deliveryAmount); updateShoppingCartGoodsDiscount(couponPromotionVO, activityQueryDto, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo, shoppingCartInfoRequestVo, userLoginInfoDto,shoppingCartInfoRequestVo.getMenuType(),deliveryAmount, this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList()));
//设置更新响应信息 //设置更新响应信息
setAddAndUpdateResponse(shoppingCartGoodsResponseVo, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo.getToastMsg(), partnerId, storeId, userId, ShoppingCartConstant.QUERY_INFO, shoppingCartInfoRequestVo); setAddAndUpdateResponse(shoppingCartGoodsResponseVo, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo.getToastMsg(), partnerId, storeId, userId, ShoppingCartConstant.QUERY_INFO, shoppingCartInfoRequestVo);
...@@ -791,7 +791,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -791,7 +791,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
} }
@Override @Override
public CalculationDiscountResult getActivityCalculationDiscountResponse(String partnerId, String storeId, String userId, String appId, Integer orderType, boolean isMember, List<CartGoods> cartGoodsList, List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons, List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList, String menuType, Long distributionFee,Integer bizType, Integer accoutFlag) { public CalculationDiscountResult getActivityCalculationDiscountResponse(String partnerId, String storeId, String userId, String appId, Integer orderType, boolean isMember, List<CartGoods> cartGoodsList, List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons, List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList, String menuType, Long distributionFee,Integer bizType, Integer accoutFlag,long nightDistributionFee) {
ActivityCalculationDiscountRequestDto activityCalculationDiscountRequestDto = getActivityCalculationDiscountRequestDto(partnerId, storeId, userId, appId, orderType); ActivityCalculationDiscountRequestDto activityCalculationDiscountRequestDto = getActivityCalculationDiscountRequestDto(partnerId, storeId, userId, appId, orderType);
List<ActivityCalculationDiscountRequestDto.CalculationDiscountGoods> calculationDiscountGoodsList = new ArrayList<>(); List<ActivityCalculationDiscountRequestDto.CalculationDiscountGoods> calculationDiscountGoodsList = new ArrayList<>();
// 校验后有效的商品券map // 校验后有效的商品券map
...@@ -852,6 +852,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -852,6 +852,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
activityCalculationDiscountRequestDto.setCoupons(coupons); activityCalculationDiscountRequestDto.setCoupons(coupons);
activityCalculationDiscountRequestDto.setOrgIds(commonService.getOrgIdsForCoupon(partnerId, storeId)); activityCalculationDiscountRequestDto.setOrgIds(commonService.getOrgIdsForCoupon(partnerId, storeId));
activityCalculationDiscountRequestDto.setDistributionFee(distributionFee); activityCalculationDiscountRequestDto.setDistributionFee(distributionFee);
activityCalculationDiscountRequestDto.setNightDistributionFee(nightDistributionFee);
activityCalculationDiscountRequestDto.setIsMember(isMember); activityCalculationDiscountRequestDto.setIsMember(isMember);
ActivityCalculationDiscountResponseDto activityCalculationDiscountResponseDto = activityClient.calculationDiscount(activityCalculationDiscountRequestDto); ActivityCalculationDiscountResponseDto activityCalculationDiscountResponseDto = activityClient.calculationDiscount(activityCalculationDiscountRequestDto);
// try { // try {
...@@ -1264,7 +1265,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -1264,7 +1265,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
Long deliveryAmount = calculateDeliveryAmount(receiveId, partnerId, storeId, userLoginInfoDto.getWxAppid(), shoppingCartGoodsResponseVo); Long deliveryAmount = calculateDeliveryAmount(receiveId, partnerId, storeId, userLoginInfoDto.getWxAppid(), shoppingCartGoodsResponseVo);
// 获取优惠信息 // 获取优惠信息
CalculationDiscountResult calculationDiscountResult CalculationDiscountResult calculationDiscountResult
=getCalculationDiscountResult(menuType,partnerId,storeId,crateUserId,appId,userLoginInfoDto.getWxAppid(),orderType,currentUserInfoVo.isMemberPaid(),cartGoodsList,new ArrayList(),new ArrayList<>(),null,deliveryAmount); =getCalculationDiscountResult(menuType,partnerId,storeId,crateUserId,appId,userLoginInfoDto.getWxAppid(),orderType,currentUserInfoVo.isMemberPaid(),cartGoodsList,new ArrayList(),new ArrayList<>(),null,deliveryAmount, this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList()));
if (calculationDiscountResult == null) { if (calculationDiscountResult == null) {
shoppingCartGoodsResponseVo.setProducts(cartGoodsList); shoppingCartGoodsResponseVo.setProducts(cartGoodsList);
} }
...@@ -1272,7 +1273,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -1272,7 +1273,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
ActivityQueryDto activityQueryDto = activityAdapter.getActivityQueryDto(partnerId, storeId, crateUserId, appId, shoppingCartCollageClearRequestVo.getOrderType()); ActivityQueryDto activityQueryDto = activityAdapter.getActivityQueryDto(partnerId, storeId, crateUserId, appId, shoppingCartCollageClearRequestVo.getOrderType());
// 促销活动的优惠金额计算 // 促销活动的优惠金额计算
updateShoppingCartGoodsDiscount(null, activityQueryDto, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo, null, userLoginInfoDto, shoppingCartCollageClearRequestVo.getMenuType(), deliveryAmount); updateShoppingCartGoodsDiscount(null, activityQueryDto, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo, null, userLoginInfoDto, shoppingCartCollageClearRequestVo.getMenuType(), deliveryAmount, this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList()));
//设置更新响应信息 //设置更新响应信息
setAddAndUpdateResponse(shoppingCartGoodsResponseVo, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo.getToastMsg(), partnerId, storeId, crateUserId, ShoppingCartConstant.ADD_AND_UPDATE, null); setAddAndUpdateResponse(shoppingCartGoodsResponseVo, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo.getToastMsg(), partnerId, storeId, crateUserId, ShoppingCartConstant.ADD_AND_UPDATE, null);
......
...@@ -37,7 +37,10 @@ import cn.freemud.interceptor.ServiceException; ...@@ -37,7 +37,10 @@ import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.BuriedPointService; import cn.freemud.service.BuriedPointService;
import cn.freemud.service.ItemService; import cn.freemud.service.ItemService;
import cn.freemud.service.ShoppingCartNewService; import cn.freemud.service.ShoppingCartNewService;
import cn.freemud.service.impl.calculate.*; import cn.freemud.service.impl.calculate.CalculationSharingCartService;
import cn.freemud.service.impl.calculate.CalculationSharingDiscountService;
import cn.freemud.service.impl.calculate.CalculationSharingEquallyService;
import cn.freemud.service.impl.calculate.CalculationSharingValidatorService;
import cn.freemud.service.shoppingCart.ShoppingCartRelationFactory; import cn.freemud.service.shoppingCart.ShoppingCartRelationFactory;
import cn.freemud.service.shoppingCart.ShoppingCartRelationService; import cn.freemud.service.shoppingCart.ShoppingCartRelationService;
import cn.freemud.service.thirdparty.CustomerApplicationClient; import cn.freemud.service.thirdparty.CustomerApplicationClient;
...@@ -63,7 +66,6 @@ import org.apache.commons.collections4.CollectionUtils; ...@@ -63,7 +66,6 @@ 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;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.*; import java.util.*;
...@@ -193,8 +195,8 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService { ...@@ -193,8 +195,8 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
ActivityQueryDto activityQueryDto = activityAdapter.getActivityQueryDto(partnerId, storeId, userId, appId, addShoppingCartGoodsRequestVo.getOrderType()); ActivityQueryDto activityQueryDto = activityAdapter.getActivityQueryDto(partnerId, storeId, userId, appId, addShoppingCartGoodsRequestVo.getOrderType());
CalculationDiscountResult discountResult = null; CalculationDiscountResult discountResult = null;
discountResult = sharingDiscountService.getCalculationSharingDiscountResult(menuType, partnerId, storeId, userId, appId, orderType, assortmentCustomerInfoVo.isMemberPaid(), allCartGoodsList, new ArrayList<>(), null, deliveryAmount, null,null, accountType,new DiscountSharingDto()); discountResult = sharingDiscountService.getCalculationSharingDiscountResult(menuType, partnerId, storeId, userId, appId, orderType, assortmentCustomerInfoVo.isMemberPaid(), allCartGoodsList, new ArrayList<>(), null, deliveryAmount, null,null, accountType,new DiscountSharingDto(),0L);
sharingCartService.distribute(discountResult, allCartGoodsList, shoppingCartGoodsResponseVo, null, null, null, activityQueryDto, menuType, deliveryAmount, ShoppingCartConstant.ADD_AND_UPDATE, partnerId, null, userId, storeId); sharingCartService.distribute(discountResult, allCartGoodsList, shoppingCartGoodsResponseVo, null, null, null, activityQueryDto, menuType, deliveryAmount, ShoppingCartConstant.ADD_AND_UPDATE, partnerId, null, userId, storeId,0L);
buildShoppingCartGoodsResponse(shoppingCartGoodsResponseVo,discountResult,null,partnerId); buildShoppingCartGoodsResponse(shoppingCartGoodsResponseVo,discountResult,null,partnerId);
...@@ -288,7 +290,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService { ...@@ -288,7 +290,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
, new ArrayList() //券 , new ArrayList() //券
, null //加价购商品 , null //加价购商品
, deliveryAmount , deliveryAmount
, null,null, accountFlag,new DiscountSharingDto()); , null,null, accountFlag,new DiscountSharingDto(),0L);
sharingCartService.distribute(discountResult sharingCartService.distribute(discountResult
, cartGoodsList , cartGoodsList
...@@ -303,7 +305,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService { ...@@ -303,7 +305,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
, partnerId , partnerId
, null , null
, userId , userId
, storeId); , storeId,0L);
buildShoppingCartGoodsResponse(shoppingCartGoodsResponseVo,discountResult,null,partnerId); buildShoppingCartGoodsResponse(shoppingCartGoodsResponseVo,discountResult,null,partnerId);
...@@ -447,7 +449,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService { ...@@ -447,7 +449,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
, coupons , coupons
, sendGoods , sendGoods
, deliveryAmount , deliveryAmount
, null,null, accountFlag,new DiscountSharingDto()); , null,null, accountFlag,new DiscountSharingDto(),0L);
sharingCartService.distribute(calculationSharingDiscountResult sharingCartService.distribute(calculationSharingDiscountResult
, cartGoodsList , cartGoodsList
, shoppingCartGoodsResponseVo , shoppingCartGoodsResponseVo
...@@ -461,7 +463,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService { ...@@ -461,7 +463,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
, partnerId , partnerId
,shoppingCartInfoRequestVo.getFlag() ,shoppingCartInfoRequestVo.getFlag()
, userId , userId
, storeId); , storeId,0L);
buildShoppingCartGoodsResponse(shoppingCartGoodsResponseVo,calculationSharingDiscountResult,shoppingCartInfoRequestVo.getFlag(),partnerId); buildShoppingCartGoodsResponse(shoppingCartGoodsResponseVo,calculationSharingDiscountResult,shoppingCartInfoRequestVo.getFlag(),partnerId);
...@@ -605,7 +607,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService { ...@@ -605,7 +607,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
, coupons , coupons
, shoppingCartInfoRequestVo.getSendGoods() , shoppingCartInfoRequestVo.getSendGoods()
, deliveryAmount , deliveryAmount
, shoppingCartInfoRequestVo,null, accountFlag,new DiscountSharingDto()); , shoppingCartInfoRequestVo,null, accountFlag,new DiscountSharingDto(), 0L);
// 活动校验 // 活动校验
calculationSharingValidatorService.validator(discountResult calculationSharingValidatorService.validator(discountResult
...@@ -630,7 +632,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService { ...@@ -630,7 +632,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
, menuType , menuType
, deliveryAmount , deliveryAmount
, shoppingCartGoodsDto , shoppingCartGoodsDto
, premiumExchangeActivity); , premiumExchangeActivity,0L);
return ResponseUtil.success(shoppingCartGoodsDto); return ResponseUtil.success(shoppingCartGoodsDto);
} }
...@@ -638,7 +640,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService { ...@@ -638,7 +640,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
@Override @Override
public CalculationDiscountResult getActivityCalculationDiscountResponse( public CalculationDiscountResult getActivityCalculationDiscountResponse(
String partnerId, String storeId, String userId, String appId, Integer orderType, boolean isMember, List<CartGoods> cartGoodsList, String partnerId, String storeId, String userId, String appId, Integer orderType, boolean isMember, List<CartGoods> cartGoodsList,
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons, List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList, String menuType, Long distributionFee, Integer bizType, Integer accountFlag) { List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons, List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList, String menuType, Long distributionFee, Integer bizType, Integer accountFlag,long nightDistributionFee) {
return null; return null;
} }
......
...@@ -434,7 +434,7 @@ public class ShoppingCartMealServiceImpl implements ShoppingCartNewService { ...@@ -434,7 +434,7 @@ public class ShoppingCartMealServiceImpl implements ShoppingCartNewService {
if (CollectionUtils.isEmpty(cartGoodsList)) { if (CollectionUtils.isEmpty(cartGoodsList)) {
return; return;
} }
CalculationDiscountResult calculationDiscountResult = this.getActivityCalculationDiscountResponse(partnerId, storeId, userId, appId, orderType, isMember, cartGoodsList, new ArrayList<>(), new ArrayList<>(), BusinessTypeEnum.SAAS_MALL.getCode(), 0L,null, null); CalculationDiscountResult calculationDiscountResult = this.getActivityCalculationDiscountResponse(partnerId, storeId, userId, appId, orderType, isMember, cartGoodsList, new ArrayList<>(), new ArrayList<>(), BusinessTypeEnum.SAAS_MALL.getCode(), 0L,null, null,0L);
if(calculationDiscountResult == null) { if(calculationDiscountResult == null) {
return; return;
} }
...@@ -563,7 +563,7 @@ public class ShoppingCartMealServiceImpl implements ShoppingCartNewService { ...@@ -563,7 +563,7 @@ public class ShoppingCartMealServiceImpl implements ShoppingCartNewService {
@Override @Override
public CalculationDiscountResult getActivityCalculationDiscountResponse(String partnerId, String storeId, String userId, String appId, Integer orderType, boolean isMember, public CalculationDiscountResult getActivityCalculationDiscountResponse(String partnerId, String storeId, String userId, String appId, Integer orderType, boolean isMember,
List<CartGoods> cartGoodsList, List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons, List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList,String menuType,Long distributionFee,Integer bizType, Integer accountFlag) { List<CartGoods> cartGoodsList, List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons, List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList,String menuType,Long distributionFee,Integer bizType, Integer accountFlag,long nightDistributionFee) {
ActivityCalculationDiscountRequestDto activityCalculationDiscountRequestDto = getActivityCalculationDiscountRequestDto(partnerId, storeId, userId, appId, orderType); ActivityCalculationDiscountRequestDto activityCalculationDiscountRequestDto = getActivityCalculationDiscountRequestDto(partnerId, storeId, userId, appId, orderType);
List<ActivityCalculationDiscountRequestDto.CalculationDiscountGoods> calculationDiscountGoodsList = new ArrayList<>(); List<ActivityCalculationDiscountRequestDto.CalculationDiscountGoods> calculationDiscountGoodsList = new ArrayList<>();
cartGoodsList = cartGoodsList.stream().filter(t -> !isWeightProduct(t)).collect(Collectors.toList()); cartGoodsList = cartGoodsList.stream().filter(t -> !isWeightProduct(t)).collect(Collectors.toList());
...@@ -579,6 +579,7 @@ public class ShoppingCartMealServiceImpl implements ShoppingCartNewService { ...@@ -579,6 +579,7 @@ public class ShoppingCartMealServiceImpl implements ShoppingCartNewService {
activityCalculationDiscountRequestDto.setCoupons(coupons); activityCalculationDiscountRequestDto.setCoupons(coupons);
activityCalculationDiscountRequestDto.setOrgIds(commonService.getOrgIdsForCoupon(partnerId, storeId)); activityCalculationDiscountRequestDto.setOrgIds(commonService.getOrgIdsForCoupon(partnerId, storeId));
activityCalculationDiscountRequestDto.setDistributionFee(distributionFee); activityCalculationDiscountRequestDto.setDistributionFee(distributionFee);
activityCalculationDiscountRequestDto.setNightDistributionFee(nightDistributionFee);
activityCalculationDiscountRequestDto.setIsMember(isMember); activityCalculationDiscountRequestDto.setIsMember(isMember);
ActivityCalculationDiscountResponseDto activityCalculationDiscountResponseDto = activityClient.calculationDiscount(activityCalculationDiscountRequestDto); ActivityCalculationDiscountResponseDto activityCalculationDiscountResponseDto = activityClient.calculationDiscount(activityCalculationDiscountRequestDto);
// try { // try {
......
...@@ -34,9 +34,9 @@ import cn.freemud.entities.dto.order.PackAmountConfig; ...@@ -34,9 +34,9 @@ import cn.freemud.entities.dto.order.PackAmountConfig;
import cn.freemud.entities.dto.other.ValidCouponBo; import cn.freemud.entities.dto.other.ValidCouponBo;
import cn.freemud.entities.dto.pay.*; import cn.freemud.entities.dto.pay.*;
import cn.freemud.entities.dto.product.CheckCartRequest; import cn.freemud.entities.dto.product.CheckCartRequest;
import cn.freemud.entities.dto.shoppingCart.PromotionResultVO;
import cn.freemud.entities.dto.product.info.ProductBean; import cn.freemud.entities.dto.product.info.ProductBean;
import cn.freemud.entities.dto.product.info.SkuProductBean; import cn.freemud.entities.dto.product.info.SkuProductBean;
import cn.freemud.entities.dto.shoppingCart.PromotionResultVO;
import cn.freemud.entities.dto.shoppingCart.SendPoint; import cn.freemud.entities.dto.shoppingCart.SendPoint;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto; import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.dto.user.GetUserScoreUseDetailRequest; import cn.freemud.entities.dto.user.GetUserScoreUseDetailRequest;
...@@ -84,6 +84,7 @@ import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant; ...@@ -84,6 +84,7 @@ 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.enums.BusinessTypeEnum;
import com.freemud.sdk.api.assortment.shoppingcart.service.ShoppingCartBaseService; import com.freemud.sdk.api.assortment.shoppingcart.service.ShoppingCartBaseService;
import com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl; import com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl;
import com.freemud.sdk.api.assortment.shoppingcart.util.ShoppingSdkLogUtil;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import ma.glasnost.orika.MapperFacade; import ma.glasnost.orika.MapperFacade;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
...@@ -384,18 +385,18 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -384,18 +385,18 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
, appId, orderType, assortmentCustomerInfoVo.isMemberPaid(), allCartGoodsList , appId, orderType, assortmentCustomerInfoVo.isMemberPaid(), allCartGoodsList
, new ArrayList<>() //结算页选中的代金券 , new ArrayList<>() //结算页选中的代金券
, null //加价购商品 , null //加价购商品
, deliveryAmount, null,bizType, accountFlag,new DiscountSharingDto()); , deliveryAmount, null,bizType, accountFlag,new DiscountSharingDto(),this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList()));
//更新购物车券状态 //更新购物车券状态
newCalculationUpdateCouponStatus(userId, partnerId, storeId, bizType, cartGoods, allCartGoodsList, discountResult); newCalculationUpdateCouponStatus(userId, partnerId, storeId, bizType, cartGoods, allCartGoodsList, discountResult);
sharingCartService.distribute(discountResult, allCartGoodsList, shoppingCartGoodsResponseVo, null sharingCartService.distribute(discountResult, allCartGoodsList, shoppingCartGoodsResponseVo, null
, userLoginInfoDto, null, activityQueryDto, menuType, deliveryAmount , userLoginInfoDto, null, activityQueryDto, menuType, deliveryAmount
, ShoppingCartConstant.ADD_AND_UPDATE, partnerId, null, userId, storeId); , ShoppingCartConstant.ADD_AND_UPDATE, partnerId, null, userId, storeId,this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList()));
buildShoppingCartGoodsResponse(shoppingCartGoodsResponseVo, discountResult, null, partnerId); buildShoppingCartGoodsResponse(shoppingCartGoodsResponseVo, discountResult, null, partnerId);
// //
} else { } else {
// 获取优惠信息 // 获取优惠信息
CalculationDiscountResult calculationDiscountResult = getCalculationDiscountResult(menuType, partnerId, storeId, userId, appId, userLoginInfoDto.getWxAppid(), orderType, assortmentCustomerInfoVo.isMemberPaid(), allCartGoodsList, new ArrayList(), new ArrayList<>(), null, deliveryAmount,bizType, accountFlag); CalculationDiscountResult calculationDiscountResult = getCalculationDiscountResult(menuType, partnerId, storeId, userId, appId, userLoginInfoDto.getWxAppid(), orderType, assortmentCustomerInfoVo.isMemberPaid(), allCartGoodsList, new ArrayList(), new ArrayList<>(), null, deliveryAmount,bizType, accountFlag, this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList()));
if (calculationDiscountResult != null && CollectionUtils.isNotEmpty(calculationDiscountResult.getSendGoods())){ if (calculationDiscountResult != null && CollectionUtils.isNotEmpty(calculationDiscountResult.getSendGoods())){
sendGoodsQtyCheck(productsCount, appId, partnerId, userId, storeId, tableNumber, oldCartGoodsList, shoppingCartBaseService, calculationDiscountResult.getSendGoods(),bizType); sendGoodsQtyCheck(productsCount, appId, partnerId, userId, storeId, tableNumber, oldCartGoodsList, shoppingCartBaseService, calculationDiscountResult.getSendGoods(),bizType);
} }
...@@ -407,7 +408,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -407,7 +408,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
assortmentSdkService.updateGoodsQtyBySdk(partnerId, userId, storeId, cartGoods.getCartGoodsUid(), 0, "", shoppingCartBaseService,bizType); assortmentSdkService.updateGoodsQtyBySdk(partnerId, userId, storeId, cartGoods.getCartGoodsUid(), 0, "", shoppingCartBaseService,bizType);
} }
// 促销活动的优惠金额计算 // 促销活动的优惠金额计算
updateShoppingCartGoodsDiscount(null, activityQueryDto, calculationDiscountResult, allCartGoodsList, shoppingCartGoodsResponseVo, null, userLoginInfoDto, addShoppingCartGoodsRequestVo.getMenuType(), deliveryAmount); updateShoppingCartGoodsDiscount(null, activityQueryDto, calculationDiscountResult, allCartGoodsList, shoppingCartGoodsResponseVo, null, userLoginInfoDto, addShoppingCartGoodsRequestVo.getMenuType(), deliveryAmount, this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList()));
clearMsg(shoppingCartGoodsResponseVo, cartGoods.getCartGoodsUid()); clearMsg(shoppingCartGoodsResponseVo, cartGoods.getCartGoodsUid());
//设置更新响应信息 //设置更新响应信息
...@@ -533,7 +534,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -533,7 +534,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
, new ArrayList() //券 , new ArrayList() //券
, null //加价购商品 , null //加价购商品
, deliveryAmount , deliveryAmount
, null,bizType, accountFlag,new DiscountSharingDto()); , null,bizType, accountFlag,new DiscountSharingDto(), this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList()));
//校验加购数量 //校验加购数量
if (discountResult != null) { if (discountResult != null) {
sendGoodsQtyCheckForUpdate(cartGoodsList, oldQty, appId, partnerId, userId, storeId, cartGoodsUid, "", shoppingCartBaseService, discountResult.getSendGoods(),bizType); sendGoodsQtyCheckForUpdate(cartGoodsList, oldQty, appId, partnerId, userId, storeId, cartGoodsUid, "", shoppingCartBaseService, discountResult.getSendGoods(),bizType);
...@@ -553,12 +554,13 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -553,12 +554,13 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
, partnerId , partnerId
, null , null
, userId , userId
, storeId); , storeId
,this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList()));
buildShoppingCartGoodsResponse(shoppingCartGoodsResponseVo, discountResult, null, partnerId); buildShoppingCartGoodsResponse(shoppingCartGoodsResponseVo, discountResult, null, partnerId);
} else { } else {
// 获取优惠信息 // 获取优惠信息
CalculationDiscountResult calculationDiscountResult = getCalculationDiscountResult(menuType, partnerId, storeId, userId, appId, userLoginInfoDto.getWxAppid(), orderType, assortmentCustomerInfoVo.isMemberPaid(), cartGoodsList, new ArrayList(), new ArrayList<>(), null, deliveryAmount,bizType, accountFlag); CalculationDiscountResult calculationDiscountResult = getCalculationDiscountResult(menuType, partnerId, storeId, userId, appId, userLoginInfoDto.getWxAppid(), orderType, assortmentCustomerInfoVo.isMemberPaid(), cartGoodsList, new ArrayList(), new ArrayList<>(), null, deliveryAmount,bizType, accountFlag, this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList()));
if (calculationDiscountResult == null) { if (calculationDiscountResult == null) {
shoppingCartGoodsResponseVo.setProducts(cartGoodsList); shoppingCartGoodsResponseVo.setProducts(cartGoodsList);
} }
...@@ -568,7 +570,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -568,7 +570,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
//校验 //校验
calculationUpdateCouponStatus(userId, partnerId, storeId, bizType, cartGoodsList, calculationDiscountResult); calculationUpdateCouponStatus(userId, partnerId, storeId, bizType, cartGoodsList, calculationDiscountResult);
// 促销活动的优惠金额计算 // 促销活动的优惠金额计算
updateShoppingCartGoodsDiscount(null, activityQueryDto, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo, null, userLoginInfoDto, updateShoppingCartGoodsQtyRequestVo.getMenuType(), deliveryAmount); updateShoppingCartGoodsDiscount(null, activityQueryDto, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo, null, userLoginInfoDto, updateShoppingCartGoodsQtyRequestVo.getMenuType(), deliveryAmount, this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList()));
clearMsg(shoppingCartGoodsResponseVo, cartGoodsUid); clearMsg(shoppingCartGoodsResponseVo, cartGoodsUid);
//设置更新响应信息 //设置更新响应信息
setAddAndUpdateResponse(shoppingCartGoodsResponseVo, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo.getToastMsg(), partnerId, storeId, userId, ShoppingCartConstant.ADD_AND_UPDATE, null); setAddAndUpdateResponse(shoppingCartGoodsResponseVo, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo.getToastMsg(), partnerId, storeId, userId, ShoppingCartConstant.ADD_AND_UPDATE, null);
...@@ -736,6 +738,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -736,6 +738,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
assortmentSdkService.setShoppingCart(partnerId, storeId, userId, cartGoodsList, assortmentCustomerInfoVo.getSessionId(), "", this.shoppingCartBaseService,bizType); assortmentSdkService.setShoppingCart(partnerId, storeId, userId, cartGoodsList, assortmentCustomerInfoVo.getSessionId(), "", this.shoppingCartBaseService,bizType);
} }
// 获取基础运费,并且 组装 deliveryAmountList字段: 额外配送费 如夜间配送费等
Long deliveryAmount = calculateDeliveryAmount(receiveId, partnerId, storeId, userLoginInfoDto.getWxAppid(), shoppingCartGoodsResponseVo, shoppingCartInfoRequestVo.getOrderType()); Long deliveryAmount = calculateDeliveryAmount(receiveId, partnerId, storeId, userLoginInfoDto.getWxAppid(), shoppingCartGoodsResponseVo, shoppingCartInfoRequestVo.getOrderType());
ActivityQueryDto activityQueryDto = activityAdapter.getActivityQueryDto(partnerId, storeId, userId, appId, shoppingCartInfoRequestVo.getOrderType()); ActivityQueryDto activityQueryDto = activityAdapter.getActivityQueryDto(partnerId, storeId, userId, appId, shoppingCartInfoRequestVo.getOrderType());
...@@ -778,7 +781,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -778,7 +781,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
, sendGoods , sendGoods
, deliveryAmount , deliveryAmount
, null , null
,bizType, accountFlag,new DiscountSharingDto()); ,bizType, accountFlag,new DiscountSharingDto(), this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList()));
sharingCartService.distribute(calculationSharingDiscountResult sharingCartService.distribute(calculationSharingDiscountResult
, cartGoodsList , cartGoodsList
, shoppingCartGoodsResponseVo , shoppingCartGoodsResponseVo
...@@ -792,7 +795,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -792,7 +795,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
, partnerId , partnerId
, shoppingCartInfoRequestVo.getFlag() , shoppingCartInfoRequestVo.getFlag()
, userId , userId
, storeId); , storeId,this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList()));
buildShoppingCartGoodsResponse(shoppingCartGoodsResponseVo, calculationSharingDiscountResult, shoppingCartInfoRequestVo.getFlag(), partnerId); buildShoppingCartGoodsResponse(shoppingCartGoodsResponseVo, calculationSharingDiscountResult, shoppingCartInfoRequestVo.getFlag(), partnerId);
} else { } else {
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = new ArrayList<>(); List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = new ArrayList<>();
...@@ -815,16 +818,17 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -815,16 +818,17 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
} }
}); });
} }
long nightDistributionFee = this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList());
// 获取优惠信息 调用促销 // 获取优惠信息 调用促销
CalculationDiscountResult calculationDiscountResult = getCalculationDiscountResult(menuType, partnerId, storeId, userId, appId, CalculationDiscountResult calculationDiscountResult = getCalculationDiscountResult(menuType, partnerId, storeId, userId, appId,
userLoginInfoDto.getWxAppid(), orderType, assortmentCustomerInfoVo.isMemberPaid(), userLoginInfoDto.getWxAppid(), orderType, assortmentCustomerInfoVo.isMemberPaid(),
cartGoodsList, coupons, null, shoppingCartInfoRequestVo.getReceiveId(), deliveryAmount,bizType, accountFlag); cartGoodsList, coupons, null, shoppingCartInfoRequestVo.getReceiveId(), deliveryAmount,bizType, accountFlag, nightDistributionFee);
if (calculationDiscountResult == null) { if (calculationDiscountResult == null) {
shoppingCartGoodsResponseVo.setProducts(cartGoodsList); shoppingCartGoodsResponseVo.setProducts(cartGoodsList);
} }
// 促销活动的优惠金额计算 // 促销活动的优惠金额计算
this.updateShoppingCartGoodsDiscount(couponPromotionVO, activityQueryDto, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo, shoppingCartInfoRequestVo, userLoginInfoDto, shoppingCartInfoRequestVo.getMenuType(), deliveryAmount); this.updateShoppingCartGoodsDiscount(couponPromotionVO, activityQueryDto, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo, shoppingCartInfoRequestVo, userLoginInfoDto, shoppingCartInfoRequestVo.getMenuType(), deliveryAmount, nightDistributionFee);
//设置更新响应信息 //设置更新响应信息
setAddAndUpdateResponse(shoppingCartGoodsResponseVo, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo.getToastMsg(), partnerId, storeId, userId, ShoppingCartConstant.QUERY_INFO, shoppingCartInfoRequestVo); setAddAndUpdateResponse(shoppingCartGoodsResponseVo, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo.getToastMsg(), partnerId, storeId, userId, ShoppingCartConstant.QUERY_INFO, shoppingCartInfoRequestVo);
// 在原价、现价、折扣价上增加第一次使用会员卡的费用 // 在原价、现价、折扣价上增加第一次使用会员卡的费用
...@@ -896,7 +900,24 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -896,7 +900,24 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
// 设置 使用信息 // 设置 使用信息
Long useCouponThreshold = this.getUseCouponThreshold(shoppingCartGoodsResponseVo.getProducts()); Long useCouponThreshold = this.getUseCouponThreshold(shoppingCartGoodsResponseVo.getProducts());
shoppingCartGoodsResponseVo.setUseCouponThreshold(useCouponThreshold); shoppingCartGoodsResponseVo.setUseCouponThreshold(useCouponThreshold);
// 如果有夜间配送费 需要维护划线价 deliveryAmount 字段, ___> 注意, 配送费的优惠是 促销在算(又特么各算一半,这产品真是恶心)
//shoppingCartGoodsResponseVo.setDeliveryAmount(this.responseDataMaintain2DeliverAmount(shoppingCartGoodsResponseVo.getDeliveryAmount(),this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList())));
}
/**
* 如果有夜间配送费 需要维护划线价 deliveryAmount 字段, ___> 注意, 配送费的优惠是 促销在算(又特么各算一半,这产品真是恶心)
* @param deliveryAmount
* @param nightDistributionFee
* @return
*/
private Long responseDataMaintain2DeliverAmount(Long deliveryAmount,long nightDistributionFee){
if (Objects.isNull(deliveryAmount)) {
deliveryAmount = 0L;
}
if (nightDistributionFee < 0){
return deliveryAmount;
}
return deliveryAmount + nightDistributionFee;
} }
/** /**
...@@ -1210,7 +1231,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1210,7 +1231,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
, coupons , coupons
, shoppingCartInfoRequestVo.getSendGoods() , shoppingCartInfoRequestVo.getSendGoods()
, deliveryAmount , deliveryAmount
, shoppingCartInfoRequestVo,bizType, accountFlag,new DiscountSharingDto()); , shoppingCartInfoRequestVo,bizType, accountFlag,new DiscountSharingDto(), this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList()));
// 活动校验 // 活动校验
calculationSharingValidatorService.validator(discountResult calculationSharingValidatorService.validator(discountResult
...@@ -1235,7 +1256,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1235,7 +1256,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
, menuType , menuType
, deliveryAmount , deliveryAmount
, shoppingCartGoodsDto , shoppingCartGoodsDto
, premiumExchangeActivity); , premiumExchangeActivity, this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList()));
} else { } else {
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = new ArrayList<>(); List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = new ArrayList<>();
if (StringUtils.isNotEmpty(couponCode)) { if (StringUtils.isNotEmpty(couponCode)) {
...@@ -1257,11 +1278,11 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1257,11 +1278,11 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
} }
// 获取优惠信息 // 获取优惠信息
CalculationDiscountResult calculationDiscountResult = getCalculationDiscountResult(menuType, partnerId, storeId, userId, appId, userLoginInfoDto.getWxAppid(), orderType, assortmentCustomerInfoVo.isMemberPaid(), cartGoodsList, coupons, sendGoodsList, shoppingCartInfoRequestVo.getReceiveId(), deliveryAmount,bizType, accountFlag); CalculationDiscountResult calculationDiscountResult = getCalculationDiscountResult(menuType, partnerId, storeId, userId, appId, userLoginInfoDto.getWxAppid(), orderType, assortmentCustomerInfoVo.isMemberPaid(), cartGoodsList, coupons, sendGoodsList, shoppingCartInfoRequestVo.getReceiveId(), deliveryAmount,bizType, accountFlag, this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList()));
//临时方案 //临时方案
packgeAdditional(shoppingCartInfoRequestVo, premiumExchangeActivity); packgeAdditional(shoppingCartInfoRequestVo, premiumExchangeActivity);
// 促销活动的优惠金额计算 // 促销活动的优惠金额计算
updateShoppingCartGoodsDiscount(couponPromotionVO, activityQueryDto, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo, shoppingCartInfoRequestVo, userLoginInfoDto, shoppingCartInfoRequestVo.getMenuType(), deliveryAmount); updateShoppingCartGoodsDiscount(couponPromotionVO, activityQueryDto, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo, shoppingCartInfoRequestVo, userLoginInfoDto, shoppingCartInfoRequestVo.getMenuType(), deliveryAmount, this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList()));
//设置更新响应信息 //设置更新响应信息
setAddAndUpdateResponse(shoppingCartGoodsResponseVo, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo.getToastMsg(), partnerId, storeId, userId, ShoppingCartConstant.QUERY_INFO, shoppingCartInfoRequestVo); setAddAndUpdateResponse(shoppingCartGoodsResponseVo, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo.getToastMsg(), partnerId, storeId, userId, ShoppingCartConstant.QUERY_INFO, shoppingCartInfoRequestVo);
...@@ -1278,6 +1299,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1278,6 +1299,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
shoppingCartGoodsDto.setSendPoint(calculationDiscountResult.getSendPointVo()); shoppingCartGoodsDto.setSendPoint(calculationDiscountResult.getSendPointVo());
} }
} }
//shoppingCartGoodsDto.setDeliveryAmount(this.responseDataMaintain2DeliverAmount(shoppingCartGoodsDto.getDeliveryAmount(), this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList())));
return ResponseUtil.success(shoppingCartGoodsDto); return ResponseUtil.success(shoppingCartGoodsDto);
} }
...@@ -1526,7 +1548,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1526,7 +1548,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList, String menuType, List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList, String menuType,
Long distributionFee, Long distributionFee,
Integer bizType, Integer bizType,
Integer accountFlag Integer accountFlag,
long nightDistributionFee
) { ) {
ActivityCalculationDiscountRequestDto activityCalculationDiscountRequestDto = getActivityCalculationDiscountRequestDto(partnerId, storeId, userId, appId, orderType); ActivityCalculationDiscountRequestDto activityCalculationDiscountRequestDto = getActivityCalculationDiscountRequestDto(partnerId, storeId, userId, appId, orderType);
...@@ -1646,6 +1669,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1646,6 +1669,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
activityCalculationDiscountRequestDto.setCoupons(coupons); activityCalculationDiscountRequestDto.setCoupons(coupons);
activityCalculationDiscountRequestDto.setOrgIds(commonService.getOrgIdsForCoupon(partnerId, storeId)); activityCalculationDiscountRequestDto.setOrgIds(commonService.getOrgIdsForCoupon(partnerId, storeId));
activityCalculationDiscountRequestDto.setDistributionFee(distributionFee); activityCalculationDiscountRequestDto.setDistributionFee(distributionFee);
activityCalculationDiscountRequestDto.setNightDistributionFee(nightDistributionFee);
activityCalculationDiscountRequestDto.setIsMember(isMember); activityCalculationDiscountRequestDto.setIsMember(isMember);
//todo def是什么? //todo def是什么?
activityCalculationDiscountRequestDto.setProductChannel("def"); activityCalculationDiscountRequestDto.setProductChannel("def");
...@@ -1666,8 +1690,13 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1666,8 +1690,13 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
result.setValidCouponMap(validCouponMap); result.setValidCouponMap(validCouponMap);
result.setSpqIdToCartUuid(spqIdToCartUuid); result.setSpqIdToCartUuid(spqIdToCartUuid);
result.setDeliveryAmount(distributionFee); // fisherman 配送费原价 + 夜间配送费逻辑 为了划线价展示
result.setDistributionFee(result.getDistributionFee()); result.setDeliveryAmount((Objects.isNull(distributionFee) ? 0L : distributionFee) + nightDistributionFee);
// fisherman 优惠后配送费,需要加上促销反馈夜间配送费的优惠价格
Long calculationNightDistributionFee = Objects.isNull(result.getNightDistributionFee()) ? 0L : result.getNightDistributionFee();
// 老算价 可能会返回 null 牛皮
Long calculationDistributionFee = Objects.isNull(result.getDistributionFee()) ? 0L : result.getDistributionFee();
result.setDistributionFee(calculationDistributionFee + calculationNightDistributionFee);
return result; return result;
} }
// 支付宝华莱士紧急修改代码,当促销返回103错误码时,需要报券不适用于该门店,且清空购物车 // 支付宝华莱士紧急修改代码,当促销返回103错误码时,需要报券不适用于该门店,且清空购物车
...@@ -1875,7 +1904,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1875,7 +1904,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
* @param shoppingCartGoodsResponseVo * @param shoppingCartGoodsResponseVo
*/ */
private void updateShoppingCartGoodsDiscount(CouponPromotionVO couponPromotionVO, ActivityQueryDto activityQueryDto, CalculationDiscountResult calculationDiscountResult, List<CartGoods> cartGoodsList private void updateShoppingCartGoodsDiscount(CouponPromotionVO couponPromotionVO, ActivityQueryDto activityQueryDto, CalculationDiscountResult calculationDiscountResult, List<CartGoods> cartGoodsList
, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo, UserLoginInfoDto userLoginInfoDto, String menuType, Long deliveryAmount) { , ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo, UserLoginInfoDto userLoginInfoDto, String menuType, Long deliveryAmount, long nightDistributionFee) {
//默认计算优惠 //默认计算优惠
DefaultPromotionService defaultPromotionService = (DefaultPromotionService) PromotionFactory.getPromotionService(ShoppingCartPromotionEnum.DEFAULT_PROMOTION); DefaultPromotionService defaultPromotionService = (DefaultPromotionService) PromotionFactory.getPromotionService(ShoppingCartPromotionEnum.DEFAULT_PROMOTION);
defaultPromotionService.updateShoppingCartGoodsDiscount(couponPromotionVO, activityQueryDto, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo, userLoginInfoDto, shoppingCartInfoRequestVo); defaultPromotionService.updateShoppingCartGoodsDiscount(couponPromotionVO, activityQueryDto, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo, userLoginInfoDto, shoppingCartInfoRequestVo);
...@@ -2013,7 +2042,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -2013,7 +2042,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
// fisherman 促销优惠先 剩余的 配送费 怎么处理的? 需要沟通问一下 // fisherman 促销优惠先 剩余的 配送费 怎么处理的? 需要沟通问一下
} else { } else {
// fisherman 老算价, deliverAmount 不包含 nightDistributionFee 但是页面需要展示总价 所以 这里相加一下 做处理
Long deliverAmountNew = deliveryAmount + nightDistributionFee;
if (activityResponse != null) { if (activityResponse != null) {
if (beanDto.getBenefitType() == 1) { if (beanDto.getBenefitType() == 1) {
...@@ -2024,8 +2054,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -2024,8 +2054,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
shoppingCartGoodsResponseVo.setDeliveryDiscountDesc(String.format(desc, df.format(beanDto.getThresholdAmount().doubleValue() / 100), df.format(beanDto.getDiscountAmount().doubleValue() / 100))); shoppingCartGoodsResponseVo.setDeliveryDiscountDesc(String.format(desc, df.format(beanDto.getThresholdAmount().doubleValue() / 100), df.format(beanDto.getDiscountAmount().doubleValue() / 100)));
} }
shoppingCartGoodsResponseVo.setDeliveryAmount(deliveryAmount); shoppingCartGoodsResponseVo.setDeliveryAmount(deliverAmountNew);
shoppingCartGoodsResponseVo.setDiscountDeliveryAmount(deliveryAmount); shoppingCartGoodsResponseVo.setDiscountDeliveryAmount(deliverAmountNew);
shoppingCartGoodsResponseVo.setIsDiscountDelivery(false); shoppingCartGoodsResponseVo.setIsDiscountDelivery(false);
// fisherman 有活动 并且使用了优惠券 // fisherman 有活动 并且使用了优惠券
boolean isType34 = verifyActivity(calculationDiscountResult); boolean isType34 = verifyActivity(calculationDiscountResult);
...@@ -2039,11 +2069,11 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -2039,11 +2069,11 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
} else { } else {
// 这里需要看看 选择了 配送券 calculationDiscountResult.getDistributionFee() 这个值是多少 // 这里需要看看 选择了 配送券 calculationDiscountResult.getDistributionFee() 这个值是多少
String desc = DELIVERY_DISCOUNT_DESC3; String desc = DELIVERY_DISCOUNT_DESC3;
shoppingCartGoodsResponseVo.setDeliveryDiscountDesc(String.format(desc, df.format(deliveryAmount.doubleValue() / 100))); shoppingCartGoodsResponseVo.setDeliveryDiscountDesc(String.format(desc, df.format(deliverAmountNew.doubleValue() / 100)));
shoppingCartGoodsResponseVo.setDeliveryAmount(deliveryAmount); shoppingCartGoodsResponseVo.setDeliveryAmount(deliverAmountNew);
shoppingCartGoodsResponseVo.setDiscountDeliveryAmount(deliveryAmount); shoppingCartGoodsResponseVo.setDiscountDeliveryAmount(deliverAmountNew);
// 增加配送券之后的逻辑 // 增加配送券之后的逻辑
// shoppingCartGoodsResponseVo.setDiscountDeliveryAmount(calculationDiscountResult==null?deliveryAmount:calculationDiscountResult.getDistributionFee()); // shoppingCartGoodsResponseVo.setDiscountDeliveryAmount(calculationDiscountResult==null?deliverAmountNew:calculationDiscountResult.getDistributionFee());
shoppingCartGoodsResponseVo.setIsDiscountDelivery(false); shoppingCartGoodsResponseVo.setIsDiscountDelivery(false);
// fisherman 确认是否 使用了优惠券 // fisherman 确认是否 使用了优惠券
boolean isType34 = verifyActivity(calculationDiscountResult); boolean isType34 = verifyActivity(calculationDiscountResult);
...@@ -2681,15 +2711,15 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -2681,15 +2711,15 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
private CalculationDiscountResult getCalculationDiscountResult(String menuType private CalculationDiscountResult getCalculationDiscountResult(String menuType
, String partnerId, String storeId, String userId, String appId, String wxappid, Integer orderType, boolean isMember , String partnerId, String storeId, String userId, String appId, String wxappid, Integer orderType, boolean isMember
, List<CartGoods> cartGoodsList, List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons , List<CartGoods> cartGoodsList, List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons
, List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList, String receiveId, Long deliveryAmount,Integer bizType, Integer accountFlag) { , List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList, String receiveId, Long deliveryAmount,Integer bizType, Integer accountFlag, long nightDistributionFee) {
// 获取优惠信息 // 获取优惠信息
CalculationDiscountResult calculationDiscountResult = null; CalculationDiscountResult calculationDiscountResult = null;
//外卖场景下 查询门店配送信息 //外卖场景下 查询门店配送信息
if (BusinessTypeEnum.SAAS_DELIVERY.getCode().equals(menuType)) { if (BusinessTypeEnum.SAAS_DELIVERY.getCode().equals(menuType)) {
calculationDiscountResult = this.getActivityCalculationDiscountResponse(partnerId, storeId, userId, appId, orderType, isMember, cartGoodsList, coupons, sendGoodsList, BusinessTypeEnum.getByType(menuType).getCode(), deliveryAmount,bizType, accountFlag); calculationDiscountResult = this.getActivityCalculationDiscountResponse(partnerId, storeId, userId, appId, orderType, isMember, cartGoodsList, coupons, sendGoodsList, BusinessTypeEnum.getByType(menuType).getCode(), deliveryAmount,bizType, accountFlag, nightDistributionFee);
} else { } else {
calculationDiscountResult = this.getActivityCalculationDiscountResponse(partnerId, storeId, userId, appId, orderType, isMember, cartGoodsList, coupons, sendGoodsList, BusinessTypeEnum.getByType(menuType).getCode(), null,bizType, accountFlag); calculationDiscountResult = this.getActivityCalculationDiscountResponse(partnerId, storeId, userId, appId, orderType, isMember, cartGoodsList, coupons, sendGoodsList, BusinessTypeEnum.getByType(menuType).getCode(), null,bizType, accountFlag, 0L);
} }
return calculationDiscountResult; return calculationDiscountResult;
...@@ -3129,7 +3159,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -3129,7 +3159,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
, coupons //券 , coupons //券
, null //加价购商品 , null //加价购商品
, 0L , 0L
, null,bizType, accountFlag,new DiscountSharingDto()); , null,bizType, accountFlag,new DiscountSharingDto(), 0L);
premiumExchangeResponseVo = activityAdapter.convert2PremiumExchangeSharing(discountResult); premiumExchangeResponseVo = activityAdapter.convert2PremiumExchangeSharing(discountResult);
} else { } else {
...@@ -3154,7 +3184,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -3154,7 +3184,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
} }
// 获取优惠信息 // 获取优惠信息
CalculationDiscountResult calculationDiscountResult = getCalculationDiscountResult(menuType, partnerId, storeId, userId, appId, assortmentCustomerInfoVo.getWxAppId(), orderType, assortmentCustomerInfoVo.isMemberPaid(), cartGoodsList, coupons, null, null, 0L,bizType CalculationDiscountResult calculationDiscountResult = getCalculationDiscountResult(menuType, partnerId, storeId, userId, appId, assortmentCustomerInfoVo.getWxAppId(), orderType, assortmentCustomerInfoVo.isMemberPaid(), cartGoodsList, coupons, null, null, 0L,bizType
, accountFlag); , accountFlag, 0L);
premiumExchangeResponseVo = activityAdapter.convert2PremiumExchange(calculationDiscountResult); premiumExchangeResponseVo = activityAdapter.convert2PremiumExchange(calculationDiscountResult);
} }
...@@ -3299,7 +3329,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -3299,7 +3329,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
CouponAvailableCartInfo couponAvailableCartInfo; CouponAvailableCartInfo couponAvailableCartInfo;
List<String> orgCodes = commonService.getOrgIdsForCoupon(partnerId, storeId); List<String> orgCodes = commonService.getOrgIdsForCoupon(partnerId, storeId);
Long deliveryAmount = calculateDeliveryAmount(requestVo.getReceiveId(), partnerId, storeId, assortmentCustomerInfoVo.getWxAppId(), new ShoppingCartGoodsResponseVo(), requestVo.getOrderType()); ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo = new ShoppingCartGoodsResponseVo();
Long deliveryAmount = calculateDeliveryAmount(requestVo.getReceiveId(), partnerId, storeId, assortmentCustomerInfoVo.getWxAppId(), shoppingCartGoodsResponseVo, requestVo.getOrderType());
// 获取购物车商品 // 获取购物车商品
List<CartGoods> cartGoodsList = assortmentSdkService.getShoppingCartForCoupon(partnerId, requestVo.getStoreId(), userId, "", shoppingCartBaseService,bizType); List<CartGoods> cartGoodsList = assortmentSdkService.getShoppingCartForCoupon(partnerId, requestVo.getStoreId(), userId, "", shoppingCartBaseService,bizType);
if (grayPush(partnerId, storeId, "2")) { if (grayPush(partnerId, storeId, "2")) {
...@@ -3317,7 +3348,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -3317,7 +3348,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
, new ArrayList<>() //券 , new ArrayList<>() //券
, null //加价购商品 , null //加价购商品
, deliveryAmount , deliveryAmount
, null,bizType, accountFlag,sharingDto); , null,bizType, accountFlag,sharingDto, this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList()));
if(discountResult!= null && Objects.equals(discountResult.getV3Promotion(),true)){//v3 if(discountResult!= null && Objects.equals(discountResult.getV3Promotion(),true)){//v3
couponAvailableCartInfo = activityAdapter.convert2CouponAvailableCartInfoSharingV3(partnerId, storeId, discountResult, orgCodes); couponAvailableCartInfo = activityAdapter.convert2CouponAvailableCartInfoSharingV3(partnerId, storeId, discountResult, orgCodes);
...@@ -3326,8 +3357,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -3326,8 +3357,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
} }
} else { } else {
// 获取优惠信息 // 获取优惠信息
CalculationDiscountResult calculationDiscountResult = getCalculationDiscountResult(menuType, partnerId, storeId, userId, appId, assortmentCustomerInfoVo.getWxAppId(), orderType, assortmentCustomerInfoVo.isMemberPaid(), cartGoodsList, new ArrayList<>(), null, null, deliveryAmount,bizType, accountFlag); CalculationDiscountResult calculationDiscountResult = getCalculationDiscountResult(menuType, partnerId, storeId, userId, appId, assortmentCustomerInfoVo.getWxAppId(), orderType, assortmentCustomerInfoVo.isMemberPaid(), cartGoodsList, new ArrayList<>(), null, null, deliveryAmount,bizType, accountFlag, this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList()));
//v1
couponAvailableCartInfo = activityAdapter.convert2CouponAvailableCartInfo(partnerId, storeId, calculationDiscountResult, orgCodes); couponAvailableCartInfo = activityAdapter.convert2CouponAvailableCartInfo(partnerId, storeId, calculationDiscountResult, orgCodes);
} }
return ResponseUtil.success(couponAvailableCartInfo); return ResponseUtil.success(couponAvailableCartInfo);
......
...@@ -68,7 +68,7 @@ public class CalculationSharingCartService { ...@@ -68,7 +68,7 @@ public class CalculationSharingCartService {
, String partnerId , String partnerId
, Integer flag , Integer flag
, String userId , String userId
, String storeId) { , String storeId, long nightDistributionFee) {
/** /**
* 用促销价格初始化购物车行记录成交价 * 用促销价格初始化购物车行记录成交价
...@@ -106,7 +106,7 @@ public class CalculationSharingCartService { ...@@ -106,7 +106,7 @@ public class CalculationSharingCartService {
*/ */
scoreSharingService.scoreResponse(discountResult, shoppingCartGoodsResponseVo, userLoginInfoDto, shoppingCartInfoRequestVo); scoreSharingService.scoreResponse(discountResult, shoppingCartGoodsResponseVo, userLoginInfoDto, shoppingCartInfoRequestVo);
if(BusinessTypeEnum.SAAS_DELIVERY.getCode().equals(menuType)){ if(BusinessTypeEnum.SAAS_DELIVERY.getCode().equals(menuType)){
deliverySharingService.deliveryResponse(discountResult, activityQueryDto, shoppingCartGoodsResponseVo, deliveryAmount); deliverySharingService.deliveryResponse(discountResult, activityQueryDto, shoppingCartGoodsResponseVo, deliveryAmount, nightDistributionFee);
} }
......
...@@ -3,6 +3,7 @@ package cn.freemud.service.impl.calculate; ...@@ -3,6 +3,7 @@ package cn.freemud.service.impl.calculate;
import cn.freemud.constant.ResponseCodeConstant; import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.dto.CheckSpqInfoRequestDto; import cn.freemud.entities.dto.CheckSpqInfoRequestDto;
import cn.freemud.entities.dto.CheckSpqInfoResponseDto; import cn.freemud.entities.dto.CheckSpqInfoResponseDto;
import cn.freemud.entities.dto.activity.DiscountSharingDto;
import cn.freemud.entities.dto.calculate.*; import cn.freemud.entities.dto.calculate.*;
import cn.freemud.entities.dto.shoppingCart.SendPoint; import cn.freemud.entities.dto.shoppingCart.SendPoint;
import cn.freemud.entities.vo.CartGoods; import cn.freemud.entities.vo.CartGoods;
...@@ -20,7 +21,6 @@ import cn.freemud.service.active.ActiveService; ...@@ -20,7 +21,6 @@ import cn.freemud.service.active.ActiveService;
import cn.freemud.service.impl.AssortmentSdkService; import cn.freemud.service.impl.AssortmentSdkService;
import cn.freemud.service.thirdparty.ActivityClient; import cn.freemud.service.thirdparty.ActivityClient;
import cn.freemud.utils.PropertyConvertUtil; import cn.freemud.utils.PropertyConvertUtil;
import cn.freemud.entities.dto.activity.DiscountSharingDto;
import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant; 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.enums.BusinessTypeEnum;
import com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl; import com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl;
...@@ -69,14 +69,36 @@ public class CalculationSharingDiscountService { ...@@ -69,14 +69,36 @@ public class CalculationSharingDiscountService {
} }
// 新算价
/**
* 新算价
* @param menuType
* @param partnerId
* @param storeId
* @param userId
* @param appId
* @param orderType
* @param isMember
* @param cartGoodsList
* @param coupons
* @param sendGoodsList
* @param deliveryAmount
* @param shoppingCartInfoRequestVo
* @param bizType
* @param accountFlag
* @param sharingDto
* @param nightDistributionFee 是否有夜间配送费设置 不参与的需求 可以传递 0L
* @return
*/
public CalculationDiscountResult getCalculationSharingDiscountResult(String menuType public CalculationDiscountResult getCalculationSharingDiscountResult(String menuType
, String partnerId, String storeId, String userId, String appId, Integer orderType, boolean isMember , String partnerId, String storeId, String userId, String appId, Integer orderType, boolean isMember
, List<CartGoods> cartGoodsList, List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons , List<CartGoods> cartGoodsList, List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons
, List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList, Long deliveryAmount , List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList, Long deliveryAmount
, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo, Integer bizType, Integer accountFlag, DiscountSharingDto sharingDto) { , ShoppingCartInfoRequestVo shoppingCartInfoRequestVo, Integer bizType, Integer accountFlag, DiscountSharingDto sharingDto, long nightDistributionFee) {
deliveryAmount = Objects.isNull(deliveryAmount) ? 0L : deliveryAmount;
ActivityCalculationDiscountRequestDto calculationSharingDiscountRequestDto = this.commonSharingDto(partnerId, storeId, userId, appId, orderType); ActivityCalculationDiscountRequestDto calculationSharingDiscountRequestDto = this.commonSharingDto(partnerId, storeId, userId, appId, orderType);
// 是否有夜间配送费 设置
calculationSharingDiscountRequestDto.setNightDistributionFee(nightDistributionFee);
// 校验后有效的商品券map // 校验后有效的商品券map
HashMap<String, CheckSpqInfoResponseDto> validCouponMap = new HashMap<>(16); HashMap<String, CheckSpqInfoResponseDto> validCouponMap = new HashMap<>(16);
...@@ -229,8 +251,8 @@ public class CalculationSharingDiscountService { ...@@ -229,8 +251,8 @@ public class CalculationSharingDiscountService {
result.setValidCouponMap(validCouponMap); result.setValidCouponMap(validCouponMap);
result.setSpqIdToCartUuid(spqIdToCartUuid); result.setSpqIdToCartUuid(spqIdToCartUuid);
// fisherman 这里传递过来的 配送费 是否要计算一下 配送券的逻辑 // fisherman 这里传递过来的 配送费 是否要计算一下 配送券的逻辑
result.setDeliveryAmount(deliveryAmount); result.setDeliveryAmount(deliveryAmount + nightDistributionFee);
result.setDistributionFee(result.getDistributionFee()); result.setDistributionFee(result.getDistributionFee() + result.getNightDistributionFee());
return result; return result;
} }
......
...@@ -77,7 +77,7 @@ public class CalculationSharingEquallyService { ...@@ -77,7 +77,7 @@ public class CalculationSharingEquallyService {
, String menuType , String menuType
, Long deliveryAmount , Long deliveryAmount
, ShoppingCartGoodsDto shoppingCartGoodsDto , ShoppingCartGoodsDto shoppingCartGoodsDto
, CreateOrderVo.PremiumExchangeActivity premiumExchangeActivity) { , CreateOrderVo.PremiumExchangeActivity premiumExchangeActivity, long nightDistributionFee) {
calculationCommonService.initShoppingCart(discountResult, calculationCommonService.initShoppingCart(discountResult,
cartGoodsList, cartGoodsList,
...@@ -148,7 +148,7 @@ public class CalculationSharingEquallyService { ...@@ -148,7 +148,7 @@ public class CalculationSharingEquallyService {
calculationCommonService.getNeedCardAmount(shoppingCartInfoRequestVo, shoppingCartGoodsDto); calculationCommonService.getNeedCardAmount(shoppingCartInfoRequestVo, shoppingCartGoodsDto);
if(BusinessTypeEnum.SAAS_DELIVERY.getCode().equals(menuType)){ if(BusinessTypeEnum.SAAS_DELIVERY.getCode().equals(menuType)){
deliverySharingService.deliveryResponse(discountResult, activityQueryDto, shoppingCartGoodsResponseVo, deliveryAmount); deliverySharingService.deliveryResponse(discountResult, activityQueryDto, shoppingCartGoodsResponseVo, deliveryAmount, nightDistributionFee);
} }
calculationCommonService.setAddAndUpdateResponse(cartGoodsList, shoppingCartGoodsResponseVo, shoppingCartInfoRequestVo, ShoppingCartConstant.QUERY_INFO); calculationCommonService.setAddAndUpdateResponse(cartGoodsList, shoppingCartGoodsResponseVo, shoppingCartInfoRequestVo, ShoppingCartConstant.QUERY_INFO);
......
...@@ -47,7 +47,7 @@ public class DeliverySharingService { ...@@ -47,7 +47,7 @@ public class DeliverySharingService {
public void deliveryResponse(CalculationDiscountResult discountResult public void deliveryResponse(CalculationDiscountResult discountResult
, ActivityQueryDto activityQueryDto , ActivityQueryDto activityQueryDto
, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo , ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo
, Long deliveryAmount) { , Long deliveryAmount, long nightDistributionFee) {
DecimalFormat df = new DecimalFormat("###.##"); DecimalFormat df = new DecimalFormat("###.##");
List<ActivityTypeEnum> activityTypeEnums = new LinkedList<>(); List<ActivityTypeEnum> activityTypeEnums = new LinkedList<>();
...@@ -90,6 +90,7 @@ public class DeliverySharingService { ...@@ -90,6 +90,7 @@ public class DeliverySharingService {
shoppingCartGoodsResponseVo.setIsDiscountDelivery(true); shoppingCartGoodsResponseVo.setIsDiscountDelivery(true);
} }
else { else {
Long deliverAmountNew = deliveryAmount + nightDistributionFee;
if (activityResponse!=null) { if (activityResponse!=null) {
// 这里表示有活动, 但是没有参加上 // 这里表示有活动, 但是没有参加上
if(beanDto.getBenefitType() == 1) { if(beanDto.getBenefitType() == 1) {
...@@ -101,8 +102,8 @@ public class DeliverySharingService { ...@@ -101,8 +102,8 @@ public class DeliverySharingService {
shoppingCartGoodsResponseVo.setDeliveryDiscountDesc(String.format(desc, df.format(beanDto.getThresholdAmount().doubleValue() /100 ),df.format(beanDto.getDiscountAmount().doubleValue() / 100))); shoppingCartGoodsResponseVo.setDeliveryDiscountDesc(String.format(desc, df.format(beanDto.getThresholdAmount().doubleValue() /100 ),df.format(beanDto.getDiscountAmount().doubleValue() / 100)));
} }
shoppingCartGoodsResponseVo.setDeliveryAmount(deliveryAmount); shoppingCartGoodsResponseVo.setDeliveryAmount(deliverAmountNew);
shoppingCartGoodsResponseVo.setDiscountDeliveryAmount(deliveryAmount); shoppingCartGoodsResponseVo.setDiscountDeliveryAmount(deliverAmountNew);
shoppingCartGoodsResponseVo.setIsDiscountDelivery(false); shoppingCartGoodsResponseVo.setIsDiscountDelivery(false);
// fisherman 有活动 使用了优惠券 // fisherman 有活动 使用了优惠券
boolean isType34 = verifyActivity(discountResult); boolean isType34 = verifyActivity(discountResult);
...@@ -115,9 +116,9 @@ public class DeliverySharingService { ...@@ -115,9 +116,9 @@ public class DeliverySharingService {
} else { } else {
String desc = DELIVERY_DISCOUNT_DESC3; String desc = DELIVERY_DISCOUNT_DESC3;
shoppingCartGoodsResponseVo.setDeliveryDiscountDesc(String.format(desc, df.format(deliveryAmount.doubleValue() / 100))); shoppingCartGoodsResponseVo.setDeliveryDiscountDesc(String.format(desc, df.format(deliverAmountNew.doubleValue() / 100)));
shoppingCartGoodsResponseVo.setDeliveryAmount(deliveryAmount); shoppingCartGoodsResponseVo.setDeliveryAmount(deliverAmountNew);
shoppingCartGoodsResponseVo.setDiscountDeliveryAmount(deliveryAmount); shoppingCartGoodsResponseVo.setDiscountDeliveryAmount(deliverAmountNew);
shoppingCartGoodsResponseVo.setIsDiscountDelivery(false); shoppingCartGoodsResponseVo.setIsDiscountDelivery(false);
// fisherman 确认是否 使用了优惠券 // fisherman 确认是否 使用了优惠券
boolean isType34 = verifyActivity(discountResult); boolean isType34 = verifyActivity(discountResult);
......
...@@ -6,6 +6,7 @@ import java.time.format.DateTimeParseException; ...@@ -6,6 +6,7 @@ import java.time.format.DateTimeParseException;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.time.temporal.Temporal; import java.time.temporal.Temporal;
import java.time.temporal.TemporalAdjusters; import java.time.temporal.TemporalAdjusters;
import java.util.Calendar;
import java.util.Date; import java.util.Date;
/** /**
...@@ -281,4 +282,32 @@ public class DateTimeUtil { ...@@ -281,4 +282,32 @@ public class DateTimeUtil {
return getCurrentLocalDate().plus(2, ChronoUnit.DECADES).format(DATE_FORMATTER); return getCurrentLocalDate().plus(2, ChronoUnit.DECADES).format(DATE_FORMATTER);
} }
/**
* 是否在这个时间范围内
* @param nowTime
* @param startTime
* @param endTime
* @return
*/
public static boolean isEffectiveDate(Date nowTime, Date startTime, Date endTime) {
if (nowTime.getTime() == startTime.getTime()
|| nowTime.getTime() == endTime.getTime()) {
return true;
}
Calendar date = Calendar.getInstance();
date.setTime(nowTime);
Calendar begin = Calendar.getInstance();
begin.setTime(startTime);
Calendar end = Calendar.getInstance();
end.setTime(endTime);
if (date.after(begin) && date.before(end)) {
return true;
} else {
return false;
}
}
} }
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