组织通讯录服务提供企业或者单位组织架构和员工信息服务,员工可以浏览组织架构、选取员工来发送消息和发起音视频通话,不用添加好友既可以进行。野火组织通讯录服务包括后端服务和管理后台页面。可以登录管理后台进行组织管理。
在后端服务中,提供两种类型的API,一种给管理页面用;另外一种给客户端查询使用。管理页面根据后台数据库中的用户/密码来登录。客户端在im client中取应用code,然后使用code来登录。管理页面可以修改组织通讯录数据,客户端只能查询。
系统中有3种数据结构,分别是组织、员工和关系。关系数据比较特殊,在关系数据中记录员工与组织的层级关系。比如一个员工甲的组织路径为"公司/技术部/移动端/Android",那么数据结构就存在下面4行
员工 | 部门 | 层级 | 上级部门 | 直属 |
---|---|---|---|---|
甲 | 公司 | 0 | NULL | false |
甲 | 技术部 | 1 | 公司 | false |
甲 | 移动端 | 2 | 技术部 | false |
甲 | Android | 3 | 移动端 | true |
可以看出数据中存在大量的冗余数据,数据维护难度较大,但带来的好处就是查询比较方便和高效。
员工支持多部门,一个员工可以在多个部门中任职。
客户端登录成功以后,可以调用各个查询接口。一般在进入到通讯录界面,可以调取获取根组织的方法,获取公司。然后点开公司再一级一级地展开数据。
在用户的详情界面,可以查询用户的组织关系,这样就能展示用户的组织路径。点击具体路径就可以获取对应组织的信息详情。
客户端可以本地缓存数据,在需要显示时先使用缓存,再去服务器查询,如果有更新再刷新页面。
组织通讯录服务包含后端服务和管理页面,需要分别进行编译。
进入项目的organization-web
目录下,执行下属命令:
npm install
npm run build
编译成功后,生成的html文件会拷贝到后端服务的资源目录下,这样打包后端服务的时候就可以把页面打包进后端服务了。
需要先编译管理页面,管理页面编译成功后,进入项目的organization-server
目录下,执行下属命令:
mvn clean package
生成的软件包在organization-server/target/organization-platform-server-XXX.jar
。
部署之前需要把配置文件目录organization-server/config
放到软件包的相同目录,然后编辑配置目录下的application.properties
文件。有如下地方需要修改:
- 应用的端口,默认是8880,可以修改为其他的端口。
- 应用使用的数据库,默认是H2,可以直接运行,建议切换到mysql。
- IM服务的Server API地址和密钥,必须修改为有效信息。
- 否允许外部人员访问组织,如果是则非公司员工也可以看到组织通讯录,否则看不到。
- 对象存储信息,配置之后可以在创建员工时设置头像等。
把软件包organization-platform-server-XXX.jar
放到云服务器上,确保配置目录在一起并正确配置后,执行命令:
nohup java -jar organization-platform-server-*.jar 2>&1 &
浏览器打开http://{IP}:{Port}
进入到管理后台界面,默认账户/密码为 admin/admin123
登陆以后注意修改默认密码。
在管理后台未创建任何组织的情况下,可以在后台下载导入模版,填入模版后然后上传导入所有组织架构和成员信息。在成员那个页面,选择批量导入,按照提示下载模版和上传文件。
模版中带有示例人员信息,可以导入作为测试数据进行测试。
当数据库中已经有数据的情况下,导入按钮会隐藏,可以手动调整各项数据。
UNDER MIT LICENSE. 详情见LICENSE文件