Commit 5f16255b by chongfu.liang

Merge branch 'feature/1.9.32-加料商品开发'

parents f49aea09 efa50943
......@@ -752,6 +752,13 @@ public class OrderSdkAdapter {
List<OrderItemResp> comboProducts = orderItemList.stream().filter(item -> ObjectUtils.equals(partnerProductId, item.getParentProductId())).collect(Collectors.toList());
comboProducts.forEach(combo -> productBean.getComboProduct().add(getOldOrderProduct(orderSettlementResps, combo)));
}
if (ObjectUtils.equals(ProductTypeEnum.MATERIAL_PRODUCT.getCode(), orderItem.getProductType())) {
// 获取加料子商品列表
productBean.setMaterialProduct(new ArrayList<>());
String partnerProductId = orderItem.getProductId() + "_" + orderItem.getProductSeq();
List<OrderItemResp> materialProducts = orderItemList.stream().filter(item -> ObjectUtils.equals(partnerProductId, item.getParentProductId())).collect(Collectors.toList());
materialProducts.forEach(material -> productBean.getMaterialProduct().add(getOldOrderProduct(orderSettlementResps, material)));
}
productList.add(productBean);
}
return productList;
......@@ -2558,13 +2565,26 @@ public class OrderSdkAdapter {
for (CreateOrderProductRequest productRequest : products) {
// 普通商品 订单转换
productRequest.setOpid(index);
originalAmount += updateOrderItemAndSettlement(orderItemList, orderSettlementCreateReqList, productRequest, partnerId, "");
originalAmount += updateOrderItemAndSettlement(orderItemList, orderSettlementCreateReqList, productRequest, partnerId, "", false);
if (ProductTypeEnum.MATERIAL_PRODUCT.getCode().equals(productRequest.getProductType())) {
if (CollectionUtils.isNotEmpty(productRequest.getMaterialProduct())) {
// 父类商品productId=productId+seq
String partnerProductId = productRequest.getProductId() + "_" + index;
for (CreateOrderProductRequest material: productRequest.getMaterialProduct()){
index++;
material.setOpid(index);
material.setSpecification(material.getProductId());
material.setSpecificationName(material.getProductName());
updateOrderItemAndSettlement(orderItemList, orderSettlementCreateReqList, material, partnerId, partnerProductId, true);
}
}
}
// 如果是套餐商品,需要转换当前商品行子集ComboProduct&GroupProduct(固定商品、可选商品)
if (ObjectUtils.equals(ProductTypeEnum.SETMEAL_PRODUCT.getCode(), productRequest.getProductType()) || ObjectUtils.equals(ProductTypeEnum.SETMEAL_UPPRICE_PRODUCT.getCode(), productRequest.getProductType())) {
// 父类商品productId=productId+seq
String partnerProductId = productRequest.getProductId() + "_" + index;
if (CollectionUtils.isNotEmpty(productRequest.getComboProduct())) {
productRequest.getComboProduct().forEach(combo -> updateOrderItemAndSettlement(orderItemList, orderSettlementCreateReqList, combo, partnerId, partnerProductId));
productRequest.getComboProduct().forEach(combo -> updateOrderItemAndSettlement(orderItemList, orderSettlementCreateReqList, combo, partnerId, partnerProductId, false));
}
}
index++;
......@@ -2582,7 +2602,7 @@ public class OrderSdkAdapter {
* @param parentProductId 套餐父商品Id
* @return
*/
private Long updateOrderItemAndSettlement(List<OrderItemCreateReq> orderItemList, List<OrderSettlementCreateReq> orderSettlementCreateReqList, CreateOrderProductRequest product, String partnerId, String parentProductId) {
private Long updateOrderItemAndSettlement(List<OrderItemCreateReq> orderItemList, List<OrderSettlementCreateReq> orderSettlementCreateReqList, CreateOrderProductRequest product, String partnerId, String parentProductId, Boolean isMaterial) {
OrderItemCreateReq orderItemCreateReq = new OrderItemCreateReq();
orderItemCreateReq.setId(product.getId());
orderItemCreateReq.setPartnerId(partnerId);
......@@ -2700,7 +2720,7 @@ public class OrderSdkAdapter {
orderItemCreateReq.setExtInfo(JSONObject.toJSONString(extInfo));
orderItemList.add(orderItemCreateReq);
if (product.getTotalDiscountAmount() != null && product.getTotalDiscountAmount() > 0L) {
if (product.getTotalDiscountAmount() != null && product.getTotalDiscountAmount() > 0L && !isMaterial) {
//优惠信息转换
OrderSettlementCreateReq orderSettlementCreateReq = new OrderSettlementCreateReq();
orderSettlementCreateReq.setProductId(product.getSpecification());
......
......@@ -134,6 +134,10 @@ public class CreateOrderProductRequest extends BaseConfig {
*/
private List<CreateOrderProductRequest> comboProduct;
/**
*加料商品
*/
private List<CreateOrderProductRequest> materialProduct;
/**
* 优惠列表
*/
private List<CreateOrderAccountRequest> accounts;
......
......@@ -519,6 +519,11 @@ public class QueryOrdersResponse {
*/
public List<ProductBean> comboProduct;
/**
* 套餐子商品
*/
public List<ProductBean> materialProduct;
@NoArgsConstructor
@Data
public static class ProductDiscount {
......
......@@ -252,6 +252,28 @@ public class OrderAdapter {
return createOrderDto;
}
private List<CreateOrderAccountRequest> getMaterialAccounts(CreateOrderProductRequest createOrderProductDto, ShoppingCartGoodsDto.CartGoodsDetailDto material) {
List<CreateOrderAccountRequest> orderAccountDtos = createOrderProductDto.getAccounts();
if (CollectionUtils.isEmpty(orderAccountDtos)){
orderAccountDtos = new ArrayList<>();
}
List<ActivityDiscountsDto> activityDiscountsDtos = material.getActivityDiscountsDtos();
for (ActivityDiscountsDto activityDiscountsDto : activityDiscountsDtos) {
CreateOrderAccountRequest createOrderAccountDto = CreateOrderAccountRequest.builder()
.accountId(activityDiscountsDto.getActivityCode())
.name(activityDiscountsDto.getActivityName())
.price(activityDiscountsDto.getDiscountAmount().longValue())
.accountType(getQueryOrderAccountType(getOrderAccountType(activityDiscountsDto.getActivityType())))
.sequence(createOrderProductDto.getSequence())
.productId(material.getSpuId())
.discountQty(createOrderProductDto.getNumber())
.build();
orderAccountDtos.add(createOrderAccountDto);
}
return orderAccountDtos;
}
public CreateFatherSonOrderRequest convertFatherSonOrderRequest(CreateOrderVo createOrderVo, ShoppingCartGoodsDto shoppingCartGoodsDto,
OrderExtendedReq orderExtendedReq,StoreResponse.BizVO storeResponseDto,
String appId) {
......@@ -1649,6 +1671,18 @@ public class OrderAdapter {
productBean.getComboProduct().forEach(product -> setMealProducts.add(convent2ProductVo(product)));
productVo.setSetMealProducts(setMealProducts);
}
if (ObjectUtils.equals(ProductTypeEnum.MATERIAL_PRODUCT.getCode(), productBean.getProductType())) {
List<ProductVo> setMaterialProducts = new ArrayList<>();
productBean.getMaterialProduct().forEach(product -> {
ProductVo material = convent2ProductVo(product);
setMaterialProducts.add(material);
productVo.setOriginalPrice(new BigDecimal(productVo.getOriginalPrice()).subtract(new BigDecimal(material.getOriginalPrice())).longValue());
productVo.setFinalPrice(new BigDecimal(productVo.getFinalPrice()).subtract(new BigDecimal(material.getFinalPrice())).longValue());
productVo.setOriginalTotalAmount(new BigDecimal(productVo.getOriginalTotalAmount()).subtract(new BigDecimal(material.getOriginalTotalAmount())).longValue());
productVo.setSaleTotalAmount(new BigDecimal(productVo.getSaleTotalAmount()).subtract(new BigDecimal(product.getSettlementPrice())).longValue());
});
productVo.setSetMaterialProducts(setMaterialProducts);
}
productVos.add(productVo);
}
productVos.sort(Comparator.comparing(ProductVo::getSequence));
......@@ -1849,13 +1883,21 @@ public class OrderAdapter {
for (QueryOrdersResponseDto.DataBean.OrderBean.ProductBean productBean : productBeans) {
OrderPrintDto.ProductsBean productVO = getProductBean(productBean);
List<OrderPrintDto.ProductsBean> comboProductVOs = new ArrayList<>();
List<OrderPrintDto.ProductsBean> materialProductVOs = new ArrayList<>();
if (CollectionUtils.isNotEmpty(productBean.getComboProduct())) {
for (QueryOrdersResponseDto.DataBean.OrderBean.ProductBean comboProduct : productBean.getComboProduct()) {
OrderPrintDto.ProductsBean sonProductVO = getProductBean(comboProduct);
comboProductVOs.add(sonProductVO);
}
}
if (CollectionUtils.isNotEmpty(productBean.getMaterialProduct())) {
for (QueryOrdersResponseDto.DataBean.OrderBean.ProductBean materialProduct : productBean.getMaterialProduct()) {
OrderPrintDto.ProductsBean materialProductVO = getProductBean(materialProduct);
materialProductVOs.add(materialProductVO);
}
}
productVO.setSonProducts(comboProductVOs);
productVO.setMaterialProducts(materialProductVOs);
products.add(productVO);
}
return products;
......@@ -1915,7 +1957,46 @@ public class OrderAdapter {
});
createOrderProductDemoDto.setComboProduct(comboProducts);
}
//加料商品
if (cartGoodsDetailDto.getProductType() != null && (cartGoodsDetailDto.getProductType() == ProductType.MATERIALPRODUCT_UPPRICE.getCode())) {
List<CreateOrderProductRequest> materialProducts = new ArrayList<>();
cartGoodsDetailDto.getMaterialList().forEach(product -> {
materialProducts.add(convent2OrderProductMaterial(product));
});
createOrderProductDemoDto.setMaterialProduct(materialProducts);
}
createOrderProductDemoDto.setProductType(cartGoodsDetailDto.getProductType());
return createOrderProductDemoDto;
}
private CreateOrderProductRequest convent2OrderProductMaterial(ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto) {
CreateOrderProductRequest createOrderProductDemoDto = new CreateOrderProductRequest();
createOrderProductDemoDto.setProductId(cartGoodsDetailDto.getSpuId());
createOrderProductDemoDto.setProductName(cartGoodsDetailDto.getSpuName());
createOrderProductDemoDto.setSpecification(cartGoodsDetailDto.getSkuId());
createOrderProductDemoDto.setSpecificationName(cartGoodsDetailDto.getSkuName());
createOrderProductDemoDto.setPrice(cartGoodsDetailDto.getOriginalPrice());
createOrderProductDemoDto.setSalePrice(cartGoodsDetailDto.getOriginalPrice());
createOrderProductDemoDto.setTotalDiscountAmount(cartGoodsDetailDto.getTotalDiscountAmount() == null ? 0 : cartGoodsDetailDto.getTotalDiscountAmount().longValue());
createOrderProductDemoDto.setNumber(cartGoodsDetailDto.getQty());
createOrderProductDemoDto.setPicture(cartGoodsDetailDto.getPicture());
createOrderProductDemoDto.setAddInfo(cartGoodsDetailDto.getAttributeNames());
createOrderProductDemoDto.setDiscountId(cartGoodsDetailDto.getCouponCode());
createOrderProductDemoDto.setProductType(cartGoodsDetailDto.getProductType());
createOrderProductDemoDto.setParentProductId(cartGoodsDetailDto.getParentProductId());
createOrderProductDemoDto.setIsFixedProduct(cartGoodsDetailDto.getIsFixedProduct());
createOrderProductDemoDto.setCustomerCode(cartGoodsDetailDto.getCustomerCode());
//createOrderProductDemoDto.setProductCode(cartGoodsDetailDto.getProductCode());
createOrderProductDemoDto.setHasStockProudct(cartGoodsDetailDto.isStockLimit());
createOrderProductDemoDto.setWeight(cartGoodsDetailDto.getWeight());
createOrderProductDemoDto.setUnit(cartGoodsDetailDto.getUnit());
createOrderProductDemoDto.setStapleFood(0);
createOrderProductDemoDto.setCategory(cartGoodsDetailDto.getClassificationId());
if (CollectionUtils.isNotEmpty(cartGoodsDetailDto.getActivityDiscountsDtos())) {
createOrderProductDemoDto.setAccounts(getMaterialAccounts(createOrderProductDemoDto, cartGoodsDetailDto));
}
return createOrderProductDemoDto;
}
......
......@@ -41,7 +41,7 @@ public class DeliveryController {
@ApiOperation(value = "配送回调", notes = "配送回调", produces = "application/json")
@PostMapping("/delivery/callbackUrl")
public BaseResponse callbackUrl(@Valid @LogParams @RequestBody CallbackUrlRequestDto request) {
return deliveryService.callbackUrl(request);
return deliveryService. callbackUrl(request);
}
@ApiAnnotation(logMessage = "商城配送回调")
......
......@@ -128,6 +128,8 @@ public class OrderPrintDto {
private Integer parentType;
//套餐商品的子商品
private List<ProductsBean> sonProducts;
//加料商品的加料
private List<ProductsBean> materialProducts;
}
}
......@@ -365,6 +365,8 @@ public class QueryOrdersResponseDto {
List<ProductBean> comboProduct;
List<ProductBean> materialProduct;
@NoArgsConstructor
@Data
public static class ProductDiscount {
......
......@@ -212,6 +212,8 @@ public class ShoppingCartGoodsDto {
*/
private List<CartGoodsDetailDto> comboProducts;
private List<CartGoodsDetailDto> materialList;
@Data
public final static class CartGoodsExtra {
/**
......@@ -224,6 +226,7 @@ public class ShoppingCartGoodsDto {
private String attributeName;
}
/**
* 获取extras attributeNames
*/
......
......@@ -152,4 +152,6 @@ public class ProductVo {
private List<InventedParentActivityVo> InventedParentActivitiesVo;
private List<ProductVo> setMaterialProducts;
}
......@@ -16,7 +16,8 @@ public enum ProductType {
NOSPEC(1, "无规格"),
HAVESPEC(10, "有规格"),
SETMEALPRODUCT(6,"套餐商品"),
SETMEALPRODUCT_UPPRICE(7,"加价套餐商品");
SETMEALPRODUCT_UPPRICE(7,"加价套餐商品"),
MATERIALPRODUCT_UPPRICE(88,"加料商品");
private int code;
......
......@@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.*;
@Slf4j
@RequestMapping("/order")
@RestController
@Validated
public class DeliveryOrderController {
......
......@@ -15,13 +15,15 @@ public enum ProductTypeEnum {
GENERAL_PRODUCT(1,"普通商品"),
GROUP_PRODUCT(3,"组合商品"),
SETMEAL_PRODUCT(6,"套餐商品"),
SETMEAL_UPPRICE_PRODUCT(7,"加价套餐商品"),
VIRTUAL_PRODUCT(9,"虚拟商品"),
MORD_SPECIFICATION_PRODUCT(10,"多规格商品"),
WEIGHT_PRODUCT(11,"称重商品"),
TABLEWARE_PRODUCT(12,"餐具商品");
TABLEWARE_PRODUCT(12,"餐具商品"),
MATERIAL_PRODUCT(88,"加料商品");
......
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