模块结构
系统主要包含两大模块:系统模块与考试模块。
系统模块
系统核心:sys-core
为其他模块提供基础服务:
- 预置数据层、业务层、控制层基础实现,继承后可快速搭建模块基本功能,无需从零编码。
- 提供常用拦截器,涵盖请求超时记录、用户上下文绑定,并支持跨域、XSS防护。
- 实现数据灵活转换,如控制层接收字符串参数自动转日期,数据层查询数据库数字字符串转整数数组对象等。
- 采用通配符简化事务控制,遵循格式自动应用,实现事务逻辑与业务代码的解耦。
- 内置基础输入输出对象,支持链式调用,减少代码量,提升开发效率
- 提供常用工具类,以辅助开发工作,涵盖校验功能、时间处理、数值计算以及数据加密等。
系统缓存:sys-cache
使用spring缓存接口,实现热点数据的快速存取,默认使用ehcache作为缓存实现。
系统定时任务:sys-quartz
默认提供数据库自动备份、过期附件自动清理,可按需自行扩展。
系统通知:sys-notify
默认提供了邮件实现,可用于异常实时上报、通知考试等,可按需自行扩展。
系统权限:sys-auth
采用apache的shiro框架,借助字符串匹配技术,实现权限控制解耦和代码无入侵,可按需切换。
系统附件:sys-file
默认配置了本地附件存储方案,可按需扩展至云存储服务。
系统基础:sys-base
实现了包括机构管理、用户管理、参数配置以及数据字典等基础功能。
系统扩展:sys-ex
用于多模块之间的解耦:
- 对于上下级模块,通过上级模块定义接口,扩展模块实现接口,保持模块相互之间无入侵。如删除用户时级联删除考试。
- 对于同级相互依赖模块,通过同级模块定义接口,扩展模块实现接口,保持模块相互之间无入侵。如系统权限模块的令牌解析需要获取用户角色,系统基础模块的用户登录需要生成令牌。
系统API:sys-api
系统对外的api接口。
系统WEB:sys-web
主要由程序启动入口与核心配置文件组成。配置文件涵盖了应用(application.yml)的全局配置、缓存(ehcache.xml)策略的优化、日志(log4j2.mxl)系统的设置,以及持久层框架(MyBatis)的配置。
考试模块
考试核心:exam-core
提供考试相关的服务:
- 管理员可以创建考试、编制练习、建立题库
- 考试用户可以参与考试、在线练习
- 阅卷用户可以批阅试卷
- 自动化任务可以批阅试卷、自动结束考试以及提前缓存热点数据。
考试报表:exam-report
提供报表相关的统计服务。
考试扩展:exam-ex
多模块之间的解耦,参考系统扩展
考试API:exam-api
考试对外的api接口。