/*
 * 文 件 名:  SquareLightCtlApi
 * 版    权:  华设设计集团股份有限公司
 * 描    述:  <描述>
 * 修 改 人:  lvwenbin
 * 修改时间:  2025/9/15
 * 跟踪单号:  <跟踪单号>
 * 修改单号:  <修改单号>
 * 修改内容:  <修改内容>
 */
package com.ruoyi.ems.retrofit;

import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.ems.model.slightctl.AppLoginReq;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.Headers;
import retrofit2.http.POST;
import retrofit2.http.Path;
import retrofit2.http.Query;

/**
 * 广场灯控接口
 * <功能详细描述>
 *
 * @author lvwenbin
 * @version [版本号, 2025/9/15]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
public interface SquareLightCtlApi {
    /**
     * 登陆
     *
     * @param req 请求body
     * @return 登录响应
     */
    @Headers({ "tenantId: 1", "Content-Type: application/json" })
    @POST("/light-cloud/app/auth/appLogin")
    Call<String> appLogin(@Body AppLoginReq req);

    /**
     * 获取项目列表
     *
     * @param clientId      客户端id
     * @param authorization 认证信息
     * @return 项目列表
     */
    @Headers({ "tenantId: 1", "Content-Type: application/json" })
    @GET("/light-cloud/app/project/list")
    Call<String> getProjectList(@Header("clientId") String clientId, @Header("Authorization") String authorization);

    /**
     * 获取项目分组列表
     *
     * @param clientId      客户端id
     * @param authorization 认证信息
     * @param projectId     项目ID
     * @return 项目列表
     */
    @Headers({ "tenantId: 1", "Content-Type: application/json" })
    @GET("/light-cloud/app/projectSubset/list")
    Call<String> getProjectSubsetList(@Header("clientId") String clientId,
        @Header("Authorization") String authorization, @Query("projectId") String projectId);

    /**
     * 获取项目分组列表
     *
     * @param authorization 认证信息
     * @param projectId     项目ID
     * @param pageNum       页码
     * @param pageSize      每页记录数
     * @return 项目列表
     */
    @Headers({ "tenantId: 1", "Content-Type: application/json" })
    @GET("/light-cloud/app/device/list")
    Call<String> getDeviceList(@Header("clientId") String clientId, @Header("Authorization") String authorization,
        @Header("projectId") String projectId, @Header("subsetId") String subsetId, @Query("pageNum") int pageNum,
        @Query("pageSize") int pageSize);

    /**
     * 同步设备状态
     *
     * @param clientId 客户端id
     * @param req      灯控请求
     * @return 灯控响应
     */
    @Headers({ "tenantId: 1", "Content-Type: application/json" })
    @POST("/light-cloud/operate/device/syncStatus")
    Call<String> syncStatus(@Header("clientId") String clientId, @Header("projectId") String projectId,
        @Header("Authorization") String authorization, @Body JSONObject req);

    /**
     * 获取设备状态
     *
     * @param clientId 客户端id
     * @param deviceId 设备编号
     * @return 灯控响应
     */
    @Headers({ "tenantId: 1", "Content-Type: application/json" })
    @GET("/light-cloud/operate/device/light/info/{deviceId}")
    Call<String> getDeviceInfo(@Header("clientId") String clientId, @Header("projectId") String projectId,
        @Header("Authorization") String authorization, @Path("deviceId") String deviceId);

    /**
     * 设备开关灯批量-普通照明
     *
     * @param clientId 客户端id
     * @param req      灯控请求
     * @return 灯控响应
     */
    @Headers({ "tenantId: 1", "Content-Type: application/json" })
    @POST("/light-cloud/app/device/light/control")
    Call<String> lightControl(@Header("clientId") String clientId, @Header("projectId") String projectId,
        @Header("Authorization") String authorization, @Body JSONObject req);

    /**
     * 设备调光批量-普通照明
     *
     * @param clientId 客户端id
     * @param req      灯控请求
     * @return 灯控响应
     */
    @Headers({ "tenantId: 1", "Content-Type: application/json" })
    @POST("/light-cloud/operate/device/light/controlBrightness")
    Call<String> controlBrightness(@Header("clientId") String clientId, @Header("projectId") String projectId,
        @Header("Authorization") String authorization, @Body JSONObject req);
}