浏览代码

开发学生端考试列表的查询接口,补全关联与条件

zhaosongshan 7 月之前
父节点
当前提交
1f61896531

+ 4 - 3
snowy-plugin/snowy-plugin-exam/snowy-plugin-exam-func/src/main/java/vip/xiaonuo/exam/controller/admin/TExamController.java

@@ -23,6 +23,7 @@ import org.springframework.web.bind.annotation.*;
 import vip.xiaonuo.common.annotation.CommonLog;
 import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.common.pojo.CommonValidList;
+import vip.xiaonuo.exam.base.BaseApiController;
 import vip.xiaonuo.exam.domain.TExam;
 import vip.xiaonuo.exam.domain.exam.TExamAddParam;
 import vip.xiaonuo.exam.domain.exam.TExamEditParam;
@@ -35,17 +36,17 @@ import javax.validation.Valid;
 import javax.validation.constraints.NotEmpty;
 
 /**
- * 考试表控制器
+ * 考试表控制器 教师端
  *
  * @author ZSS
  * @date  2025/07/22 10:51
  */
-@Api(tags = "考试表控制器")
+@Api(tags = "教师端考试表控制器")
 @ApiSupport(author = "SNOWY_TEAM", order = 1)
 @RestController
 @Validated
 @RequestMapping(value = "/api/admin/t_exam")
-public class TExamController {
+public class TExamController extends BaseApiController {
 
     @Resource
     private TExamService tExamService;

+ 87 - 0
snowy-plugin/snowy-plugin-exam/snowy-plugin-exam-func/src/main/java/vip/xiaonuo/exam/controller/student/TExamController.java

@@ -0,0 +1,87 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.exam.controller.student;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.github.xiaoymin.knife4j.annotations.ApiSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import vip.xiaonuo.auth.core.pojo.SaBaseLoginUser;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.common.pojo.CommonValidList;
+import vip.xiaonuo.exam.base.BaseApiController;
+import vip.xiaonuo.exam.domain.TExam;
+import vip.xiaonuo.exam.domain.exam.TExamAddParam;
+import vip.xiaonuo.exam.domain.exam.TExamEditParam;
+import vip.xiaonuo.exam.domain.exam.TExamIdParam;
+import vip.xiaonuo.exam.domain.exam.TExamPageParam;
+import vip.xiaonuo.exam.service.TExamService;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import javax.validation.constraints.NotEmpty;
+
+/**
+ * 考试表控制器 学生端
+ *
+ * @author ZSS
+ * @date  2025/07/22 10:51
+ */
+@Api(tags = "学生端考试表控制器")
+@ApiSupport(author = "SNOWY_TEAM", order = 1)
+@RestController
+@Validated
+@RequestMapping(value = "/api/admin/s_exam")
+public class TExamController extends BaseApiController {
+
+    @Resource
+    private TExamService tExamService;
+
+    /**
+     * 获取考试表分页
+     *
+     * @author ZSS
+     * @date  2025/07/22 10:51
+     */
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("获取考试表分页")
+    @SaCheckPermission("/page")
+    @GetMapping("/page")
+    public CommonResult<Page<TExam>> page(TExamPageParam tExamPageParam) {
+        SaBaseLoginUser currentUser = getCurrentUser();
+        if(currentUser == null || currentUser.getId() == null){
+            throw new RuntimeException("未登录!!!");
+        }
+        tExamPageParam.setUserId(currentUser.getId());
+        return CommonResult.data(tExamService.page(tExamPageParam));
+    }
+
+    /**
+     * 获取考试表详情
+     *
+     * @author ZSS
+     * @date  2025/07/22 10:51
+     */
+    @ApiOperationSupport(order = 5)
+    @ApiOperation("获取考试表详情")
+    @SaCheckPermission("/detail")
+    @GetMapping("/detail")
+    public CommonResult<TExam> detail(@Valid TExamIdParam tExamIdParam) {
+        return CommonResult.data(tExamService.detail(tExamIdParam));
+    }
+
+}

+ 2 - 0
snowy-plugin/snowy-plugin-exam/snowy-plugin-exam-func/src/main/java/vip/xiaonuo/exam/domain/exam/TExamPageParam.java

@@ -76,4 +76,6 @@ public class TExamPageParam {
     @ApiModelProperty(value = "试卷ID")
     private String paperId;
 
+    /** 学生ID **/
+    private String userId;
 }

+ 3 - 0
snowy-plugin/snowy-plugin-exam/snowy-plugin-exam-func/src/main/java/vip/xiaonuo/exam/service/impl/TExamServiceImpl.java

@@ -73,6 +73,9 @@ public class TExamServiceImpl extends ServiceImpl<TExamMapper, TExam> implements
         if(ObjectUtil.isNotEmpty(tExamPageParam.getPaperId())) {
             queryWrapper.lambda().eq(TExam::getPaperId, tExamPageParam.getPaperId());
         }
+        if(ObjectUtil.isNotEmpty(tExamPageParam.getUserId())){
+            queryWrapper.lambda().like(TExam::getStudentIds, tExamPageParam.getUserId());
+        }
         if(ObjectUtil.isAllNotEmpty(tExamPageParam.getSortField(), tExamPageParam.getSortOrder())) {
             CommonSortOrderEnum.validate(tExamPageParam.getSortOrder());
             queryWrapper.orderBy(true, tExamPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()),