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