# DGUT在线办公系统
**Repository Path**: ljagps/online-collaborative-office
## Basic Information
- **Project Name**: DGUT在线办公系统
- **Description**: 一款供企业员工使用的在线协同办公小程序。主要功能包括人脸考勤签到;会议管理,多人在线语音+视频会议;在线审批、通讯录等企业常用功能。
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 2
- **Created**: 2024-09-12
- **Last Updated**: 2024-09-12
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 1. 项目简介
一款供企业员工使用的在线协同办公小程序。主要功能包括人脸考勤签到,GPS 坐标定位,分析签到地址是否为疫情高风险地区,智能疫情风险管控;会议管理,多人在线语音+视频会议;在线审批、通讯录等企业常用功能。
系统采用前后端分离架构,基于 Maven 使用 SpringBoot 开发,利用 Swagger2 搭建 RESTAPI。采用 Mybatis 为持久层框架,数据库选用 MySOL,采用 Druid 连接池以提高响应速度。使用 Shiro 框架,结合 RBAC 权限模型,解决用户认证与授权问题。使用 JWT 实现单点登录,并结合 AOP、ThreadLocal 和 Redis 实现 token 令牌自动续期,解决令牌过期的难题。采用 Ouartz 实现定时任务调度。
# 2.项目架构
开发环境: JDK1.8 + IDEA + Maven + MySQL+Redis + MongoDB + Swagger2 + HBuilderX + 微信开发者工具
移动端: Uni-APP + Vue + JavaScript + Less + 小程序
后端: SpringBoot + SpringMVC + MyBatis + Shiro + JWT + Quartz + ThreadPool
# 3.功能模块
## 登录注册
模块描述:
- 注册:当管理者在 Emos 系统中创建了新员工记录,然后 Emos 系统会自动向新员工的邮箱发出 Email 邮件,邮件中就包含了激活码。当新员工打开 Emos 小程序之后,在注册页面填写上激活码,于是用户的微信账号就自动跟 Emos 系统绑定了。以后登录 Emos 系统的时候,只需要在微信上确认一下,就可以完成登陆。注册成功之后,我们要向客户端返回令牌之外,还要返回用户的权限列表。(系统并不是完全对外开放的在线办公系统,只有本公司内部人员才可以使用这套系统,所以Emos系统并不完全对外开放注册。设计的Emos系统包含一个内置的`超级管理员账号`,这个账号的激活码是固定的(默认`000000`))
- 登录:用户在 Emos 登陆页面点击登陆按钮,然后小程序把`临时授权字符串`提交给后端 Java 系统。后端 Java系统拿着临时授权字符串换取到`openid`,我们查询用户表中是否存在这个`openid`。如果存在,意味着该用户是已注册用户,可以登录,向客户端返回令牌之外,还要返回用户的权限列表。如果不存在,说明该用户尚未注册,目前还不是我们的员工,所以禁止登录。
效果:
## 系统管理
模块描述:超级管理员、总经理、部门经理对部门模块以及权限模块进行设置。
效果:
## 员工管理
添加新员工效果:
查询员工效果:
修改员工效果:
删除员工效果:
## 人脸签到
模块描述:(由于疫情结束,签到地区疫情风险功能关闭。)
可在“我的考勤”查询入职以来的所有考勤信息,本月正常签到天数、迟到天数、缺勤天数。

效果图:
“我的考勤”效果图:
## 在线审批
模块描述:
1. 前端封装请求发送审批请求参数,Ajax清求要发送给 emos-workflow 项目。
2. 工作流警会自动判断当前任务审批通过之后,下一步该干什么。
3. 这些东西在 emos-workflow 项目中都封装好了,调用相应的API接口即可。
4. 无论会议审批通过还是不通过,emos-workflow 项目都会向 emos-x-api 工程发送审批结果通知。
## 会议管理
模块描述:
- 会议创建,编辑会议时间、标题、入会人员,采用Ajax请求封装参数发送emos后端,后端调用emos-workflow 项目创建会议
- 会议删除,前端发送会议实例ID,采用Ajax请求将封装参数发送emos后端,后端调用emos-workflow工作流 项目删除会议。会议开始前20分钟不能删除会议。
## 语音+视频会议
模块描述:
1. 采用腾讯的TRTC服务实现视频会议功能。
2. 视频房间号是在会议开始之前 15 分钟,由 Activity 工作流创建出来的,缓存在redis里面。会议开始 10 分钟后删除缓存中的视频房间号
## 通讯录
模块描述:
1. 打开通讯录页面展示所有员工名称列表。同时将所有员工的电话号码放入页面
2. 点击用户名弹出确认是否通话,点击确认调用uni-app相关API实现拨打电话功能。
