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 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() { @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> 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>() { @Override public void onResponse(List 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 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() { @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 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() { @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); } } }); } }