通讯录同步
只有加入到企业微信通讯录中的用户才可以访问自建应用
和企业微信小程序
。因此,在系统初始化时,我们需要先进行通讯录同步操作
当第一次同步完部门和成员后,以后所有的变更(增、删、改)都会自动进行同步
依次进入:首页
->设置
->企业微信
->通讯录管理
部门与角色
企业微信中的部门
对应的是CabloyJS中的角色
。当同步部门时,将部门
信息保存在数据表aWxworkDepartment
中,同时创建一个角色
1. 根部门
企业微信中的根部门
默认对应的是CabloyJS中的角色internal/wxwork
的子角色。此默认角色可以定制
a-wxwork/backend/src/config/config.js
- 1 // sync
- 2 config.sync = {
- 3 department: {
- 4 roleContainer: 'internal',
- 5 roleTop: 'wxwork',
- 6 },
- 7 };
2. 角色树
CabloyJS针对各类业务开发的需求,提炼了一套内置角色
,并形成一个规范的角色树
。实际开发中,可通过对角色树
的扩充和调整,实现各类角色相关的需求
企业微信中的部门树
同步到CabloyJS中的角色树
,就是进行角色扩充的典型应用
在CabloyJS中,部门
和岗位
本质上都是角色,因此都需要组织在角色树中。比如张三是软件部的开发经理,那么角色结构就应该是这样:XXX企业
-> 软件部
-> 开发经理
,然后把用户张三
加入到角色开发经理
中,从而方便权限的授予和资源的分配
更多信息,请参见:角色基本概念
3. 角色与授权
CabloyJS提供了完备、而且灵活的角色与授权系统,请参见:角色授权
4. 获取角色
- 1const role = await this.ctx.meta.role.parseRoleName({
- 2 roleName,
- 3 roleIdParent,
- 4 force = false,
- 5});
名称 | 说明 |
---|---|
roleName | 角色名称,可以是. 级联模式 |
roleIdParent | 父角色Id,可以为空 |
force | 如果角色不存在,是否强制创建 |
5. 获取部门
模块a-wxwork
提供了一个model: department
。我们可以在自己的业务模块中通过这个model来获取企业微信的部门信息。比如,我们可以通过roleId
查找对应的departmentId
- 1const modelDepartment = this.ctx.model.module('a-wxwork').department;
- 2const department = await modelDepartment.get(where);
- where:可传入以下参数的组合进行部门的检索
名称 | 说明 |
---|---|
roleId | 角色Id |
departmentId | 部门Id |
departmentParentId | 父部门Id |
departmentName | 部门名称 |
成员与用户
企业微信中的成员
对应的是CabloyJS中的用户
。当同步成员时,将成员
信息保存在数据表aWxworkMember
中,同时创建一个用户
- 获取当前登录用户
当用户登录成功后,我们可以直接通过this.ctx.state.user.op
来获取当前用户信息
- 获取成员
模块a-wxwork
提供了一个model: member
。我们可以在自己的业务模块中通过这个model来获取企业微信的成员信息。比如,我们可以通过userId
查找对应的memberId
- 1const modelMember = this.ctx.model.module('a-wxwork').member;
- 2const member = await modelMember.get(where);
- where:可传入以下参数的组合进行成员的检索
名称 | 说明 |
---|---|
userId | 用户Id |
memberId | 成员Id |
在企业微信中,也是用UserId来标识一个成员。为了避免两个系统中术语的冲突,企业微信中的UserId在CabloyJS中采用MemberId来表述
评论: