
package com.tmerclub.cloud.api.product.feign;

import com.tmerclub.cloud.api.product.dto.SkuStockLockDTO;
import com.tmerclub.cloud.api.product.dto.StockBillLogItemDTO;
import com.tmerclub.cloud.api.product.vo.SkuStockVO;
import com.tmerclub.cloud.common.response.ServerResponseEntity;

import java.util.List;

/**
 * @author tmerclub
 * @date 2020/12/22
 */
public interface SkuStockChangeFeignClient {

    /**
     * 锁定库存
     * @param skuStockLocks 参数
     * @return 是否成功
     */
    ServerResponseEntity<?> lock(List<StockBillLogItemDTO> skuStockLocks);

    /**
     * 锁定采购订单的库存
     * @param skuStockLocks 参数
     * @return 正常返回 订单id_仓库id_skuId_剩余库存,订单id_仓库id_skuId_剩余库存,...
     *         异常返回 skuId
     */
    String lockPurchaseOrder(List<SkuStockLockDTO> skuStockLocks);

    /**
     * 采购订单减少锁定库存
     * @param skuStockLockList
     * @return 正常返回 订单id_仓库id_skuId_剩余库存,订单id_仓库id_skuId_剩余库存,...
     *         异常返回 skuId
     */
    String purchaseOrderReduceLockStock(List<SkuStockLockDTO> skuStockLockList);

    /**
     * 调拨订单锁定库存
     * @param skuStockLocks 库存锁定参数
     * @return 操作后的redis库存信息
     */
    String lockAllotOrder(List<SkuStockLockDTO> skuStockLocks);

    /**
     * 调拨订单减少锁定库存
     * @param skuStockLocks 库存锁定参数
     * @return 操作后的redis库存信息
     */
    String reduceLockAllotOrder(List<SkuStockLockDTO> skuStockLocks);

    /**
     * 改变sku库存
     * @param skuStockLocks
     * @return 正常返回 订单id_仓库id_skuId_剩余库存,订单id_仓库id_skuId_剩余库存...
     *         异常返回 skuId
     */
    String changeStock(List<SkuStockVO> skuStockLocks);
}
