Commit 4d62d7c0 by 周晓航

新增套餐商品扣减库存逻辑

parent 2bd92949
......@@ -33,6 +33,7 @@ import com.freemud.sdk.api.assortment.order.entities.promption.SubtractStockVO;
import com.freemud.sdk.api.assortment.order.enums.*;
import com.freemud.sdk.api.assortment.order.request.order.OrderDownloadRequest;
import com.freemud.sdk.api.assortment.order.request.order.*;
import com.freemud.sdk.api.assortment.order.request.stock.UpdateProductStockRequestDto;
import com.freemud.sdk.api.assortment.order.response.order.*;
import com.freemud.sdk.api.assortment.order.util.AssortOrderLogUtil;
import com.freemud.sdk.api.assortment.order.util.ClassUtils;
......@@ -65,6 +66,7 @@ public class OrderSdkAdapter {
/**
* 接单request
*
* @param operator
* @param orderBean
* @param otherParamDTO
......@@ -203,9 +205,9 @@ public class OrderSdkAdapter {
Long bLong = Long.valueOf(o2.getCreateTime());
if (bLong > aLong) {
return 1;
}else if (bLong<aLong){
} else if (bLong < aLong) {
return -1;
}else {
} else {
return 0;
}
}
......@@ -264,9 +266,9 @@ public class OrderSdkAdapter {
// 双重判断,防止前端乱传参搞事情
if (Objects.nonNull(bizType) && BizTypeEnum.ADVANCE_ORDER.getBizType().compareTo(bizType) == 0) {
request.setBizType(BizTypeEnum.ADVANCE_ORDER.getBizType());
}else if (Objects.nonNull(bizType) && BizTypeEnum.MALL.getBizType().compareTo(bizType) == 0) {
} else if (Objects.nonNull(bizType) && BizTypeEnum.MALL.getBizType().compareTo(bizType) == 0) {
request.setBizType(BizTypeEnum.MALL.getBizType());
}else {
} else {
// 20210730之前 默认设置为1
request.setBizType(CommonConstant.INTEGER_ONE);
}
......@@ -356,6 +358,7 @@ public class OrderSdkAdapter {
/**
* 美团Pos对接的时候,需要将优惠信息排序
*
* @param orderSettlementCreateReqList
* @param requestVo
* @return List<OrderSettlementCreateReq> 排序后
......@@ -1945,6 +1948,61 @@ public class OrderSdkAdapter {
return updateStocksRequest;
}
/**
* 获取扣减库存信息
*
* @param orderBean 订单信息
* @param products 订单商品列表
* @param stockChangeType 库存改变类型
* @return
*/
public UpdateProductStockRequestDto getUpdateProductStockByFeign(OrderBeanV1 orderBean, List<CreateOrderProductRequest> products, StockChangeType stockChangeType, String menuType) {
UpdateProductStockRequestDto updateStocksRequest = new UpdateProductStockRequestDto();
updateStocksRequest.setChannel(menuType);
updateStocksRequest.setChangeType(stockChangeType.getCode());
updateStocksRequest.setIsOversold(0);
updateStocksRequest.setPartnerId(orderBean.getCompanyId());
updateStocksRequest.setStoreId(orderBean.getShopId());
updateStocksRequest.setTransNo(orderBean.getOid());
updateStocksRequest.setTransTime(DateUtil.convert2String(new Date(), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
List<UpdateProductStockRequestDto.ProductStock> productStocks = new ArrayList<>();
if (CollectionUtils.isNotEmpty(products)) {
products.forEach(product -> {
// 套餐商品 基础服务为7 额外扣除库存逻辑
if (ProductTypeEnum.SETMEAL_UPPRICE_PRODUCT.getCode().compareTo(product.getOriginalProductType()) == 0) {
if (product.getHasStockProudct() != null && product.getHasStockProudct()) {
UpdateProductStockRequestDto.ProductStock productStocksVO = this.getProductStockVo(product);
productStocks.add(productStocksVO);
}
// 需要处理 过滤出 可选搭配
if (CollectionUtils.isNotEmpty(product.getComboProduct())) {
product.getComboProduct().stream().filter(c -> !c.getIsFixedProduct()).forEach(groupProduct -> {
if (groupProduct.getHasStockProudct() != null && groupProduct.getHasStockProudct()) {
UpdateProductStockRequestDto.ProductStock productStocksVO = this.getProductStockVo(groupProduct);
productStocks.add(productStocksVO);
}
});
}
} else {
if (product.getHasStockProudct() != null && product.getHasStockProudct()) {
UpdateProductStockRequestDto.ProductStock productStocksVO = this.getProductStockVo(product);
productStocks.add(productStocksVO);
}
}
});
}
updateStocksRequest.setProductStocks(productStocks);
return updateStocksRequest;
}
private UpdateProductStockRequestDto.ProductStock getProductStockVo(CreateOrderProductRequest product) {
UpdateProductStockRequestDto.ProductStock productStocksVO = new UpdateProductStockRequestDto.ProductStock();
productStocksVO.setProductId(product.getSpecification());
productStocksVO.setQty(product.getNumber());
productStocksVO.setProductType(product.getOriginalProductType());
return productStocksVO;
}
public ActivityUpdateStockRequest convert2ActivityUpdateStockRequest(OrderBeanV1 orderBean, ActivityUpdateStockRequest activityUpdateStockRequest) {
if (activityUpdateStockRequest == null || orderBean == null) {
return null;
......@@ -2158,7 +2216,7 @@ public class OrderSdkAdapter {
download.setRiderPhone(info.getMobile());
}
}
if (ObjectUtils.equals(orderDto.getOrderType(),OrderType.GENERAL_EXPRESS.getIndex()) || ObjectUtils.equals(orderDto.getOrderType(), OrderType.RESERVED_EXPRESS.getIndex())) {
if (ObjectUtils.equals(orderDto.getOrderType(), OrderType.GENERAL_EXPRESS.getIndex()) || ObjectUtils.equals(orderDto.getOrderType(), OrderType.RESERVED_EXPRESS.getIndex())) {
download.setDeliveryId(orderDto.getExpressNo());
download.setExpress(StringUtils.isEmpty(orderDto.getExpressChannelName()) && !isThirdDelivery ? "自配送" : orderDto.getExpressChannelName());
if (isThirdDelivery && StringUtils.isEmpty(orderDto.getExpressChannelName())) {
......@@ -3220,7 +3278,7 @@ public class OrderSdkAdapter {
}
if (product.getExtInfo() != null) {
extInfo.setProductBindingCoupons(JSONArray.parseArray(product.getExtInfo(),ProductBindingCouponType.class));
extInfo.setProductBindingCoupons(JSONArray.parseArray(product.getExtInfo(), ProductBindingCouponType.class));
}
orderItemCreateReq.setExtInfo(JSONObject.toJSONString(extInfo));
......@@ -3905,7 +3963,7 @@ public class OrderSdkAdapter {
}
//fisherman 【01测16灰18全,【华莱士】【疑难专项】一个订单多张优惠券使用场景】 https://www.tapd.cn/43862731/prong/stories/view/1143862731001037477
return this.commonMethodVerificationNew(couponList,orderBean,openId);
return this.commonMethodVerificationNew(couponList, orderBean, openId);
// // fisherman end
// if (couponList.size() > 1) {
......@@ -3996,7 +4054,7 @@ public class OrderSdkAdapter {
couponRequest.setReqtype(71);
couponRequest.setVer(Integer.valueOf(Version.VERSION_1));
couponRequest.setPartnerId(Integer.parseInt(orderBean.getCompanyId()));
ActivityChannelEnum activityChannelEnum = orderTypeEnumConvert2ActivityChannel(orderBean.getOrderType(),orderBean.getBizType());
ActivityChannelEnum activityChannelEnum = orderTypeEnumConvert2ActivityChannel(orderBean.getOrderType(), orderBean.getBizType());
if (activityChannelEnum == null) {
activityChannelEnum = ActivityChannelEnum.pickup;
}
......@@ -4009,7 +4067,7 @@ public class OrderSdkAdapter {
// 订单号 替换成唯一序号
couponRequest.setTrans_id(orderBean.getOid());
couponRequest.setBusiness_date(DateUtil.convert2String(new Date(), DateUtil.FORMAT_yyyyMMdd));
List<TransactionVO> transactions = this.getTransactionList( collect, orderBean, openId);
List<TransactionVO> transactions = this.getTransactionList(collect, orderBean, openId);
// 配送券逻辑 end
couponRequest.setTransactions(transactions);
return couponRequest;
......@@ -4056,20 +4114,20 @@ public class OrderSdkAdapter {
return transactions;
}
private ActivityChannelEnum orderTypeEnumConvert2ActivityChannel(Integer orderType,Integer bizType ) {
if(Objects.equals(BizTypeEnum.MALL.getBizType(), bizType)){
private ActivityChannelEnum orderTypeEnumConvert2ActivityChannel(Integer orderType, Integer bizType) {
if (Objects.equals(BizTypeEnum.MALL.getBizType(), bizType)) {
return ActivityChannelEnum.saasmall;
}
if (Objects.equals(OrderTypeV1.TAKE_OUT.getCode(), orderType)) {
return ActivityChannelEnum.delivery;
} else if (Objects.equals(OrderTypeV1.COLLECT_GOODS.getCode(), orderType) || Objects.equals(OrderTypeV1.EAT_IN.getCode(), orderType)) {
return ActivityChannelEnum.pickup;
} else {
} else {
return ActivityChannelEnum.pickup;
}
}
public BaseQueryOrderRequest getOrderConfirmRequest(String operator, OrderBeanV1 orderBean) {
return this.getOrderConfirmRequest(operator,orderBean,null);
return this.getOrderConfirmRequest(operator, orderBean, null);
}
}
......@@ -15,7 +15,6 @@ package com.freemud.sdk.api.assortment.order.request.stock;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.List;
@Data
......@@ -36,19 +35,26 @@ public class UpdateProductStockRequestDto {
private String remark;
//交易号, maxLength = 36
private String transNo;
//2019-02-19T06:56:14.543Z"
private Date transTime;
/**
* 交易类型 格式类型 yyyy-MM-dd HH:mm:ss
*/
private String transTime;
@NoArgsConstructor
@Data
public static class ProductStock {
private String customerCode;
private Long productId;
private String productId;
private Integer qty;
private Integer safeQty;
//虚拟库存数, 可不传,默认为0
private String virtualQty;
/**
* 商品类型 主要库存服务需要区分套餐商品用
*/
private Integer productType;
}
}
package cn.freemud.service.business.impl;
import cn.freemud.amqp.MQService;
import cn.freemud.base.util.DateUtil;
import cn.freemud.entities.dto.GetMemberExtendInfoRequestDto;
import cn.freemud.entities.dto.GetMemberExtendInfoResponseDto;
......@@ -11,6 +10,7 @@ import cn.freemud.service.impl.OrderQueueService;
import cn.freemud.service.thirdparty.CustomerApplicationClient;
import cn.freemud.service.thirdparty.CustomerClient;
import cn.freemud.service.thirdparty.PromotionDiscountClient;
import cn.freemud.service.thirdparty.StockClient;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.base.BaseResponse;
......@@ -33,8 +33,6 @@ import com.freemud.application.sdk.api.ordercenter.response.PaySuccessResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
import com.freemud.application.sdk.api.promotioncenter.response.PromotionResponseDTO;
import com.freemud.application.sdk.api.promotioncenter.service.PromotionSdkService;
import com.freemud.application.sdk.api.stockapi.request.UpdateStocksRequest;
import com.freemud.application.sdk.api.stockapi.service.StockSdkService;
import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest;
import com.freemud.application.sdk.api.storecenter.request.vo.GetOrgTreeListRequest;
......@@ -47,6 +45,7 @@ import com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant;
import com.freemud.sdk.api.assortment.order.entities.promption.ActivityUpdateStockRequest;
import com.freemud.sdk.api.assortment.order.enums.*;
import com.freemud.sdk.api.assortment.order.request.order.*;
import com.freemud.sdk.api.assortment.order.request.stock.UpdateProductStockRequestDto;
import com.freemud.sdk.api.assortment.order.response.order.BaseOrderResponse;
import com.freemud.sdk.api.assortment.order.response.order.CreateOrderResponse;
import com.freemud.sdk.api.assortment.order.response.order.PayAccessResponse;
......@@ -84,15 +83,10 @@ public class OrderBusinessServiceImpl implements OrderBusinessService {
@Autowired
private StockSdkService stockSdkService;
@Autowired
private PromotionSdkService promotionSdkService;
@Autowired
private CustomerApplicationClient customerApplicationClient;
// private MemberScoreService memberScoreService;
@Autowired
private OfflineCouponSdkService offlineCouponSdkService;
@Autowired
private MQService mqService;
@Autowired
private OrderQueueService orderQueueService;
@Value("${version.upgrade.weekDay:}")
......@@ -106,7 +100,8 @@ public class OrderBusinessServiceImpl implements OrderBusinessService {
@Autowired
private PromotionDiscountClient promotionDiscountClient;
@Autowired
private StockClient stockClient;
@Override
......@@ -270,9 +265,9 @@ public class OrderBusinessServiceImpl implements OrderBusinessService {
private BaseOrderResponse updateStockAndScore(OrderBeanV1 orderBean, List<CreateOrderProductRequest> products, ActivityUpdateStockRequest updateStockRequest,
List<CreateOrderAccountRequest> accounts, String menuType, String openId,Long totalScore) {
//TODO 转换获取库存信息,扣减库存
UpdateStocksRequest updateStocksRequest = orderSdkAdapter.getUpdateProductStock(orderBean, products, StockChangeType.REDUCE,menuType);
UpdateProductStockRequestDto updateStocksRequest = orderSdkAdapter.getUpdateProductStockByFeign(orderBean, products, StockChangeType.REDUCE,menuType);
if (updateStocksRequest != null && CollectionUtils.isNotEmpty(updateStocksRequest.getProductStocks())) {
BaseResponse baseResponse = stockSdkService.reducesStocks(updateStocksRequest, "");
cn.freemud.base.entity.BaseResponse baseResponse = stockClient.reducesStocks(updateStocksRequest);
if (!ObjectUtils.equals(RESPONSE_SUCCESS_STR, baseResponse.getCode())) {
//TODO 失败取消订单
CancelOrderRequest cancelOrderRequest = orderSdkAdapter.convent2CancelOrderRequest(orderBean.getOid(), orderBean.getCompanyId(),
......
......@@ -13,7 +13,7 @@
package cn.freemud.service.thirdparty;
import cn.freemud.base.entity.BaseResponse;
import com.freemud.application.sdk.api.stockapi.request.UpdateStocksRequest;
import com.freemud.sdk.api.assortment.order.request.stock.UpdateProductStockRequestDto;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
......@@ -28,7 +28,7 @@ public interface StockClient {
* 扣减库存
*/
@PostMapping("/reduceStocks")
BaseResponse reducesStocks(@RequestBody UpdateStocksRequest requestDto);
BaseResponse reducesStocks(@RequestBody UpdateProductStockRequestDto requestDto);
}
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