New file |
| | |
| | | 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); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | } |