package com.fdkankan.scene.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
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.SceneEditVO;
import com.fdkankan.scene.vo.SceneParamVO;
import com.fdkankan.scene.vo.SceneProVO;
import com.fdkankan.scene.vo.SceneVO;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.Date;
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) throws Exception;

    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(SceneEditVO base) throws Exception;

    ResultData saveLinkPano(SceneEditVO base) throws Exception;

    ResultData saveHotVisible(SceneEditVO base) throws Exception;

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

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

    ScenePO findBySceneNum(String sceneNum) throws Exception;

    Scene getSceneBySceneCode(String sceneCode);

    ResultData recover(String sceneNum) throws Exception;

    Scene getSceneStatusByUnicode(String unicode, String recStatus);

    void updateStatus(String sceneNum, int status);

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

    ResultData addHotMediaInfo(SceneEditVO base) throws Exception;

    ResultData saveScreencapFile(SceneEditVO base) throws Exception;

    List<SceneProPO> findAllScene(String order, String sceneType, Integer sceneScheme,
                                  Integer pageNum, Integer pageSize, Long userId,
                                  String sceneName, Long cameraId, Date startDate,
                                  Date endDate, String num, String type, String likeNum, List<String> nums);

    List<ScenePO> unionSearchBySceneName(String searchKey);

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

    ResultData updateViewCount(String sceneNum);

    void updatePv();



}
