diff --git a/exam-admin/src/main/java/com/yf/exam/modules/exam/controller/ExamController.java b/exam-admin/src/main/java/com/yf/exam/modules/exam/controller/ExamController.java index a05407c..d458d3a 100644 --- a/exam-admin/src/main/java/com/yf/exam/modules/exam/controller/ExamController.java +++ b/exam-admin/src/main/java/com/yf/exam/modules/exam/controller/ExamController.java @@ -9,6 +9,7 @@ import com.yf.exam.core.api.dto.BaseIdsReqDTO; import com.yf.exam.core.api.dto.BaseStateReqDTO; import com.yf.exam.core.api.dto.PagingReqDTO; import com.yf.exam.modules.exam.dto.ExamDTO; +import com.yf.exam.modules.exam.dto.request.ExamSearchDTO; import com.yf.exam.modules.exam.dto.request.ExamSaveReqDTO; import com.yf.exam.modules.exam.dto.response.ExamOnlineRespDTO; import com.yf.exam.modules.exam.dto.response.ExamReviewRespDTO; @@ -154,7 +155,7 @@ public class ExamController extends BaseController { */ @ApiOperation(value = "查询可考试列表") @RequestMapping(value = "/getExamList", method = { RequestMethod.GET}) - public ApiRest getExamList(ExamDTO reqDTO) { + public ApiRest getExamList(ExamSearchDTO reqDTO) { List list = baseService.getExamList(reqDTO); return super.success(list); } diff --git a/exam-admin/src/main/java/com/yf/exam/modules/exam/controller/ExamRegistrationController.java b/exam-admin/src/main/java/com/yf/exam/modules/exam/controller/ExamRegistrationController.java index f6d04d1..ccc8394 100644 --- a/exam-admin/src/main/java/com/yf/exam/modules/exam/controller/ExamRegistrationController.java +++ b/exam-admin/src/main/java/com/yf/exam/modules/exam/controller/ExamRegistrationController.java @@ -3,10 +3,13 @@ package com.yf.exam.modules.exam.controller; import com.yf.exam.core.api.ApiRest; import com.yf.exam.core.api.controller.BaseController; import com.yf.exam.modules.exam.dto.ExamRegistrationDTO; +import com.yf.exam.modules.exam.dto.response.ExamRegistrationVO; import com.yf.exam.modules.exam.service.ExamRegistrationService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import java.util.List; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -37,4 +40,18 @@ public class ExamRegistrationController extends BaseController { baseService.save(reqDTO); return super.success(); } + + /** + * 查询已报名的考试列表 + * @param userId 用户主键 + * @return + */ + @ApiOperation(value = "查询已报名的考试列表") + @RequestMapping(value = "/getRegExamList/{userId}", method = { RequestMethod.GET}) + public ApiRest getExamList(@PathVariable String userId) { + ExamRegistrationDTO examRegistrationDTO = new ExamRegistrationDTO(); + examRegistrationDTO.setUserId(userId); + List list = baseService.getRegExamList(examRegistrationDTO); + return super.success(list); + } } diff --git a/exam-admin/src/main/java/com/yf/exam/modules/exam/dto/request/ExamRegistrationDTO.java b/exam-admin/src/main/java/com/yf/exam/modules/exam/dto/request/ExamRegistrationDTO.java new file mode 100644 index 0000000..cdf3504 --- /dev/null +++ b/exam-admin/src/main/java/com/yf/exam/modules/exam/dto/request/ExamRegistrationDTO.java @@ -0,0 +1,19 @@ +package com.yf.exam.modules.exam.dto.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: 查询考试报名传输对象 + * @author: haown + * @create: 2025-07-14 14:53 + **/ +@Data +public class ExamRegistrationDTO { + + @ApiModelProperty(value = "用户主键", required=true) + private String userId; + + @ApiModelProperty(value = "考试表主键", required=true) + private String examId; +} diff --git a/exam-admin/src/main/java/com/yf/exam/modules/exam/dto/request/ExamSearchDTO.java b/exam-admin/src/main/java/com/yf/exam/modules/exam/dto/request/ExamSearchDTO.java new file mode 100644 index 0000000..3e7998d --- /dev/null +++ b/exam-admin/src/main/java/com/yf/exam/modules/exam/dto/request/ExamSearchDTO.java @@ -0,0 +1,48 @@ +package com.yf.exam.modules.exam.dto.request; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import java.time.LocalDate; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +/** + * @description: 可报名考试列表查询传输对象 + * @author: haown + * @create: 2025-07-14 14:44 + **/ +@Data +public class ExamSearchDTO { + + @ApiModelProperty(value = "1公开2部门3定员", required=true) + private Integer openType; + + /** + * 考试类型(1:模拟考试,2:正式考试) + * */ + @ApiModelProperty(value = "考试类型(1:模拟考试,2:正式考试)", required=true) + private Integer examType; + + /** + * 开始日期 + */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "开始日期", required=true) + private LocalDate startDate; + + /** + * 结束日期 + */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "结束日期", required=true) + private LocalDate endDate; + + + /** + * 用户主键 + * */ + @ApiModelProperty(value = "用户主键", required=true) + private String userId; +} diff --git a/exam-admin/src/main/java/com/yf/exam/modules/exam/dto/response/ExamRegistrationVO.java b/exam-admin/src/main/java/com/yf/exam/modules/exam/dto/response/ExamRegistrationVO.java new file mode 100644 index 0000000..5008a2f --- /dev/null +++ b/exam-admin/src/main/java/com/yf/exam/modules/exam/dto/response/ExamRegistrationVO.java @@ -0,0 +1,76 @@ +package com.yf.exam.modules.exam.dto.response; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalTime; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +/** + * @description: 用户报名返回视图类 + * @author: haown + * @create: 2025-07-14 14:32 + **/ +@Data +public class ExamRegistrationVO { + + /** + * 报名时间 + */ + @ApiModelProperty(value = "报名时间", required=true) + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private LocalDate regTime; + + /** + * 考试状态(0:未考试,1:已考试) + */ + @ApiModelProperty(value = "考试状态(0:未考试,1:已考试)", required=true) + private Integer examState; + + @ApiModelProperty(value = "考试名称", required=true) + private String title; + + @ApiModelProperty(value = "是否限时", required=true) + private Boolean timeLimit; + + /** + * 开始日期 + */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "开始日期", required=true) + private LocalDate startDate; + + /** + * 结束日期 + */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "结束日期", required=true) + private LocalDate endDate; + + @JsonFormat(timezone = "GMT+8", pattern = "HH:mm") + @DateTimeFormat(pattern = "HH:mm") + @ApiModelProperty(value = "开始时间", required=true) + private LocalTime startTime; + + @JsonFormat(timezone = "GMT+8", pattern = "HH:mm") + @DateTimeFormat(pattern = "HH:mm") + @ApiModelProperty(value = "结束时间", required=true) + private LocalTime endTime; + + @ApiModelProperty(value = "总分数", required=true) + private Integer totalScore; + + @ApiModelProperty(value = "总时长(分钟)", required=true) + private Integer totalTime; + + @ApiModelProperty(value = "及格分数", required=true) + private Integer qualifyScore; + + @ApiModelProperty(value = "考试费用", required=true) + private BigDecimal examFee; +} diff --git a/exam-admin/src/main/java/com/yf/exam/modules/exam/mapper/ExamMapper.java b/exam-admin/src/main/java/com/yf/exam/modules/exam/mapper/ExamMapper.java index 1818107..cca257a 100644 --- a/exam-admin/src/main/java/com/yf/exam/modules/exam/mapper/ExamMapper.java +++ b/exam-admin/src/main/java/com/yf/exam/modules/exam/mapper/ExamMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yf.exam.modules.exam.dto.ExamDTO; +import com.yf.exam.modules.exam.dto.request.ExamSearchDTO; import com.yf.exam.modules.exam.dto.response.ExamOnlineRespDTO; import com.yf.exam.modules.exam.dto.response.ExamReviewRespDTO; import com.yf.exam.modules.exam.entity.Exam; @@ -49,5 +50,5 @@ public interface ExamMapper extends BaseMapper { * @param query * @return */ - List getExamList(@Param("query") ExamDTO query); + List getExamList(@Param("query") ExamSearchDTO query); } diff --git a/exam-admin/src/main/java/com/yf/exam/modules/exam/mapper/ExamRegistrationMapper.java b/exam-admin/src/main/java/com/yf/exam/modules/exam/mapper/ExamRegistrationMapper.java index 57c6892..7c71e3a 100644 --- a/exam-admin/src/main/java/com/yf/exam/modules/exam/mapper/ExamRegistrationMapper.java +++ b/exam-admin/src/main/java/com/yf/exam/modules/exam/mapper/ExamRegistrationMapper.java @@ -1,7 +1,10 @@ package com.yf.exam.modules.exam.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.yf.exam.modules.exam.dto.ExamRegistrationDTO; +import com.yf.exam.modules.exam.dto.response.ExamRegistrationVO; import com.yf.exam.modules.exam.entity.ExamRegistration; +import java.util.List; /** *

@@ -12,4 +15,6 @@ import com.yf.exam.modules.exam.entity.ExamRegistration; * @since 2025-07-11 10:25 */ public interface ExamRegistrationMapper extends BaseMapper { + + List getRegExamList(ExamRegistrationDTO examRegistrationDTO); } diff --git a/exam-admin/src/main/java/com/yf/exam/modules/exam/service/ExamRegistrationService.java b/exam-admin/src/main/java/com/yf/exam/modules/exam/service/ExamRegistrationService.java index 0147cb6..7593251 100644 --- a/exam-admin/src/main/java/com/yf/exam/modules/exam/service/ExamRegistrationService.java +++ b/exam-admin/src/main/java/com/yf/exam/modules/exam/service/ExamRegistrationService.java @@ -2,7 +2,9 @@ package com.yf.exam.modules.exam.service; import com.baomidou.mybatisplus.extension.service.IService; import com.yf.exam.modules.exam.dto.ExamRegistrationDTO; +import com.yf.exam.modules.exam.dto.response.ExamRegistrationVO; import com.yf.exam.modules.exam.entity.ExamRegistration; +import java.util.List; /** *

@@ -19,4 +21,13 @@ public interface ExamRegistrationService extends IService { * @param reqDTO */ void save(ExamRegistrationDTO reqDTO); + + /** + * @description 查询已报名的考试列表 + * @Param userId 用户主键 + * @return null + * @Author haown + * @Date 2025-7-14 10:45 + */ + List getRegExamList(ExamRegistrationDTO examRegistrationDTO); } diff --git a/exam-admin/src/main/java/com/yf/exam/modules/exam/service/ExamService.java b/exam-admin/src/main/java/com/yf/exam/modules/exam/service/ExamService.java index 839aaf3..a2f8044 100644 --- a/exam-admin/src/main/java/com/yf/exam/modules/exam/service/ExamService.java +++ b/exam-admin/src/main/java/com/yf/exam/modules/exam/service/ExamService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import com.yf.exam.core.api.dto.PagingReqDTO; import com.yf.exam.modules.exam.dto.ExamDTO; +import com.yf.exam.modules.exam.dto.request.ExamSearchDTO; import com.yf.exam.modules.exam.dto.request.ExamSaveReqDTO; import com.yf.exam.modules.exam.dto.response.ExamOnlineRespDTO; import com.yf.exam.modules.exam.dto.response.ExamReviewRespDTO; @@ -68,6 +69,6 @@ public interface ExamService extends IService { * @param reqDTO * @return */ - List getExamList(ExamDTO reqDTO); + List getExamList(ExamSearchDTO reqDTO); } diff --git a/exam-admin/src/main/java/com/yf/exam/modules/exam/service/impl/ExamRegistrationServiceImpl.java b/exam-admin/src/main/java/com/yf/exam/modules/exam/service/impl/ExamRegistrationServiceImpl.java index fd31980..df56d7b 100644 --- a/exam-admin/src/main/java/com/yf/exam/modules/exam/service/impl/ExamRegistrationServiceImpl.java +++ b/exam-admin/src/main/java/com/yf/exam/modules/exam/service/impl/ExamRegistrationServiceImpl.java @@ -1,11 +1,15 @@ package com.yf.exam.modules.exam.service.impl; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.yf.exam.core.exception.ServiceException; import com.yf.exam.modules.exam.dto.ExamRegistrationDTO; +import com.yf.exam.modules.exam.dto.response.ExamRegistrationVO; import com.yf.exam.modules.exam.entity.ExamRegistration; import com.yf.exam.modules.exam.mapper.ExamRegistrationMapper; import com.yf.exam.modules.exam.service.ExamRegistrationService; +import java.util.List; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @@ -20,6 +24,20 @@ public class ExamRegistrationServiceImpl extends ServiceImpl list = getRegExamList(examRegistrationDTO); + if (CollectionUtils.isNotEmpty(list)) { + throw new ServiceException("您已报名过该考试,请勿重复报名"); + } // ID String id = reqDTO.getId(); @@ -33,6 +51,12 @@ public class ExamRegistrationServiceImpl extends ServiceImpl getRegExamList(ExamRegistrationDTO examRegistrationDTO) { + return baseMapper.getRegExamList(examRegistrationDTO); + } } diff --git a/exam-admin/src/main/java/com/yf/exam/modules/exam/service/impl/ExamServiceImpl.java b/exam-admin/src/main/java/com/yf/exam/modules/exam/service/impl/ExamServiceImpl.java index f8f11bf..5353292 100644 --- a/exam-admin/src/main/java/com/yf/exam/modules/exam/service/impl/ExamServiceImpl.java +++ b/exam-admin/src/main/java/com/yf/exam/modules/exam/service/impl/ExamServiceImpl.java @@ -10,6 +10,7 @@ import com.yf.exam.core.exception.ServiceException; import com.yf.exam.core.utils.BeanMapper; import com.yf.exam.modules.exam.dto.ExamDTO; import com.yf.exam.modules.exam.dto.ExamRepoDTO; +import com.yf.exam.modules.exam.dto.request.ExamSearchDTO; import com.yf.exam.modules.exam.dto.ext.ExamRepoExtDTO; import com.yf.exam.modules.exam.dto.request.ExamSaveReqDTO; import com.yf.exam.modules.exam.dto.response.ExamOnlineRespDTO; @@ -20,14 +21,13 @@ import com.yf.exam.modules.exam.service.ExamDepartService; import com.yf.exam.modules.exam.service.ExamRepoService; import com.yf.exam.modules.exam.service.ExamService; import java.time.LocalDate; +import java.util.List; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DuplicateKeyException; import org.springframework.stereotype.Service; -import java.util.List; - /** *

