橙悦OA办公系统

一、项目描述:

为企业线上办公提供定制化需求。基于现有的微服务架构实现, 内置了部门管理、用户管理、角色管理、菜单管理、数据数据字典、定时任务、常用系统监控等基础功能,并内置了文件上传下载、导入导出、短信功能、邮件发送等常用工具,整合了layui前端常用组件。目前只支持PC端的应用。

 

二、软件架构:

后端:springboot、springmvc、shiro、mybatis、mybatis-Plus、 Alibaba Druid( 数据库连接池 )、redis、 Quartz、 kafka 、 SLF4J(日志组件)、 QcloudCOS(腾讯云存储)、 Maven、 swagger2(文档生成工具)、 fastjson

前端: jQuery、 layui、vue

 

三、内置功能:

项目主页:登录后进入项目主页包含左侧的导航栏及首页欢迎页;

系统管理:

  • 用户管理:用于管理后台系统的用户

  • 部门管理:通过不同的部门来管理和区分用户 

  • 菜单管理:维护系统菜单,操作权限,按钮权限 

  • 角色管理:维护系统角色信息,以角色为单位分配系统权限 

  • 数据字段管理:对系统中经常使用的一些较为固定的数据进行维护,如:是否、男女、类别、级别等 

  • 日志管理:系统正常操作日志记录和查询;系统异常信息日志记录和查询

系统监控 :

  • Druid连接池监控:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈 

  • 服务器监控:显示服务器内存信息、CPU信息、磁盘信息、JVM信息等性能指标 

  • 在线用户列表:显示在线用户信息

常用功能 :

  • 微信支付:集成微信native支付功能

  • 支付宝支付:集成支付宝 站二维码支付功能 

  • 短信服务?阿里云短信:集成阿里云短信SDK ?腾讯云短信:集成腾讯云短信SDK ?云潮云短信:集成云潮云短信SDK 

  • 定时任务:支持注解配置定时任务,支持动态维护定时任务,引入Quartz分布式定时调度 

  • 上传下载:集成普通文件上传、图片上传、多文件上传、拖动上传、腾讯云COS存储等功能 

  • 导入导出:引入POI工具,整合excel等导入导出功能

  • 系统消息:支持发送系统消息 

  • 验证码:集成google验证码插件,支持算术验证码、动态验证码

常用功能:

  • 上传图片:集成图片上传本地或数据库

流程管理:

  • 流程类别:用于管理业务流程类别

  • 流程模型:集成activiti在线流程设计器

  • 流程部署:管理activiti流程部署,支持在线设计器流程部署与文件上传部署

  • 流程定义:管理流程定义,显示流程版本

  • 表单类别:用于管理业务表单类别

  • 表单构建:在线表单设计器

  • 表单列表:管理系统中的表单数据,分为在线设计的表单与系统预设表单

  • 流程管理:集中管理系统中流程,涉及流程类别,权限,版本控制等

流程中心:

  • 流程中心:显示系统在用最新版本流程

  • 我的流程

              我的草稿:显示我的流程草稿

              我的申请:显示我的申请流程,可以查看审批进度

              我的完结:显示我的完结流程

  • 待我审批:显示系统中需要本人审批的流程

  • 已办审批:显示系统中本人已经完成的审批流程

  • 代办组任务:显示系统中有本人参与的组任务审批流

执行力管理:

  • 会议管理

              会议类型管理

              会议室管理

              会议室预定

              会议管理

  • 日 管理

              我的日

             下属的日

  • 日程管理

              我的日程

              我下属的日程

              我创建的日程

  • 任务管理

              我的任务

              我创建的任务

              我参与的任务

              我监控的任务

  • 目标管理

              我的目标

              我创建的目标

              我参与的目标

              部门目标

              公司目标

人力资源管理:

  • 组织架构管理

              组织架构

              岗位管理

  • 人事档案

             人事信息

             人事合同

             奖惩信息

             离职管理

  • 考勤管理

              考勤日历设置

              考勤日历视图

               加班维护

               加班统计

               年假维护

               年假统计

  • 薪资管理

               薪资管理

               员工银行卡

  • 招聘管理

               招聘需求

               招聘计划

               简历库

               面试记录

               offer记录

               后备资源库

  • 培训管理

               课程类别

               课程管理

               培训计划

               培训实施

