package com.fdkankan.ucenter.httpClient.client;

import com.dtflys.forest.annotation.*;
import com.fdkankan.ucenter.common.Result;
import com.fdkankan.ucenter.httpClient.SignInterceptor;
import com.fdkankan.ucenter.httpClient.address.LaserAddressSource;
import com.fdkankan.ucenter.httpClient.param.SSDownSceneParam;
import com.fdkankan.ucenter.httpClient.param.SsBindParam;
import com.fdkankan.ucenter.httpClient.vo.LaserSceneParam;
import org.apache.poi.ss.formula.functions.Intercept;

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

/**
 * 获取，调用激光服务
 */
@Address(source = LaserAddressSource.class)
public interface LaserClient {

    /**
     * 根据用户获取激光相机数量
     */
    @Post(value = "/laser/4dage/getSceneNum",interceptor = SignInterceptor.class)
    Result getSceneNum(@Header("fdToken") String token, @JSONBody Map<String, Object> param);
    /**
     * 获取相机场景数
     * @param param
     */
    @Post(value = "/laser/4dage/scene/getSceneNumByCamera",interceptor = SignInterceptor.class)
    Result getSceneNumByCamera(@JSONBody Map<String, String> param);
    /**
     * 取消相机协作
     * @param param
     */
    @Post(value = "/laser/4dage/scene/cooperation/disable",interceptor = SignInterceptor.class)
    Result cooperationDisable(@JSONBody List<Map<String, String> >param);
    /**
     * 添加相机协作
     * @param param
     */
    @Post(value = "/laser/4dage/scene/cooperation/cameraSave",interceptor = SignInterceptor.class)
    Result cooperationCameraSave(@JSONBody List<Map<String, String> >param);

    @Get(value = "/laser/init/${0}",interceptor = SignInterceptor.class)
    Result getSceneByNum(String num);

    /**
     * 新增场景
     */
    @Post(value = "/laser/4dage/scene/getScenesBySnCode",interceptor = SignInterceptor.class)
    Result getScenesBySnCode(@JSONBody Map<String, String> param, @Header("fdToken") String token) ;

    /**
     * 下载深时场景
     * status ：0:正在生成 1，初次生成  2，已经生成直接下载 3，重新生成
     */
    @Post(value = "/laser/4dage/downOfflineScene",interceptor = SignInterceptor.class)
    Result downOfflineScene(@JSONBody SSDownSceneParam param) ;
    /**
     * 检测深时场景是否需要重新生成
     *
     * status ：离线包状态是否需要重新生成 0未生成，1 不需要 2需要
     */
    @Post(value = "/laser/4dage/downOfflineSceneStatus",interceptor = SignInterceptor.class)
    Result downOfflineSceneStatus(@JSONBody SSDownSceneParam param) ;

    /**
     *解绑相机、绑定相机
     */
    @Post(value = "/laser/4dage/scene/camera/toBind",interceptor = SignInterceptor.class)
    Result toBind(@JSONBody SsBindParam param) ;

    /**
     * 修改场景状态
     */
    @Post(value = "/laser/4dage/scene/updateStatus",interceptor = SignInterceptor.class)
    Result updateStatus( @JSONBody  Map<String,Object> params);

    @Post(value = "/laser/4dage/managerSceneList",interceptor = SignInterceptor.class)
    Result sceneList(@JSONBody LaserSceneParam param);

    @Post(value = "/laser/4dage/scene/sceneStatusInfo/{sceneCode}",interceptor = SignInterceptor.class)
    Result laserSceneInfo(@Var("sceneCode")String sceneCode);

    @Post(value = "/laser/4dage/downE57Status",interceptor = SignInterceptor.class)
    Result downE57Status(@JSONBody SSDownSceneParam param);

    @Post(value = "/laser/4dage/downE57",interceptor = SignInterceptor.class)
    Result downE57(@JSONBody SSDownSceneParam param);
}
