Commit 47cb9077 by shuhu.hou

Merge branch 'feature/1.9.10-购物车接口修改渠道字段-海波' into develop

# Conflicts:
#	assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/order/BaseCreateOrderRequest.java
#	assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/service/order/OrderCenterSdkServiceImpl.java
#	shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
parents 29eb8dc7 6b000aca
......@@ -1387,9 +1387,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());
......
......@@ -156,6 +156,11 @@ public class BaseCreateOrderRequest extends BaseConfig {
*/
private String region;
/**
* 订单渠道
*/
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 {
/**
......
......@@ -134,7 +134,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);
}
......@@ -154,8 +154,8 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
return CreateFatherSonOrderResponse.error("500", "");
}
CreateFatherSonOrderRequest.OrderInfo productOrderRequest = createFatherSonOrderRequest.getOrderInfoList().stream().filter(orderBeanTemp -> 1 == orderBeanTemp.getBizType()).collect(Collectors.toList()).get(0);
BaseOrderResponse baseOrderResponse = updateStockAndScore(productOrderInfo.get(0), productOrderRequest.getProducts(), productOrderRequest.getActivityUpdateStockRequest(), productOrderRequest.getAccounts(),
createFatherSonOrderRequest.getMqMessageRequest());
BaseOrderResponse baseOrderResponse =updateStockAndScore(productOrderInfo.get(0), productOrderRequest.getProducts(), productOrderRequest.getActivityUpdateStockRequest(), productOrderRequest.getAccounts(),
createFatherSonOrderRequest.getMqMessageRequest(),createFatherSonOrderRequest.getMenuType());
if (!RESPONSE_SUCCESS.equals(baseOrderResponse.getErrcode())) {
return CreateFatherSonOrderResponse.error(baseOrderResponse.getErrcode().toString(), baseOrderResponse.getErrmsg());
}
......@@ -175,9 +175,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(),
......
......@@ -120,6 +120,7 @@ public class ShoppingCartAdapter {
request.setPartnerId(checkCartRequest.getPartnerId());
request.setStoreId(checkCartRequest.getStoreId());
request.setGoodsIds(goodsIds.stream().distinct().collect(Collectors.toList()));
request.setMenuType(checkCartRequest.getMenuType());
return request;
}
......
......@@ -30,6 +30,7 @@ import com.freemud.application.sdk.api.productcenter.service.ProductService;
import com.freemud.sdk.api.assortment.shoppingcart.adapter.ShoppingCartAdapter;
import com.freemud.sdk.api.assortment.shoppingcart.constant.*;
import com.freemud.sdk.api.assortment.shoppingcart.domain.*;
import com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum;
import com.freemud.sdk.api.assortment.shoppingcart.request.CheckCartRequest;
import com.freemud.sdk.api.assortment.shoppingcart.request.GetProductInfoRequest;
import com.freemud.sdk.api.assortment.shoppingcart.util.CartResponseUtil;
......@@ -141,7 +142,8 @@ public interface ShoppingCartBaseService {
.map(CartGoods::getSpuId).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(spuIds)) {
Map<String, GetMenuByIdsResponseDto.DataBean.MenuDetailDto> menuDetailDtoMap = checkMenuProducts(checkCartRequest.getPartnerId(), checkCartRequest.getStoreId(), spuIds, checkCartRequest.getTrackingNo());
Map<String, GetMenuByIdsResponseDto.DataBean.MenuDetailDto> menuDetailDtoMap = checkMenuProducts(checkCartRequest.getPartnerId()
, checkCartRequest.getStoreId(), spuIds, checkCartRequest.getTrackingNo(), BusinessTypeEnum.getByType(checkCartRequest.getMenuType()).getCode());
// 校验购物车商品是否在菜单
Set<String> keySet = null;
if (menuDetailDtoMap == null || !(keySet = menuDetailDtoMap.keySet()).containsAll(spuIds)) {
......@@ -371,14 +373,14 @@ public interface ShoppingCartBaseService {
default Map<String, GetMenuByIdsResponseDto.DataBean.MenuDetailDto> checkMenuProducts(String partnerId,
String shopId,
List<String> productIds, String trackingNo) {
List<String> productIds, String trackingNo,String menuType) {
Map<String, GetMenuByIdsResponseDto.DataBean.MenuDetailDto> menuDetailDtosMap = new HashMap<>();
//查询spu商品是否在菜单
GetMenuCategoryByIdsRequest getMenuCategoryByIdsDto = GetMenuCategoryByIdsRequest.builder()
.businessDate(DateTimeUtils.getCurrentDateTimeStr())
.channelType(OrderChannelType.SAAS.getCode())
.channelType(menuType)
.partnerId(partnerId)
.shopId(shopId)
.productIds(productIds).build();
......
......@@ -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);
}
......@@ -281,19 +281,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) {
......@@ -359,17 +346,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,
......@@ -478,80 +454,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
......
......@@ -1568,7 +1568,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;
}
......@@ -1614,7 +1614,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;
}
......
......@@ -50,14 +50,14 @@ public class StoreItemAdapter {
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);
// 商品服务增加channel
getProductInfoDto.setChannel(OrderSourceType.SAAS.getCode());
getProductInfoDto.setChannel(menuType);
return getProductInfoDto;
}
......
......@@ -14,4 +14,5 @@ public class CheckSpqInfoRequestDto {
* 券code
*/
private String couponCode;
private String menuType;
}
......@@ -28,6 +28,6 @@ public interface ItemService {
* @param storeId
* @return key = skuid
*/
Map<String, GetProductsVo> getProducts(List<String> pids, String partnerId, String storeId);
Map<String, GetProductsVo> getProducts(List<String> pids, String partnerId, String storeId ,String menuType);
}
......@@ -27,5 +27,5 @@ public interface ProductService {
* @param cartGoodsList
* @return
*/
boolean hasRequiredProducts(String partnerId, String storeId, List<CartGoods> cartGoodsList);
boolean hasRequiredProducts(String partnerId, String storeId, List<CartGoods> cartGoodsList,String menuType);
}
......@@ -95,7 +95,7 @@ public interface ShoppingCartNewService {
Integer orderType,
List<CartGoods> cartGoodsList,
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons,
List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList);
List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList,String menuType);
List<CartGoods> updateCartGoodsLegal(CartGoods cartGoods, String userId, ShoppingCartGoodsBaseResponseVo shoppingCartGoodsResponseVo, AddShoppingCartGoodsRequestVo addShoppingCartGoodsRequestVo, List<CartGoods> oldAllCartGoodsList);
......@@ -109,9 +109,9 @@ public interface ShoppingCartNewService {
* @param productIds
* @return
*/
default String validCoupon(String partnerId, String storeId, String spuId, List<Long> productIds) {
default String validCoupon(String partnerId, String storeId, String spuId, List<Long> productIds,String menuType) {
String spuId2;
CheckSpqInfoRequestDto checkSpqInfoRequestDto = new CheckSpqInfoRequestDto(partnerId, storeId, spuId.substring(CommonsConstant.COUPON_PREFIX.length()));
CheckSpqInfoRequestDto checkSpqInfoRequestDto = new CheckSpqInfoRequestDto(partnerId, storeId, spuId.substring(CommonsConstant.COUPON_PREFIX.length()),menuType);
CouponService couponService = SDKCommonBaseContextWare.getBean(CouponService.class);
CheckSpqInfoResponseDto checkSpqInfoResponseDto = couponService.checkSpqInfo(checkSpqInfoRequestDto);
if (checkSpqInfoResponseDto == null) {
......
......@@ -15,6 +15,7 @@ import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.IPromotionService;
import cn.freemud.service.ItemService;
import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO;
import com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum;
import com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils;
......@@ -206,7 +207,7 @@ public class AdditionalPromotionService implements IPromotionService {
Map<String, ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity.SendGoods> sendGoodsMap = sendActivity1.getSendGoods().stream().collect(Collectors.toMap(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity.SendGoods::getGoodsId, Function.identity(), (k1, k2) -> k1));
//添加商品行
List<String> productIds = premiumExchangeActivity.getProducts().parallelStream().map(p -> StringUtils.isEmpty(p.getSkuId()) ? p.getSpuId() : p.getSkuId()).collect(Collectors.toList());
Map<String, GetProductsVo> getProductsVoMap = itemService.getProducts(productIds, shoppingCartInfoRequestVo.getPartnerId(), shoppingCartInfoRequestVo.getShopId());
Map<String, GetProductsVo> getProductsVoMap = itemService.getProducts(productIds, shoppingCartInfoRequestVo.getPartnerId(), shoppingCartInfoRequestVo.getShopId(), BusinessTypeEnum.getByType(shoppingCartInfoRequestVo.getMenuType()).getCode());
// 获取计算返回的价格
Long originalTotalAmount = shoppingCartGoodsResponseVo.getOriginalTotalAmount();
Long totalAmount = shoppingCartGoodsResponseVo.getTotalAmount();
......
......@@ -4,7 +4,6 @@ import ch.qos.logback.classic.Level;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.vo.CartGoods;
import cn.freemud.entities.vo.ShoppingCartGoodsBaseResponseVo;
import cn.freemud.enums.BusinessTypeEnum;
import cn.freemud.enums.ResponseResult;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.utils.LogUtil;
......@@ -15,6 +14,7 @@ import com.freemud.application.sdk.api.base.SDKCommonBaseContextWare;
import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO;
import com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum;
import com.freemud.sdk.api.assortment.shoppingcart.request.CheckCartRequest;
import com.freemud.sdk.api.assortment.shoppingcart.request.GetProductInfoRequest;
import com.freemud.sdk.api.assortment.shoppingcart.service.ShoppingCartBaseService;
......
......@@ -588,7 +588,7 @@ public class CouponServiceImpl implements CouponService {
String skuId = couponDetailResponseDto.getDetails().get(0).getActiveProduct().get(0).getProductIdPartner();
skuIds.add(String.valueOf(skuId));
//TODO 通过skuid查询spuid
Map<String, GetProductsVo> productsVoMap = itemService.getProducts(skuIds, partnerId, storeId);
Map<String, GetProductsVo> productsVoMap = itemService.getProducts(skuIds, partnerId, storeId , requestDto.getMenuType());
GetProductsVo productsVo = productsVoMap.get(skuId);
if (null == productsVo || !Objects.equals(productsVo.getStatus(), StoreItemStatus.PUT_ON_SALE.getCode())) {
return null;
......
......@@ -63,7 +63,7 @@ public class ItemServiceImpl implements ItemService {
public BaseResponse<Map<String, ProductBean>> getProducts(String partnerId, String shopId, List<String> productIds, boolean reflash) {
public BaseResponse<Map<String, ProductBean>> getProducts(String partnerId, String shopId, List<String> productIds, boolean reflash ,String menuType) {
Map<String, ProductBean> newProductBeanMap = Maps.newTreeMap();
if (CollectionUtils.isEmpty(productIds)) {
return ResponseUtil.success(newProductBeanMap);
......@@ -75,7 +75,7 @@ public class ItemServiceImpl implements ItemService {
return ResponseUtil.success(productBeanMap);
}
GetProductValidateDto getProductValidateDto = storeItemAdapter.convert2ProductValidateDto(partnerId, shopId, productIds);
GetProductInfoDto getProductInfoDto = storeItemAdapter.convert2ProductInfoDto(partnerId, shopId, ProductInfoType.ALL.getCode(), productIds);
GetProductInfoDto getProductInfoDto = storeItemAdapter.convert2ProductInfoDto(partnerId, shopId, ProductInfoType.ALL.getCode(), productIds,menuType);
ProductInfosDto productInfosDto = storeItemClient.listProductInfos(getProductInfoDto);
if (!RESPONSE_SUCCESS_CODE.equals(productInfosDto.getErrcode()) || CollectionUtils.isEmpty(productInfosDto.getData().getProducts())) {
log.error("getShoppingCartInfo checkProductValidate is error , getProductValidateDto:{} , productCheckVaildDto:{}",
......@@ -141,14 +141,14 @@ public class ItemServiceImpl implements ItemService {
}
@Override
public Map<String, GetProductsVo> getProducts(List<String> pids, String partnerId, String storeId) {
public Map<String, GetProductsVo> getProducts(List<String> pids, String partnerId, String storeId, String menuType) {
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);
GetProductInfoDto getProductInfoDto = storeItemAdapter.convert2ProductInfoDto(partnerId, storeId, ProductInfoType.ALL.getCode(), pids,menuType);
ProductInfosDto productInfosDto = storeItemClient.listProductInfos(getProductInfoDto);
if (ResponseCodeConstant.RESPONSE_SUCCESS.equals(productInfosDto.getErrcode())
&& productInfosDto.getData() != null
......
......@@ -33,8 +33,8 @@ public class ProductServiceImpl implements ProductService {
private ProductClient productClient;
@Override
public boolean hasRequiredProducts(String partnerId, String storeId, List<CartGoods> cartGoodsList) {
RequiredProductRequest request = RequiredProductRequest.builder().channel("saas").partnerId(partnerId).shopId(storeId).build();
public boolean hasRequiredProducts(String partnerId, String storeId, List<CartGoods> cartGoodsList,String menuType) {
RequiredProductRequest request = RequiredProductRequest.builder().channel(menuType).partnerId(partnerId).shopId(storeId).build();
ProductBaseResponse<List<String>> requiredProductList = productClient.getRequiredProductList(request);
if (null != requiredProductList && ResponseCodeConstant.RESPONSE_SUCCESS.equals(requiredProductList.getErrcode()) &&
!CollectionUtils.isEmpty(requiredProductList.getData())) {
......
......@@ -6,7 +6,6 @@ import cn.freemud.entities.dto.ActivityCalculationDiscountRequestDto;
import cn.freemud.entities.dto.ActivityCalculationDiscountResponseDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*;
import cn.freemud.enums.BusinessTypeEnum;
import cn.freemud.enums.ProductType;
import cn.freemud.enums.ResponseResult;
import cn.freemud.interceptor.ServiceException;
......@@ -29,6 +28,7 @@ import com.freemud.sdk.api.assortment.shoppingcart.constant.CartResponseConstant
import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant;
import com.freemud.sdk.api.assortment.shoppingcart.constant.MealClearOperationEnum;
import com.freemud.sdk.api.assortment.shoppingcart.domain.CartParamDto;
import com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum;
import com.freemud.sdk.api.assortment.shoppingcart.request.CheckCartRequest;
import com.freemud.sdk.api.assortment.shoppingcart.service.impl.MealCartBaseServiceImpl;
import org.apache.commons.lang.StringUtils;
......@@ -99,7 +99,7 @@ public class ShoppingCartMealServiceImpl implements ShoppingCartNewService {
productIds.add(Long.parseLong(goodsId));
} else {
//校验券是否有效
spuId2 = validCoupon(partnerId, storeId, spuId, productIds);
spuId2 = validCoupon(partnerId, storeId, spuId, productIds,BusinessTypeEnum.getByType(requestVo.getMenuType()).getCode());
}
// 获取商品信息
List<ProductBeanDTO> productBeanListSpuClass =
......@@ -491,7 +491,7 @@ public class ShoppingCartMealServiceImpl implements ShoppingCartNewService {
@Override
public ActivityCalculationDiscountResponseDto.CalculationDiscountResult
getActivityCalculationDiscountResponse(String partnerId, String storeId, String userId, String appId, Integer orderType,
List<CartGoods> cartGoodsList, List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons, List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList) {
List<CartGoods> cartGoodsList, List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons, List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList,String menuType) {
return null;
}
......
......@@ -52,6 +52,7 @@ import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant;
import com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum;
import com.freemud.sdk.api.assortment.shoppingcart.request.CheckCartRequest;
import com.freemud.sdk.api.assortment.shoppingcart.service.ShoppingCartBaseService;
import com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl;
......@@ -150,7 +151,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
request.setEncryptCode(CommonsConstant.COUPON_PREFIX + result.getCode());
// 根据skuId获取详情
Map<String, GetProductsVo> products = itemService.getProducts(Arrays.asList(request.getSkuId()), request.getPartnerId(), request.getShopId());
Map<String, GetProductsVo> products = itemService.getProducts(Arrays.asList(request.getSkuId()), request.getPartnerId(), request.getShopId(),BusinessTypeEnum.getByType(request.getMenuType()).getCode());
if (products == null || products.size() == 0) {
return ResponseUtil.error(ResponseResult.WEICHAT_PRODUCT_NOEXIST);
}
......@@ -159,7 +160,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
// 根据spu查询菜单(必须在当前菜单下才可以加入购物车)
GetMenuCategoryByIdsDto getMenuCategoryByIdsDto = GetMenuCategoryByIdsDto.builder()
.businessDate(DateUtil.convert2String(new Date(), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS))
.channelType(OrderChannelType.SAAS.getCode())
.channelType(BusinessTypeEnum.getByType(request.getMenuType()).getCode())
.partnerId(request.getPartnerId())
.shopId(request.getShopId())
.productIds(Arrays.asList(getProductsVo.getSpuId())).build();
......@@ -223,7 +224,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
productIds.add(Long.parseLong(goodsId));
} else {
//校验券是否有效
spuId2 = validCoupon(partnerId, storeId, spuId, productIds);
spuId2 = validCoupon(partnerId, storeId, spuId, productIds,BusinessTypeEnum.getByType(addShoppingCartGoodsRequestVo.getMenuType()).getCode());
}
// 获取商品详细信息
List<ProductBeanDTO> productBeanListSpuClass = assortmentSdkService.getProductsInfoSdk(partnerId, storeId
......@@ -252,7 +253,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
}
// 获取优惠信息
ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult = this.getActivityCalculationDiscountResponse(partnerId, storeId, userId, appId, addShoppingCartGoodsRequestVo.getOrderType(), allCartGoodsList);
ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult = this.getActivityCalculationDiscountResponse(partnerId, storeId, userId, appId, addShoppingCartGoodsRequestVo.getOrderType(), allCartGoodsList,BusinessTypeEnum.getByType(addShoppingCartGoodsRequestVo.getMenuType()).getCode());
// 当商品数量被设为0时
if (Objects.equals(cartGoods.getQty(), 0)) {
assortmentSdkService.updateGoodsQtyBySdk(partnerId, userId, storeId, cartGoods.getCartGoodsUid(), 0, "", shoppingCartBaseService);
......@@ -335,7 +336,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
assortmentSdkService.setShoppingCart(partnerId, storeId, userId, cartGoodsList, updateShoppingCartGoodsQtyRequestVo.getSessionId(), "", shoppingCartBaseService);
// 获取优惠信息
ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult = this.getActivityCalculationDiscountResponse(partnerId, storeId, userId, appId, updateShoppingCartGoodsQtyRequestVo.getOrderType(), cartGoodsList);
ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult = this.getActivityCalculationDiscountResponse(partnerId, storeId, userId, appId, updateShoppingCartGoodsQtyRequestVo.getOrderType(), cartGoodsList,BusinessTypeEnum.getByType(updateShoppingCartGoodsQtyRequestVo.getMenuType()).getCode());
if (calculationDiscountResult == null) {
shoppingCartGoodsResponseVo.setProducts(cartGoodsList);
// return shoppingCartGoodsResponseVo;
......@@ -369,7 +370,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
//查询商品信息
List<String> pids = new ArrayList<>();
pids.add(cartGoods.getGoodsId());
Map<String, GetProductsVo> products = itemService.getProducts(pids, partnerId, storeId);
Map<String, GetProductsVo> products = itemService.getProducts(pids, partnerId, storeId,BusinessTypeEnum.getByType(updateShoppingCartGoodsQtyRequestVo.getMenuType()).getCode());
GetProductsVo getProductsVo = products.get(cartGoods.getGoodsId());
// 商品没有库存限制
......@@ -377,7 +378,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
return;
}
GetProductStockRequestDto requestDto = new GetProductStockRequestDto();
requestDto.setChannel("saas");
requestDto.setChannel(BusinessTypeEnum.getByType(updateShoppingCartGoodsQtyRequestVo.getMenuType()).getCode());
requestDto.setPartnerId(partnerId);
requestDto.setStoreId(storeId);
requestDto.setProductIds(Collections.singletonList(Long.parseLong(cartGoods.getGoodsId())));
......@@ -413,8 +414,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
List<CartGoods> cartGoodsList = assortmentSdkService.getShoppingCart(partnerId, storeId, userId, null, "", shoppingCartBaseService);
// 如果购物车商品不为空, 则check购物车中所有商品
if (CollectionUtils.isNotEmpty(cartGoodsList)){
CheckCartRequest checkCartRequest = assortmentSdkService.checkShoppingCartSdk(cartGoodsList, partnerId, storeId,
shoppingCartGoodsResponseVo, shoppingCartInfoRequestVo.getOrderType(), "", shoppingCartInfoRequestVo.getMenuType() ,shoppingCartBaseService);
CheckCartRequest checkCartRequest = assortmentSdkService.checkShoppingCartSdk(cartGoodsList, partnerId, storeId, shoppingCartGoodsResponseVo, shoppingCartInfoRequestVo.getOrderType(), "", shoppingCartInfoRequestVo.getMenuType() ,shoppingCartBaseService);
if (checkCartRequest.getShoppingCartGoodsResponseVo() != null) {
shoppingCartGoodsResponseVo.setChanged(checkCartRequest.getShoppingCartGoodsResponseVo().getChanged());
shoppingCartGoodsResponseVo.setToastMsg(checkCartRequest.getShoppingCartGoodsResponseVo().getToastMsg());
......@@ -432,7 +432,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
coupons.add(coupon);
}
// 获取优惠信息
ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult = this.getActivityCalculationDiscountResponse(partnerId, storeId, userId, appId, shoppingCartInfoRequestVo.getOrderType(), cartGoodsList, coupons, null);
ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult = this.getActivityCalculationDiscountResponse(partnerId, storeId, userId, appId, shoppingCartInfoRequestVo.getOrderType(), cartGoodsList, coupons, null,BusinessTypeEnum.getByType(shoppingCartInfoRequestVo.getMenuType()).getCode());
if (calculationDiscountResult == null) {
shoppingCartGoodsResponseVo.setProducts(cartGoodsList);
}
......@@ -543,7 +543,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
* 1. 调用商品服务拿到该门店是否有必选商品
* 2. 如果有,则和购物车的商品对比
*/
if (productService.hasRequiredProducts(partnerId, storeId, cartGoodsList)) {
if (productService.hasRequiredProducts(partnerId, storeId, cartGoodsList,BusinessTypeEnum.getByType(shoppingCartInfoRequestVo.getMenuType()).getCode())) {
throw new ServiceException(ResponseResult.SHOPPING_CART_REQUIRED_PRODUCT_NOT_EXIST);
}
......@@ -591,7 +591,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
}
}
// 获取优惠信息
ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult = this.getActivityCalculationDiscountResponse(partnerId, storeId, userId, appId, shoppingCartInfoRequestVo.getOrderType(), cartGoodsList, coupons, sendGoodsList);
ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult = this.getActivityCalculationDiscountResponse(partnerId, storeId, userId, appId, shoppingCartInfoRequestVo.getOrderType(), cartGoodsList, coupons, sendGoodsList,BusinessTypeEnum.getByType(shoppingCartInfoRequestVo.getMenuType()).getCode());
ActivityQueryDto activityQueryDto = activityAdapter.getActivityQueryDto(partnerId, storeId, userId, appId, shoppingCartInfoRequestVo.getOrderType());
......@@ -671,8 +671,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
* @return
*/
public ActivityCalculationDiscountResponseDto.CalculationDiscountResult getActivityCalculationDiscountResponse(
String partnerId, String storeId, String userId, String wxAppid, Integer orderType, List<CartGoods> cartGoodsList) {
return getActivityCalculationDiscountResponse(partnerId, storeId, userId, wxAppid, orderType, cartGoodsList, new ArrayList<>(), new ArrayList<>());
String partnerId, String storeId, String userId, String wxAppid, Integer orderType, List<CartGoods> cartGoodsList,String menuType) {
return getActivityCalculationDiscountResponse(partnerId, storeId, userId, wxAppid, orderType, cartGoodsList, new ArrayList<>(), new ArrayList<>(),menuType);
}
/**
......@@ -687,7 +687,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
public ActivityCalculationDiscountResponseDto.CalculationDiscountResult getActivityCalculationDiscountResponse(
String partnerId, String storeId, String userId, String appId, Integer orderType, List<CartGoods> cartGoodsList,
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons,
List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList) {
List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList,String menuType) {
// 当购物车中只有商品券并且未使用折扣券时,不调用接口计算
// if (cartGoodsList.size() == 1
// && coupons.size() == 0) {
......@@ -711,7 +711,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
else {
// 商品券ID换取商品
String spqId = cartGoods.getCartGoodsUid().substring(CommonsConstant.COUPON_PREFIX.length());
CheckSpqInfoRequestDto checkSpqInfoRequestDto = new CheckSpqInfoRequestDto(partnerId, storeId, spqId);
CheckSpqInfoRequestDto checkSpqInfoRequestDto = new CheckSpqInfoRequestDto(partnerId, storeId, spqId,menuType);
CheckSpqInfoResponseDto checkSpqInfoResponseDto = couponService.checkSpqInfo(checkSpqInfoRequestDto);
// 商品券不存在时,将商品券从购物车移除
if (checkSpqInfoResponseDto == null) {
......@@ -1120,7 +1120,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
private void queryManyGoodsStocks(AddShoppingCartGoodsRequestVo addShoppingCartGoodsRequestVo, List<Long> productIds
, List<ProductBeanDTO> productBeanListSpuClass, String skuId, Integer qty) {
GetProductStockRequestDto requestDto = new GetProductStockRequestDto();
requestDto.setChannel("saas");
requestDto.setChannel(BusinessTypeEnum.getByType(addShoppingCartGoodsRequestVo.getMenuType()).getCode());
requestDto.setPartnerId(addShoppingCartGoodsRequestVo.getPartnerId());
requestDto.setStoreId(addShoppingCartGoodsRequestVo.getShopId());
requestDto.setProductIds(productIds);
......
......@@ -53,7 +53,7 @@ public class ItemServiceTest {
@Test
public void getProducts() {
Map<String, GetProductsVo> maps = itemService.getProducts(Arrays.asList("1", "2"), "1864", "1011");
Map<String, GetProductsVo> maps = itemService.getProducts(Arrays.asList("1", "2"), "1864", "1011","saas");
assertFalse(maps == null || maps.isEmpty());
}
}
......@@ -71,7 +71,7 @@ public class StoreItemServiceTest {
"125115354620910102",
"125117293812275722",
"125117293812275726",
"125117293812275730"), "1864", "1001");
"125117293812275730"), "1864", "1001","saas");
System.out.println(getProductsVoMap);
}
......
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