Commit 5f16255b by chongfu.liang

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

parents f49aea09 efa50943
...@@ -752,6 +752,13 @@ public class OrderSdkAdapter { ...@@ -752,6 +752,13 @@ public class OrderSdkAdapter {
List<OrderItemResp> comboProducts = orderItemList.stream().filter(item -> ObjectUtils.equals(partnerProductId, item.getParentProductId())).collect(Collectors.toList()); List<OrderItemResp> comboProducts = orderItemList.stream().filter(item -> ObjectUtils.equals(partnerProductId, item.getParentProductId())).collect(Collectors.toList());
comboProducts.forEach(combo -> productBean.getComboProduct().add(getOldOrderProduct(orderSettlementResps, combo))); 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); productList.add(productBean);
} }
return productList; return productList;
...@@ -2558,13 +2565,26 @@ public class OrderSdkAdapter { ...@@ -2558,13 +2565,26 @@ public class OrderSdkAdapter {
for (CreateOrderProductRequest productRequest : products) { for (CreateOrderProductRequest productRequest : products) {
// 普通商品 订单转换 // 普通商品 订单转换
productRequest.setOpid(index); 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(固定商品、可选商品) // 如果是套餐商品,需要转换当前商品行子集ComboProduct&GroupProduct(固定商品、可选商品)
if (ObjectUtils.equals(ProductTypeEnum.SETMEAL_PRODUCT.getCode(), productRequest.getProductType()) || ObjectUtils.equals(ProductTypeEnum.SETMEAL_UPPRICE_PRODUCT.getCode(), productRequest.getProductType())) { if (ObjectUtils.equals(ProductTypeEnum.SETMEAL_PRODUCT.getCode(), productRequest.getProductType()) || ObjectUtils.equals(ProductTypeEnum.SETMEAL_UPPRICE_PRODUCT.getCode(), productRequest.getProductType())) {
// 父类商品productId=productId+seq // 父类商品productId=productId+seq
String partnerProductId = productRequest.getProductId() + "_" + index; String partnerProductId = productRequest.getProductId() + "_" + index;
if (CollectionUtils.isNotEmpty(productRequest.getComboProduct())) { 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++; index++;
...@@ -2582,7 +2602,7 @@ public class OrderSdkAdapter { ...@@ -2582,7 +2602,7 @@ public class OrderSdkAdapter {
* @param parentProductId 套餐父商品Id * @param parentProductId 套餐父商品Id
* @return * @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 orderItemCreateReq = new OrderItemCreateReq();
orderItemCreateReq.setId(product.getId()); orderItemCreateReq.setId(product.getId());
orderItemCreateReq.setPartnerId(partnerId); orderItemCreateReq.setPartnerId(partnerId);
...@@ -2700,7 +2720,7 @@ public class OrderSdkAdapter { ...@@ -2700,7 +2720,7 @@ public class OrderSdkAdapter {
orderItemCreateReq.setExtInfo(JSONObject.toJSONString(extInfo)); orderItemCreateReq.setExtInfo(JSONObject.toJSONString(extInfo));
orderItemList.add(orderItemCreateReq); orderItemList.add(orderItemCreateReq);
if (product.getTotalDiscountAmount() != null && product.getTotalDiscountAmount() > 0L) { if (product.getTotalDiscountAmount() != null && product.getTotalDiscountAmount() > 0L && !isMaterial) {
//优惠信息转换 //优惠信息转换
OrderSettlementCreateReq orderSettlementCreateReq = new OrderSettlementCreateReq(); OrderSettlementCreateReq orderSettlementCreateReq = new OrderSettlementCreateReq();
orderSettlementCreateReq.setProductId(product.getSpecification()); orderSettlementCreateReq.setProductId(product.getSpecification());
......
...@@ -134,6 +134,10 @@ public class CreateOrderProductRequest extends BaseConfig { ...@@ -134,6 +134,10 @@ public class CreateOrderProductRequest extends BaseConfig {
*/ */
private List<CreateOrderProductRequest> comboProduct; private List<CreateOrderProductRequest> comboProduct;
/** /**
*加料商品
*/
private List<CreateOrderProductRequest> materialProduct;
/**
* 优惠列表 * 优惠列表
*/ */
private List<CreateOrderAccountRequest> accounts; private List<CreateOrderAccountRequest> accounts;
......
...@@ -519,6 +519,11 @@ public class QueryOrdersResponse { ...@@ -519,6 +519,11 @@ public class QueryOrdersResponse {
*/ */
public List<ProductBean> comboProduct; public List<ProductBean> comboProduct;
/**
* 套餐子商品
*/
public List<ProductBean> materialProduct;
@NoArgsConstructor @NoArgsConstructor
@Data @Data
public static class ProductDiscount { public static class ProductDiscount {
......
...@@ -252,6 +252,28 @@ public class OrderAdapter { ...@@ -252,6 +252,28 @@ public class OrderAdapter {
return createOrderDto; 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, public CreateFatherSonOrderRequest convertFatherSonOrderRequest(CreateOrderVo createOrderVo, ShoppingCartGoodsDto shoppingCartGoodsDto,
OrderExtendedReq orderExtendedReq,StoreResponse.BizVO storeResponseDto, OrderExtendedReq orderExtendedReq,StoreResponse.BizVO storeResponseDto,
String appId) { String appId) {
...@@ -1649,6 +1671,18 @@ public class OrderAdapter { ...@@ -1649,6 +1671,18 @@ public class OrderAdapter {
productBean.getComboProduct().forEach(product -> setMealProducts.add(convent2ProductVo(product))); productBean.getComboProduct().forEach(product -> setMealProducts.add(convent2ProductVo(product)));
productVo.setSetMealProducts(setMealProducts); 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.add(productVo);
} }
productVos.sort(Comparator.comparing(ProductVo::getSequence)); productVos.sort(Comparator.comparing(ProductVo::getSequence));
...@@ -1849,13 +1883,21 @@ public class OrderAdapter { ...@@ -1849,13 +1883,21 @@ public class OrderAdapter {
for (QueryOrdersResponseDto.DataBean.OrderBean.ProductBean productBean : productBeans) { for (QueryOrdersResponseDto.DataBean.OrderBean.ProductBean productBean : productBeans) {
OrderPrintDto.ProductsBean productVO = getProductBean(productBean); OrderPrintDto.ProductsBean productVO = getProductBean(productBean);
List<OrderPrintDto.ProductsBean> comboProductVOs = new ArrayList<>(); List<OrderPrintDto.ProductsBean> comboProductVOs = new ArrayList<>();
List<OrderPrintDto.ProductsBean> materialProductVOs = new ArrayList<>();
if (CollectionUtils.isNotEmpty(productBean.getComboProduct())) { if (CollectionUtils.isNotEmpty(productBean.getComboProduct())) {
for (QueryOrdersResponseDto.DataBean.OrderBean.ProductBean comboProduct : productBean.getComboProduct()) { for (QueryOrdersResponseDto.DataBean.OrderBean.ProductBean comboProduct : productBean.getComboProduct()) {
OrderPrintDto.ProductsBean sonProductVO = getProductBean(comboProduct); OrderPrintDto.ProductsBean sonProductVO = getProductBean(comboProduct);
comboProductVOs.add(sonProductVO); 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.setSonProducts(comboProductVOs);
productVO.setMaterialProducts(materialProductVOs);
products.add(productVO); products.add(productVO);
} }
return products; return products;
...@@ -1915,10 +1957,49 @@ public class OrderAdapter { ...@@ -1915,10 +1957,49 @@ public class OrderAdapter {
}); });
createOrderProductDemoDto.setComboProduct(comboProducts); 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()); createOrderProductDemoDto.setProductType(cartGoodsDetailDto.getProductType());
return createOrderProductDemoDto; 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;
}
public CreateOrderProductRequest convent2OrderProductDemo(ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto) { public CreateOrderProductRequest convent2OrderProductDemo(ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto) {
CreateOrderProductRequest createOrderProductDemoDto = new CreateOrderProductRequest(); CreateOrderProductRequest createOrderProductDemoDto = new CreateOrderProductRequest();
createOrderProductDemoDto.setProductId(cartGoodsDetailDto.getSpuId()); createOrderProductDemoDto.setProductId(cartGoodsDetailDto.getSpuId());
......
...@@ -41,7 +41,7 @@ public class DeliveryController { ...@@ -41,7 +41,7 @@ public class DeliveryController {
@ApiOperation(value = "配送回调", notes = "配送回调", produces = "application/json") @ApiOperation(value = "配送回调", notes = "配送回调", produces = "application/json")
@PostMapping("/delivery/callbackUrl") @PostMapping("/delivery/callbackUrl")
public BaseResponse callbackUrl(@Valid @LogParams @RequestBody CallbackUrlRequestDto request) { public BaseResponse callbackUrl(@Valid @LogParams @RequestBody CallbackUrlRequestDto request) {
return deliveryService.callbackUrl(request); return deliveryService. callbackUrl(request);
} }
@ApiAnnotation(logMessage = "商城配送回调") @ApiAnnotation(logMessage = "商城配送回调")
......
...@@ -128,6 +128,8 @@ public class OrderPrintDto { ...@@ -128,6 +128,8 @@ public class OrderPrintDto {
private Integer parentType; private Integer parentType;
//套餐商品的子商品 //套餐商品的子商品
private List<ProductsBean> sonProducts; private List<ProductsBean> sonProducts;
//加料商品的加料
private List<ProductsBean> materialProducts;
} }
} }
...@@ -365,6 +365,8 @@ public class QueryOrdersResponseDto { ...@@ -365,6 +365,8 @@ public class QueryOrdersResponseDto {
List<ProductBean> comboProduct; List<ProductBean> comboProduct;
List<ProductBean> materialProduct;
@NoArgsConstructor @NoArgsConstructor
@Data @Data
public static class ProductDiscount { public static class ProductDiscount {
......
...@@ -212,6 +212,8 @@ public class ShoppingCartGoodsDto { ...@@ -212,6 +212,8 @@ public class ShoppingCartGoodsDto {
*/ */
private List<CartGoodsDetailDto> comboProducts; private List<CartGoodsDetailDto> comboProducts;
private List<CartGoodsDetailDto> materialList;
@Data @Data
public final static class CartGoodsExtra { public final static class CartGoodsExtra {
/** /**
...@@ -224,6 +226,7 @@ public class ShoppingCartGoodsDto { ...@@ -224,6 +226,7 @@ public class ShoppingCartGoodsDto {
private String attributeName; private String attributeName;
} }
/** /**
* 获取extras attributeNames * 获取extras attributeNames
*/ */
......
...@@ -152,4 +152,6 @@ public class ProductVo { ...@@ -152,4 +152,6 @@ public class ProductVo {
private List<InventedParentActivityVo> InventedParentActivitiesVo; private List<InventedParentActivityVo> InventedParentActivitiesVo;
private List<ProductVo> setMaterialProducts;
} }
...@@ -16,7 +16,8 @@ public enum ProductType { ...@@ -16,7 +16,8 @@ public enum ProductType {
NOSPEC(1, "无规格"), NOSPEC(1, "无规格"),
HAVESPEC(10, "有规格"), HAVESPEC(10, "有规格"),
SETMEALPRODUCT(6,"套餐商品"), SETMEALPRODUCT(6,"套餐商品"),
SETMEALPRODUCT_UPPRICE(7,"加价套餐商品"); SETMEALPRODUCT_UPPRICE(7,"加价套餐商品"),
MATERIALPRODUCT_UPPRICE(88,"加料商品");
private int code; private int code;
......
...@@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.*; ...@@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.*;
@Slf4j @Slf4j
@RequestMapping("/order") @RequestMapping("/order")
@RestController @RestController
@Validated @Validated
public class DeliveryOrderController { public class DeliveryOrderController {
......
...@@ -15,13 +15,15 @@ public enum ProductTypeEnum { ...@@ -15,13 +15,15 @@ public enum ProductTypeEnum {
GENERAL_PRODUCT(1,"普通商品"), GENERAL_PRODUCT(1,"普通商品"),
GROUP_PRODUCT(3,"组合商品"), GROUP_PRODUCT(3,"组合商品"),
SETMEAL_PRODUCT(6,"套餐商品"), SETMEAL_PRODUCT(6,"套餐商品"),
SETMEAL_UPPRICE_PRODUCT(7,"加价套餐商品"), SETMEAL_UPPRICE_PRODUCT(7,"加价套餐商品"),
VIRTUAL_PRODUCT(9,"虚拟商品"), VIRTUAL_PRODUCT(9,"虚拟商品"),
MORD_SPECIFICATION_PRODUCT(10,"多规格商品"), MORD_SPECIFICATION_PRODUCT(10,"多规格商品"),
WEIGHT_PRODUCT(11,"称重商品"), 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