# 九、成员与群组

# (一)概述

# 1、成员数据

成员是加入了组织的相关人员。在CoreSDK中,成员由成员要素[MemberFeature]类表示。而成员要素则通过成员角色[MemberRole]类进行分类管理。

# 2、群组数据

CoreSDK通过群组类[Group]提供群组功能,成员可加入多个群组来适应不同的工作场景。

# (二)成员角色[MemberRole]

成员角色也叫成员集合。组织下的成员都必须归属于某一个成员角色之下。SDK通过成员角色提供了查询所属成员、删除成员、重新分配成员角色的方法。 成员集合[MemberRole]的常用属性如下:

属性名 值类型 属性描述
name String 成员集合名称
remark String 备注
icon Icon 图标
symbol PointSymbol 点符号

常用方法如下:(get/set方法略)

方法名 返回类型 方法描述
queryMembers void 查询集合下的所有成员
deleteMember void 移除成员出组织
realloctRole void 重新分配成员到此成员角色下

# 1、获取成员角色

初始化成功后,可直接从Cellsys的organization对象中获取到组织下所有的成员角色。具体代码示例如下:

List<MemberRole> memberRoles = Cellsys.organization.getMemberRoles();//初始化成功后可直接获取组织对象
if (memberRoles != null && memberRoles.size() > 0) {
    MemberRole memberRole = memberRoles.get(0);
    String name = memberRole.getName();
    String remark = memberRole.getRemark();
    Icon icon = memberRole.getIcon();
    PointSymbol pointSymbol = memberRole.getSymbol();
}
1
2
3
4
5
6
7
8

# (1)图标[Icon]

图标[Icon]是数据在普通界面上的展示。成员要素[MarkerFeature]的图标由其所属的成员集合[MarkerSet]图标决定。

CoreSDK提供了CsBitmapFactory类将其转化为Bitmap。

try {
    int biemapSize = 20;//位图宽高(px)
    Bitmap bitmap = CsBitmapFactory.convertByIcon(icon, biemapSize);////根据Icon类生成Bitmap对象
} catch (Exception e) {
    e.printStackTrace();
}
1
2
3
4
5
6

有关图标类[Icon]的详细介绍,可查看附-样式

# (2)点符号[PointSymbol]

点符号[PointSymbol]则是数据在地图上的点状展示。成员要素[MarkerFeature]的点符号由其所属的成员集合[MarkerSet]的点符号决定。

CoreSDK提供了CsBitmapFactory类将其转化为Bitmap。

try {
    Bitmap bitmap = CsBitmapFactory.convertByPointSymbol(pointSymbol);//根据pointSymbol生成Bitmap对象
} catch (Exception e) {
    e.printStackTrace();
}
1
2
3
4
5

有关点符号[PointSymbol]的详细介绍,可查看附-样式

# 2、新增成员角色

成员角色通过组织[Organization]对象创建。具体操作见代码示例

