【项目】【在线判题系统】竞赛列表

发布时间:2026/10/19 6:55:21

【项目】【在线判题系统】竞赛列表 目录一、表的设计二、实体类三、功能梳理四、controller五、service六、mapper一、表的设计一张竞赛表以及一张竞赛题目关联表CREATETABLEtb_exam(exam_idBIGINTUNSIGNEDNOTNULLCOMMENT竞赛id主键,titleVARCHAR(50)NOTNULLCOMMENT竞赛标题,start_timeDATETIMENOTNULLCOMMENT竞赛开始时间,end_timeDATETIMENOTNULLCOMMENT竞赛结束时间,statusTINYINTNOTNULLDEFAULT0COMMENT是否发布 0: 未发布 1: 已发布,create_byBIGINTUNSIGNEDNOTNULLCOMMENT创建人,create_timeDATETIMENOTNULLCOMMENT创建时间,update_byBIGINTUNSIGNEDCOMMENT更新人,update_timeDATETIMECOMMENT更新时间,PRIMARYKEY(exam_id))ENGINEInnoDBDEFAULTCHARSETutf8mb4COMMENT竞赛表;CREATETABLEtb_exam_question(exam_question_idBIGINTUNSIGNEDNOTNULLCOMMENT关系id主键,question_idBIGINTUNSIGNEDNOTNULLCOMMENT题目id,exam_idBIGINTUNSIGNEDNOTNULLCOMMENT竞赛id,question_orderINTNOTNULLCOMMENT题目顺序,create_byBIGINTUNSIGNEDNOTNULLCOMMENT创建人,create_timeDATETIMENOTNULLDEFAULTCURRENT_TIMESTAMPCOMMENT创建时间,update_byBIGINTUNSIGNEDCOMMENT更新人,update_timeDATETIMEONUPDATECURRENT_TIMESTAMPCOMMENT更新时间,PRIMARYKEY(exam_question_id),KEYidx_exam_id(exam_id),KEYidx_question_id(question_id))ENGINEInnoDBDEFAULTCHARSETutf8mb4COMMENT竞赛题目关联表;二、实体类oj-modules/oj-system/src/main/java/com/yj/system/domain/exam包下新增两张表对应的实体类。packagecom.yj.system.domain.exam;importcom.baomidou.mybatisplus.annotation.IdType;importcom.baomidou.mybatisplus.annotation.TableId;importcom.baomidou.mybatisplus.annotation.TableName;importcom.yj.common.core.domain.BaseDO;importlombok.Getter;importlombok.Setter;importjava.time.LocalDateTime;/** * 竞赛表 */GetterSetterTableName(tb_exam)publicclassExamDOextendsBaseDO{/** * 竞赛id主键 */TableId(typeIdType.AUTO)// 如果你的主键是自增的用AUTO如果是雪花ID用ASSIGN_IDprivateLongexamId;/** * 竞赛标题 */privateStringtitle;/** * 竞赛开始时间 */privateLocalDateTimestartTime;/** * 竞赛结束时间 */privateLocalDateTimeendTime;/** * 是否发布 0:未发布 1:已发布 */privateIntegerstatus;}packagecom.yj.system.domain.exam;importcom.baomidou.mybatisplus.annotation.IdType;importcom.baomidou.mybatisplus.annotation.TableId;importcom.baomidou.mybatisplus.annotation.TableName;importcom.yj.common.core.domain.BaseDO;importlombok.Data;importlombok.Getter;importlombok.Setter;importjava.time.LocalDateTime;/** * 竞赛题目关联表 */GetterSetterTableName(tb_exam_question)publicclassExamQuestionDOextendsBaseDO{/** * 竞赛题目关系id主键 */TableId(typeIdType.AUTO)privateLongexamQuestionId;/** * 题目id */privateLongquestionId;/** * 竞赛id */privateLongexamId;}三、功能梳理竟赛列表功能:用户切换到竞赛管理。前端携带着相关参数发起获取竞赛列表的请求。后端接收到请求之后根据请求的参数从数据库当中查询符合条件的竞赛。并且将查询结果返回给前端。(成功或者失败)前端接收到后端返回的响应之后如果成功把查询到的列表数据展示到页面当中。如果失败提示用户失败的原因。四、controlleroj-modules/oj-system/src/main/java/com/yj/system/controller/exam/ExamController.java定义controller类packagecom.yj.system.controller.exam;importcom.yj.common.core.controller.BaseController;importcom.yj.common.core.pojo.TableDataInfo;importcom.yj.system.domain.exam.dto.ExamQueryDTO;importcom.yj.system.service.exam.IExamService;importio.swagger.v3.oas.annotations.tags.Tag;importjakarta.annotation.Resource;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;RestControllerRequestMapping(/exam)Tag(name竞赛管理接口)publicclassExamControllerextendsBaseController{ResourceprivateIExamServiceexamService;GetMapping(/list)publicTableDataInfolist(ExamQueryDTOexamQueryDTO){returngetTableDataInfo(examService.list(examQueryDTO));}}接收参数oj-modules/oj-system/src/main/java/com/yj/system/domain/exam/dto/ExamQueryDTO.javapackagecom.yj.system.domain.exam.dto;importcom.yj.common.core.domain.PageQueryDTO;publicclassExamQueryDTOextendsPageQueryDTO{/** * 竞赛标题 */privateStringtitle;/** * 竞赛开始时间 */privateStringstartTime;/** * 竞赛结束时间 */privateStringendTime;}五、serviceoj-modules/oj-system/src/main/java/com/yj/system/service/exam/IExamService.java定义接口类packagecom.yj.system.service.exam;importcom.yj.system.domain.exam.dto.ExamQueryDTO;importcom.yj.system.domain.exam.vo.ExamVO;importjava.util.List;publicinterfaceIExamService{ListExamVOlist(ExamQueryDTOexamQueryDTO);}oj-modules/oj-system/src/main/java/com/yj/system/service/exam/impl/ExamServiceImpl.java实现接口类packagecom.yj.system.service.exam.impl;importcom.github.pagehelper.PageHelper;importcom.yj.system.domain.exam.dto.ExamQueryDTO;importcom.yj.system.domain.exam.vo.ExamVO;importcom.yj.system.mapper.exam.ExamMapper;importcom.yj.system.service.exam.IExamService;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;importjava.util.List;ServicepublicclassExamServiceImplimplementsIExamService{AutowiredprivateExamMapperexamMapper;OverridepublicListExamVOlist(ExamQueryDTOexamQueryDTO){PageHelper.startPage(examQueryDTO.getPageNum(),examQueryDTO.getPageSize());returnexamMapper.selectExamList(examQueryDTO);}}oj-modules/oj-system/src/main/java/com/yj/system/domain/exam/vo/ExamVO.java返回参数packagecom.yj.system.domain.exam.vo;importcom.fasterxml.jackson.annotation.JsonFormat;importjava.time.LocalDateTime;publicclassExamVO{privateStringtitle;/** * 是否发布 0:未发布 1:已发布 */privateIntegerstatus;JsonFormat(patternyyyy-MM-dd HH:mm:ss)privateLocalDateTimestartTime;JsonFormat(patternyyyy-MM-dd HH:mm:ss)privateLocalDateTimeendTime;privateStringcreateName;JsonFormat(patternyyyy-MM-dd HH:mm:ss)privateLocalDateTimecreateTime;}六、mappermapper方法oj-modules/oj-system/src/main/java/com/yj/system/mapper/exam/ExamMapper.javapackagecom.yj.system.mapper.exam;importcom.baomidou.mybatisplus.core.mapper.BaseMapper;importcom.yj.system.domain.exam.ExamDO;importcom.yj.system.domain.exam.dto.ExamQueryDTO;importcom.yj.system.domain.exam.vo.ExamVO;importorg.apache.ibatis.annotations.Mapper;importjava.util.List;MapperpublicinterfaceExamMapperextendsBaseMapperExamDO{ListExamVOselectExamList(ExamQueryDTOexamQueryDTO);}自定义xml:oj-modules/oj-system/src/main/resources/mapper/question/ExamMapper.xml?xml version1.0 encodingUTF-8 ?!DOCTYPEmapperPUBLIC-//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtdmappernamespacecom.yj.system.mapper.exam.ExamMapper!-- 竞赛列表查询 --selectidselectExamListresultTypecom.yj.system.domain.exam.vo.ExamVOSELECT te.exam_id, te.title, te.start_time, te.end_time, te.status, ts.nick_name AS create_name, te.create_time FROM tb_exam te LEFT JOIN tb_sys_user ts ON te.create_by ts.user_idwhereiftesttitle ! null and title ! AND te.title LIKE CONCAT(%,#{title},%)/ififteststartTime ! null and startTime ! AND te.start_time #{startTime}/ififtestendTime ! null and endTime ! AND te.end_timelt; #{endTime}/if/whereORDER BY te.create_time DESC/select/mapper
延伸阅读

更多相关文章

2026/10/19 6:55:21

基于YOLOv26的绝缘子缺陷检测系统:从数据到部署全流程实践

电力绝缘子缺陷检测这几年在巡检圈子里真的是绕不开的话题,输电线路上的绝缘子数量大、分布广,尤其是山区和林区的杆塔,人工巡检一趟成本极高,而且很多缺陷在肉眼看来并不明显。我这次要分享的,是同事前段时间做的一个…

2026/10/19 6:55:21

作业车间调度中深度强化学习状态特征设计实战与避坑指南

作业车间调度是制造系统里最经典的优化问题之一。这些年我一直在帮工厂做排产相关的算法落地,最深的体会是:调度算法从理论到能用,中间隔着一条叫"状态表达"的河。模型选得再花哨,超参调得再好,状态特征设计…

2026/10/19 6:55:21

视频智能分析算法实战:从模型选型到部署优化的关键细节

这些年做视频智能分析算法,从最早的帧差法、背景建模,到现在的深度学习端到端推理,技术路线换了好几代,踩过的坑也足够写一本小册子了。视频智能分析算法,说白了就是让计算机"看懂"摄像头画面里正在发生什么…

2026/10/19 8:20:29

MCP开源项目:让AI Agent读懂无源码的黑盒软件

1. 项目概述:为什么一个 MCP 能两天涨星近 10 万我刷到这个消息的时候第一反应是去看日历,确认不是四月一号。两天涨星近 10 万,放在整个开源圈都是相当炸裂的数据。如果你常年混迹开源社区,应该清楚一个项目正常情况下的涨星曲线…

2026/10/19 8:20:29

Docker部署SRS直播集群:从单机瓶颈到Origin-Edge横向扩展

一台服务器撑不住一万人在线看直播,这个问题跟SRS本身的关系不大,更多是单节点物理上限的问题。前阵子帮朋友调一个RTMP直播服务,单台SRS跑测试一切正常,推流不卡、画面延迟也稳定,结果活动一上线,上千路播…

2026/10/19 8:20:29

YOLOv5自动标注工程化实践:构建质量可控的落地流水线

1. 为什么“自动标注”不是点几下鼠标就能跑通的事YOLOv5被很多人当成目标检测的“万能钥匙”——模型结构清晰、训练快、精度稳、社区资源多,连刚接触CV的新手都能在两小时内跑通官方Demo。但一旦把“用YOLOv5做自动标注”这句话从PPT搬到真实项目里,90…

2026/10/19 8:20:29

LACP链路聚合原理与华为设备实战配置指南

1. 为什么链路聚合不是“堆线就能提速”,而LACP才是企业级网络的刚需在某次为某高校数据中心做网络优化时,我遇到一个典型场景:核心交换机到服务器集群的上行带宽长期跑满,运维同事第一反应是“再加一根网线不就完了?”…

2026/10/19 8:20:29

最近点对问题:从蛮力到分治的算法优化指南

刚开始接触最近点对问题,是在某次算法课程的大作业里:题目要求从几千个坐标点里找出距离最近的两个点。我当时随手写了个蛮力双层循环,几十毫秒跑完,心里想的是——这种题也配叫经典?直到后来做一个上万节点的模拟项目…

2026/10/19 8:15:29

SMPL模型详解:参数化人体骨架的原理与Python实践

简介:本资源是一份面向计算机图形学与三维人体建模初学者的SMPL模型解析实践包,聚焦Python环境下的SMPL基础结构理解与数据加载操作。资源完整呈现SMPL官方模型的核心组成:6890个顶点网格、24个关节(含根节点)及其对应…

2026/10/18 0:01:50

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/19 0:04:56

悟空开源无代码平台实战:从实体建模到应用设计避坑指南

简介:基于悟空开源无代码平台的多种应用设计源码,面向希望在不编写代码的情况下快速搭建CRM、HRM、财务系统、ERP、SRM等业务应用的企业与技术人员,通过拖放式界面和内置模板即可完成应用定制与部署。压缩包共697个文件,约10.74MB…

2026/10/19 0:04:56

基于.NET9的多租户权限系统:数据权限与动态API落地实践

简介:这份资源是一套面向 .NET 与 Vue 全栈开发者的中台权限管理系统,后端基于 .Net9,前端采用 Vue3 Element Plus,并配套 uniapp uviewui 移动端方案,实现前后端分离。系统覆盖多租户隔离、数据权限、动态 Api、任务…

2026/10/19 0:04:56

场地预约小程序毕设实战:SSM+微信小程序+MySQL数据库设计到避坑

简介:面向毕业设计场景的场地预约小程序完整项目,基于微信小程序SSMMySql技术栈开发,适合计算机相关专业学生作为选题参考、功能扩展或二次开发起点。系统实现场地类型管理、场地管理、预约管理、取消申请与押金退回等功能,分为管…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