package com.fdkankan.scene.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.fdkankan.common.response.ResultData;
import com.fdkankan.scene.entity.Scene;
import com.fdkankan.scene.entity.ScenePO;
import com.fdkankan.scene.entity.SceneProPO;
import com.fdkankan.scene.vo.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

/**
 * <p>
 * 场景表 服务类
 * </p>
 *
 * @author dengsixing
 * @since 2021-12-23
 */
public interface ISceneService extends IService<Scene> {

    Scene getValidById(long id);

    List<SceneVO> convert(List<ScenePO> list);

    List<SceneVO> convertPro(List<SceneProPO> list) throws Exception;

    List<ScenePO> findAllByYesterday() throws Exception;

    void updateUserIdByCameraId(Long userId, Long cameraId) throws Exception;

    void uploadHotMedia(String sceneId, MultipartFile file) throws IOException;

    void uploadGuidePic(String sceneId, MultipartFile file) throws IOException;

    ResultData saveGuideInfo(SceneParamVO base) throws Exception;

    ResultData recoveryFloor(SceneParamVO base) throws Exception;

    ResultData saveEditInfo(SceneParamVO base) throws Exception;

    ResultData publishScene(SceneParamVO base) throws Exception;

    ResultData deleteHot(SceneParamVO base) throws Exception;

    ResultData saveHot(SceneEditParamVO base) throws Exception;

    ResultData saveLinkPano(SceneEditParamVO base) throws Exception;

    ResultData saveHotVisible(SceneEditParamVO base) throws Exception;

    IPage<SceneVO> queryByParam(SceneParamVO param) throws Exception;

    IPage<SceneVO> queryByParamNew(SceneParamVO param) throws Exception;

    ScenePO findBySceneNum(String sceneNum);

    Scene getSceneBySceneCode(String sceneCode);

    ResultData recover(String sceneNum) throws Exception;

    Scene getSceneStatusByUnicode(String unicode, int tbStatus);

    void updateStatus(String sceneNum, int status);

    void updatePayStatus(String sceneNum, int status);

    void updateTime(String sceneNum, Long space, int payStatus);

    ResultData addHotMediaInfo(SceneEditParamVO base) throws Exception;

    ResultData saveScreencapFile(SceneEditParamVO base) throws Exception;

    Page<SceneProPO> findAllScene(SceneParamVO param);

    Page<ScenePO> unionSearchBySceneName(SceneParamVO param);

    List<SceneProPO> getOnlySceneList(SceneParamVO param) throws Exception;

    ResultData updateViewCount(String sceneNum);

    void updatePv();

    Page search(SceneParamVO param);

    Page loadScene(SceneParamVO param);

    Page loadAllScene2(SceneParamVO param);

    ResultData querySceneDataSource(SceneParamVO param);

    ResultData querySceneNum(SceneParamVO param);

    ResultData downLoadZSData(BaseSceneParamVO param) throws Exception;


    ResultData getScenes(DeviceSceneParamVO param);

    ResultData deleteScene(String sceneNum) throws IOException;

    Long getSceneCount(Long cameraId, Long userId);
}
