Commit aa007249 by 查志伟

美团pos订单需求支持

parent 2b914adf
......@@ -25,12 +25,10 @@ import com.freemud.application.sdk.api.util.DateUtil;
import com.freemud.sdk.api.assortment.order.constant.CommonConstant;
import com.freemud.sdk.api.assortment.order.domain.OrderStatesVO;
import com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant;
import com.freemud.sdk.api.assortment.order.entities.OrderEditInfo;
import com.freemud.sdk.api.assortment.order.enums.*;
import com.freemud.sdk.api.assortment.order.request.order.OrderDownloadRequest;
import com.freemud.sdk.api.assortment.order.request.order.*;
import com.freemud.sdk.api.assortment.order.response.order.*;
//import com.freemud.sdk.api.assortment.order.response.payment.OrderPayResponse;
import com.freemud.sdk.api.assortment.order.util.AssortOrderLogUtil;
import com.freemud.sdk.api.assortment.order.util.ClassUtils;
import com.freemud.sdk.api.assortment.order.util.WeightUtils;
......@@ -245,6 +243,8 @@ public class OrderSdkAdapter {
List<OrderCostCreateReq> orderCostCreateReqs = new ArrayList<>();
// 更新订单商品详情信息
originalAmount = updateOrderItemsAndSettlements(orderItemList, orderSettlementCreateReqList, orderCostCreateReqs, requestVO.getProducts(), requestVO.getAccounts(), requestVO.getCompanyId());
//将优惠信息中的活动优惠按优先级排个序 (对接美团Pos需要)
orderSettlementCreateReqList = this.sortSettlementCreateList(orderSettlementCreateReqList, requestVO);
//增加总优惠记录
if (!CollectionUtils.isEmpty(requestVO.getAccounts())) {
addTotalDisaccountData(orderSettlementCreateReqList, requestVO);
......@@ -306,6 +306,32 @@ public class OrderSdkAdapter {
return request;
}
/**
* 美团Pos对接的时候,需要将优惠信息排序
* @param orderSettlementCreateReqList
* @param requestVo
* @return List<OrderSettlementCreateReq> 排序后
*/
private List<OrderSettlementCreateReq> sortSettlementCreateList(List<OrderSettlementCreateReq> orderSettlementCreateReqList, BaseCreateOrderRequest requestVo) {
List<OrderSettlementCreateReq> result = new ArrayList<>();
//订单参与的活动信息,这个list是已经按照活动优先级排好了
List<CreateOrderAccountRequest> accountList = requestVo.getAccounts();
if (CollectionUtils.isEmpty(accountList)) return result;
for (CreateOrderAccountRequest account : accountList) {
Iterator<OrderSettlementCreateReq> iterator = orderSettlementCreateReqList.iterator();
while (iterator.hasNext()) {
OrderSettlementCreateReq coa = iterator.next();
if (Objects.equals(coa.getExternalObjectId(), account.getAccountId())) {
result.add(coa);
iterator.remove();
}
}
}
//此时iterator中还有元素的话,就是非促销的优惠数据,追加到后面
result.addAll(orderSettlementCreateReqList);
return result;
}
private void addTotalDisaccountData(List<OrderSettlementCreateReq> orderSettlementCreateReqList, BaseCreateOrderRequest requestVO) {
OrderSettlementCreateReq createReq = new OrderSettlementCreateReq();
createReq.setProductId("0");
......@@ -3066,6 +3092,7 @@ public class OrderSdkAdapter {
orderItemCreateReq.setProductCode(product.getProductCode());
orderItemCreateReq.setCategoryId(product.getCategoryId());
orderItemCreateReq.setCategoryName(product.getCategoryName());
orderItemCreateReq.setThirdCategoryCode(product.getThirdCategoryId());
//套餐商品
if (StringUtils.isNotEmpty(parentProductId)) {
orderItemCreateReq.setParentProductId(parentProductId); //套餐类商品父级商品id
......
......@@ -247,6 +247,10 @@ public class CartGoods {
*/
private String categoryName;
/**
* 第三方的分类编码 第三方使用
*/
private String customerCategoryCode;
/**
* 统计分类编号
*/
private String classificationId;
......
......@@ -2809,6 +2809,10 @@ public class OrderAdapter {
createOrderProductDemoDto.setCartGoodsUid(cartGoodsDetailDto.getCartGoodsUid());
createOrderProductDemoDto.setOriginalGoodsUid(cartGoodsDetailDto.getOriginalGoodsUid());
createOrderProductDemoDto.setScore(cartGoodsDetailDto.getScore());
// 商品所在的菜单分类信息
createOrderProductDemoDto.setThirdCategoryId(cartGoodsDetailDto.getCustomerCategoryCode());
createOrderProductDemoDto.setCategoryId(cartGoodsDetailDto.getNodeId());
createOrderProductDemoDto.setCategoryName(cartGoodsDetailDto.getCategoryName());
return createOrderProductDemoDto;
}
......
......@@ -29,4 +29,8 @@ public class ActivityDiscountsDto {
*/
private Integer extendType;
private String cartGoodsUid;
/**
* 享受优惠点优先级, 值越大表示优惠优先级高
*/
private Integer priority;
}
......@@ -188,6 +188,10 @@ public class ShoppingCartGoodsDto {
*/
private String nodeId;
/**
* 第三方的分类编码 三方订单使用
*/
private String customerCategoryCode;
/**
* 1.6.0 版本增加 分类名
*/
private String categoryName;
......
......@@ -117,7 +117,7 @@ public class OrderItemCreateReq {
/**
* 第三方商品分类
*/
private String thirdCategoryId;
private String thirdCategoryCode;
//商品分类ID
private String categoryId;
......
......@@ -123,6 +123,7 @@ public class ShoppingCartConvertAdapter {
cartGoodsDetailDto.setActivityType(cartGoods.getActivityType());
cartGoodsDetailDto.setNodeId(cartGoods.getNodeId());
cartGoodsDetailDto.setCategoryName(cartGoods.getCategoryName());
cartGoodsDetailDto.setCustomerCategoryCode(cartGoods.getCustomerCategoryCode());
cartGoodsDetailDto.setCouponCode(cartGoods.getCouponCode());
cartGoodsDetailDto.setStockLimit(cartGoods.isStockLimit());
cartGoodsDetailDto.setProductCode(cartGoods.getCustomerCode());
......@@ -438,6 +439,7 @@ public class ShoppingCartConvertAdapter {
cartGoods.setExtra(addShoppingCartGoodsRequestVo.getExtra());
cartGoods.setNodeId(addShoppingCartGoodsRequestVo.getNodeId());
cartGoods.setCategoryName(addShoppingCartGoodsRequestVo.getCategoryName());
cartGoods.setCustomerCategoryCode(addShoppingCartGoodsRequestVo.getCustomerCategoryCode());
List<CartGoods.ComboxGoods> productComboList = new ArrayList<>();
List<CartGoods.ComboxGoods> productGroupList = new ArrayList<>();
List<CartGoods.MaterialGoods> materialGoodsList = new ArrayList<>();
......
......@@ -35,4 +35,8 @@ public class ActivityDiscountsDto {
* 购物车商品行uid
*/
private String cartGoodsUid;
/**
* 享受优惠点优先级, 值越大表示优惠优先级高
*/
private Integer priority;
}
......@@ -259,6 +259,10 @@ public class ShoppingCartGoodsDto {
* 1.6.0 版本增加 分类名
*/
private String categoryName;
/**
* 第三方的分类编码 三方订单使用
*/
private String customerCategoryCode;
/**
* 套餐--父级商品Id
......
......@@ -63,6 +63,11 @@ public class AddShoppingCartGoodsRequestVo extends BaseRequestVo{
*/
private String categoryName;
/**
* 第三方的分类编码
*/
@ApiModelProperty(value = "第三方的分类编码")
private String customerCategoryCode;
/**
* 套餐固定商品
*/
private List<ComboxGoodsRequestVo> productComboList;
......
......@@ -237,6 +237,10 @@ public class CartGoods {
* 1.6.0 版本增加 分类名
*/
private String categoryName;
/**
* 第三方的分类编码 第三方使用
*/
private String customerCategoryCode;
/**
* 统计分类编号
......
......@@ -24,6 +24,7 @@ import cn.freemud.demo.controller.ShoppingCartDemoController;
import cn.freemud.demo.entities.dto.goods.add.list.BaseListCartGoodsVO;
import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.GetMenuResponseDto.DataBean.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean;
import cn.freemud.entities.dto.activity.ActivityDiscountsDto;
import cn.freemud.entities.dto.activity.ActivityQueryDto;
import cn.freemud.entities.dto.activity.ActivityQueryResponseDto;
import cn.freemud.entities.dto.activity.DiscountSharingDto;
......@@ -2080,6 +2081,26 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
IPromotionService fullMCountNFoldService = PromotionFactory.getPromotionService(ShoppingCartPromotionEnum.FULL_M_COUNT_N_FOLD);
fullMCountNFoldService.updateShoppingCartGoodsApportion(shoppingCartGoodsResponseVo, calculationDiscountResult, shoppingCartGoodsDto, premiumExchangeActivity, shoppingCartInfoRequestVo);
// 美团Pos需求,针对优惠信息进行排序
List<ActivityDiscountsDto> discounts = shoppingCartGoodsDto.getActivityDiscountsDtos();
discounts.forEach(discount -> {
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount rd : calculationDiscountResult.getDiscounts()) {
// 一定要先判断套餐,不清楚为什么套餐设置的活动是221-集点活动,不先判断的话,可能会匹配成集点的优先级了
if (discount.getActivityCode().equals("setMeal")) {
// 套餐优惠不是促销返回的,这里和促销新算价保持一直,优先级设置为0
discount.setPriority(0);
break;
}
if (discount.getActivityType().equals(rd.getType())) {
discount.setPriority(rd.getPriority());
break;
}
}
// 未匹配上的优惠,设置默认值0
if (null == discount.getPriority()) discount.setPriority(0);
});
discounts.sort((a1, a2) -> a2.getPriority() - a1.getPriority());
shoppingCartGoodsDto.setActivityDiscountsDtos(discounts);
}
......
......@@ -419,6 +419,7 @@ public class CalculationCommonService {
cartGoodsDetailDto.setActivityType(cartGoods.getActivityType());
cartGoodsDetailDto.setNodeId(cartGoods.getNodeId());
cartGoodsDetailDto.setCategoryName(cartGoods.getCategoryName());
cartGoodsDetailDto.setCustomerCategoryCode(cartGoods.getCustomerCategoryCode());
cartGoodsDetailDto.setCouponCode(cartGoods.getCouponCode());
cartGoodsDetailDto.setStockLimit(cartGoods.isStockLimit());
cartGoodsDetailDto.setProductCode(cartGoods.getCustomerCode());
......
......@@ -219,13 +219,15 @@ public class CalculationSharingEquallyService {
activityDiscountsDto.setActivityName(discount.getActivityName());
activityDiscountsDto.setActivityType(calculationCommonService.convertType(discountType));
activityDiscountsDto.setDiscountAmount(0 - discountAmount);
activityDiscountsDto.setPriority(discount.getPriority());
activityDiscountsDtos.add(activityDiscountsDto);
}
}
//美团POS需求,将优惠信息按照优惠优先级排序
activityDiscountsDtos.sort((a1, a2) -> a2.getPriority() - a1.getPriority());
shoppingCartGoodsDto.setActivityDiscountsDtos(activityDiscountsDtos);
}
/**
* 库存扣减加价购商品 要过滤掉没有换购的商品
*
......
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