package com.hdl.linkpm.sdk.scene.controller;
|
|
import com.google.gson.JsonObject;
|
import com.hdl.hdlhttp.HxHttp;
|
import com.hdl.linkpm.sdk.core.api.HDLCloudHomeApi;
|
import com.hdl.linkpm.sdk.core.callback.IDefaultCallBack;
|
import com.hdl.linkpm.sdk.core.callback.IResponseCallBack;
|
import com.hdl.linkpm.sdk.core.exception.HDLException;
|
import com.hdl.linkpm.sdk.core.response.HDLResponse;
|
import com.hdl.linkpm.sdk.scene.bean.SceneInfoBean;
|
import com.hdl.linkpm.sdk.utils.HDLExceptionSubmitUtils;
|
import com.hdl.linkpm.sdk.utils.HDLGsonUtils;
|
|
import java.util.List;
|
|
import io.reactivex.rxjava3.disposables.Disposable;
|
|
/**
|
* Created by jlchen on 12/13/21.
|
* 场景相关的网络请求
|
*/
|
public class HDLPMSceneController {
|
/**
|
* instance
|
*/
|
private volatile static HDLPMSceneController instance;
|
|
/**
|
* getInstance
|
*
|
* @return HDLPMSceneController
|
*/
|
public static synchronized HDLPMSceneController getInstance() {
|
if (instance == null) {
|
synchronized (HDLPMSceneController.class) {
|
if (instance == null) {
|
instance = new HDLPMSceneController();
|
}
|
}
|
}
|
return instance;
|
}
|
|
/***************5.场景增删改查管理***************/
|
/**
|
* 全量同步场景
|
*
|
* @param homeId 住宅id
|
* @param sceneInfoBeanList 场景列表
|
* @param callBack
|
* @return
|
*/
|
public Disposable fullSyncSceneList(String homeId, List<SceneInfoBean> sceneInfoBeanList, IDefaultCallBack callBack) {
|
JsonObject json = new JsonObject();
|
json.addProperty("homeId", homeId);
|
json.add("scenes", HDLGsonUtils.toJsonArray(sceneInfoBeanList));
|
String requestUrl = HDLCloudHomeApi.getRequestUrl(HDLCloudHomeApi.POST_SCENE_LIST_FULL_SYNC);
|
return HxHttp.builder()
|
.url(requestUrl)
|
.raw(json.toString())
|
.build()
|
.post()
|
.subscribeWith(new HDLResponse<String>() {
|
@Override
|
public void onResponse(String response) {
|
if (callBack != null) {
|
callBack.onSuccess();
|
}
|
}
|
|
@Override
|
public void onFailure(HDLException e) {
|
HDLExceptionSubmitUtils.submit(requestUrl, json, e);
|
if (callBack != null) {
|
callBack.onFailure(e);
|
}
|
}
|
});
|
}
|
|
/**
|
* 获取场景列表
|
*
|
* @param homeId 住宅id
|
* @param uid 房间uid,不传默认查全部
|
* @param callBack
|
* @return
|
*/
|
public Disposable getSceneList(String homeId, String uid, IResponseCallBack<List<SceneInfoBean>> callBack) {
|
JsonObject json = new JsonObject();
|
json.addProperty("homeId", homeId);
|
json.addProperty("uid", uid);
|
String requestUrl = HDLCloudHomeApi.getRequestUrl(HDLCloudHomeApi.POST_SCENE_LIST_GET);
|
return HxHttp.builder()
|
.url(requestUrl)
|
.raw(json.toString())
|
.build()
|
.post()
|
.subscribeWith(new HDLResponse<List<SceneInfoBean>>() {
|
@Override
|
public void onResponse(List<SceneInfoBean> response) {
|
if (callBack != null) {
|
callBack.onSuccess(response);
|
}
|
}
|
|
@Override
|
public void onFailure(HDLException e) {
|
HDLExceptionSubmitUtils.submit(requestUrl, json, e);
|
if (callBack != null) {
|
callBack.onFailure(e);
|
}
|
}
|
});
|
}
|
|
/**
|
* 删除场景
|
*
|
* @param homeId 住宅id
|
* @param sids 场景sid列表
|
* @param callBack
|
* @return
|
*/
|
public Disposable deleteScene(String homeId, List<String> sids, IDefaultCallBack callBack) {
|
JsonObject json = new JsonObject();
|
json.addProperty("homeId", homeId);
|
json.add("sids", HDLGsonUtils.toJsonArray(sids));
|
String requestUrl = HDLCloudHomeApi.getRequestUrl(HDLCloudHomeApi.POST_SCENE_DELETE);
|
return HxHttp.builder()
|
.url(requestUrl)
|
.raw(json.toString())
|
.build()
|
.post()
|
.subscribeWith(new HDLResponse<String>() {
|
@Override
|
public void onResponse(String response) {
|
if (callBack != null) {
|
callBack.onSuccess();
|
}
|
}
|
|
@Override
|
public void onFailure(HDLException e) {
|
HDLExceptionSubmitUtils.submit(requestUrl, json, e);
|
if (callBack != null) {
|
callBack.onFailure(e);
|
}
|
}
|
});
|
}
|
|
/**
|
* 执行场景
|
*
|
* @param homeId 住宅id
|
* @param sids 场景IDs
|
* @param callBack
|
* @return
|
*/
|
public Disposable controlScene(String homeId, List<String> sids, IDefaultCallBack callBack) {
|
JsonObject json = new JsonObject();
|
json.addProperty("homeId", homeId);
|
json.add("sids", HDLGsonUtils.toJsonArray(sids));
|
String requestUrl = HDLCloudHomeApi.getRequestUrl(HDLCloudHomeApi.POST_SCENE_EXECUTE);
|
return HxHttp.builder()
|
.url(requestUrl)
|
.raw(json.toString())
|
.build()
|
.post()
|
.subscribeWith(new HDLResponse<String>() {
|
@Override
|
public void onResponse(String response) {
|
if (callBack != null) {
|
callBack.onSuccess();
|
}
|
}
|
|
@Override
|
public void onFailure(HDLException e) {
|
HDLExceptionSubmitUtils.submit(requestUrl, json, e);
|
if (callBack != null) {
|
callBack.onFailure(e);
|
}
|
}
|
});
|
}
|
|
}
|