该产品是提供给中国建设银行内部员工使用的ERP平台。
功能包含:用户管理、系统管理、角色管理、部门机构管理、菜单管理、培训、课程、微课、专题班、案例、训练营、直播、大赛、读书、论道、素材、问卷调查、统计分析等。不同员工登录该平台后会根据本身的角色使用不同的菜单功能。
普通员工可以登录该系统参加线上直播职业技能培训、也可以观看往期教学视频学习、还可以查询相关资料和文档并进行职业技能考试等。
分行管理员及领导可以登录该系统实现对下级部门的管理,比如创建培训计划、培训班、指定教学经理和老师、查看往期培训结果、培训明细、对员工用户行为的统计分析等。
教学经理和老师可以通过该系统组织学员进行培训报名、管理学员考勤、班级群等功能。
员工还可以在论道里面对日常学习问题或系统使用情况提供建议和反馈。
该平台的作用主要是方便基础员工学习和培训,完善自己的职业技能,同时方便管理员和领导管理学员培训并了解培训情况和动态。既能节约线下培训的成本,同时又能保证信息的安全性,还可以提高内部流程的办事效率。
1. 使用SpringMVC框架来实现模型层、视图层、控制层的管理,提高藕合。过滤器过滤不安全访问,拦截器对请求进行TOKEN权限校验。
2. 使用Spring框架的内置注解和IOC完成对象注入管理和容器管理。通过AOP切面来实现日志和异常管理。
3. 使用AKSK校验来保证和第三方接口交互的安全性问题,同时可以结合拦截器和AOP切面统一对需要AKSK校验的接口进行管理。
4. 使用SpringBoot框架和框架内部自带的tomcat进行快速开发,结合Maven对lib包的管理,将需要使用的pom文件依赖构建进来,提高开发效率。
5. 简单业务使用SpringDataJPA或MybatisPlus来实现JDBC的交互、复杂业务使用Mybatis实现JDBC的交互。
6. 由于项目庞大,功能模块较多,使用SpringCloud来进行微服务管理,每个模块单独分为一个服务,这样服务之间用过Feign外呼或者HttpClient交互,保证模块之前尽可能的藕合,不用相互影响,利于维护。
7. 通过SpringBatch和XXL-JOB来实现分布式数据批处理,保证数据处理的有效性和安全性。XXL-JOB的图形化可配置界面更利于定时任务的维护及管理。
8. 通过Druid结合Mysql和Oracle来生成数据库连接池,保证多数据源的使用性,Druid的管理界面还可以查询每个SQL的日志管理,方便问题跟踪。
9. 使用Nacos完成分布式服务注册和配置管理,开发人员可以根据不同的开发环境对应不同的配置信息,方便多环境开发,提高开发效率。比如application-dev.yml、application-sit.yml、application-prod.yml。
10. 使用Redis做数据缓存处理,减轻数据库的访问压力,防止高并发。做好Redis数据有效期的设置和布隆过滤器的设置,防止大批量失效或访问到空的情况导致缓存穿透、缓存雪崩等情况,Redis数据备份采用AOF和RDB的双模式,保证备份数据能快速恢复的同时数据还具有的完整性。通过Redis Cluster实现分布式集群,节省内存。
11. 对于部分功能通过RabbitMQ进行异步处理,减少接口返回等待时间,提高接口响应效率,比如用户登录的时候需要给这个用户增加积分并发送短信,那么在校验用户登录成功的时候就可以异步调用消息队列来执行增加积分和发送短信的功能,然后直接返回接口,不用等待异步的操作。采取ACK手动确认的形式防止队列没有被成功消费,同时判断执行唯一编号来判定重复消费的行为。编写config配置类的时候实行消息持久化。
12. 通过Flyway做数据脚本管控,保证SQL执行的安全性和可追溯性,同时也能保证数据库的安全性,防止员工私自在堡垒机直接执行未验证的SQL语句, 防止数据库崩坏导致不可用。
13. 通过AES对敏感数据做加解密,保证数据的安全性。
14. 使用XSS过滤机制防止XSS跨站脚本攻击。
15. 使用雪花算法生成主键ID,保证分布式系统中主键的唯一性。
16. 使用EasyExcel来实现文件上传下载的功能,相较于传统的POI它更简洁,效率更高,速度更快,同时还能防止文件过大导致OOM的问题。
17. 大文件的上传采取分片上传的模式,将大文件分割成单个分片,同时支持续传,上传完成后将分片全部合并,保证大文件上传的安全性和完整性,提高上传效率。
18. 对于资料的内容展示基本采用页面静态化的方式,减少服务请求。
19. 通过ThreadPoolExecutor创建线程池,防止不同的线程任务在执行时需要获取线程而排队等待,降低资源消耗,提高响应速度,提高线程的可管理性。