前端实例组件:

格栅、按钮 、表单 、导航 、选项卡 、进度条、面板、徽章、时间线 、动画、辅助、通用弹出层、上传 、时间日期、数据表格、分页 、滑块、评分、轮播、流加载 、工具、代码修饰、颜色选择器

 

四、演示截图:

 

五、项目重点难点分析

1、MQ在用户消息一致性方面的实践strong>

kafka实际上有个offset的概念,就是每个消息写进去,都有一个offset,代表他的序 ,然后consumer消费了数据之后,每隔一段时间,会把自己消费过的消息的offset提交一下,代表我已经消费过了,下次我要是重启啥的,你就让我继续从上次消费到的offset来继续消费吧。

 

但是凡事总有意外,比如我们之前生产经常遇到的,就是你有时候重启系统,看你怎么重启了,如果碰到点着急的,直接kill进程了,再重启。这会导致consumer有些消息处理了,但是没来得及提交offset,尴尬了。重启之后,少数消息会再次消费一次。

 

其实重复消费不可怕,可怕的是你没考虑到重复消费之后,怎么保证幂等性。

 

给你举个例子吧。假设你有个系统,消费一条往数据库里插入一条,要是你一个消息重复两次,你不就插入了两条,这数据不就错了你要是消费到第二次的时候,自己判断一下已经消费过了,直接扔了,不就保留了一条数据p>

 

一条数据重复出现两次,数据库里就只有一条数据,这就保证了系统的幂等性。

 

幂等性,我通俗点说,就一个数据,或者一个请求,给你重复来多次,你得确保对应的数据是不会改变的,不能出错。

那所以第二个问题来了,怎么保证消息队列消费的幂等性p>

其实还是得结合业务来思考,我这里给几个思路:

(1)比如你拿个数据要写库,你先根据主键查一下,如果这数据都有了,你就别插入了,update一下好吧!

(2)比如你是写redis,那没问题了,反正每次都是set,天然幂等性。

(3)比如你不是上面两个场景,那做的稍微复杂一点,你需要让生产者发送每条数据的时候,里面加一个全局唯一的id,类似订单id之类的东西,然后你这里消费到了之后,先根据这个id去比如redis里查一下,之前消费过吗没有消费过,你就处理,然后这个id写redis。如果消费过了,那你就别处理了,保证别重复处理相同的消息即可。

 

还有比如基于数据库的唯一键来保证重复数据不会重复插入多条,我们之前线上系统就有这个问题,就是拿到数据的时候,每次重启可能会有重复,因为kafka消费者还没来得及提交offset,重复数据拿到了以后我们插入的时候,因为有唯一键约束了,所以重复数据只会插入 错,不会导致数据库中出现脏数据。

 

如何保证MQ的消费是幂等性的,需要结合具体的业务来看。

 

六、项目中其他的内容点

1、工作流:activity、Jbpm这些是不可不知的。所以在做此类项目前有必要将这项技术给学习一下。

2、权限:shiro。除此之外在使用spring框架全家桶的时候一般还会考虑 SpringSecurity,那么为什么不使用 SpringSecurity以及使用shiro就是要考量的点了。在使用过程中shiro的配置(认证、授权)、所需注意的问题、优缺点等往往又是面试中很常问的点。

3、导入/导出:POI。不同类型的 表、不同格式的 表、并发情况下的 表等可能会产生的问题或注意事项有那些p>

4、maven如何解决的依赖冲突p>

5、Git的主干、分支开发,提交冲突等的处理。

 

以上的这些点大家参考一下,项目中也还有很多其他的问题这里不再做一一的赘述。大家有那些更好的建议欢迎留言!

参考:https://www.oschina.net/p/active4j-oa

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年3月18日
下一篇 2021年3月18日

相关推荐