Procházet zdrojové kódy

1.删除学习足迹接口
2.考试管理中提交人数和批改人数接口

jasonk5949 před 4 měsíci
rodič
revize
17149e7457

+ 18 - 4
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/CourseStudentBurialpointController.java

@@ -21,10 +21,7 @@ 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.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
 import vip.xiaonuo.common.annotation.CommonLog;
 import vip.xiaonuo.common.pojo.CommonResult;
@@ -182,4 +179,21 @@ public class CourseStudentBurialpointController {
         return CommonResult.data(courseStudentBurialpointService.detail(courseStudentProgressIdParam));
     }
 
+    /**
+     * 删除学习足迹
+     *
+     * @param id 足迹id
+     * @return 操作结果
+     *
+     * @author jinjilong
+     * @date 2025-10-30
+     */
+    @ApiOperationSupport(order = 6)
+    @ApiOperation("删除学习足迹")
+    @CommonLog("删除学习足迹")
+    @GetMapping("/disk/coursestudentburialpoint/deleteBurialPoint")
+    public CommonResult<String> deleteBurialPoint(@RequestParam("id") String id) {
+        return courseStudentBurialpointService.deleteBurialPoint(id);
+    }
+
 }

+ 11 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/CourseStudentBurialpointService.java

@@ -14,6 +14,7 @@ package vip.xiaonuo.disk.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.disk.domain.CourseStudentBurialpoint;
 import vip.xiaonuo.disk.param.coursestudentprogress.CourseStudentProgressAddParam;
 import vip.xiaonuo.disk.param.coursestudentprogress.CourseStudentProgressEditParam;
@@ -103,4 +104,14 @@ public interface CourseStudentBurialpointService extends IService<CourseStudentB
      **/
     CourseStudentBurialpoint queryEntity(String id);
 
+    /**
+     * 删除学习足迹
+     *
+     * @param id 足迹id
+     * @return 操作结果
+     *
+     * @author jinjilong
+     * @date 2025-10-30
+     */
+    CommonResult<String> deleteBurialPoint(String id);
 }

+ 18 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/impl/CourseStudentBurialpointServiceImpl.java

@@ -23,6 +23,7 @@ import org.springframework.transaction.annotation.Transactional;
 import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
 import vip.xiaonuo.common.exception.CommonException;
 import vip.xiaonuo.common.page.CommonPageRequest;
+import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.disk.domain.CourseStudentBurialpoint;
 import vip.xiaonuo.disk.mapper.CourseStudentBurialpointMapper;
 import vip.xiaonuo.disk.param.coursestudentprogress.CourseStudentProgressAddParam;
@@ -48,6 +49,7 @@ public class CourseStudentBurialpointServiceImpl extends ServiceImpl<CourseStude
     public Page<CourseStudentBurialpoint> page(CourseStudentProgressPageParam courseStudentProgressPageParam) {
         QueryWrapper<CourseStudentBurialpoint> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(CourseStudentBurialpoint::getCreateUser, StpLoginUserUtil.getLoginUser().getId());
+        queryWrapper.lambda().eq(CourseStudentBurialpoint::getDeleteFlag, "NOT_DELETE");
         queryWrapper.lambda().orderByDesc(CourseStudentBurialpoint::getCreateTime);
         return this.page(CommonPageRequest.defaultPage(), queryWrapper);
     }
@@ -154,4 +156,20 @@ public class CourseStudentBurialpointServiceImpl extends ServiceImpl<CourseStude
         return courseStudentBurialpoint;
     }
 
+    @Override
+    public CommonResult<String> deleteBurialPoint(String id) {
+        // 先校验是否有这条学习足迹
+        CourseStudentBurialpoint courseStudentBurialpoint = this.queryEntity(id);
+        if (courseStudentBurialpoint == null) {
+            return CommonResult.error("操作失败");
+        }
+        // 删除这条学习足迹
+        boolean b = this.removeById(courseStudentBurialpoint);
+        if (b) {
+            return CommonResult.ok("操作成功");
+        } else {
+            return CommonResult.error("操作失败");
+        }
+    }
+
 }

+ 15 - 8
snowy-plugin/snowy-plugin-exam/snowy-plugin-exam-func/src/main/java/vip/xiaonuo/exam/controller/admin/ExamPaperAnswerController.java

@@ -1,24 +1,18 @@
 package vip.xiaonuo.exam.controller.admin;
 
+import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.github.pagehelper.PageInfo;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.exam.base.BaseApiController;
-import vip.xiaonuo.exam.base.RestResponse;
 import vip.xiaonuo.exam.domain.ExamPaperAnswer;
 import vip.xiaonuo.exam.domain.Subject;
 import vip.xiaonuo.exam.service.ExamPaperAnswerService;
 import vip.xiaonuo.exam.service.SubjectService;
 import vip.xiaonuo.exam.utility.DateTimeUtil;
 import vip.xiaonuo.exam.utility.ExamUtil;
-import vip.xiaonuo.exam.utility.PageInfoHelper;
 import vip.xiaonuo.exam.viewmodel.admin.paper.ExamPaperAnswerPageRequestVM;
-import vip.xiaonuo.exam.viewmodel.student.exampaper.ExamPaperAnswerPageResponseVM;
 
 @RestController("AdminExamPaperAnswerController")
 @RequestMapping(value = "/api/admin/examPaperAnswer")
@@ -51,5 +45,18 @@ public class ExamPaperAnswerController extends BaseApiController {
         return CommonResult.data(pageInfo);
     }
 
+    /**
+     * 根据试卷id查询试卷提交人数、批改人数
+     *
+     * @param examPaperId 试卷id
+     * @return 提交人数和批改人数的json对象
+     *
+     * @author 金吉龙
+     */
+    @GetMapping("/submitCountAndJudgeCount")
+    public CommonResult<JSONObject> getSubmitCountAndJudgeCount(@RequestParam("examPaperId") Integer examPaperId) {
+        return examPaperAnswerService.getSubmitCountAndJudgeCount(examPaperId);
+    }
+
 
 }

+ 16 - 0
snowy-plugin/snowy-plugin-exam/snowy-plugin-exam-func/src/main/java/vip/xiaonuo/exam/mapper/ExamPaperAnswerMapper.java

@@ -31,4 +31,20 @@ public interface ExamPaperAnswerMapper extends BaseMapper<ExamPaperAnswer> {
     Map<String,Object> getStatus(Map param);
 
     List<String> studentIds(String id);
+
+    /**
+     * 根据试卷id查询该试卷的答题人数
+     *
+     * @param examPaperId 试卷id
+     * @return 提交人数
+     */
+    Integer submitCountByExamPaperId(@Param("examPaperId") Integer examPaperId);
+
+    /**
+     * 根据试卷id查询该试卷批改完成数
+     *
+     * @param examPaperId 试卷id
+     * @return 提交人数
+     */
+    Integer judgeCountByExamPaperId(@Param("examPaperId") Integer examPaperId);
 }

+ 14 - 0
snowy-plugin/snowy-plugin-exam/snowy-plugin-exam-func/src/main/java/vip/xiaonuo/exam/mapper/mapping/ExamPaperAnswerMapper.xml

@@ -313,4 +313,18 @@
     ) AND EDU_IDENTITY=2
   </select>
 
+    <!-- 根据试卷id查询该试卷的答题人数  -->
+    <select id="submitCountByExamPaperId" resultType="java.lang.Integer">
+      select count(0)
+      from t_exam_paper_answer
+      where exam_paper_id = #{examPaperId}
+    </select>
+
+  <!-- 根据试卷id查询该试卷批改完成数  -->
+  <select id="judgeCountByExamPaperId" resultType="java.lang.Integer">
+    select count(0)
+    from t_exam_paper_answer
+    where exam_paper_id = #{examPaperId} and status = 2
+  </select>
+
 </mapper>

+ 12 - 0
snowy-plugin/snowy-plugin-exam/snowy-plugin-exam-func/src/main/java/vip/xiaonuo/exam/service/ExamPaperAnswerService.java

@@ -1,7 +1,9 @@
 package vip.xiaonuo.exam.service;
 
+import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import vip.xiaonuo.auth.core.pojo.SaBaseLoginUser;
+import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.exam.domain.ExamPaperAnswer;
 import vip.xiaonuo.exam.domain.ExamPaperAnswerInfo;
 import vip.xiaonuo.exam.viewmodel.admin.paper.ExamPaperAnswerPageRequestVM;
@@ -60,4 +62,14 @@ public interface ExamPaperAnswerService extends BaseService<ExamPaperAnswer> {
     Map<String,Object> getStatus(Map param);
 
     List<String> studentIds(String id);
+
+    /**
+     * 根据试卷id查询试卷提交人数、批改人数
+     *
+     * @param examPaperId 试卷id
+     * @return 提交人数和批改人数的json对象
+     *
+     * @author 金吉龙
+     */
+    CommonResult<JSONObject> getSubmitCountAndJudgeCount(Integer examPaperId);
 }

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

@@ -4,10 +4,12 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import vip.xiaonuo.auth.core.pojo.SaBaseLoginUser;
+import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.exam.domain.*;
 import vip.xiaonuo.exam.domain.enums.ExamPaperAnswerStatusEnum;
 import vip.xiaonuo.exam.domain.enums.ExamPaperTypeEnum;
@@ -40,6 +42,7 @@ import java.util.stream.Collectors;
 import static vip.xiaonuo.exam.domain.enums.ExamPaperTypeEnum.Task;
 
 @Service
+@Slf4j
 public class ExamPaperAnswerServiceImpl extends BaseServiceImpl<ExamPaperAnswer> implements ExamPaperAnswerService {
 
     private final ExamPaperAnswerMapper examPaperAnswerMapper;
@@ -329,4 +332,27 @@ public class ExamPaperAnswerServiceImpl extends BaseServiceImpl<ExamPaperAnswer>
     public List<String> studentIds(String id) {
         return examPaperAnswerMapper.studentIds(id);
     }
+
+    @Override
+    public CommonResult<com.alibaba.fastjson2.JSONObject> getSubmitCountAndJudgeCount(Integer examPaperId) {
+        try {
+            // 先校验是否有此试卷
+            ExamPaper examPaper = examPaperMapper.selectByPrimaryKey(examPaperId);
+            if (examPaper == null) {
+                return CommonResult.error("试卷不存在");
+            }
+            // 获取此试卷的提交次数
+            Integer submitCount =  examPaperAnswerMapper.submitCountByExamPaperId(examPaperId);
+            // 获取此试卷的批改次数
+            Integer judgeCount =  examPaperAnswerMapper.judgeCountByExamPaperId(examPaperId);
+            // 封装返回
+            com.alibaba.fastjson2.JSONObject result = new com.alibaba.fastjson2.JSONObject();
+            result.put("submitCount", submitCount);
+            result.put("judgeCount", judgeCount);
+            return CommonResult.data(result);
+        }catch (Exception ex) {
+            log.error("获取提交次数和批改次数失败", ex);
+            return CommonResult.error("获取提交次数和批改次数失败");
+        }
+    }
 }