项目管理

更新时间:2022-02-17 05:45:38下载pdf

概念介绍

  • 项目为挂载在某一账号下的可独立操作的单元,区域和设备等必须要挂载在某一项目下才可进行操作。

  • 一个账号下可以有不定数量的项目,不同套餐的账号可配置不同数量的项目,新用户在注册登录后默认是没有项目的,需进行项目的创建流程后才可进行项目维度的相关操作。

  • 项目分类:

    • 室内项目:在建筑平面图上,对设备进行可视化管理。推荐简单的使用场景,项目地址可以简单用文案描述。适用于办公楼,商场等项目。

    • 户外项目:通过GIS地图精准定位设备,推荐区域较大,设备分散的使用场景,项目地址为国家+一级行政区作为划分。项目下级区域通过在地图上标记点位的形式展示。当前项目类型仅为高级版品牌商开通的账号才有创建权限。适用于户外路灯,充电桩等项目。

配置项目

获取室内/户外项目类型下数据配置。

  1. 未开通户外项目权限的基础版账号,则callback返回的列表长度为1,仅包括室内项目配置信息。
  2. 已开通户外项目权限的高级版账号,则callback返回列表长度为2,包括户外项目配置和室内项目配置信息。

接口说明

void getProjectConfigList(ITuyaResultCallback<List<LightingProjectConfigsBean>> callback);

LightingProjectConfigsBean说明

项目配置信息类

参数 类型 说明
projectType int 当前项目类型:0 - 室内项目,1 - 户外项目
projectTypeName String 当前项目类型的名称
projectIconUrl String 当前项目类型的图标
spaceAttributes List 区域层级列表

AreaConfig说明

区域层级信息类

参数 类型 说明
id int 区域层级ID
name String 区域层级名称,如园区-楼宇-楼层-房间
iconUrl String 区域层级icon

示例代码

TuyaCommercialLightingProject.getLightingProjectManager().getProjectConfigList(new ITuyaResultCallback<List<LightingProjectConfigsBean>>() {
            @Override
            public void onSuccess(List<LightingProjectConfigsBean> result) {
                if (null != result) {
                    iProjectIndexView.getProjectConfigListSuccess(result);
                }
            }

            @Override
            public void onError(String errorCode, String errorMessage) {
                Log.e(TAG, "getProjectConfigList onError: errorCode=" + errorMessage);
                iProjectIndexView.getProjectConfigListError();
            }
        });

创建项目

接口说明

新建一个项目,当前支持创建室内项目和户外项目。

void createProject(
	int projectType,
	String name,
	String leaderName,
	String leaderMobile,
	String detail,
	String regionLocationId,
	ITuyaHomeResultCallback callback);

参数说明:

参数 说明 是否必填
projectType 项目项目类型(0:默认室内项目,1:户外项目)。
可从获取项目配置信息方法获取类型id
name 项目名称
leaderName 项目负责人
leaderMobile 联系人信息
detail 详细地址
室内项目类型必传,用于描述详细地址
户外项目类型必传,用于描述户外项目位置,建议选中区域拼接
例:中国浙江省,美国加利福尼亚州等
regionLocationId 区域ID 用","分割
户外项目类型必传,用于描述户外项目位置
中国区:一级行政区,其他区:国家 +一级行政区
例:浙江省id;美国id,加利福尼亚id
室内项目类型此字段传空

示例代码

TuyaCommercialLightingProject.getLightingProjectManager().createProject(projectType, projectName, leaderName, leaderMobile, detailAddress, regionId, new ITuyaHomeResultCallback() {
    @Override
    public void onSuccess(HomeBean homeBean) {
        if (null == mProjectAddView) {
            return;
        }
        mProjectAddView.doSaveSuccess();
    }

    @Override
    public void onError(String s, String s1) {
        if (null == mProjectAddView) {
            return;
        }
        mProjectAddView.doSaveFailed(s1);
    }
});

编辑项目

接口说明

编辑项目信息

void updateProjectInfo(
  String name,
  String regionLocationId,
  String detail,
  String leaderName,
  String leaderMobile,
  IResultCallback callback);

参数说明:

参数 说明 是否必填
projectId 项目ID
name 项目名称
regionLocationId 多个区域ID 用","分割
户外项目类型必传,用于描述户外项目位置
中国区:一级行政区,其他区:国家 +一级行政区
例:浙江省id;美国id,加利福尼亚id
室内项目类型此字段传空
detail 详细地址
室内项目类型必传,用于描述详细地址
户外项目类型必传,用于描述户外项目位置,建议选中区域拼接
例:中国浙江省,美国加利福尼亚州等
leaderName 项目负责人
leaderMobile 负责人联系方式

示例代码

