New file |
| | |
| | | package com.hdl.linkpm.sdk.home.controller; |
| | | |
| | | import android.text.TextUtils; |
| | | |
| | | 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.home.bean.GatewayInfoBean; |
| | | import com.hdl.linkpm.sdk.home.bean.GatewayBindBean; |
| | | import com.hdl.linkpm.sdk.home.bean.HomeInfoBean; |
| | | import com.hdl.linkpm.sdk.home.bean.logic.LogicInfoBean; |
| | | import com.hdl.linkpm.sdk.home.bean.RoomInfoBean; |
| | | import com.hdl.linkpm.sdk.home.bean.RoomInfoListBean; |
| | | import com.hdl.linkpm.sdk.home.bean.logic.SecurityInfoBean; |
| | | import com.hdl.linkpm.sdk.home.callback.IAddRoomListCallBack; |
| | | import com.hdl.linkpm.sdk.home.callback.IRoomListCallBack; |
| | | 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/3/21. |
| | | * 住宅相关的网络请求 |
| | | */ |
| | | public class HDLPMHomeController { |
| | | /** |
| | | * instance |
| | | */ |
| | | private volatile static HDLPMHomeController instance; |
| | | |
| | | /** |
| | | * getInstance |
| | | * |
| | | * @return HDLHomeController |
| | | */ |
| | | public static synchronized HDLPMHomeController getInstance() { |
| | | if (instance == null) { |
| | | synchronized (HDLPMHomeController.class) { |
| | | if (instance == null) { |
| | | instance = new HDLPMHomeController(); |
| | | } |
| | | } |
| | | } |
| | | return instance; |
| | | } |
| | | |
| | | /** |
| | | * house表的数据没有同步到home表、数据存在两张表里面,需要客户端调接口同步 |
| | | * |
| | | * @param homeInfoBean 住宅Info |
| | | * @param callBack |
| | | * @return |
| | | */ |
| | | public Disposable synchHouseToHome(HomeInfoBean homeInfoBean, IDefaultCallBack callBack) { |
| | | String requestUrl = HDLCloudHomeApi.getRequestUrl(HDLCloudHomeApi.POST_PROGRAM_HOME_ADD); |
| | | return HxHttp.builder() |
| | | .url(requestUrl) |
| | | .raw(HDLGsonUtils.toJson(homeInfoBean)) |
| | | .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,homeInfoBean,e); |
| | | if (callBack != null) { |
| | | callBack.onFailure(e); |
| | | } |
| | | } |
| | | }); |
| | | |
| | | } |
| | | |
| | | /***************2.房间管理***************/ |
| | | /** |
| | | * 获取住宅下房间表 |
| | | * |
| | | * @param homeId 住宅ID |
| | | * @param roomType 房屋类型 FLOOR ROOM、为空的时候查全部 |
| | | * @param pageNo 哪一页 |
| | | * @param pageSize 页面大小 |
| | | * @param callBack |
| | | * @return |
| | | */ |
| | | public Disposable getRoomList(String homeId, String roomType, int pageNo, int pageSize, IRoomListCallBack callBack) { |
| | | String requestUrl = HDLCloudHomeApi.getRequestUrl(HDLCloudHomeApi.POST_ROOM_GET_LIST); |
| | | JsonObject json = new JsonObject(); |
| | | json.addProperty("homeId", homeId); |
| | | if (!TextUtils.isEmpty(roomType)) { |
| | | json.addProperty("roomType", roomType); |
| | | } |
| | | json.addProperty("pageNo", pageNo); |
| | | json.addProperty("pageSize", pageSize); |
| | | return HxHttp.builder() |
| | | .url(requestUrl) |
| | | .raw(json.toString()) |
| | | .build() |
| | | .post() |
| | | .subscribeWith(new HDLResponse<RoomInfoListBean>() { |
| | | @Override |
| | | public void onResponse(RoomInfoListBean 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 roomList 最新的房间列表 |
| | | * @param callBack |
| | | * @return |
| | | */ |
| | | public Disposable fullAddOrEditRoomList(String homeId, List<RoomInfoBean> roomList, IAddRoomListCallBack callBack) { |
| | | String requestUrl = HDLCloudHomeApi.getRequestUrl(HDLCloudHomeApi.POST_ROOM_FULL_ADD_OR_EDIT); |
| | | JsonObject json = new JsonObject(); |
| | | json.addProperty("homeId", homeId); |
| | | json.add("rooms", HDLGsonUtils.toJsonArray(roomList)); |
| | | return HxHttp.builder() |
| | | .url(requestUrl) |
| | | .raw(json.toString()) |
| | | .build() |
| | | .post() |
| | | .subscribeWith(new HDLResponse<Boolean>() { |
| | | @Override |
| | | public void onResponse(Boolean response) { |
| | | if (callBack != null) { |
| | | callBack.onSuccess(response); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | HDLExceptionSubmitUtils.submit(requestUrl,json,e); |
| | | if (callBack != null) { |
| | | callBack.onFailure(e); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | |
| | | /***************3.网关管理***************/ |
| | | /** |
| | | * 绑定网关到住宅 |
| | | * |
| | | * @param bean 网关信息 |
| | | * @param callBack |
| | | * @return |
| | | */ |
| | | public Disposable bindGateway(GatewayBindBean bean, IResponseCallBack<GatewayInfoBean> callBack) { |
| | | String requestUrl = HDLCloudHomeApi.getRequestUrl(HDLCloudHomeApi.POST_GATEWAY_BIND); |
| | | return HxHttp.builder() |
| | | .url(requestUrl) |
| | | .raw(HDLGsonUtils.toJson(bean)) |
| | | .build() |
| | | .post() |
| | | .subscribeWith(new HDLResponse<GatewayInfoBean>() { |
| | | @Override |
| | | public void onResponse(GatewayInfoBean response) { |
| | | if (callBack != null) { |
| | | callBack.onSuccess(response); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | HDLExceptionSubmitUtils.submit(requestUrl,bean,e); |
| | | if (callBack != null) { |
| | | callBack.onFailure(e); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * 强制绑定网关 |
| | | * 如果绑定网关返回10510 已经被绑定了,则调这个接口强制换绑 |
| | | * |
| | | * @param homeId 住宅ID |
| | | * @param mac 网关MAC |
| | | * @param callBack |
| | | * @return |
| | | */ |
| | | public Disposable forceBindGateway(String homeId, String mac, IResponseCallBack<GatewayInfoBean> callBack) { |
| | | JsonObject json = new JsonObject(); |
| | | json.addProperty("homeId", homeId); |
| | | json.addProperty("mac", mac); |
| | | String requestUrl = HDLCloudHomeApi.getRequestUrl(HDLCloudHomeApi.POST_GATEWAY_FORCE_BIND); |
| | | return HxHttp.builder() |
| | | .url(requestUrl) |
| | | .raw(json.toString()) |
| | | .build() |
| | | .post() |
| | | .subscribeWith(new HDLResponse<GatewayInfoBean>() { |
| | | @Override |
| | | public void onResponse(GatewayInfoBean 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 gatewayId 网关gatewayId |
| | | * @param callBack |
| | | * @return |
| | | */ |
| | | public Disposable unbindGateway(String homeId, String gatewayId, IResponseCallBack<Boolean> callBack) { |
| | | JsonObject json = new JsonObject(); |
| | | json.addProperty("homeId", homeId); |
| | | json.addProperty("gatewayId", gatewayId); |
| | | String requestUrl = HDLCloudHomeApi.getRequestUrl(HDLCloudHomeApi.POST_GATEWAY_UNBIND); |
| | | return HxHttp.builder() |
| | | .url(requestUrl) |
| | | .raw(json.toString()) |
| | | .build() |
| | | .post() |
| | | .subscribeWith(new HDLResponse<Boolean>() { |
| | | @Override |
| | | public void onResponse(Boolean 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 mac 网关mac地址 |
| | | * @param callBack |
| | | * @return |
| | | */ |
| | | public Disposable getGatewayHomeInfo(String mac, IResponseCallBack<GatewayInfoBean> callBack) { |
| | | JsonObject json = new JsonObject(); |
| | | json.addProperty("mac", mac); |
| | | String requestUrl = HDLCloudHomeApi.getRequestUrl(HDLCloudHomeApi.POST_GATEWAY_HOMEINFO); |
| | | return HxHttp.builder() |
| | | .url(requestUrl) |
| | | .raw(json.toString()) |
| | | .build() |
| | | .post() |
| | | .subscribeWith(new HDLResponse<GatewayInfoBean>() { |
| | | @Override |
| | | public void onResponse(GatewayInfoBean 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 oid 设备oid |
| | | * @param callBack |
| | | * @return |
| | | */ |
| | | public Disposable unbindFalseGateway(String homeId, String oid,IResponseCallBack<Boolean> callBack) { |
| | | JsonObject json = new JsonObject(); |
| | | json.addProperty("homeId", homeId); |
| | | json.addProperty("oid", oid); |
| | | |
| | | String requestUrl = HDLCloudHomeApi.getRequestUrl(HDLCloudHomeApi.POST_DEVICE_OID_REMOVE); |
| | | return HxHttp.builder() |
| | | .url(requestUrl) |
| | | .raw(json.toString()) |
| | | .build() |
| | | .post() |
| | | .subscribeWith(new HDLResponse<Boolean>() { |
| | | @Override |
| | | public void onResponse(Boolean 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 callBack |
| | | * @return |
| | | */ |
| | | public Disposable getGatewayList(String homeId, IResponseCallBack<List<GatewayInfoBean>> callBack) { |
| | | JsonObject json = new JsonObject(); |
| | | json.addProperty("homeId", homeId); |
| | | String requestUrl = HDLCloudHomeApi.getRequestUrl(HDLCloudHomeApi.POST_GATEWAY_GET_LIST); |
| | | return HxHttp.builder() |
| | | .url(requestUrl) |
| | | .raw(json.toString()) |
| | | .build() |
| | | .post() |
| | | .subscribeWith(new HDLResponse<List<GatewayInfoBean>>() { |
| | | @Override |
| | | public void onResponse(List<GatewayInfoBean> 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 gatewayId 旧网关id |
| | | * @param newMac 新网关mac |
| | | * @param callBack |
| | | * @return |
| | | */ |
| | | public Disposable replaceGateway(String homeId, String gatewayId, String newMac, IDefaultCallBack callBack) { |
| | | JsonObject json = new JsonObject(); |
| | | json.addProperty("homeId", homeId); |
| | | json.addProperty("gatewayId", gatewayId); |
| | | json.addProperty("newMac", newMac); |
| | | String requestUrl = HDLCloudHomeApi.getRequestUrl(HDLCloudHomeApi.POST_GATEWAY_REPLACE); |
| | | return HxHttp.builder() |
| | | .url(requestUrl) |
| | | .raw(json.toString()) |
| | | .build() |
| | | .post() |
| | | .subscribeWith(new HDLResponse<List<String>>() { |
| | | @Override |
| | | public void onResponse(List<String> response) { |
| | | if (callBack != null) { |
| | | callBack.onSuccess(); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | HDLExceptionSubmitUtils.submit(requestUrl,json,e); |
| | | if (callBack != null) { |
| | | callBack.onFailure(e); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | |
| | | /***************6.自动化增删改查管理***************/ |
| | | /** |
| | | * 全量更新同步自动化、存在不变,不存在新增 |
| | | * |
| | | * @param homeId 住宅id |
| | | * @param logics 自动化列表 |
| | | * @param callBack |
| | | * @return |
| | | */ |
| | | public Disposable fullAddLogicList(String homeId, List<LogicInfoBean> logics, IDefaultCallBack callBack) { |
| | | JsonObject json = new JsonObject(); |
| | | json.addProperty("homeId", homeId); |
| | | json.add("logics", HDLGsonUtils.toJsonArray(logics)); |
| | | String requestUrl = HDLCloudHomeApi.getRequestUrl(HDLCloudHomeApi.POST_LOGIC_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); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /***************7.安防化增删改查管理***************/ |
| | | /** |
| | | * 全量更新同步安防、存在不变,不存在新增 |
| | | * |
| | | * @param homeId 住宅id |
| | | * @param gatewayId 网关ID |
| | | * @param securitys 安防列表 |
| | | * @param callBack |
| | | * @return |
| | | */ |
| | | public Disposable fullAddSecurityList(String homeId, String gatewayId, List<SecurityInfoBean> securitys, IDefaultCallBack callBack) { |
| | | JsonObject json = new JsonObject(); |
| | | json.addProperty("homeId", homeId); |
| | | json.addProperty("gatewayId", gatewayId); |
| | | json.add("securitys", HDLGsonUtils.toJsonArray(securitys)); |
| | | String requestUrl = HDLCloudHomeApi.getRequestUrl(HDLCloudHomeApi.POST_SECURITY_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); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | |
| | | } |