|
@@ -249,7 +249,7 @@ public class FrontOrderServiceImpl implements FrontOrderService {
|
|
|
|
|
|
preOrderInfoVo.setSvipDiscountPrice(preOrderInfoVo.getProTotalFee().subtract(svipTotalPrice));
|
|
preOrderInfoVo.setSvipDiscountPrice(preOrderInfoVo.getProTotalFee().subtract(svipTotalPrice));
|
|
}
|
|
}
|
|
- preOrderInfoVo.setPayFee(preOrderInfoVo.getProTotalFee().add(preOrderInfoVo.getFreightFee()).add(preOrderInfoVo.getPickingFee()).subtract(preOrderInfoVo.getSvipDiscountPrice()));
|
|
|
|
|
|
+ preOrderInfoVo.setPayFee(preOrderInfoVo.getProTotalFee().add(preOrderInfoVo.getFreightFee()).add(preOrderInfoVo.getPickingFee()).subtract(preOrderInfoVo.getSvipDiscountPrice()).subtract(preOrderInfoVo.getFirstDeduc()));
|
|
preOrderInfoVo.setUserIntegral(user.getIntegral());
|
|
preOrderInfoVo.setUserIntegral(user.getIntegral());
|
|
preOrderInfoVo.setUserBalance(user.getNowMoney());
|
|
preOrderInfoVo.setUserBalance(user.getNowMoney());
|
|
preOrderInfoVo.setIntegralDeductionSwitch(false);
|
|
preOrderInfoVo.setIntegralDeductionSwitch(false);
|
|
@@ -266,7 +266,7 @@ public class FrontOrderServiceImpl implements FrontOrderService {
|
|
preOrderSetCouponPrice(preOrderInfoVo, orderInfoList, user);
|
|
preOrderSetCouponPrice(preOrderInfoVo, orderInfoList, user);
|
|
}
|
|
}
|
|
BigDecimal proPayFee = preOrderInfoVo.getProTotalFee().subtract(preOrderInfoVo.getCouponFee()).subtract(preOrderInfoVo.getSvipDiscountPrice());
|
|
BigDecimal proPayFee = preOrderInfoVo.getProTotalFee().subtract(preOrderInfoVo.getCouponFee()).subtract(preOrderInfoVo.getSvipDiscountPrice());
|
|
- preOrderInfoVo.setPayFee(proPayFee.add(preOrderInfoVo.getFreightFee()).add(preOrderInfoVo.getPickingFee()));
|
|
|
|
|
|
+ preOrderInfoVo.setPayFee(proPayFee.add(preOrderInfoVo.getFreightFee()).add(preOrderInfoVo.getPickingFee()).subtract(preOrderInfoVo.getFirstDeduc()));
|
|
String integralDeductionSwitch = systemConfigService.getValueByKey(SysConfigConstants.CONFIG_KEY_INTEGRAL_DEDUCTION_SWITCH);
|
|
String integralDeductionSwitch = systemConfigService.getValueByKey(SysConfigConstants.CONFIG_KEY_INTEGRAL_DEDUCTION_SWITCH);
|
|
String integralDeductionStartMoney = systemConfigService.getValueByKey(SysConfigConstants.CONFIG_KEY_INTEGRAL_DEDUCTION_START_MONEY);
|
|
String integralDeductionStartMoney = systemConfigService.getValueByKey(SysConfigConstants.CONFIG_KEY_INTEGRAL_DEDUCTION_START_MONEY);
|
|
if ("true".equals(integralDeductionSwitch) && proPayFee.compareTo(new BigDecimal(integralDeductionStartMoney)) >= 0) {
|
|
if ("true".equals(integralDeductionSwitch) && proPayFee.compareTo(new BigDecimal(integralDeductionStartMoney)) >= 0) {
|
|
@@ -1235,11 +1235,12 @@ public class FrontOrderServiceImpl implements FrontOrderService {
|
|
order.setTotalPostage(orderInfoVo.getFreightFee());
|
|
order.setTotalPostage(orderInfoVo.getFreightFee());
|
|
order.setPackingFee(orderInfoVo.getPickingFee());
|
|
order.setPackingFee(orderInfoVo.getPickingFee());
|
|
order.setSvipDiscountPrice(orderInfoVo.getSvipDiscountPrice());
|
|
order.setSvipDiscountPrice(orderInfoVo.getSvipDiscountPrice());
|
|
|
|
+ order.setFirstDeducPrice(orderInfoVo.getFirstDeduc());
|
|
order.setTotalPrice(order.getProTotalPrice().add(order.getTotalPostage()).add(order.getPackingFee()));
|
|
order.setTotalPrice(order.getProTotalPrice().add(order.getTotalPostage()).add(order.getPackingFee()));
|
|
order.setCouponPrice(orderInfoVo.getCouponFee());
|
|
order.setCouponPrice(orderInfoVo.getCouponFee());
|
|
order.setUseIntegral(merchantOrderVoList.stream().mapToInt(PreMerchantOrderVo::getUseIntegral).sum());
|
|
order.setUseIntegral(merchantOrderVoList.stream().mapToInt(PreMerchantOrderVo::getUseIntegral).sum());
|
|
order.setIntegralPrice(merchantOrderVoList.stream().map(PreMerchantOrderVo::getIntegralPrice).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
order.setIntegralPrice(merchantOrderVoList.stream().map(PreMerchantOrderVo::getIntegralPrice).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
- order.setPayPrice(order.getTotalPrice().subtract(order.getSvipDiscountPrice()).subtract(order.getCouponPrice()).subtract(order.getIntegralPrice()));
|
|
|
|
|
|
+ order.setPayPrice(order.getTotalPrice().subtract(order.getSvipDiscountPrice()).subtract(order.getCouponPrice()).subtract(order.getIntegralPrice()).subtract(orderInfoVo.getFirstDeduc()));
|
|
order.setPayPostage(order.getTotalPostage());
|
|
order.setPayPostage(order.getTotalPostage());
|
|
order.setPaid(false);
|
|
order.setPaid(false);
|
|
order.setCancelStatus(OrderConstants.ORDER_CANCEL_STATUS_NORMAL);
|
|
order.setCancelStatus(OrderConstants.ORDER_CANCEL_STATUS_NORMAL);
|
|
@@ -1297,6 +1298,7 @@ public class FrontOrderServiceImpl implements FrontOrderService {
|
|
merchantOrder.setTotalNum(merchantOrderVo.getProTotalNum());
|
|
merchantOrder.setTotalNum(merchantOrderVo.getProTotalNum());
|
|
merchantOrder.setProTotalPrice(merchantOrderVo.getProTotalFee());
|
|
merchantOrder.setProTotalPrice(merchantOrderVo.getProTotalFee());
|
|
merchantOrder.setTotalPostage(merchantOrderVo.getFreightFee());
|
|
merchantOrder.setTotalPostage(merchantOrderVo.getFreightFee());
|
|
|
|
+ merchantOrder.setFirstDeducPrice(merchantOrderVo.getFirstDeduc());
|
|
merchantOrder.setTotalPrice(merchantOrder.getProTotalPrice().add(merchantOrder.getTotalPostage()).add(merchantOrder.getTotalPackingFee()));
|
|
merchantOrder.setTotalPrice(merchantOrder.getProTotalPrice().add(merchantOrder.getTotalPostage()).add(merchantOrder.getTotalPackingFee()));
|
|
merchantOrder.setPayPostage(merchantOrder.getTotalPostage());
|
|
merchantOrder.setPayPostage(merchantOrder.getTotalPostage());
|
|
merchantOrder.setPayPackingFee(merchantOrder.getTotalPackingFee());
|
|
merchantOrder.setPayPackingFee(merchantOrder.getTotalPackingFee());
|
|
@@ -1313,7 +1315,7 @@ public class FrontOrderServiceImpl implements FrontOrderService {
|
|
BigDecimal platCouponPrice = detailVoList.stream().map(PreOrderInfoDetailVo::getPlatCouponPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
BigDecimal platCouponPrice = detailVoList.stream().map(PreOrderInfoDetailVo::getPlatCouponPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
merchantOrder.setPlatCouponPrice(platCouponPrice);
|
|
merchantOrder.setPlatCouponPrice(platCouponPrice);
|
|
merchantOrder.setCouponPrice(merchantOrder.getMerCouponPrice().add(merchantOrder.getPlatCouponPrice()));
|
|
merchantOrder.setCouponPrice(merchantOrder.getMerCouponPrice().add(merchantOrder.getPlatCouponPrice()));
|
|
- merchantOrder.setPayPrice(merchantOrder.getTotalPrice().subtract(merchantOrder.getSvipDiscountPrice()).subtract(merchantOrder.getCouponPrice()).subtract(merchantOrder.getIntegralPrice()));
|
|
|
|
|
|
+ merchantOrder.setPayPrice(merchantOrder.getTotalPrice().subtract(merchantOrder.getSvipDiscountPrice()).subtract(merchantOrder.getCouponPrice()).subtract(merchantOrder.getIntegralPrice()).subtract(merchantOrderVo.getFirstDeduc()));
|
|
merchantOrder.setGainIntegral(0);
|
|
merchantOrder.setGainIntegral(0);
|
|
merchantOrder.setType(order.getType());
|
|
merchantOrder.setType(order.getType());
|
|
merchantOrder.setSecondType(order.getSecondType());
|
|
merchantOrder.setSecondType(order.getSecondType());
|
|
@@ -2563,6 +2565,7 @@ public class FrontOrderServiceImpl implements FrontOrderService {
|
|
public void getFreightFee_V_1_8(PreOrderInfoVo orderInfoVo, UserAddress userAddress, Boolean userIsPaidMember) {
|
|
public void getFreightFee_V_1_8(PreOrderInfoVo orderInfoVo, UserAddress userAddress, Boolean userIsPaidMember) {
|
|
BigDecimal freightFee = BigDecimal.ZERO;
|
|
BigDecimal freightFee = BigDecimal.ZERO;
|
|
|
|
|
|
|
|
+
|
|
List<PreMerchantOrderVo> merchantOrderVoList = orderInfoVo.getMerchantOrderVoList();
|
|
List<PreMerchantOrderVo> merchantOrderVoList = orderInfoVo.getMerchantOrderVoList();
|
|
for (PreMerchantOrderVo merchantOrderVo : merchantOrderVoList) {
|
|
for (PreMerchantOrderVo merchantOrderVo : merchantOrderVoList) {
|
|
if (orderInfoVo.getSecondType().equals(OrderConstants.ORDER_SECOND_TYPE_CLOUD)
|
|
if (orderInfoVo.getSecondType().equals(OrderConstants.ORDER_SECOND_TYPE_CLOUD)
|
|
@@ -2574,7 +2577,7 @@ public class FrontOrderServiceImpl implements FrontOrderService {
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
BigDecimal storePostage = BigDecimal.ZERO;
|
|
BigDecimal storePostage = BigDecimal.ZERO;
|
|
- if (merchantOrderVo.getShippingType().equals(OrderConstants.ORDER_SHIPPING_TYPE_PICK_UP)) {
|
|
|
|
|
|
+ if (merchantOrderVo.getShippingType().equals(OrderConstants.ORDER_SHIPPING_TYPE_PICK_UP)||merchantOrderVo.getIsFreeDeliveFee().equals(1)) {
|
|
merchantOrderVo.setFreightFee(storePostage);
|
|
merchantOrderVo.setFreightFee(storePostage);
|
|
merchantOrderVo.getOrderInfoList().forEach(info -> info.setFreightFee(BigDecimal.ZERO));
|
|
merchantOrderVo.getOrderInfoList().forEach(info -> info.setFreightFee(BigDecimal.ZERO));
|
|
continue;
|
|
continue;
|
|
@@ -2846,6 +2849,12 @@ public class FrontOrderServiceImpl implements FrontOrderService {
|
|
merchantOrderVoList.add(preMerchantOrderVoP);
|
|
merchantOrderVoList.add(preMerchantOrderVoP);
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
|
|
+ BigDecimal firstDeduc = merchantOrderVoList.stream()
|
|
|
|
+ .map(e -> {
|
|
|
|
+ return ObjectUtil.isNull(e.getFirstDeduc())?BigDecimal.ZERO:e.getFirstDeduc();
|
|
|
|
+ })
|
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
+ preOrderInfoVo.setFirstDeduc(firstDeduc);
|
|
preOrderInfoVo.setMerchantOrderVoList(merchantOrderVoList);
|
|
preOrderInfoVo.setMerchantOrderVoList(merchantOrderVoList);
|
|
return preOrderInfoVo;
|
|
return preOrderInfoVo;
|
|
}
|
|
}
|
|
@@ -2923,12 +2932,14 @@ public class FrontOrderServiceImpl implements FrontOrderService {
|
|
merchantOrderVo.setTakeTheirSwitch(merchant.getIsTakeTheir());
|
|
merchantOrderVo.setTakeTheirSwitch(merchant.getIsTakeTheir());
|
|
merchantOrderVo.setIsSelf(merchant.getIsSelf());
|
|
merchantOrderVo.setIsSelf(merchant.getIsSelf());
|
|
}
|
|
}
|
|
|
|
+ merchantOrderVo.setIsFreeDeliveFee(merchant.getIsFreeDeliveFee());
|
|
merchantOrderVo.setType(OrderConstants.ORDER_TYPE_BASE);
|
|
merchantOrderVo.setType(OrderConstants.ORDER_TYPE_BASE);
|
|
merchantOrderVo.setSecondType(product.getType());
|
|
merchantOrderVo.setSecondType(product.getType());
|
|
merchantOrderVo.setFreightFee(BigDecimal.ZERO);
|
|
merchantOrderVo.setFreightFee(BigDecimal.ZERO);
|
|
merchantOrderVo.setCouponFee(BigDecimal.ZERO);
|
|
merchantOrderVo.setCouponFee(BigDecimal.ZERO);
|
|
merchantOrderVo.setUserCouponId(0);
|
|
merchantOrderVo.setUserCouponId(0);
|
|
merchantOrderVo.setDeliveryMethodMer(product.getDeliveryMethod());
|
|
merchantOrderVo.setDeliveryMethodMer(product.getDeliveryMethod());
|
|
|
|
+ merchantOrderVo.setFirstDeduc(getFirstReduc(merchant.getId(), userService.getInfo().getId()));
|
|
PreOrderInfoDetailVo detailVo = new PreOrderInfoDetailVo();
|
|
PreOrderInfoDetailVo detailVo = new PreOrderInfoDetailVo();
|
|
detailVo.setProductId(product.getId());
|
|
detailVo.setProductId(product.getId());
|
|
detailVo.setProductName(product.getName());
|
|
detailVo.setProductName(product.getName());
|
|
@@ -3430,7 +3441,7 @@ public class FrontOrderServiceImpl implements FrontOrderService {
|
|
merOrderResponse.setSvipDiscountPrice(vo.getSvipDiscountPrice());
|
|
merOrderResponse.setSvipDiscountPrice(vo.getSvipDiscountPrice());
|
|
// 查询适用的用户优惠券
|
|
// 查询适用的用户优惠券
|
|
List<Integer> merProIdList = vo.getOrderInfoList().stream().map(PreOrderInfoDetailVo::getProductId).distinct().collect(Collectors.toList());
|
|
List<Integer> merProIdList = vo.getOrderInfoList().stream().map(PreOrderInfoDetailVo::getProductId).distinct().collect(Collectors.toList());
|
|
- BigDecimal merPrice = vo.getProTotalFee().subtract(vo.getSvipDiscountPrice());
|
|
|
|
|
|
+ BigDecimal merPrice = vo.getProTotalFee().subtract(vo.getSvipDiscountPrice()).subtract(vo.getFirstDeduc());
|
|
BigDecimal merRemainingAmount = merPrice.subtract(orderInfoVo.getPlatCouponFee());
|
|
BigDecimal merRemainingAmount = merPrice.subtract(orderInfoVo.getPlatCouponFee());
|
|
List<CouponUser> merCouponUserList = couponUserService.findManyByUidAndMerIdAndMoneyAndProList(userId, vo.getMerId(), merProIdList, merPrice);
|
|
List<CouponUser> merCouponUserList = couponUserService.findManyByUidAndMerIdAndMoneyAndProList(userId, vo.getMerId(), merProIdList, merPrice);
|
|
for (int i = 0; i < merCouponUserList.size(); ) {
|
|
for (int i = 0; i < merCouponUserList.size(); ) {
|
|
@@ -4084,7 +4095,7 @@ public class FrontOrderServiceImpl implements FrontOrderService {
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- orderInfoVo.setPickingFee(payPackingFee);
|
|
|
|
|
|
+ orderInfoVo.setPickingFee(payPackingFee.setScale(2,BigDecimal.ROUND_HALF_UP));
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -4094,10 +4105,14 @@ public class FrontOrderServiceImpl implements FrontOrderService {
|
|
String platDeliveryFee=systemConfigService.getValueByKey(SysConfigConstants.CONFIG_RIDER_DELIVERY_FEE);
|
|
String platDeliveryFee=systemConfigService.getValueByKey(SysConfigConstants.CONFIG_RIDER_DELIVERY_FEE);
|
|
return StrUtil.isEmpty(platDeliveryFee)?BigDecimal.ZERO:new BigDecimal(platDeliveryFee);
|
|
return StrUtil.isEmpty(platDeliveryFee)?BigDecimal.ZERO:new BigDecimal(platDeliveryFee);
|
|
}
|
|
}
|
|
- /**
|
|
|
|
- * 获取优惠金额
|
|
|
|
- */
|
|
|
|
- private void getCouponFee(PreOrderInfoVo orderInfoVo){
|
|
|
|
|
|
|
|
|
|
+ private BigDecimal getFirstReduc(Integer merId,Integer uid){
|
|
|
|
+ Integer buycount=orderService.countBuy(merId,uid);
|
|
|
|
+ BigDecimal firstReduc=BigDecimal.ZERO;
|
|
|
|
+ if(buycount==0){
|
|
|
|
+ Merchant merchant=merchantService.getById(merId);
|
|
|
|
+ firstReduc= ObjectUtil.isNull(merchant.getFirstReduc())?BigDecimal.ZERO:merchant.getFirstReduc();
|
|
|
|
+ }
|
|
|
|
+ return firstReduc;
|
|
}
|
|
}
|
|
}
|
|
}
|