十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

云帆培训考试系统二次开发指南:如何新增题型、对接企业自有用户系统

云帆培训考试系统二次开发指南:如何新增题型、对接企业自有用户系统 云帆培训考试系统二次开发指南如何新增题型、对接企业自有用户系统【免费下载链接】yftrain学习系统-在线考试系统 企业培训内训系统-企教培系统平台软件项目地址: https://gitcode.com/gh_mirrors/yf/yftrain云帆培训考试系统yftrain是一款开源的在线考试系统 / 企业培训内训平台采用 Spring Boot Vue 架构开箱即用也极易二次开发。本文以如何新增题型和如何对接企业自有用户系统这两个最常见的改造需求为主线带你快速定位核心源码掌握培训考试系统二次开发的完整思路。一、系统架构速览改动前先看地图整个系统分为前后端两个工程职责清晰exam-apiJava 后端Spring Boot Shiro JWT MyBatis-Plus业务代码集中在exam-api/src/main/java/com/yf/exam/modules/下按模块拆分qu题库与题目题目、选项、题库管理paper试卷生成、答题、判分exam考试发布与规则sys系统管理用户、角色、部门、配置user学员端考试、培训exam-vueVue 前端管理端页面在exam-vue/src/views/下docs/安装资源/数据库脚本.sql完整建库脚本所有数据表结构一目了然理解一个模块只需记住固定的四层套路Controller接口→ Service业务→ MapperSQL→ Entity表结构二次开发时按这条链路逐层修改即可。二、如何新增题型以问答题为例系统默认支持三种题型单选题、多选题、判断题全部由一个枚举接口统一定义扩展点非常集中。1. 题型定义在哪里后端题型常量QuType.javaRADIO1单选、MULTI2多选、JUDGE3判断数据库字段el_qu表的qu_type列见 数据库脚本.sql无需改表结构新增题型只是多了一个数字前端题型下拉框form.vue 中的quTypes数组 一个有意思的细节form.vue 里已存在postForm.quType ! 4的判断分支——为第 4 种题型主观题预留了扩展位官方也推荐用它承载问答题。2. 新增题型五步走以新增问答题quType4为例步骤改哪里做什么① 定义常量QuType.java增加Integer ESSAY 4② 保存校验QuServiceImpl.java 的checkData问答题没有标准选项需跳过至少一个正确项的客观题校验③ 组卷与分值PaperServiceImpl.java 的generateByRepo/processPaperQu仿照单选/多选分支按考试规则中的问答题数量抽题并赋分④ 判分逻辑PaperQuAnswerServiceImpl.java问答题无法自动判对错改为待人工阅卷或留空不判分⑤ 前端展示exam.vue 与 form.vue题型下拉增加问答题答题页用文本域替代单选/多选组件3. 别忘了考试规则配置考试与题库的绑定关系存在el_exam_repo表中单选数/多选数/判断数各有独立的数量 分值字段对应ExamRepoDTO的radioCount、multiScore等属性。若要支持问答题数量配置需要给el_exam_repo表加两列如essay_count、essay_score同步修改 ExamRepoDTO.java 实体在 exam.vue 的考试规则表单中增加输入框完成后学员端答题页exam-vue/src/views/paper/exam/exam.vue会按题型分组渲染题卡问答题自然会被新分支接管。三、如何对接企业自有用户系统企业落地时最常见的诉求员工用企业账号体系AD/LDAP、钉钉、内部 OA直接登录考试系统而不是在系统里另建一套账号。1. 先看懂现有登录机制登录链路集中在sys/user模块接口入口SysUserController.java提供login、reg注册、quick-reg手机号快注、info获取会话等接口认证逻辑SysUserServiceImpl.java 的login方法——按用户名查sys_user表用 PassHandler.java 做盐值 密码校验会话机制Shiro JWTJwtUtils.java登录成功后用JwtUtils.sign(username)签发 Token后续请求由 JWT 过滤器校验获取当前用户任何 Service 里都可以调用 UserUtils.java 的getUserId()权限模型用户通过sys_user_role关联角色sa为超级管理员、student为学员见 SysUserRoleServiceImpl.java2. 方案 A账号批量同步推荐改动最小适合企业仍想用独立登录页但用户数据来自 HR/OA的场景在企业用户系统侧新增一个用户同步接口遍历本企业账号调用考试系统的用户保存逻辑SysUserServiceImpl.java 的save方法或管理端/exam/api/sys/user/save接口写入sys_user表并绑定部门departId对应sys_depart表与学员角色员工用同步过来的账号密码登录部门、角色关系自动生效后续组织架构调整再增量同步即可⚠️ 密码建议用 PassHandler.java 生成盐值后再入库与内置用户保持一致的加密方式。3. 方案 BSSO 单点登录体验最佳适合从 OA/门户点击直达考试系统免输账号密码的场景核心思路是用企业侧的合法凭证换取一个 JWT Token。在 SysUserController.java 中新增一个/sso-login接口接收企业侧签名如 AES 加密的 userId 或企业 SSO 回调 ticket校验签名后查/建本地用户仿照setToken方法用JwtUtils.sign(username)签发 Token 返回前端拿到 Token 后写入本地参考 auth.js 的getToken/setToken再调用/exam/api/sys/user/info换取用户信息登录流程与内置登录完全一致免登录场景下可参考 ShiroConfig.java 调整过滤链让/sso-login接口匿名可访问由于后续所有接口都基于 Shiro 会话取用户SSO 只改进门这一步系统内部无需任何改动这也是本系统对接成本低的根本原因。四、关键文件清单二次开发速查需求关键文件题型定义与保存QuType.java、QuServiceImpl.java组卷 / 判分PaperServiceImpl.java、PaperQuAnswerServiceImpl.java题目 / 答题前端qu/form.vue、exam.vue登录与用户SysUserController.java、SysUserServiceImpl.java安全与会话ShiroConfig.java、JwtUtils.java数据表结构数据库脚本.sql部署与运行资料docs/运行包/运行说明.txt、docs/部署手册.pdf五、常见疑问Q1新增题型一定要改数据库吗不需要。qu_type只是el_qu表中的一个整型字段新题型只是新增值只有想给新题型配置独立数量/分值时才需要给el_exam_repo加列。Q2对接用户系统会影响原有登录吗不会。方案 B 是新增一条登录入口原有账号密码登录、注册、快捷登录接口全部保留可以两套并存、平滑过渡。Q3修改后如何验证用 admin 账号登录管理端走一遍建题库 → 录入新题型题目 → 配置考试规则 → 学员端答题 → 查看成绩单的完整闭环判分和报表正常即改造完成。掌握以上两条主线再结合固定的Controller → Service → Mapper分层结构培训考试系统的绝大多数二次开发需求都能快速落地 【免费下载链接】yftrain学习系统-在线考试系统 企业培训内训系统-企教培系统平台软件项目地址: https://gitcode.com/gh_mirrors/yf/yftrain创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表