package com.fdkankan.scene.service;

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.ScenePro;
import com.fdkankan.scene.vo.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

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

    ResultData saveInitialPage(SceneEditParamVO base) throws Exception;

    ResultData saveFloorLogo(SceneEditParamVO base) throws Exception;

    ResultData saveHot(SceneEditParamVO base) throws Exception;

    ResultData saveBackgroundMusic(SceneEditParamVO base) throws Exception;

    ResultData saveSceneInfo(SceneEditParamVO base) throws Exception;

    ResultData saveSceneKey(SceneEditParamVO base) throws Exception;

    ResultData saveTourList(SceneEditParamVO base) throws Exception;

    ResultData uploadPic(String sceneNum, String folderName, MultipartFile file) throws Exception;

    ResultData uploadScreencapVoice(String sceneNum, MultipartFile file) throws Exception;

    ResultData saveScreencapFile(SceneEditParamVO base) throws Exception;

    ResultData saveHotVisible(SceneEditParamVO sceneEdit) throws Exception;

    ResultData saveLinkPano(SceneEditParamVO base) throws Exception;

    ResultData getRecordAudioFromWeixin(SceneEditParamVO base) throws Exception;

    ResultData getRecordAudioFromWeixinV3(FileParamVO param) throws Exception;

    ResultData getRecordAudioFromAppV3(FileParamVO param) throws Exception;

    ResultData deleteRecordAudioPart(FileParamVO param) throws Exception;

    ResultData uploadFloorJsonAndRebuild(SceneEditParamVO base) throws Exception;

    ResultData saveScreencapData(SceneEditParamVO base) throws Exception;

    ResultData saveAllVisi(SceneEditParamVO base) throws Exception;

    ResultData uploadFloorplanPng(String sceneNum, MultipartFile file, String cadInfo) throws Exception;

    ResultData uploadBgMusic(String sceneNum, String fileName, MultipartFile file) throws Exception;

    ResultData deleteUploadBgMusic(String sceneNum) throws Exception;

    Page<SceneVO> getAllSceneByPage(UserParamVO param);

    List<SceneVO> getAllForCameraName(UserParamVO user);

    Long getSceneCount(UserParamVO user);

    Integer getSceneStatus(@RequestBody UserParamVO user);

    Map<String, Object> getSceneStatusByUnicode(UserParamVO user);

    ResultData deleteForCameraName(UserParamVO user) throws Exception;

    ResultData deleteScene(String sceneNum) throws Exception;

    List<SceneVO> findScenesByUserIdAndSceneScheme(Long cameraId, String orderBy, Integer payStatus);

     void lockBeyondSpaceScenes(Long usedSpace, Long totalSpace, Long cameraId) throws Exception;

     void unlockBeyondSpaceScenes(Long newSpace, Long cameraId) throws Exception;


    ResultData getScreencapVoice(SceneParamVO scene) throws Exception;

    List<SceneVO> getAllSceneByUserName(@RequestBody UserParamVO user) throws Exception;

    ResultData cooperationSceneList(UserParamVO user);

}