String roleName = "成员角色名称";
String roleRemark = "成员角色备注";
Icon roleIcon = null;//成员角色的图标。可不传。有关Icon的获取见文档-样式
Cellsys.organization.createMemberRole(roleName, roleRemark, new CsCallback<MemberRole>() {
    @Override
    public void onSuccess(MemberRole memberRole) {
        /*创建成功,以及创建成功的对象调用*/
        memberRole.getName();
        memberRole.getRemark();
        memberRole.getIcon();
    }

    @Override
    public void onFailure(ErrorMessage errorMessage) {
        /*失败*/
        int code = errorMessage.getCode();//错误码
        String errMsg = errorMessage.getMessage();//错误信息
    }
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 3、修改成员角色

成员角色通过组织[Organization]对象进行修改。具体操作见代码示例

memberRole.setName("修改后的名称");
memberRole.setRemark("修改后的备注");
memberRole.setIcon(icon);
Cellsys.organization.updateMemberRole(memberRole, new CsCallback() {
    @Override
    public void onSuccess(Object object) {
        /*修改成功,直接调用原对象即可查看更新后的属性*/
        memberRole.getName();
        memberRole.getRemark();
        memberRole.getIcon();
    }

    @Override
    public void onFailure(ErrorMessage errorMessage) {
        /*失败*/
        int code = errorMessage.getCode();//错误码
        String errMsg = errorMessage.getMessage();//错误信息
    }
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 4、删除成员角色

成员角色通过组织[Organization]对象进行删除。具体操作见代码示例

Cellsys.organization.deleteMemberRole(memberRole, new CsCallback() {
    @Override
    public void onSuccess(Object object) {
        /*删除成功*/
    }
    @Override
    public void onFailure(ErrorMessage errorMessage) {
        /*失败*/
        int code = errorMessage.getCode();//错误码
        String errMsg = errorMessage.getMessage();//错误信息
    }
});
1
2
3
4
5
6
7
8
9
10
11
12

# (三)成员要素

成员要素[MemberFeature]类可通过成员角色[MemberRole]进行查询、删除、重新分配成员角色。 成员要素[MemberFeature]的常用属性如下:

属性名 值类型 属性描述
name String 成员集合名称
remark String 备注
icon Icon 图标
symbol PointSymbol 点符号
location Location 定位
bindDevices List< CommmonInfo> 绑定设备的简易信息

常用方法如下:(get/set方法略)

方法名 返回类型 方法描述
queryBindDeviceDetail void 查询绑定的设备详情
getJoinedGroups void 获取成员加入的群组

# 1、获取成员要素

通过成员角色对象[MemberRole],可查询属于该成员角色的成员数据。代码示例如下:

memberRole.queryMemberFeature(new CsCallback<QueryResult<MemberFeature>>() {
    @Override
    public void onSuccess(QueryResult<MemberFeature> object) {
        /*分页信息-查询方法特有*/
        PageInfo pageInfo = object.pageInfo;//查询接口特有的分页信息
        int totalCount = pageInfo.totalCount;//数据总数
        int totalPage = pageInfo.totalPage;//总页数
        int pageNo = pageInfo.pageNo;//当前页码(从1开始)
        int pageSize = pageInfo.pageSize;//每页查询数量(注意!不一定和当前查询的数据总量匹配)
        /*获取查询结果*/
        List<MemberFeature> memberFeatures = object.data;
        if (memberFeatures != null && memberFeatures.size() > 0) {//查询结果可能为null
            for (MemberFeature memberFeature : memberFeatures) {
                /*成员要素基础信息获取示例*/
                String name = memberFeature.getName();//成员要素名称
                String remark = memberFeature.getRemark();//备注
                Icon icon = memberFeature.getIcon();//成员的图标
                PointSymbol pointSymbol = memberFeature.getSymbol();//成员的地图符号
                List<Group> groups = memberFeature.getJoinedGroups();//查看成员加入的群组
                List<CommonInfo> bindDevices = memberFeature.bindDevices;//设备简易信息
            }
        }
    }

    @Override
    public void onFailure(ErrorMessage errorMessage) {
        /*失败*/
        int code = errorMessage.getCode();//错误码
        String errMsg = errorMessage.getMessage();//错误信息
    }
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

# (1)查询关联的设备详情

/*关联的设备*/
List<CommonInfo> bindDevices = memberFeature.bindDevices;//设备简易信息
for (CommonInfo commonInfo : bindDevices) {
    String deviceName = commonInfo.getName();//群组名称
}
//查询绑定的设备详情
memberFeature.queryBindDeviceDeatil(new CsCallback<QueryResult<DeviceFeature>>() {
    @Override
    public void onSuccess(QueryResult<DeviceFeature> object) {
        List<DeviceFeature> deviceFeatures = object.data;
    }

    @Override
    public void onFailure(ErrorMessage errorMessage) {
        int errorCode = errorMessage.getCode();//错误码
        String errorMsg = errorMessage.getMessage();//错误信息
    }
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# 2、删除成员要素

移除成员的操作通过成员角色[MemberRole]进行。调用成功后,成员将被移除出组织。代码示例如下:

/*成员移除出组织*/
memberRole.deleteMember(memberFeature, new CsCallback<Void>() {
    @Override
    public void onSuccess(Void object) {
        //移除成员成功
    }

    @Override
    public void onFailure(ErrorMessage errorMessage) {
        int errorCode = errorMessage.getCode();//错误码
        String errorMsg = errorMessage.getMessage();//错误信息
    }
});
1
2
3
4
5
6
7
8
9
10
11
12
13

# 3、重新分配成员的角色

通过成员角色[MemberRole]的realloctRole方法可将成员切换成当前角色。代码示例如下:

/*将成员重新分配到指定成员角色下*/
memberRole.realloctRole(memberFeature, new CsCallback<Void>() {
    @Override
    public void onSuccess(Void object) {
        //操作成功
    }

    @Override
    public void onFailure(ErrorMessage errorMessage) {
        int errorCode = errorMessage.getCode();//错误码
        String errorMsg = errorMessage.getMessage();//错误信息
    }
});
1
2
3
4
5
6
7
8
9
10
11
12
13

# (四)群组[Group]

群组与成员角色的不同:群组可根据实际需要按任意规则添加成员。且成员可加入多个群组。而成员角色是对成员数据进行管理的集合,一个成员属于且仅属于一个成员角色(即成员集合)。

群组[Group]的常用属性如下:

属性名 值类型 属性描述
name String 群组名称
remark String 备注
icon Icon 图标
memberCount int 群组人数
isPublish boolean 是否发布

常用方法如下:(get/set方法略)

方法名 返回类型 方法描述
queryMembers void 查询群组下的所有成员
queryLeaders void 查询群组下的组长信息
memberJoin void 成员加入群组
memberLeave void 成员离开群组
allocateLeader void 分配队长
repealLeader void 取消分配队长

# 1、查询群组

初始化成功后,可直接从Cellsys的organization对象中获取到组织下所有的群组。具体代码示例如下:

List<Group> groups = Cellsys.organization.getGroups();
if (groups != null && groups.size() > 0) {
    for (Group group : groups) {
        String name = group.getName();//名称
        String remark = group.getRemark();//备注
        Icon icon = group.getIcon();//图标
        int memberCount = group.getMemberCount();//群组人数
    }
}
1
2
3
4
5
6
7
8
9

# 2、新增群组

初始化成功后,可通过organization对象来新增群组。具体代码示例如下:

Icon icon = null;//群组图标。可不传
Cellsys.organization.createGroup("群组名称", "群组描述", icon, new CsCallback<Group>() {
    @Override
    public void onSuccess(Group object) {
        //创建成功,回调会直接返回创建后的对象
        object.getName();
        object.getRemark();
    }
     
    @Override
    public void onFailure(ErrorMessage errorMessage) {
        /*失败*/
        int code = errorMessage.getCode();//错误码
        String errMsg = errorMessage.getMessage();//错误信息
    }
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 3、修改群组

初始化成功后,可通过organization对象来修改群组信息。具体代码示例如下:

group.setName("修改后的名称");
group.setRemark("修后后的备注");
group.setIcon(icon);
group.setPublish(true);
Cellsys.organization.updateGroup(group, new CsCallback() {
    @Override
    public void onSuccess(Object object) {
        //修改成功。修改后的属性,会反馈到group对象身上。
    }
     
    @Override
    public void onFailure(ErrorMessage errorMessage) {
        /*失败*/
        int code = errorMessage.getCode();//错误码
        String errMsg = errorMessage.getMessage();//错误信息
    }
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# 4、删除群组

初始化成功后,可通过organization对象来删除群组信息。具体代码示例如下:

Cellsys.organization.deleteGroup(group, new CsCallback() {
    @Override
    public void onSuccess(Object object) {
        /*删除成功*/
    }
     
    @Override
    public void onFailure(ErrorMessage errorMessage) {
        /*失败*/
        int code = errorMessage.getCode();//错误码
        String errMsg = errorMessage.getMessage();//错误信息
    }
});
1
2
3
4
5
6
7
8
9
10
11
12
13

# 5、成员加入/离开群组

通过群组[Group]类来调用成员加入群组、离开群组的方法。具体代码示例如下:

/*成员加入群组*/
group.memberJoin(memberFeature, new CsCallback() {
    @Override
    public void onSuccess(Object object) {
        /*成功*/
    }
         
    @Override
    public void onFailure(ErrorMessage errorMessage) {
        /*失败*/
        int code = errorMessage.getCode();//错误码
        String errMsg = errorMessage.getMessage();//错误信息
    }
});
     
/*成员离开群组*/
group.memberLeave(memberFeature, new CsCallback() {
    @Override
    public void onSuccess(Object object) {
        /*成功*/
    }
         
    @Override
    public void onFailure(ErrorMessage errorMessage) {
        /*失败*/
        int code = errorMessage.getCode();//错误码
        String errMsg = errorMessage.getMessage();//错误信息
    }
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

# 6、群组设置/取消设置队长

群组[Group]类可将群组成员设置为队长、或取消设置队长。具体代码示例如下:

/*分配组长*/
group.allocateLeader(memberFeature, new CsCallback() {
    @Override
    public void onSuccess(Object object) {
        /*成功*/
    }
         
    @Override
    public void onFailure(ErrorMessage errorMessage) {
        /*失败*/
        int code = errorMessage.getCode();//错误码
        String errMsg = errorMessage.getMessage();//错误信息
    }
});
         
/*取消分配组长*/
group.repealLeader(memberFeature, new CsCallback() {
    @Override
    public void onSuccess(Object object) {
        /*成功*/
    }
         
    @Override
    public void onFailure(ErrorMessage errorMessage) {
        /*失败*/
        int code = errorMessage.getCode();//错误码
        String errMsg = errorMessage.getMessage();//错误信息
    }
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29