Commit 9092484d by shuhu.hou

创建订单新增menuType

parent 8e2eda09
......@@ -1326,9 +1326,9 @@ public class OrderSdkAdapter {
* @param stockChangeType 库存改变类型
* @return
*/
public UpdateStocksRequest getUpdateProductStock(QueryOrdersResponse.DataBean.OrderBean orderBean, List<CreateOrderProductRequest> products, StockChangeType stockChangeType) {
public UpdateStocksRequest getUpdateProductStock(QueryOrdersResponse.DataBean.OrderBean orderBean, List<CreateOrderProductRequest> products, StockChangeType stockChangeType,String menuType) {
UpdateStocksRequest updateStocksRequest = new UpdateStocksRequest();
updateStocksRequest.setChannel("saas");
updateStocksRequest.setChannel(menuType);
updateStocksRequest.setChangeType(stockChangeType.getCode());
updateStocksRequest.setIsOversold(0);
updateStocksRequest.setPartnerId(orderBean.getCompanyId());
......
......@@ -131,6 +131,11 @@ public class BaseCreateOrderRequest extends BaseConfig {
*/
public ActivityUpdateStockRequest activityUpdateStockRequest;
/**
* 订单渠道
*/
private String menuType;
@Data
public static class DeliveryTypeInfo {
/**
......
......@@ -34,6 +34,11 @@ public class CreateFatherSonOrderRequest extends BaseConfig {
*/
MqMessageRequest mqMessageRequest;
/**
* 订单渠道类型
*/
private String menuType;
@Data
public static class OrderInfo {
/**
......
......@@ -129,7 +129,7 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
return getCreateOrderResponse(createOrderResponse.getErrcode().toString(), createOrderResponse.getErrmsg(), null);
}
BaseOrderResponse baseOrderResponse = updateStockAndScore(createOrderResponse.getData(), config.getBaseCreateOrderRequest().getProducts(), config.getBaseCreateOrderRequest().getActivityUpdateStockRequest(),
config.getBaseCreateOrderRequest().getAccounts(), config.getMqMessageRequest());
config.getBaseCreateOrderRequest().getAccounts(), config.getMqMessageRequest(),config.getBaseCreateOrderRequest().getMenuType());
// if (!RESPONSE_SUCCESS.equals(baseOrderResponse.getErrcode())) {
// return getCreateOrderResponse(baseOrderResponse.getErrcode().toString(), baseOrderResponse.getErrmsg(), null);
// }
......@@ -150,7 +150,7 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
}
CreateFatherSonOrderRequest.OrderInfo productOrderRequest = createFatherSonOrderRequest.getOrderInfoList().stream().filter(orderBeanTemp -> 1 == orderBeanTemp.getBizType()).collect(Collectors.toList()).get(0);
updateStockAndScore(productOrderInfo.get(0), productOrderRequest.getProducts(), productOrderRequest.getActivityUpdateStockRequest(), productOrderRequest.getAccounts(),
createFatherSonOrderRequest.getMqMessageRequest());
createFatherSonOrderRequest.getMqMessageRequest(),createFatherSonOrderRequest.getMenuType());
return createFatherSonOrderResponse;
}
......@@ -167,9 +167,9 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
}
private BaseOrderResponse updateStockAndScore(OrderBean orderBean, List<CreateOrderProductRequest> products, ActivityUpdateStockRequest updateStockRequest,
List<CreateOrderAccountRequest> accounts, MqMessageRequest mqMessageRequest) {
List<CreateOrderAccountRequest> accounts, MqMessageRequest mqMessageRequest,String menuType) {
//TODO 转换获取库存信息,扣减库存
UpdateStocksRequest updateStocksRequest = orderSdkAdapter.getUpdateProductStock(orderBean, products, StockChangeType.REDUCE);
UpdateStocksRequest updateStocksRequest = orderSdkAdapter.getUpdateProductStock(orderBean, products, StockChangeType.REDUCE,menuType);
if (updateStocksRequest != null && CollectionUtils.isNotEmpty(updateStocksRequest.getProductStocks())) {
BaseResponse baseResponse = stockSdkService.reducesStocks(updateStocksRequest, "");
ThirdPartyLog.infoConvertJson(System.currentTimeMillis(), System.currentTimeMillis(),
......
......@@ -250,6 +250,7 @@ public class OrderAdapter {
CreateFatherSonOrderRequest createFatherSonOrderRequest = new CreateFatherSonOrderRequest();
createFatherSonOrderRequest.setPartnerId(createOrderVo.getPartnerId());
createFatherSonOrderRequest.setTrackingNo(LogTreadLocal.getTrackingNo());
createFatherSonOrderRequest.setMenuType(createOrderVo.getMenuType());
UserDeliveryInfoDto deliveryInfoDto = createOrderVo.getUserDeliveryInfoDto();
List<CreateFatherSonOrderRequest.OrderInfo> orderInfoList = new ArrayList<>();
CreateFatherSonOrderRequest.OrderInfo productOrderInfo = convertProductOrderInfo(createOrderVo, deliveryInfoDto, shoppingCartGoodsDto,orderWarnTime);
......@@ -501,6 +502,7 @@ public class OrderAdapter {
createOrderDto.setAmount(0L);
createOrderDto.setBarCounter(createOrderVo.getTableNumber());
createOrderDto.setOperator(createOrderVo.getUserName());
createOrderDto.setMenuType(BusinessTypeEnum.getByCode(createOrderDto.getMenuType()));
return createOrderDto;
}
......
......@@ -30,254 +30,16 @@ import java.util.*;
@Component
public class StoreItemAdapter {
private static FastDateFormat yyyyMMddHHmmss = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
public GetMenuCategoryInfoDto convert2MemuCategoryInfoDto(GetMenuCategoryVo getMenuCategoryVo) {
GetMenuCategoryInfoDto memuCategoryInfoDto = new GetMenuCategoryInfoDto();
memuCategoryInfoDto.setBusinessDate(yyyyMMddHHmmss.format(new Date()));
memuCategoryInfoDto.setChannelType(getMenuCategoryVo.getChannelType());
memuCategoryInfoDto.setInfoLevel(getMenuCategoryVo.getInfoLevel());
memuCategoryInfoDto.setPartnerId(getMenuCategoryVo.getPartnerId());
memuCategoryInfoDto.setShopId(getMenuCategoryVo.getShopId());
memuCategoryInfoDto.setValid(true);
return memuCategoryInfoDto;
}
public GetProductDto convert2ProductDto(GetProductVo getProductVo) {
GetProductDto getProductDto = BeanUtil.convertBean(getProductVo, GetProductDto::new);
getProductDto.setMenuCategoryId(getProductVo.getNodeId());
getProductDto.setValid(true);
return getProductDto;
}
public GetProductInfoDto convert2ProductInfoDto(String partnerId, String shopId, Integer productInfoType, List<String> productIds) {
public GetProductInfoDto convert2ProductInfoDto(String partnerId, String shopId, Integer productInfoType, List<String> productIds,String menuType) {
GetProductInfoDto getProductInfoDto = new GetProductInfoDto();
getProductInfoDto.setPartnerId(partnerId);
getProductInfoDto.setShopId(shopId);
getProductInfoDto.setProductInfoType(productInfoType);
getProductInfoDto.setProductIds(productIds);
getProductInfoDto.setChannel(OrderSourceType.SAAS.getCode());
getProductInfoDto.setChannel(menuType);
return getProductInfoDto;
}
public GetProductValidateDto convert2ProductValidateDto(GetProductValidateVo getProductValidateVo) {
return BeanUtil.convertBean(getProductValidateVo, GetProductValidateDto::new);
}
public GetProductValidateDto convert2ProductValidateDto(String partnerId, String shopId, List<String> productIds) {
GetProductValidateDto getProductValidateDto = new GetProductValidateDto();
getProductValidateDto.setPartnerId(partnerId);
getProductValidateDto.setShopId(shopId);
getProductValidateDto.setProductIds(productIds);
return getProductValidateDto;
}
public SpuProductVo convert2SpuProductVo(GetMenuResponseDto.DataBean.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean productBean) {
SpuProductVo spuProductVo = BeanUtil.convertBean(productBean, SpuProductVo::new);
spuProductVo.setSpuId(productBean.getPid());
spuProductVo.setSpuName(productBean.getName());
spuProductVo.setName(productBean.getName());
spuProductVo.setStatusDesc(Optional.ofNullable(StoreItemStatus.getByCode(spuProductVo.getStatus()))
.map(StoreItemStatus::getDesc).orElse(""));
spuProductVo.setDefaultPrice(productBean.getFinalPrice());
spuProductVo.setFinalPrice(productBean.getFinalPrice());
spuProductVo.setPicture(productBean.getPicture() + "?imageView2/1/w/225/h/225/interlace/1/q/100");
spuProductVo.setStockLimit(productBean.getStockLimit());
List<ProductGroupDto> productGroups = Lists.newArrayList();
if (CollectionUtils.isNotEmpty(productBean.getProductAttributeGroupList())) {
productBean.getProductAttributeGroupList().sort(Comparator.comparing(ProductBean.ProductAttributeGroupListBean::getAttributeType));
for (ProductBean.ProductAttributeGroupListBean attribute : productBean.getProductAttributeGroupList()) {
ProductGroupDto productGroupDto = new ProductGroupDto();
productGroupDto.setName(attribute.getAttributeName());
List<ProductGroupDto.GroupDetailBean> groupDetailBeans = Lists.newArrayList();
if (CollectionUtils.isNotEmpty(attribute.getAttributeValues())) {
for (ProductBean.ProductAttributeGroupListBean.AttributeValueBean attributeValue : attribute.getAttributeValues()) {
/**
* 过滤下架的规格和售罄的规格
*/
if (StoreItemStatus.PUT_ON_SALE.getCode().equals(attributeValue.getStatus())) {
ProductGroupDto.GroupDetailBean groupDetailBean = new ProductGroupDto.GroupDetailBean();
groupDetailBean.setGroupId(attribute.getAttributeType().toString());
groupDetailBean.setProductId(attributeValue.getAttributeId());
groupDetailBean.setProductName(attributeValue.getAttributeValue());
groupDetailBean.setSequence(attributeValue.getSequence());
groupDetailBean.setProductFinalPrice(attributeValue.getPrice());
groupDetailBean.setProductPrice(attributeValue.getPrice());
groupDetailBean.setStatus(attributeValue.getStatus());
groupDetailBean.setStatusDesc(Optional.ofNullable(StoreItemStatus.getByCode(attributeValue.getStatus()))
.map(StoreItemStatus::getDesc).orElse(""));
groupDetailBeans.add(groupDetailBean);
}
}
}
productGroupDto.setGroupDetail(groupDetailBeans);
//如果规格为空则不返回该规格
if (CollectionUtils.isNotEmpty(groupDetailBeans)) {
productGroups.add(productGroupDto);
}
}
}
//设置是否包括多规格
if (CollectionUtils.isNotEmpty(productBean.getProductAttributeGroupList()) || ProductType.HAVESPEC.getCode() == productBean.getType()) {
spuProductVo.setType(8);
spuProductVo.setHasSku(true);
} else {
spuProductVo.setHasSku(false);
}
//TODO sku信息
Set<String> skuSpecValueIds = Sets.newHashSet();
List<SpuProductVo.SkuProductVo> skuList = Lists.newArrayList();
List<ProductBean.SkuProductBean> skuProductBeans = productBean.getSkuList();
if (CollectionUtils.isNotEmpty(skuProductBeans)) {
for (ProductBean.SkuProductBean skuProductBean : skuProductBeans) {
/**
* 过滤下架的规格
*/
if (StoreItemStatus.PUT_ON_SALE.getCode().equals(skuProductBean.getStatus())) {
SpuProductVo.SkuProductVo skuProductVo = new SpuProductVo.SkuProductVo();
skuProductVo.setSkuId(skuProductBean.getSkuId());
skuProductVo.setSkuName(skuProductBean.getProductName());
skuProductVo.setOriginalPrice(skuProductBean.getOriginalPrice());
skuProductVo.setFinalPrice(skuProductBean.getFinalPrice());
skuProductVo.setStatus(skuProductBean.getStatus());
skuProductVo.setStatusDesc(Optional.ofNullable(StoreItemStatus.getByCode(skuProductBean.getStatus())).map(StoreItemStatus::getDesc).orElse(""));
// skuProductVo.setStatus(skuProductBean());
List<ProductBean.SkuProductBean.SkuSpecValue> skuSpecValueDtos = skuProductBean.getSkuSpecValues();
List<String> specValueIdList = Lists.newArrayList();
if (CollectionUtils.isNotEmpty(skuSpecValueDtos)) {
skuSpecValueDtos.forEach(skuSpecValueDto -> {
specValueIdList.add(skuSpecValueDto.getSpecValueId());
skuSpecValueIds.add(skuSpecValueDto.getSpecValueId());
});
}
String[] specValueIdArry = specValueIdList.toArray(new String[0]);
specValueIdList.clear();
skuProductVo.setSpecValueId(specValueIdArry);
skuList.add(skuProductVo);
}
}
}
//TODO 多规格信息
List<ProductBean.SpecificationGroupBean> specificationGroupList = productBean.getSpecificationGroupList();
//规格处理
List<SpuProductVo.SpecificationGroupVo> specificationGroupVos = redundantSpecification(skuSpecValueIds,specificationGroupList);
if (CollectionUtils.isNotEmpty(productBean.getProductPictureList())) {
spuProductVo.setPicture(productBean.getProductPictureList().get(0).getUrl() + "?imageView2/1/w/225/h/225/interlace/1/q/100");
}
//商品标签信息
List<SpuProductVo.ProductLabel> productLabels = Lists.newArrayList();
if (CollectionUtils.isNotEmpty(productBean.getLabelNames())) {
productBean.getLabelNames().forEach(label -> {
SpuProductVo.ProductLabel productLabel = new SpuProductVo.ProductLabel();
productLabel.setLabelName(label.getName());
productLabels.add(productLabel);
});
}
spuProductVo.setSkuList(skuList);
spuProductVo.setSpecificationGroupList(specificationGroupVos);
spuProductVo.setProductLabels(productLabels);
spuProductVo.setProductGroups(productGroups);
return spuProductVo;
}
public ProductVo convert2ProductVo(GetMenuResponseDto.DataBean.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean productBean) {
ProductVo productVo = BeanUtil.convertBean(productBean, ProductVo::new);
productVo.setStatusDesc(Optional.ofNullable(StoreItemStatus.getByCode(productVo.getStatus()))
.map(StoreItemStatus::getDesc).orElse(""));
List<ProductGroupDto> productGroups = Lists.newArrayList();
if (CollectionUtils.isNotEmpty(productBean.getProductAttributeGroupList())) {
productBean.getProductAttributeGroupList().sort(Comparator.comparing(ProductBean.ProductAttributeGroupListBean::getAttributeType));
for (ProductBean.ProductAttributeGroupListBean attribute : productBean.getProductAttributeGroupList()) {
ProductGroupDto productGroupDto = new ProductGroupDto();
productGroupDto.setName(attribute.getAttributeName());
List<ProductGroupDto.GroupDetailBean> groupDetailBeans = Lists.newArrayList();
if (CollectionUtils.isNotEmpty(attribute.getAttributeValues())) {
for (ProductBean.ProductAttributeGroupListBean.AttributeValueBean attributeValue : attribute.getAttributeValues()) {
/**
* 过滤下架的规格和售罄的规格
*/
if (StoreItemStatus.PUT_ON_SALE.getCode().equals(attributeValue.getStatus())) {
ProductGroupDto.GroupDetailBean groupDetailBean = new ProductGroupDto.GroupDetailBean();
groupDetailBean.setGroupId(attribute.getAttributeType().toString());
groupDetailBean.setProductId(attributeValue.getAttributeId());
groupDetailBean.setProductName(attributeValue.getAttributeValue());
groupDetailBean.setSequence(attributeValue.getSequence());
groupDetailBean.setProductFinalPrice(attributeValue.getPrice());
groupDetailBean.setProductPrice(attributeValue.getPrice());
groupDetailBean.setStatus(attributeValue.getStatus());
groupDetailBean.setStatusDesc(Optional.ofNullable(StoreItemStatus.getByCode(attributeValue.getStatus()))
.map(StoreItemStatus::getDesc).orElse(""));
groupDetailBeans.add(groupDetailBean);
}
}
}
productGroupDto.setGroupDetail(groupDetailBeans);
//如果规格为空则不返回该规格
if (CollectionUtils.isNotEmpty(groupDetailBeans)) {
productGroups.add(productGroupDto);
}
}
//设置规格类型
productVo.setType(8);
}
if (CollectionUtils.isNotEmpty(productBean.getProductPictureList())) {
productVo.setPicture(productBean.getProductPictureList().get(0).getUrl());
}
//商品标签信息
List<ProductVo.ProductLabel> productLabels = Lists.newArrayList();
if (CollectionUtils.isNotEmpty(productBean.getLabelNames())) {
productBean.getLabelNames().forEach(label -> {
ProductVo.ProductLabel productLabel = new ProductVo.ProductLabel();
productLabel.setLabelName(label.getName());
productLabels.add(productLabel);
});
}
productVo.setProductLabels(productLabels);
productVo.setProductGroups(productGroups);
return productVo;
}
/**
* 处理多余规格
* 多规格商品的下架或者不是限时特购商品去除不需要的规格值
*
* @param skuSpecValueIds sku商品的规格id集合
* @param specificationGroupList sku商品的规格对象集合
* @return
*/
public List<SpuProductVo.SpecificationGroupVo> redundantSpecification(Set<String> skuSpecValueIds,List<ProductBean.SpecificationGroupBean> specificationGroupList) {
//TODO 多规格信息
List<SpuProductVo.SpecificationGroupVo> specificationGroupVos = Lists.newArrayList();
if (CollectionUtils.isNotEmpty(specificationGroupList)) {
specificationGroupList.forEach(specificationGroupBean -> {
SpuProductVo.SpecificationGroupVo specificationGroupVo = new SpuProductVo.SpecificationGroupVo();
specificationGroupVo.setSpecId(specificationGroupBean.getSpecId());
specificationGroupVo.setSpecName(specificationGroupBean.getSpecName());
List<ProductBean.SpecificationGroupBean.SpecValueVo> specValueDtos = specificationGroupBean.getSpecValueVos();
List<SpuProductVo.SpecificationGroupVo.SpecValueVo> specValueVos = Lists.newArrayList();
if (CollectionUtils.isNotEmpty(specValueDtos)) {
specValueDtos.forEach(specValueDto -> {
//过滤在sku中没有上架状态是规格
if (skuSpecValueIds.contains(specValueDto.getSpecValueId())) {
SpuProductVo.SpecificationGroupVo.SpecValueVo specValueVo = new SpuProductVo.SpecificationGroupVo.SpecValueVo();
specValueVo.setSpecId(specValueDto.getSpecId());
specValueVo.setSpecValueId(specValueDto.getSpecValueId());
specValueVo.setSpecValueName(specValueDto.getSpecValue());
specValueVos.add(specValueVo);
}
});
}
specificationGroupVo.setSpecValueVos(specValueVos);
if (CollectionUtils.isNotEmpty(specValueVos)) {
specificationGroupVos.add(specificationGroupVo);
}
});
}
return specificationGroupVos;
}
}
package cn.freemud.enums;
import java.util.Arrays;
public enum BusinessTypeEnum {
SAAS_PICKUP(0,"saas","saas"),
SAAS_DELIVERY(1,"saasdelivery","saasdelivery"),
SAAS_MALL(2,"saasmall","saasmall"),
SAAS_WC(3,"wc","wc");
private Integer type;
private String name;
private String code;
BusinessTypeEnum(Integer type, String name, String code) {
this.type = type;
this.name = name;
this.code = code;
}
public static BusinessTypeEnum getByType(Integer type) {
return Arrays.stream(BusinessTypeEnum.values())
.filter(e -> e.type.equals(type))
.findFirst().orElse(BusinessTypeEnum.SAAS_PICKUP);
}
public static BusinessTypeEnum getByType(String type) {
return Arrays.stream(BusinessTypeEnum.values())
.filter(e -> e.name.equals(type))
.findFirst().orElse(BusinessTypeEnum.SAAS_PICKUP);
}
public static String getByCode(String code){
return Arrays.stream(BusinessTypeEnum.values())
.filter(e -> e.code.equals(code))
.findFirst().orElse(BusinessTypeEnum.SAAS_PICKUP).getCode();
}
public Integer getType() {
return type;
}
public void setType(Integer type) {
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
}
......@@ -13,14 +13,5 @@ import java.util.Map;
* @date 2018/05/08
*/
public interface ItemService {
/**
* 通过sku或单品组装MAP商品详情信息
* @param pids skuId
* @param partnerId
* @param storeId
* @return key = skuid
*/
Map<String, GetProductsVo> getProducts(List<String> pids, String partnerId, String storeId);
}
......@@ -275,19 +275,6 @@ public class CheckOrder {
return pushOrderTime;
}
public List<String> getStockProductIdList(CreateOrderVo createOrderVo, ShoppingCartGoodsDto shoppingCartGoodsDto) {
List<String> stockProductIds = Lists.newArrayList();
GetProductStockResponseDto stockResponseDto = checkProductStock(shoppingCartGoodsDto, createOrderVo.getPartnerId(), createOrderVo.getShopId());
if (!ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(stockResponseDto.getCode())) {
throw new ServiceException(ResponseResult.SHOPPING_CART_STOCK_NOT_HAVE);
}
if (CollectionUtils.isNotEmpty(stockResponseDto.getResult())) {
stockProductIds = stockResponseDto.getResult().stream().map(p -> p.getPid().toString()).collect(Collectors.toList());
LogUtil.debug("stockProductIds", gson.toJson(stockProductIds), null);
}
return stockProductIds;
}
public ShoppingCartGoodsDto getShoppingCartGoodsDto(CreateOrderVo createOrderVo) {
ShoppingCartInfoRequestVo.BuyMemberCard buyMemberCard = null;
if (createOrderVo.getBuyMemberCard() != null) {
......@@ -353,17 +340,6 @@ public class CheckOrder {
}
/**
* 获取桌号
*/
public String getTableNumber(String partnerId, String shopId, String tableNumber) {
StoreTableNumber storeTableNumber = storeTableNumberManager.selectOne(partnerId, shopId, tableNumber);
if (storeTableNumber == null) {
return "";
}
return tableNumber;
}
/**
* 获取门店配送信息
*/
public StoreDeliveryInfoDto getStoreDeliveryInfo(StoreResponse.BizVO storeResponseDto,
......@@ -472,80 +448,6 @@ public class CheckOrder {
createOrderVo.setUserDeliveryInfoDto(userDeliveryInfoDto);
}
public GetProductStockResponseDto checkProductStock(ShoppingCartGoodsDto shoppingCartGoodsDto, String partnerId, String storeId) {
List<Long> skuIds = new ArrayList<>();
for (ShoppingCartGoodsDto.CartGoodsDetailDto goodsDetailDto : shoppingCartGoodsDto.getProducts()) {
//1.9.2兼容套餐商品改动 套餐类子集商品不校验库存
if(StringUtils.isBlank(goodsDetailDto.getParentProductId())){
skuIds.add(Long.parseLong(goodsDetailDto.getSkuId()));
}
}
GetProductStockRequestDto requestDto = new GetProductStockRequestDto();
requestDto.setChannel("saas");
requestDto.setPartnerId(partnerId);
requestDto.setStoreId(storeId);
requestDto.setProductIds(skuIds);
// TODO: 2019/5/13 SDK无该方法,暂不修改
GetProductStockResponseDto stocks = stockClient.getAvailableStocks(requestDto);
LogUtil.debug("checkProductStock_end", gson.toJson(requestDto), gson.toJson(stocks));
if (stocks == null) {
throw new ServiceException(ResponseResult.SHOPPING_CART_STOCK_NOT_HAVE);
}
if (ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(stocks.getCode())
&& CollectionUtils.isNotEmpty(stocks.getResult())) {
String msg = "";
for (GetProductStockResponseDto.DataBean stock : stocks.getResult()) {
for (ShoppingCartGoodsDto.CartGoodsDetailDto goodsDetailDto : shoppingCartGoodsDto.getProducts()) {
//1.9.2兼容套餐商品改动 套餐类子集商品不校验库存
if(StringUtils.isBlank(goodsDetailDto.getParentProductId())) continue;
//累计买一赠一商品
List<ShoppingCartGoodsDto.CartGoodsDetailDto> products = shoppingCartGoodsDto.getProducts().stream().filter(p -> p.getSkuId().equals(goodsDetailDto.getSkuId())).collect(Collectors.toList());
Integer qty = 0;
if (CollectionUtils.isNotEmpty(products)) {
qty = products.stream().mapToInt(ShoppingCartGoodsDto.CartGoodsDetailDto::getQty).sum();
}
if (stock.getPid().toString().equals(goodsDetailDto.getSkuId())
&& stock.getQty() < qty) {
msg += msg + goodsDetailDto.getSkuName();
break;
}
}
}
if (!msg.isEmpty()) {
throw new ServiceException(ResponseResult.SHOPPING_CART_STOCK_NOT_HAVE, msg + "库存不足");
}
}
return stocks;
}
/**
* 获取商品第三方商品编号
*
*/
// private CreateOrderDto getProductCustomerCode(CreateOrderDto createOrderDto) {
// List<String> pids = new ArrayList<>();
// for (cn.freemud.entities.dto.order.CreateOrderProductDto productDto : createOrderDto.getProducts()) {
// pids.add(productDto.getSpecification());
// }
// Map<String, GetProductsVo> products = itemService.getProducts(pids, createOrderDto.getCompanyId(), createOrderDto.getShopId());
// if (products.isEmpty()) {
// return createOrderDto;
// }
// for (String pid : pids) {
// for (cn.freemud.entities.dto.order.CreateOrderProductDto productDto : createOrderDto.getProducts()) {
// if (pid.equals(productDto.getSpecification())) {
// if (products.get(pid) != null) {
// productDto.setCustomerCode(products.get(pid).getCustomerCode());
// } else {
// productDto.setCustomerCode("");
// LogUtil.info("getProducts_exception", JSONObject.toJSONString(pids), JSONObject.toJSONString(products));
// }
// }
// }
// }
// return createOrderDto;
// }
public void checkCardCode(String partnerId,String memberId,String cardCode,String trackingNo){
if(StringUtils.isBlank(cardCode)){
......
......@@ -43,84 +43,12 @@ public class ItemServiceImpl implements ItemService{
@Autowired
private StoreItemAdapter storeItemAdapter;
@Override
public Map<String, GetProductsVo> getProducts(List<String> pids, String partnerId, String storeId) {
Map<String, GetProductsVo> resultMap = new HashMap<>();
if (CollectionUtils.isEmpty(pids)) {
return resultMap;
}
List<String> skuIds = Lists.newArrayList();
//查询商品详情
GetProductInfoDto getProductInfoDto = storeItemAdapter.convert2ProductInfoDto(partnerId, storeId, ProductInfoType.ALL.getCode(), pids);
// log.info("start:{}", JSON.toJSONString(getProductInfoDto));
ProductInfosDto productInfosDto = storeItemClient.listProductInfos(getProductInfoDto);
// log.info("end:{}", JSON.toJSONString(productInfosDto));
LogUtil.info("storeItemClient_listProductInfos", gson.toJson(getProductInfoDto), gson.toJson(productInfosDto));
if (ResponseCodeConstant.RESPONSE_SUCCESS.equals(productInfosDto.getErrcode())
&& productInfosDto.getData() != null
&& CollectionUtils.isNotEmpty(productInfosDto.getData().getProducts())) {
productInfosDto.getData().getProducts().parallelStream().forEach(productBean -> {
//多规格获取sku信息
GetProductsVo getProductsVo = new GetProductsVo();
getProductsVo.setSkuId(productBean.getPid());
getProductsVo.setSkuName(productBean.getName());
String picture = CollectionUtils.isNotEmpty(productBean.getProductPictureList())
? productBean.getProductPictureList().get(0).getUrl() : null;
getProductsVo.setSpuId(productBean.getPid());
getProductsVo.setSpuName(productBean.getName());
getProductsVo.setSpuPicture(picture);
getProductsVo.setOriginalPrice(productBean.getOriginalPrice());
getProductsVo.setFinalPrice(productBean.getFinalPrice());
getProductsVo.setProductAttributeGroupList(productBean.getProductAttributeGroupList());
getProductsVo.setStatus(productBean.getStatus());
getProductsVo.setStock(productBean.getStock());
getProductsVo.setStockLimit(productBean.getStockLimit());
getProductsVo.setCustomerCode(productBean.getCustomerCode());
getProductsVo.setProductCode(productBean.getProductCode());
resultMap.put(productBean.getPid(), getProductsVo);
getProductsVo.setType(1);
// 规格ID 剔除单品
if (Objects.equals(productBean.getIsSkuProduct(), YesOrNoEnum.YES.getCode())) {
getProductsVo.setType(10);
skuIds.add(productBean.getPid());
}
});
}
if (CollectionUtils.isEmpty(skuIds)) {
return resultMap;
}
// 通过skuid查询spuid
GetSpuIdsBySkuIdsDto bySkuIdsDto = new GetSpuIdsBySkuIdsDto();
bySkuIdsDto.setProductIds(skuIds);
bySkuIdsDto.setPartnerId(partnerId);
ProductListDto productListDto = storeItemClient.getSpuIdsBySkuIds(bySkuIdsDto);
if (ResponseCodeConstant.RESPONSE_SUCCESS.equals(productListDto.getErrcode())
&& CollectionUtils.isNotEmpty(productListDto.getData())) {
productListDto.getData().parallelStream().forEach(product -> {
product.getSkuList().parallelStream().forEach(skuProductBean -> {
if (resultMap.get(skuProductBean.getSkuId()) != null) {
GetProductsVo getProductsVo = resultMap.get(skuProductBean.getSkuId());
getProductsVo.setSpuId(product.getPid());
getProductsVo.setSpuName(product.getName());
String picture = CollectionUtils.isNotEmpty(product.getProductPictureList())
? product.getProductPictureList().get(0).getUrl() : product.getPicture();
getProductsVo.setSpuPicture(picture);
getProductsVo.setStatus(product.getStatus());
resultMap.put(skuProductBean.getSkuId(), getProductsVo);
}
});
});
}
return resultMap;
}
/**
* 传spuid集合查询所有里面所有sku商品信息
* 包括商品的套餐子商品
* 返回商品的第三方编号(唯一)、第三方货号、第三方规格id,第三方属性id
*/
public Map<String, GetProductsVo> getSpuProducts(List<String> spuIds, String partnerId, String storeId) {
public Map<String, GetProductsVo> getSpuProducts(List<String> spuIds, String partnerId, String storeId,String menuType) {
Map<String, GetProductsVo> resultMap = new HashMap<>();
if (CollectionUtils.isEmpty(spuIds)) {
return resultMap;
......@@ -128,7 +56,7 @@ public class ItemServiceImpl implements ItemService{
//去重
List<String> result = spuIds.stream().distinct().collect(Collectors.toList());
//查询商品详情
GetProductInfoDto getProductInfoDto = storeItemAdapter.convert2ProductInfoDto(partnerId, storeId, ProductInfoType.ALL.getCode(), result);
GetProductInfoDto getProductInfoDto = storeItemAdapter.convert2ProductInfoDto(partnerId, storeId, ProductInfoType.ALL.getCode(), result,menuType);
ProductInfosDto productInfosDto = storeItemClient.listProductInfos(getProductInfoDto);
LogUtil.info("storeItemClient_listProductInfos", gson.toJson(getProductInfoDto), gson.toJson(productInfosDto));
if (ResponseCodeConstant.RESPONSE_SUCCESS.equals(productInfosDto.getErrcode()) && productInfosDto.getData() != null
......
......@@ -1593,7 +1593,7 @@ public class OrderServiceImpl implements Orderservice {
for (CreateOrderProductRequest productDto : productOrderInfoList.get(0).getProducts()) {
pids.add(productDto.getProductId());
}
Map<String, GetProductsVo> products = itemService.getSpuProducts(pids, fatherSonOrderRequest.getPartnerId(), productOrderInfoList.get(0).getShopId());
Map<String, GetProductsVo> products = itemService.getSpuProducts(pids, fatherSonOrderRequest.getPartnerId(), productOrderInfoList.get(0).getShopId(),fatherSonOrderRequest.getMenuType());
if (products.isEmpty()) {
return fatherSonOrderRequest;
}
......@@ -1639,7 +1639,7 @@ public class OrderServiceImpl implements Orderservice {
for (CreateOrderProductRequest productDto : createOrderDto.getProducts()) {
spuIds.add(productDto.getProductId());
}
Map<String, GetProductsVo> products = itemService.getSpuProducts(spuIds, createOrderDto.getCompanyId(), createOrderDto.getShopId());
Map<String, GetProductsVo> products = itemService.getSpuProducts(spuIds, createOrderDto.getCompanyId(), createOrderDto.getShopId(),createOrderDto.getMenuType());
if (products.isEmpty()) {
return createOrderDto;
}
......
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