
package com.tmerclub.cloud.delivery.service;

import com.tmerclub.cloud.common.database.dto.PageDTO;
import com.tmerclub.cloud.common.database.vo.PageVO;
import com.tmerclub.cloud.delivery.dto.OutletConfigDTO;
import com.tmerclub.cloud.delivery.model.OutletConfig;
import com.tmerclub.cloud.delivery.vo.OutletConfigInfoVO;
import com.tmerclub.cloud.delivery.vo.OutletConfigVO;

import java.util.List;

/**
 * 网点配置
 *
 * @author TRACK
 * @date 2023-08-23 14:48:23
 */
public interface OutletConfigService {

    /**
     * 分页获取网点配置列表
     * @param pageDTO 分页参数
     * @param outletConfigDTO
     * @return 网点配置列表分页数据
     */
    PageVO<OutletConfigVO> page(PageDTO pageDTO, OutletConfigDTO outletConfigDTO);

    /**
     * 根据网点配置id获取网点配置
     *
     * @param outletConfigId 网点配置id
     * @param sysType
     * @return 网点配置
     */
    OutletConfig getByOutletConfig(Long outletConfigId, Integer sysType);

    /**
     * 保存网点配置
     * @param outletConfig 网点配置
     */
    void save(OutletConfig outletConfig);

    /**
     * 更新网点配置
     * @param outletConfig 网点配置
     */
    void update(OutletConfig outletConfig);

    /**
     * 根据网点配置id删除网点配置
     * @param outletConfigId 网点配置id
     */
    void deleteById(Long outletConfigId);

    /**
     * 设为/取消默认
     * @param outletConfigId
     */
    void setDefault(Long outletConfigId);

    /**
     * 获取店铺网点配置列表
     * @param shopId
     * @param sysType
     * @return
     */
    List<OutletConfigInfoVO> listByShopId(Long shopId, Integer sysType);

    /**
     * 删除缓存
     * @param shopId
     * @param sysType
     */
    void removeCache(Long shopId, Integer sysType);
}