* 考试业务实现类 @@ -98,7 +98,8 @@ public class ExamServiceImpl extends ServiceImpl implements Ex public ExamSaveReqDTO findDetail(String id) { ExamSaveReqDTO respDTO = new ExamSaveReqDTO(); Exam exam = this.getById(id); - BeanMapper.copy(exam, respDTO); + //BeanMapper.copy(exam, respDTO); + BeanUtils.copyProperties(exam, respDTO); // 考试部门 List departIds = examDepartService.listByExam(id); @@ -159,8 +160,8 @@ public class ExamServiceImpl extends ServiceImpl implements Ex * @param reqDTO * @return */ - @Override public List getExamList(ExamDTO reqDTO) { - reqDTO.setExamType(2); + @Override + public List getExamList(ExamSearchDTO reqDTO) { reqDTO.setStartDate(LocalDate.now()); List list = baseMapper.getExamList(reqDTO); return list; diff --git a/exam-admin/src/main/resources/mapper/exam/ExamMapper.xml b/exam-admin/src/main/resources/mapper/exam/ExamMapper.xml index acb5c5e..add64d0 100644 --- a/exam-admin/src/main/resources/mapper/exam/ExamMapper.xml +++ b/exam-admin/src/main/resources/mapper/exam/ExamMapper.xml @@ -51,6 +51,9 @@ AND open_type = #{query.openType} + + AND exam_type = #{query.examType} + AND start_date >= #{query.startDate} @@ -86,10 +89,12 @@ AND ex.title LIKE CONCAT('%',#{query.title},'%') - AND ex.open_type=#{query.openType} + + AND ex.exam_type=#{query.examType} + @@ -97,11 +102,8 @@ + SELECT reg.reg_time, reg.exam_state, ex.title, ex.start_date, ex.end_date, ex.start_time, ex.end_time + ,ex.total_score, ex.total_time, ex.qualify_score, ex.exam_fee + FROM el_exam_registration reg + left join el_exam ex on reg.exam_id = ex.id + WHERE ex.state=0 + + AND reg.user_id=#{userId} + + + AND reg.exam_id=#{examId} + + + diff --git a/exam-admin/target/classes/mapper/exam/ExamMapper.xml b/exam-admin/target/classes/mapper/exam/ExamMapper.xml index acb5c5e..add64d0 100644 --- a/exam-admin/target/classes/mapper/exam/ExamMapper.xml +++ b/exam-admin/target/classes/mapper/exam/ExamMapper.xml @@ -51,6 +51,9 @@ AND open_type = #{query.openType} + + AND exam_type = #{query.examType} + AND start_date >= #{query.startDate} @@ -86,10 +89,12 @@ AND ex.title LIKE CONCAT('%',#{query.title},'%') - AND ex.open_type=#{query.openType} + + AND ex.exam_type=#{query.examType} + @@ -97,11 +102,8 @@