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

import com.ruoyi.ems.model.idenergy.CodesValReq;
import com.ruoyi.ems.model.idenergy.CodesValSetReq;
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.Query;

/**
 * 能耗 BA 照明对接
 * <功能详细描述>
 *
 * @author lvwenbin
 * @version [版本号, 2025/7/28]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
public interface BaCtlEnergyApi {
    /**
     * 获取TOKEN
     *
     * @param appId     应用ID
     * @param grantType 认证方式
     * @return Token
     */
    @GET("/_webtalk/_cur/api/access_token")
    Call<String> getAccessToken(@Query("appId") String appId, @Query("grant_type") String grantType);

    /**
     * 刷新TOKEN
     *
     * @param appId        应用ID
     * @param grantType    认证方式
     * @param refreshToken token
     * @return Token
     */
    @GET("/_webtalk/_cur/api/access_token")
    Call<String> refreshToken(@Query("appId") String appId, @Query("grant_type") String grantType,
        @Query("refreshToken") String refreshToken);

    /**
     * 获取实时数据
     *
     * @param appId 应用ID
     * @param token 认证令牌
     * @return 实时数据
     */
    @Headers({ "Content-Type: application/json" })
    @POST("/_webtalk/_cur/api/getCodesVal")
    Call<String> getCodesVal(@Header("appId") String appId, @Header("Token") String token, @Body CodesValReq req);

    /**
     * 下发设置
     *
     * @param appId 应用ID
     * @param token 认证令牌
     * @return 实时数据
     */
    @Headers({ "Content-Type: application/json" })
    @POST("/_webtalk/_cur/api/setCodesVal")
    Call<String> setCodesVal(@Header("appId") String appId, @Header("Token") String token, @Body CodesValSetReq req);
}