前言
博主介绍:一线全栈工程师,毕设实战引路人。技术栈覆盖Java、Python、C#、PHP、Node.js及UniApp跨端开发,擅长多语言项目落地与架构设计。持续分享毕设源码、开题报告、技术选型心得与职场踩坑经验。用工程化思维写代码,帮你把毕设做成作品集。👍👍
👇精彩专栏 推荐订阅👇
Java精品项目案例【2000套】
Python精品项目案例【500套】
uniapp/微信小程序/安卓app精品实战案例【800套】
✅获取源码请私信✅
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以找我咨询,希望帮助更多的人❤️
系统实现
员工用户角色功能实现
在线测试
在线测试功能主要是对员工参与科目测试的答题过程进行管理。员工进入测试列表后,系统展示当前处于开放时间区间内的全部试卷,员工选择目标试卷后进入作答页面。系统按题序逐题呈现题目内容,员工完成选择或填写后可提交答卷,系统随即对客观题部分进行自动评分并将作答数据写入答题记录。对于含主观题的试卷,系统将评分状态置为待评阅,由讲师后续进行人工打分。操作过程中员工可随时取消本次作答并返回列表。
在线测试界面
培训资源
培训资源功能主要是对系统内全部培训课程信息进行展示与查阅管理。员工在资源列表页可浏览全部审核通过的培训课程,点击目标课程后进入资源详情页,页面呈现课程内容、培训计划、教材及讲师信息等完整数据。在详情页中,员工可发起报名申请操作,填写申请说明后提交,系统将报名记录写入数据库并置为待审核状态。
培训资源界面
培训报名
培训报名功能主要是对员工已提交的报名记录进行查询与学习跟进管理。员工在该模块可通过关键词查询自己的历史报名记录,并可重置查询条件返回完整列表。点击目标记录可查看报名详情,对于审核通过的记录,员工可进入学习详情页,在页面内填写本次学习情况后提交,也可取消返回上一层。
培训报名界面
学习记录
学习记录功能主要是对员工个人的学习进度数据进行记录与追踪管理。员工进入该模块后可查询历史学习记录,支持按关键信息重置筛选条件。针对已有记录,员工可发起添加学习进度操作,在进度登记页面填写本次学习时间、时长、当前进度节点及记录内容后提交,系统将数据存入学习记录表并同步更新关联报名记录的进度状态。
学习记录界面
培训反馈
培训反馈功能主要是对员工完成学习后的满意度与意见信息进行收集管理。员工在反馈列表页可查询个人已提交的全部反馈记录,并可通过关键词筛选或重置查询条件。对于具备反馈资格的学习记录,员工可点击填写反馈按钮进入反馈提交页,填写反馈标题与反馈内容后提交,系统将数据写入培训反馈表;若决定放弃本次填写,可点击取消返回列表。
培训反馈界面
培训成绩
培训成绩功能主要是对员工在各培训课程中所获得的最终成绩数据进行展示管理。员工进入该模块后,系统按课程维度列出所有已录入的培训成绩记录,支持按课程名称等条件进行查询,也可重置条件恢复全量显示。每条记录展示培训课程、讲师、成绩数值及成绩明细等核心字段,员工通过浏览该列表即可掌握个人在各培训项目中的综合表现情况。
培训成绩界面
培训评估
培训评估功能主要是对管理员或讲师为员工生成的培训评估结论进行展示管理。员工在该模块可查询与本人关联的全部评估记录,支持关键词筛选与条件重置。点击目标记录后进入详情页,页面呈现评估标题、评估等级、评估报告内容等完整信息,员工据此了解自身在该培训项目中的综合评定结果,查阅完成后可返回列表。
培训评估界面
错题记录
错题记录功能主要是对员工历次在线测试中作答错误的题目数据进行汇总展示管理。员工进入该模块后,系统展示所有已记录的错题列表,支持按科目名称或题目类型进行查询筛选,也可重置条件恢复全量显示。点击目标记录进入详情页,页面呈现题目内容、用户提交答案、参考答案及答案解析等完整数据,供员工对照学习。
错题记录界面
用户考试科目数据统计
用户考试科目数据统计功能主要是对员工个人在不同科目下的考试表现数据进行可视化汇总展示。员工进入该模块后,系统以图表形式呈现各科目参与测试的次数、平均分、最高分等统计维度,数据内容实时从答题记录表中聚合计算。员工通过查看图表可直观掌握自身在不同科目上的学习成效分布,为后续学习方向调整提供参考依据。
用户考试科目数据统计界面
管理员角色功能实现
讲师用户管理
讲师用户管理功能主要是对系统内讲师账户的基本信息进行维护管理。管理员进入该模块后可查询全部讲师记录,支持按讲师姓名、工号等条件筛选,也可重置查询条件。管理员可新增讲师用户,填写姓名、工号等基本信息后提交;可进入详情页查看单条记录的完整数据;对已有记录可发起修改操作,更新信息后保存;对不再需要的账户可执行删除操作,系统同步移除对应账户关联数据。
讲师用户管理界面
培训资源管理
培训资源管理功能主要是对系统内讲师发布的培训课程申请进行审核管控。管理员进入该模块后可查询全部待审核及历史资源记录,支持批量审核操作,同时可对单条记录进行详情查看与单独审核处理。审核操作页中管理员选择审核通过或不通过后填写意见并提交,系统更新对应资源的审核状态,审核通过的资源对员工端可见,驳回的资源则保持隐藏状态。
培训资源管理界面
培训报名管理
培训报名管理功能主要是对员工提交的培训报名申请进行审核流转管理。管理员可查询全部报名记录并支持批量审核,对于单条记录可进入详情查看申请内容,再进入审核操作页完成审核通过或驳回操作,填写审核意见后提交,系统更新对应报名记录的审核状态并触发相关通知。
培训报名管理界面
科目列表管理
科目列表管理功能主要是对系统内培训科目的基础数据进行维护管理。管理员在该模块可查询、新增、修改、删除科目记录,支持将科目数据以文件形式导出,也支持通过导入模板批量录入科目数据,系统提供模板下载功能供使用前参考。每条科目记录可进入详情页查看完整信息,操作完成后数据实时更新至科目列表。
科目列表管理界面
培训评估管理
培训评估管理功能主要是对员工培训效果评估记录进行创建与维护管理。管理员在该模块可查询全部评估记录,新增评估时填写评估标题、评估等级、评估报告及关联课程信息后提交;对已有记录可进入详情查看,并可发起修改操作更新评估内容;对于不再需要的记录可执行删除,系统同步清除对应数据。
培训评估管理界面
员工培训成绩统计
员工培训成绩统计功能主要是对系统内全体员工的培训成绩数据进行聚合统计展示。管理员进入该模块后,系统以图表形式呈现各培训课程的员工成绩分布、各部门平均成绩对比等统计维度,数据从培训成绩表中实时聚合计算,图表内容支持按时间范围或课程类别切换查看,为管理层掌握整体培训效果提供数据支撑。
员工培训成绩统计界面
培训评估统计
培训评估统计功能主要是对全平台培训评估数据的整体分布情况进行图表化统计展示。管理员在该模块可查看各评估等级的员工数量占比、不同课程的评估等级分布等统计维度,系统从培训评估表中提取数据后进行聚合运算,以饼图或柱状图等可视化形式输出。
培训评估统计界面
考试成绩统计
考试成绩统计功能主要是对系统内在线测试的成绩数据进行多维统计与排名展示管理。管理员在该模块可查看图表形式的成绩分布统计数据,也可切换至列表视图查看按分数排列的成绩排名信息,系统从用户答题记录表中提取数据并计算各科目得分分布与排名结果,为测试质量评价提供参考。
考试成绩统计界面
通知中心
通知中心功能主要是对系统产生的各类业务通知进行集中管理。管理员在通知中心页面可查看全部通知记录,支持一键将所有通知标记为已读状态,也可对单条或多条通知执行删除操作,系统同步清除对应记录。通知内容由系统在审核状态变更等关键业务节点自动生成并推送至通知记录表。
通知中心界面
讲师用户角色功能实现
培训资源管理
培训资源管理功能主要是对讲师负责发布的培训课程内容进行创建与维护管理。讲师在该模块可查询本人发布的全部资源记录,新增资源时填写课程名称、培训类型、时间地点、封面、课程内容、培训计划、教材等信息后提交,系统将数据写入培训资源表并置为待审核状态;对已发布资源可进入详情查看,并可发起修改操作;对不再需要的资源可执行删除,系统同步清除对应记录。
培训资源管理界面
科目列表管理
科目列表管理功能主要是对讲师权限范围内的科目题库数据进行维护管理。讲师在该模块可查询科目列表,支持新增、修改、删除科目记录,并可进行数据导入导出操作,系统提供标准导入模板供下载使用。进入题目编辑页后,讲师可选择题型、录入题目内容与选项、填写参考答案并提交,题目数据存入试题库表并与对应科目关联。
科目列表管理界面
试卷评估
试卷评估功能主要是对员工提交的含主观题答卷进行人工评分管理。讲师在该模块可查询全部待评阅的答题记录,支持按科目或员工姓名筛选。选择目标记录后进入评分操作页,讲师查看员工提交的主观题答案内容,在评分输入框中填写对应分值后提交,系统将讲师评分数据更新至用户答题记录并触发成绩计算逻辑,最终得分实时更新至答题记录表。
试卷评估界面
考试成绩统计
考试成绩统计功能主要是对讲师发布的在线测试成绩数据进行图表化汇总展示。讲师进入该模块后,系统从用户答题记录表中提取与本人关联试卷的成绩数据,以图表形式展示分数分布区间、各科目平均分、及格率等统计维度,讲师据此掌握测试整体效果,为后续题库调整或课程内容优化提供参考依据。
考试成绩统计界面
在线测试管理
在线测试管理功能主要是对讲师创建的在线测试任务及试卷配置进行管理。讲师可新增测试任务,填写考试名称、科目、答题时长、开放时间区间、多次答题开关等信息后提交;对已有任务可进入详情查看或发起修改;组卷操作页支持录入各题型的数量与分值配置并提交,系统依据配置从题库中随机抽题组成试卷;不再使用的测试任务可执行删除操作。
在线测试管理界面
培训评估管理
培训评估管理功能主要是对讲师权限范围内的培训评估记录进行查阅管理。讲师在该模块可查询与本人相关课程关联的全部评估记录,支持关键词筛选与条件重置。点击目标记录进入评估详情页,页面呈现评估标题、评估等级、评估报告等完整信息,讲师查阅完成后可点击返回按钮回到列表页,该模块讲师仅具备查阅权限,不支持新增或修改操作。
培训评估管理界面
数据库参考
CREATE TABLE `article` (
`article_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT COMMENT '文章id',
`title` varchar(125) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '标题',
`type` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '文章分类',
`hits` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '点击数',
`praise_len` int(11) NOT NULL DEFAULT '0' COMMENT '点赞数',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`source` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '来源',
`url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '来源地址',
`tag` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '标签',
`content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '正文',
`img` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '封面图',
`description` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '文章描述',
PRIMARY KEY (`article_id`,`title`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='文章';
DROP TABLE IF EXISTS `access_token`;
CREATE TABLE `access_token` (
`token_id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '临时访问牌ID',
`token` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '临时访问牌',
`info` text CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT '信息',
`maxage` int(2) NOT NULL DEFAULT '2' COMMENT '最大寿命:默认2小时',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`user_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '用户编号',
PRIMARY KEY (`token_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='登陆访问时长';
DROP TABLE IF EXISTS `code_token`;
CREATE TABLE `code_token` (
`code_token_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '验证码ID',
`token` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci DEFAULT NULL COMMENT '令牌',
`code` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci DEFAULT NULL COMMENT '验证码',
`expire_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '失效时间',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`code_token_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='验证码';
DROP TABLE IF EXISTS `collect`;
CREATE TABLE `collect` (
`collect_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '收藏ID',
`user_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '收藏人ID',
`source_table` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '来源表',
`source_field` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '来源字段',
`source_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '来源ID',
`title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '标题',
`img` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '封面',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`collect_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='收藏';
DROP TABLE IF EXISTS `exam_question_database`;
CREATE TABLE `exam_question_database` (
`exam_question_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
`subject_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '科目名称',
`type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '类型',
`title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '题目',
`question_item` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '选项',
`answer` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '参考答案',
`score` double(8,2) DEFAULT NULL COMMENT '总分',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`answer_analysis` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '答案解析',
PRIMARY KEY (`exam_question_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='试题库';
E TABLE `subject_exam` (
`exam_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT COMMENT '考试id',
`subject_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '考试名称:[2,32]',
`duration` int(11) DEFAULT NULL COMMENT '答题时长',
`score` double(8,2) DEFAULT '0.00' COMMENT '总分',
`status` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '状态:启用、禁用',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间:',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间:',
`user_id` int(11) DEFAULT NULL COMMENT '出题人',
`open_start` datetime DEFAULT NULL COMMENT '开放开始时间',
`open_end` datetime DEFAULT NULL COMMENT '开放结束时间',
`reuse_state` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '多次答题:启用、禁用',
PRIMARY KEY (`exam_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='考试';
代码参考
/**
* 文章频道:用于汇总浏览文章,在不同频道下展示不同文章。(ArticleType)表控制层
*/
@RestController
@RequestMapping("article_type")
public class ArticleTypeController extends BaseController<ArticleType, ArticleTypeService> {
/**
* 服务对象
*/
@Autowired
public ArticleTypeController(ArticleTypeService service) {
setService(service);
}
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
// 将请求体转换为对象
ArticleType article_type = convertRequestBodyToObject(request);
// 验证参数是否合法
validateObject(article_type);
this.addEntity(article_type);
System.out.println("类型新增成功");
return success(1);
}
@PostMapping("/set")
@Transactional
public Map<String, Object> set(HttpServletRequest request) throws IOException {
ArticleType article_type = convertRequestBodyToObject(request);
this.service.updateEntity(service.readQuery(request), service.readConfig(request), article_type);
return success(1);
}
@RequestMapping(value = "/del")
@Transactional
public Map<String, Object> del(HttpServletRequest request) {
Map<String, String> query = validateQuery(request);
// 读取配置信息(不校验)
Map<String, String> config = service.readConfig(request);
// 执行删除操作并返回结果
executeDeleteAndReturnResult(query, config);
return success(1);
}
@RequestMapping("/get_obj")
public Map<String, Object> obj(HttpServletRequest request) {
Map<String, String> query = validateQuery(request);
// 读取配置信息
Map<String, String> config = service.readConfig(request);
List resultList = service.selectBaseList(service.select(query, config));
if (resultList.size() > 0) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("obj",resultList.get(0));
return success(jsonObject);
} else {
return success(null);
}
}
/**
* 将请求体转换为对象
*/
private ArticleType convertRequestBodyToObject(HttpServletRequest request) throws IOException {
Map<String, Object> bodyMap = service.readBody(request.getReader());
return JSON.parseObject(JSON.toJSONString(bodyMap), ArticleType.class);
}
/**
* 验证对象的参数是否合法
*/
private void validateObject(ArticleType article_type) {
if (isNullOrBlank(article_type.getName())) {
throw new IllegalArgumentException("名称不能为空");
}
}
/**
* 判断字符串是否为空或空白
*/
private boolean isNullOrBlank(String str) {
return str == null || str.trim().isEmpty();
}
/**
* 校验并返回查询条件
*/
private Map<String, String> validateQuery(HttpServletRequest request) {
Map<String, String> query = service.readQuery(request);
if (query == null || query.isEmpty()) {
throw new IllegalArgumentException("查询条件不能为空");
}
return query;
}
/**
* 执行删除操作
*/
private void executeDeleteAndReturnResult(Map<String, String> query, Map<String, String> config) {
this.service.delete(query, config);
}
/**
* 题库
*
*/
@RestController
@RequestMapping("exam_question_database")
public class ExamQuestionDatabaseController extends BaseController<ExamQuestionDatabase, ExamQuestionDatabaseService> {
/**
* 服务对象
*/
@Autowired
public ExamQuestionDatabaseController(ExamQuestionDatabaseService service) {
setService(service);
/**
* 科目模块-题库
*
*/
@RestController
@RequestMapping("subject_exam_question")
public class SubjectExamQuestionController extends BaseController<SubjectExamQuestion, SubjectExamQuestionService> {
/**
* 服务对象
*/
@Autowired
public SubjectExamQuestionController(SubjectExamQuestionService service) {
setService(service);
/**
* 培训报名:(TrainingRegistration)表控制层
*
*/
@RestController
@RequestMapping("/training_registration")
public class TrainingRegistrationController extends BaseController<TrainingRegistration, TrainingRegistrationService> {
/**
* 培训报名对象
*/
@Autowired
public TrainingRegistrationController(TrainingRegistrationService service) {
setService(service);
}
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
Map<String,Object> paramMap = service.readBody(request.getReader());
paramMap.entrySet().removeIf(entry -> {
Object value = entry.getValue();
return value instanceof String && ((String) value).isEmpty();
});
TrainingRegistration training_registration = new TrainingRegistration();
training_registration.setTraining_course(paramMap.get("training_course")==null?null:String.valueOf(paramMap.get("training_course")));
training_registration.setType_of_training(paramMap.get("type_of_training")==null?null:String.valueOf(paramMap.get("type_of_training")));
training_registration.setTraining_time(paramMap.get("training_time")==null?null:String.valueOf(paramMap.get("training_time")));
training_registration.setTraining_location(paramMap.get("training_location")==null?null:String.valueOf(paramMap.get("training_location")));
training_registration.setInstructor_user(paramMap.get("instructor_user")==null?null:Integer.valueOf(String.valueOf(paramMap.get("instructor_user"))));
training_registration.setName_of_instructor(paramMap.get("name_of_instructor")==null?null:String.valueOf(paramMap.get("name_of_instructor")));
training_registration.setEmployee_user(paramMap.get("employee_user")==null?null:Integer.valueOf(String.valueOf(paramMap.get("employee_user"))));
training_registration.setEmployee_name(paramMap.get("employee_name")==null?null:String.valueOf(paramMap.get("employee_name")));
training_registration.setNumber_of_registrations(paramMap.get("number_of_registrations")==null?null:String.valueOf(paramMap.get("number_of_registrations")));
if (training_registration.getNumber_of_registrations()== null || training_registration.getNumber_of_registrations().trim().isEmpty()){
throw new IllegalArgumentException("报名人数不能为空");
}
training_registration.setRegistration_application(paramMap.get("registration_application")==null?null:String.valueOf(paramMap.get("registration_application")));
training_registration.setExamine_state(paramMap.get("examine_state")==null?null:String.valueOf(paramMap.get("examine_state")));
training_registration.setExamine_reply(paramMap.get("examine_reply")==null?null:String.valueOf(paramMap.get("examine_reply")));
training_registration.setLearning_record_limit_times(paramMap.get("learning_record_limit_times")==null?null:String.valueOf(paramMap.get("learning_record_limit_times")));
training_registration.setTraining_results_limit_times(paramMap.get("training_results_limit_times")==null?null:String.valueOf(paramMap.get("training_results_limit_times")));
training_registration.setExtra(paramMap.get("extra")==null?null:String.valueOf(paramMap.get("extra")));
training_registration.setSource_table(paramMap.get("source_table")==null?null:String.valueOf(paramMap.get("source_table")));
training_registration.setSource_id(paramMap.get("source_id")==null?null:Integer.valueOf(String.valueOf(paramMap.get("source_id"))));
training_registration.setSource_user_id(paramMap.get("source_user_id")==null?null:Integer.valueOf(String.valueOf(paramMap.get("source_user_id"))));
training_registration.setCreate_by(paramMap.get("create_by")==null?null:Integer.valueOf(String.valueOf(paramMap.get("create_by"))));
this.addEntity(training_registration);
System.out.println("培训报名新增成功");
return success(1);
}
@PostMapping("/set")
@Transactional
public Map<String, Object> set(HttpServletRequest request) throws IOException {
Map<String,String> queryMap = service.readQuery(request);
Map<String,String> configMap = service.readConfig(request);
Map<String,Object> paramMap = service.readBody(request.getReader());
paramMap.entrySet().removeIf(entry -> {
Object value = entry.getValue();
return value instanceof String && ((String) value).isEmpty();
});
TrainingRegistration training_registration = new TrainingRegistration();
training_registration.setTraining_course(paramMap.get("training_course")==null?null:String.valueOf(paramMap.get("training_course")));
training_registration.setType_of_training(paramMap.get("type_of_training")==null?null:String.valueOf(paramMap.get("type_of_training")));
training_registration.setTraining_time(paramMap.get("training_time")==null?null:String.valueOf(paramMap.get("training_time")));
training_registration.setTraining_location(paramMap.get("training_location")==null?null:String.valueOf(paramMap.get("training_location")));
training_registration.setInstructor_user(paramMap.get("instructor_user")==null?null:Integer.valueOf(String.valueOf(paramMap.get("instructor_user"))));
training_registration.setName_of_instructor(paramMap.get("name_of_instructor")==null?null:String.valueOf(paramMap.get("name_of_instructor")));
training_registration.setEmployee_user(paramMap.get("employee_user")==null?null:Integer.valueOf(String.valueOf(paramMap.get("employee_user"))));
training_registration.setEmployee_name(paramMap.get("employee_name")==null?null:String.valueOf(paramMap.get("employee_name")));
training_registration.setNumber_of_registrations(paramMap.get("number_of_registrations")==null?null:String.valueOf(paramMap.get("number_of_registrations")));
training_registration.setRegistration_application(paramMap.get("registration_application")==null?null:String.valueOf(paramMap.get("registration_application")));
training_registration.setExamine_state(paramMap.get("examine_state")==null?null:String.valueOf(paramMap.get("examine_state")));
training_registration.setExamine_reply(paramMap.get("examine_reply")==null?null:String.valueOf(paramMap.get("examine_reply")));
training_registration.setLearning_record_limit_times(paramMap.get("learning_record_limit_times")==null?null:String.valueOf(paramMap.get("learning_record_limit_times")));
training_registration.setTraining_results_limit_times(paramMap.get("training_results_limit_times")==null?null:String.valueOf(paramMap.get("training_results_limit_times")));
training_registration.setSource_table(paramMap.get("source_table")==null?null:String.valueOf(paramMap.get("source_table")));
training_registration.setSource_id(paramMap.get("source_id")==null?null:Integer.valueOf(String.valueOf(paramMap.get("source_id"))));
training_registration.setSource_user_id(paramMap.get("source_user_id")==null?null:Integer.valueOf(String.valueOf(paramMap.get("source_user_id"))));
this.setEntity(queryMap,configMap,training_registration);
System.out.println("培训报名修改成功");
return success(1);
}
/**
* 修改审核状态
*
* @param id 要修改的记录ID
* @param newState 新的审核状态
* @return 提示信息:审核成功/失败
*/
@Transactional
@GetMapping("/update_examine_state")
public String updateExamineState(Long id, String newState) throws IOException {
// 检查传入的状态是否合法
if (!newState.equals("未审核") && !newState.equals("已通过") && !newState.equals("未通过")) {
return "非法的审核状态";
}
Map<String,String> queryMap = new HashMap<>();
queryMap.put("id",String.valueOf(id));
// 根据ID查找记录
TrainingRegistration training_registration = service.findOne(queryMap);
if (training_registration!=null) {
// 更新审核状态
training_registration.setExamine_state(newState);
this.setEntity(queryMap,new HashMap<>(),training_registration);
return "审核成功";
} else {
return "审核失败:记录不存在";
前端: 基于Vue.js框架构建用户界面,使用HTML5、CSS3和JavaScript实现页面结构与交互逻辑,通过Vue Router管理路由,Vuex或Pinia维护全局状态。采用Element UI或Vant组件库快速搭建界面,Axios封装HTTP请求实现与后端的数据通信。
后端: 基于Spring Boot框架搭建,遵循Controller-Service-Mapper三层架构。Controller层接收前端请求并校验参数,Service层处理核心业务逻辑,Mapper层通过MyBatis或MyBatis-Plus完成数据库操作。使用Spring Security或Shiro结合JWT实现用户认证与权限控制。
数据库: 采用MySQL存储持久化数据,Redis缓存热点信息以提升系统性能。
开发工具: 使用IDEA开发后端,VSCode或HBuilderX开发前端,Git进行版本管理,Maven和npm分别管理前后端依赖。
源码获取
私信联系我即可~
大家点赞、收藏、关注、评论啦
👇精彩专栏 推荐订阅👇
Java精品项目案例【2000套】
Python精品项目案例【500套】
uniapp/微信小程序/安卓app精品实战案例【800套】
✅获取源码请私信✅
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以找我咨询,希望帮助更多的人❤️
网硕互联帮助中心






评论前必须登录!
注册