TuyaCommercialLightingProject.newProjectInstance(projectId).updateProjectInfo(mHomeBean.getHomeId(), mHomeBean.getName(),mHomeBean.getLeaderName(), mHomeBean.getLeaderMobile(), regionId, content, new IResultCallback() {
    @Override
    public void onError(String code, String error) {
        if (null == mIProjectInfoView) {
            return;
        }
        mIProjectInfoView.showToast(error);
    }

    @Override
    public void onSuccess() {
        if (null == mIProjectInfoView) {
            return;
        }
        mIProjectInfoView.updateAddressDetail(content);
    }
});

删除项目

接口说明

删除一个已经创建的项目。项目删除后,所有的数据会被清空,已添加的设备会被解绑和重置。
删除项目为高风险操作,需要输入密码保证安全性。所以删除项目方法将会在内部处理密码校验,输入正确的密码将直接调用删除操作。若有风险提示弹窗等相关交互,请在输入密码前展示。

void deleteProjectWithPassword(String password, IResultCallback callback);

参数说明:

参数 说明
projectId 要删除的项目ID
key 通过密码获取key(用户体系:getKeyFromPassword)
password 当前账号的密码

示例代码

TuyaCommercialLightingProject.newProjectInstance(projectId).deleteProjectWithPassword(mIProjectInfoView.getProjectId(), password, new IResultCallback() {
    @Override
    public void onError(String s, String s1) {
        if (null == mIProjectInfoView) {
            return;
        }
        mIProjectInfoView.showToast(s1);
    }

    @Override
    public void onSuccess() {
        if (null == mIProjectInfoView) {
            return;
        }
        mIProjectInfoView.doRemoveView(true);
    }
});

查询项目列表

接口说明

获取已经创建过的项目列表

void getProjectList(ITuyaGetHomeListCallback callback);

示例代码

TuyaCommercialLightingProject.getLightingProjectManager().getProjectList(new ITuyaGetHomeListCallback() {
    @Override
    public void onSuccess(List<HomeBean> list) {
        Log.i(TAG, "queryProjectList onSuccess: " + JSON.toJSONString(list));
        if (null == iProjectIndexView.getContext()) {
            return;
        }
        if (CollectionUtils.isEmpty(list)) {
            iProjectIndexView.showProjectEmptyView();
        } else {
            iProjectIndexView.setProjectList(list);
        }
    }

    @Override
    public void onError(String s, String s1) {
        Log.e(TAG, "queryProjectList onError: errorCode=" + s);
    }
});

查询项目详情

接口说明

获取指定项目详情

void getProjectDetail(ITuyaHomeResultCallback callback);

参数说明:

参数 说明
projectId 项目ID,可通过获取项目列表返回的数据,拿取projectId

示例代码

TuyaCommercialLightingProject.newProjectInstance(long projectId).getProjectDetail(mIProjectInfoView.getProjectId(), new ITuyaHomeResultCallback() {
    @Override
    public void onSuccess(HomeBean homeBean) {
        if (null == mIProjectInfoView) {
            return;
        }
        mIProjectInfoView.setProjectData(homeBean);
    }

    @Override
    public void onError(String s, String s1) {
        if (null == mIProjectInfoView) {
            return;
        }
        mIProjectInfoView.showToast(s1);
    }
});

查询数据区国家列表

接口说明

根据当前账号所属数据区返回国家列表数据,目前支持:中国区(中国),美国区(美国,日本,中国香港),欧洲区(澳大利亚)三个数据区的六个国家,数据区的国家支持动态新增,以实际返回为准,如有新增需求请联系产品。

void getRegionList(ITuyaResultCallback<List<LightingRegionListBean>> listener);

LightingRegionListBean字段说明:

字段 类型 说明
locationId String 当前区域ID
name String 当前区域名称,已支持多语言。
pinyinInitials String 区域名称首字母。
中文:拼音首字母,其他:英文首字母
该字段主要用于自定义排序/索引。
children List 当前区域下级子区域。例如:国家下的一级行政区。

示例代码

TuyaCommercialLightingRegion.getRegionManager().getRegionList(new ITuyaResultCallback<List<LightingRegionListBean>>() {
    @Override
    public void onSuccess(List<LightingRegionListBean> result) {
        if (result != null) {
            mRegionListView.getRegionListSuccess(result);
        }
    }

    @Override
    public void onError(String errorCode, String errorMessage) {
        mRegionListView.getRegionListError(errorMessage);
    }
});

从缓存查询数据区国家列表

接口说明

前置条件:调用过一次获取数据区国家列表方法。否则此方法返回空;

使用场景:列表数据基本上不会改变。所以做了数据缓存。此方法为从缓存中读取列表数据。

List<LightingRegionListBean> getRegionListFromCache();

示例代码

List<LightingRegionListBean> result = TuyaCommercialLightingRegion
        .getRegionManager()
        .gerRegionListFromCache();