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;
}
......
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