Commit 5afbf75b by 徐康

Merge branch 'feature/20210127_xukang_麦咖啡p5v4'

parents df1f42b6 f87042e4
......@@ -1341,6 +1341,9 @@ public class OrderSdkAdapter {
case "PRODUCT_COUPON":
type = 118;
break;
case "SEED_PRODUCT_COUPON":
type = 37;
break;
case "DISCOUNT_COUPON":
type = 208;
break;
......@@ -1963,6 +1966,9 @@ public class OrderSdkAdapter {
case 118:
newOrderAccountType = OldOrderAccountType.PRODUCT_COUPON.getCode();
break;
case 37:
newOrderAccountType = OldOrderAccountType.SEED_PRODUCT_COUPON.getCode();
break;
case 208:
newOrderAccountType = OldOrderAccountType.DISCOUNT_COUPON.getCode();
break;
......@@ -2869,6 +2875,9 @@ public class OrderSdkAdapter {
if (StringUtils.isNotBlank(product.getCardCode())){
extInfo.setCardCode(product.getCardCode());
}
if (StringUtils.isNotBlank(product.getSplitIndex())){
extInfo.setSplitIndex(product.getSplitIndex());
}
extInfo.setStapleFood(product.getStapleFood());
extInfo.setOriginalGoodsUid(product.getOriginalGoodsUid());
......
......@@ -22,6 +22,7 @@ public enum OldOrderAccountType {
PACK_AMOUNT(3, "包装费", "PACK_AMOUNT"),
COUPON(5, "代金券", "COUPON"),
PRODUCT_COUPON(6, "商品券", "PRODUCT_COUPON"),
SEED_PRODUCT_COUPON(37, "种子券", "SEED_PRODUCT_COUPON"),
DISCOUNT_COUPON(7, "折扣券", "DISCOUNT_COUPON"),
DRIVER_FEE(7, "骑手小费", "DRIVER_FEE"),
WITH_ORDER_BUY_COUPON_FEE(10, "随单买月卡", "WITH_ORDER_BUY_COUPON_FEE"),
......
......@@ -24,6 +24,7 @@ public enum QueryOrderAccountType {
COUPON("COUPON", "代金券"),
FREIGHT_COUPON("FREIGHT_COUPON", "运费券"),
PRODUCT_COUPON("PRODUCT_COUPON", "商品券"),
SEED_PRODUCT_COUPON("SEED_PRODUCT_COUPON", "种子券"),
DISCOUNT_COUPON("DISCOUNT_COUPON", "折扣券"),
DISCOUNT_AMOUNT("DISCOUNT_AMOUNT", "限时折扣金额"),
PREMIUM_EXCHANGE("PREMIUM_EXCHANGE", "加价购"),
......
......@@ -218,6 +218,10 @@ public class CreateOrderProductRequest extends BaseConfig {
* 是否需要积分
*/
private Boolean needBonus;
/**
* 拆分前所属序列
*/
private String splitIndex;
/**
* 虚拟商品使用,发券id
......
......@@ -87,6 +87,10 @@ public class OrderProductAddInfoDto extends BaseConfig {
* 是否需要积分
*/
private Boolean needBonus;
/**
* 拆分前所属序列
*/
private String splitIndex;
/**
* 虚拟商品发券id
......
......@@ -5,6 +5,7 @@ import cn.freemud.entities.dto.QueryOrdersResponseDto;
import cn.freemud.entities.vo.CreateDeliveryPreferentialVo;
import cn.freemud.entities.vo.CreateDeliveryVo;
import cn.freemud.entities.vo.ProductInfo;
import cn.freemud.entities.vo.ProductVo;
import cn.freemud.enums.DeliveryChannelEnum;
import cn.freemud.enums.OrderSourceType;
import com.alibaba.fastjson.JSON;
......@@ -21,9 +22,7 @@ import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors;
......@@ -174,7 +173,32 @@ public class DeliveryAdapter {
simpleDateFormat.format(DateUtil.addHours(DateUtil.addMinutes(new Date(order.getGmtCreate()),storeInfo.getBizVO().getServiceTime()), -8)) :null;
deliveryOrderRequestDto.setExpectDeliveryTimeByUTC(expectDeliveryTimeByUTC);
}
//---麦咖啡餐道专用---
Optional<QueryOrdersResponseDto.DataBean.OrderBean.ProductBean> productVoOptional = order.getProductList().stream()
.filter(o -> StringUtils.isNotBlank(JSON.parseObject(o.getExtInfo(), OrderProductAddInfoDto.class).getSplitIndex()))
.findFirst();
Map<String, Integer> existMap = new HashMap<>();
if(productVoOptional.isPresent()) {
int size = order.getProductList().size();
List<QueryOrdersResponseDto.DataBean.OrderBean.ProductBean> productVoList = new ArrayList<>();
for(int i=0;i<size;i++) {
QueryOrdersResponseDto.DataBean.OrderBean.ProductBean productBean = order.getProductList().get(i);
String splitIndex = JSON.parseObject(productBean.getExtInfo(), OrderProductAddInfoDto.class).getSplitIndex();
if(StringUtils.isBlank(splitIndex)) {
productVoList.add(productBean);
} else {
if(existMap.get(splitIndex) == null) {
existMap.put(splitIndex, productVoList.size());
productVoList.add(productBean);
} else {
QueryOrdersResponseDto.DataBean.OrderBean.ProductBean productBeanExists = productVoList.get(existMap.get(splitIndex));
productBeanExists.setNumber(productBeanExists.getNumber() + productBean.getNumber());
}
}
}
order.setProductList(productVoList);
}
List<ProductInfo> productInfos = new ArrayList<>();
if (CollectionUtils.isNotEmpty(order.getProductList())) {
......
......@@ -230,7 +230,8 @@ public class OrderAdapter {
JSONObject jsonObject = new JSONObject();
if(ActivityTypeEnum.TYPE_11.getCode().equals(activityDiscountsDto.getActivityType())
|| ActivityTypeEnum.TYPE_12.getCode().equals(activityDiscountsDto.getActivityType())
|| ActivityTypeEnum.TYPE_32.getCode().equals(activityDiscountsDto.getActivityType())) {
|| ActivityTypeEnum.TYPE_32.getCode().equals(activityDiscountsDto.getActivityType())
|| ActivityTypeEnum.TYPE_37.getCode().equals(activityDiscountsDto.getActivityType())) {
jsonObject.put("tenderId", activityDiscountsDto.getTenderId());
} else if(ActivityTypeEnum.TYPE_34.getCode().equals(activityDiscountsDto.getActivityType())) {
jsonObject.put("customerCode", activityDiscountsDto.getTenderId());
......@@ -428,7 +429,8 @@ public class OrderAdapter {
?createOrderProductDto.getNumber():activityDiscountsDto.getActualActivityGoodsNumber())
.build();
JSONObject jsonObject = new JSONObject();
if(ActivityTypeEnum.TYPE_32.getCode().equals(activityDiscountsDto.getActivityType())) {
if(ActivityTypeEnum.TYPE_32.getCode().equals(activityDiscountsDto.getActivityType())
|| ActivityTypeEnum.TYPE_37.getCode().equals(activityDiscountsDto.getActivityType())) {
jsonObject.put("tenderId", activityDiscountsDto.getTenderId());
}
if(null != activityDiscountsDto.getExtendType()) {
......@@ -2116,6 +2118,9 @@ public class OrderAdapter {
productVo.setCid(orderProductAddInfoDto.getCartGoodsUid());
// 购物车行父id
productVo.setOcid(orderProductAddInfoDto.getOriginalGoodsUid());
if(StringUtils.isNotBlank(orderProductAddInfoDto.getSplitIndex())) {
productVo.setSplitIndex(orderProductAddInfoDto.getSplitIndex());
}
}
productVo.setOriginalPrice(productBean.getPrice());
productVo.setFinalPrice(productBean.getSalePrice());
......@@ -2543,6 +2548,7 @@ public class OrderAdapter {
createOrderProductDemoDto.setTaxId(cartGoodsDetailDto.getTaxId());
createOrderProductDemoDto.setClassificationId(cartGoodsDetailDto.getClassificationId());
createOrderProductDemoDto.setClassificationName(cartGoodsDetailDto.getClassificationName());
createOrderProductDemoDto.setSplitIndex(cartGoodsDetailDto.getSplitIndex());
if(CollectionUtils.isNotEmpty(cartGoodsDetailDto.getSpecialExtra())) {
createOrderProductDemoDto.setSpecialAttrs(new ArrayList<>());
cartGoodsDetailDto.getSpecialExtra().stream().forEach(o -> {
......@@ -2596,6 +2602,9 @@ public class OrderAdapter {
if (ActivityTypeEnum.TYPE_32.getCode().equals(activityType)) {
return OldOrderAccountType.PRODUCT_COUPON;
}
if (ActivityTypeEnum.TYPE_37.getCode().equals(activityType)) {
return OldOrderAccountType.SEED_PRODUCT_COUPON;
}
if (ActivityTypeEnum.TYPE_34.getCode().equals(activityType)) {
return OldOrderAccountType.FREIGHT_COUPON;
}
......
......@@ -27,4 +27,5 @@ public class ActivityDiscountsDto {
* 1-运费券 2-运费月卡券 3-月卡券 4-万能券 5-啡常月享卡 6-通用券
*/
private Integer extendType;
private String cartGoodsUid;
}
......@@ -201,6 +201,10 @@ public class ShoppingCartGoodsDto {
*/
private Integer isTableware = 0;
/**
* 拆分前所属序列
*/
private String splitIndex;
/**
* 商品重量
*/
private Double weight;
......
......@@ -200,6 +200,10 @@ public class ProductVo {
* 拼单买一赠一标记赠品是那个商品送的 originalGoodsUid
*/
private String ocid;
/**
* 拆分前所属序列
*/
private String splitIndex;
/**
......
......@@ -32,6 +32,7 @@ public enum ActivityTypeEnum {
TYPE_32(32, "商品券"),
TYPE_34(34, "运费券"),
TYPE_35(35, "买1赠3券"),
TYPE_37(37, "种子券"),
TYPE_5(5, "整单满金额折"),
TYPE_51(51, "每满金额折"),
TYPE_52(52, "阶梯满金额折"),
......
......@@ -1686,6 +1686,33 @@ public class OrderServiceImpl implements Orderservice {
}
QueryOrderResponseVo queryOrderResponseVo = queryOrderResponseVos.get(0);
Optional<ProductVo> productVoOptional = queryOrderResponseVo.getProducts().stream()
.filter(o -> StringUtils.isNotBlank(o.getSplitIndex()))
.findFirst();
Map<String, Integer> existMap = new HashMap<>();
if(productVoOptional.isPresent()) {
int size = queryOrderResponseVo.getProducts().size();
List<ProductVo> productVoList = new ArrayList<>();
for(int i=0;i<size;i++) {
ProductVo productVo = queryOrderResponseVo.getProducts().get(i);
if(StringUtils.isBlank(productVo.getSplitIndex())) {
productVoList.add(productVo);
} else {
if(existMap.get(productVo.getSplitIndex()) == null) {
existMap.put(productVo.getSplitIndex(), productVoList.size());
productVoList.add(productVo);
} else {
ProductVo productVoExists = productVoList.get(existMap.get(productVo.getSplitIndex()));
productVoExists.setOriginalTotalAmount(productVoExists.getOriginalTotalAmount() + productVo.getOriginalTotalAmount());
productVoExists.setSaleTotalAmount(productVoExists.getSaleTotalAmount() + productVo.getSaleTotalAmount());
productVoExists.setQty(productVoExists.getQty() + productVo.getQty());
}
}
}
queryOrderResponseVo.setProducts(productVoList);
}
//麦咖啡 预约外卖单重新封装取餐时间
if (OrderType.TAKE_OUT.getCode().equals(queryOrderResponseVo.getOrderType()) && StringUtils.isNotEmpty(queryOrderResponseVo.getReserveDeliveryTime())) {
Date reserveDeliveryTime = DateUtil.convert2Date(queryOrderResponseVo.getReserveDeliveryTime(), "yyyy-MM-dd HH:mm:ss");
......
......@@ -840,7 +840,9 @@ public class ShoppingCartMCoffeeServiceImpl {
ShoppingCartInfoRequestVo shoppingCartInfoRequestVo = requestVo.getShoppingCartInfoRequestVo();
CreateOrderVo.PremiumExchangeActivity premiumExchangeActivity = requestVo.getPremiumExchangeActivity();
ShoppingCartGoodsDto shoppingCartGoodsDto = new ShoppingCartGoodsDto();
shoppingCartGoodsDto.setIsDiscountDelivery(false);
ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo = new ShoppingCartGoodsResponseVo();
shoppingCartGoodsResponseVo.setIsDiscountDelivery(false);
String sessionId = shoppingCartInfoRequestVo.getSessionId();
// 获取用户信息
CustomerInfoVo assortmentCustomerInfoVo = getCustomerInfoVo(sessionId);
......
......@@ -159,6 +159,9 @@ public class CouponDiscountCalculation {
||(ActivityTypeEnum.TYPE_37.getCode().equals(discount.getType()))))) {
return;
}
Map<String, Integer> extendTypeMap = calculationDiscountResult.getDiscounts().stream().filter(o -> o.getExtendType() != null)
.collect(Collectors.toMap(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount::getActivityCode
, ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount::getExtendType, (k1, k2) -> k1));
//订单级别券优惠
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount> couponDiscounts = calculationDiscountResult.getDiscounts();
if (CollectionUtils.isEmpty(couponDiscounts)) {
......@@ -188,21 +191,28 @@ public class CouponDiscountCalculation {
//商品券商品
if (StringUtils.isNotEmpty(cartGoods.getCouponCode()) ) {
List<ActivityDiscountsDto> productActivityDiscountsDtos = new ArrayList<>();
if (CollectionUtils.isNotEmpty(discounts)) {
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount couponDiscount : discounts) {
if (couponDiscount.getActivityCode().equals(cartGoods.getCouponCode())) {
ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto();
activityDiscountsDto.setActivityCode(couponDiscount.getActivityCode());
activityDiscountsDto.setActivityName(couponDiscount.getActivityName());
activityDiscountsDto.setActivityType(couponDiscount.getType());
activityDiscountsDto.setDiscountAmount(0 - couponDiscount.getDiscount());
Integer extendType = couponDiscount.getExtendType();
activityDiscountsDto.setExtendType(extendType);
activityDiscountsDto.setTenderId(goodsMap.get(cartGoods.getCartGoodsUid()).getArtNo());
productActivityDiscountsDtos.add(activityDiscountsDto);
cartGoods.setTotalDiscountAmount(-activityDiscountsDto.getDiscountAmount());
cartGoods.setSalePrice(0L);
cartGoods.setActivityDiscountsDtos(productActivityDiscountsDtos);
if(CollectionUtils.isNotEmpty(calculationDiscountResult.getGoods())) {
for(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods goods : calculationDiscountResult.getGoods()) {
if(cartGoods.getCartGoodsUid().equals(goods.getCartGoodsUid())) {
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount> goodsDiscounts = goods.getDiscounts();
if(CollectionUtils.isNotEmpty(goodsDiscounts)) {
for(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount goodsDiscount : goodsDiscounts) {
if(goodsDiscount.getActivityCode().equals(cartGoods.getCouponCode())) {
ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto();
activityDiscountsDto.setActivityCode(goodsDiscount.getActivityCode());
activityDiscountsDto.setActivityName(goodsDiscount.getActivityName());
activityDiscountsDto.setActivityType(goodsDiscount.getType());
activityDiscountsDto.setDiscountAmount(0 - goodsDiscount.getDiscount().intValue());
Integer extendType = extendTypeMap.get(goodsDiscount.getActivityCode());
activityDiscountsDto.setExtendType(extendType);
activityDiscountsDto.setTenderId(goodsMap.get(cartGoods.getCartGoodsUid()).getArtNo());
productActivityDiscountsDtos.add(activityDiscountsDto);
cartGoods.setTotalDiscountAmount(-activityDiscountsDto.getDiscountAmount());
cartGoods.setSalePrice(0L);
cartGoods.setActivityDiscountsDtos(productActivityDiscountsDtos);
}
}
}
}
}
}
......
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