package com.yc.ship.module.resource.service.channel;

import cn.hutool.core.lang.tree.Tree;
import com.yc.ship.framework.common.pojo.PageResult;
import com.yc.ship.module.resource.controller.admin.channel.vo.ScenicChannelPageReqVO;
import com.yc.ship.module.resource.controller.admin.channel.vo.ScenicChannelSaveReqVO;
import com.yc.ship.module.resource.controller.admin.vo.TreeNodeVO;
import com.yc.ship.module.resource.dal.dataobject.channel.ScenicChannelDO;

import javax.validation.Valid;
import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * 通道 Service 接口
 *
 * @author 管理员
 */
public interface ScenicChannelService {

    /**
     * 创建通道
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createScenicChannel(@Valid ScenicChannelSaveReqVO createReqVO);

    /**
     * 更新通道
     *
     * @param updateReqVO 更新信息
     */
    void updateScenicChannel(@Valid ScenicChannelSaveReqVO updateReqVO);

    /**
     * 删除通道
     *
     * @param id 编号
     */
    void deleteScenicChannel(Long id);

    /**
     * 获得通道
     *
     * @param id 编号
     * @return 通道
     */
    ScenicChannelDO getScenicChannel(Long id);

    /**
     * 获得通道分页
     *
     * @param pageReqVO 分页查询
     * @return 通道分页
     */
    PageResult<ScenicChannelDO> getScenicChannelPage(ScenicChannelPageReqVO pageReqVO);


    List<TreeNodeVO> getCheckChannelList();

    List<ScenicChannelDO> getChannelListByStatus(String siteId);


    /**
     * 获得站点列表
     *
     * @param ids 站点编号数组
     * @return 站点列表
     */
    List<ScenicChannelDO> getChannelList(Collection<Long> ids);

    Map<Long, ScenicChannelDO> getChannelMap(Collection<Long> ids);

    List<Tree<String>> getPdaCheckChannelList();
}
