From 47cd9ecc0eff38ffe6b3b794b2bf197e958f4403 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期三, 14 五月 2025 15:50:57 +0800
Subject: [PATCH] bug:学员有状态不能修改问题

---
 src/main/java/com/mindskip/xzs/controller/student/ExamPaperController.java |   69 +++++++++++++++++++++++++++++++---
 1 files changed, 62 insertions(+), 7 deletions(-)

diff --git a/src/main/java/com/mindskip/xzs/controller/student/ExamPaperController.java b/src/main/java/com/mindskip/xzs/controller/student/ExamPaperController.java
index 9ec1659..fd52320 100644
--- a/src/main/java/com/mindskip/xzs/controller/student/ExamPaperController.java
+++ b/src/main/java/com/mindskip/xzs/controller/student/ExamPaperController.java
@@ -3,11 +3,17 @@
 import com.mindskip.xzs.base.BaseApiController;
 import com.mindskip.xzs.base.RestResponse;
 import com.mindskip.xzs.domain.ExamPaper;
+import com.mindskip.xzs.domain.ExamPaperDepartment;
+import com.mindskip.xzs.domain.ExamPaperUser;
+import com.mindskip.xzs.domain.User;
 import com.mindskip.xzs.service.ExamPaperAnswerService;
+import com.mindskip.xzs.service.ExamPaperDepartmentService;
 import com.mindskip.xzs.service.ExamPaperService;
+import com.mindskip.xzs.service.ExamPaperUserService;
 import com.mindskip.xzs.utility.DateTimeUtil;
 import com.mindskip.xzs.utility.PageInfoHelper;
 import com.mindskip.xzs.viewmodel.admin.exam.ExamPaperEditRequestVM;
+import com.mindskip.xzs.viewmodel.admin.exam.ExamPaperEditRequestVO;
 import com.mindskip.xzs.viewmodel.student.exam.ExamPaperPageResponseVM;
 import com.mindskip.xzs.viewmodel.student.exam.ExamPaperPageVM;
 import com.github.pagehelper.PageInfo;
@@ -16,6 +22,9 @@
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
 
 @RestController("StudentExamPaperController")
 @RequestMapping(value = "/api/student/exam/paper")
@@ -24,30 +33,76 @@
     private final ExamPaperService examPaperService;
     private final ExamPaperAnswerService examPaperAnswerService;
     private final ApplicationEventPublisher eventPublisher;
+    private final ExamPaperUserService examPaperUserService;
+    private final ExamPaperDepartmentService examPaperDepartmentService;
 
     @Autowired
-    public ExamPaperController(ExamPaperService examPaperService, ExamPaperAnswerService examPaperAnswerService, ApplicationEventPublisher eventPublisher) {
+    public ExamPaperController(ExamPaperService examPaperService, ExamPaperAnswerService examPaperAnswerService, ApplicationEventPublisher eventPublisher, ExamPaperUserService examPaperUserService, ExamPaperDepartmentService examPaperDepartmentService) {
         this.examPaperService = examPaperService;
         this.examPaperAnswerService = examPaperAnswerService;
         this.eventPublisher = eventPublisher;
+        this.examPaperUserService = examPaperUserService;
+        this.examPaperDepartmentService = examPaperDepartmentService;
     }
 
 
+    /**
+     * 寮�濮嬭�冭瘯
+     *
+     * @param id
+     * @return
+     */
     @RequestMapping(value = "/select/{id}", method = RequestMethod.POST)
-    public RestResponse<ExamPaperEditRequestVM> select(@PathVariable Integer id) {
-        ExamPaperEditRequestVM vm = examPaperService.examPaperToVM(id);
-        return RestResponse.ok(vm);
+    public RestResponse<ExamPaperEditRequestVO> select(@PathVariable Integer id) {
+        return RestResponse.ok(examPaperService.examPaperToVM(id));
     }
 
 
     @RequestMapping(value = "/pageList", method = RequestMethod.POST)
     public RestResponse<PageInfo<ExamPaperPageResponseVM>> pageList(@RequestBody @Valid ExamPaperPageVM model) {
         PageInfo<ExamPaper> pageInfo = examPaperService.studentPage(model);
+        User user = getCurrentUser();
         PageInfo<ExamPaperPageResponseVM> page = PageInfoHelper.copyMap(pageInfo, e -> {
-            ExamPaperPageResponseVM vm = modelMapper.map(e, ExamPaperPageResponseVM.class);
-            vm.setCreateTime(DateTimeUtil.dateFormat(e.getCreateTime()));
-            return vm;
+            Integer[] ids = examPaperDepartmentService.getByExamPaperId(e.getId())
+                    .stream().map(ExamPaperDepartment::getDepartmentId).toArray(Integer[]::new);
+            Integer[] userExamPaperIds = examPaperUserService.getByExamPaperId(e.getId())
+                    .stream().map(ExamPaperUser::getUserId).toArray(Integer[]::new);
+            if (Arrays.asList(ids).contains(user.getUserLevel())) {
+                ExamPaperPageResponseVM vm = modelMapper.map(e, ExamPaperPageResponseVM.class);
+                vm.setCreateTime(DateTimeUtil.dateFormat(e.getCreateTime()));
+                return vm;
+            }
+            if (Arrays.asList(userExamPaperIds).contains(user.getId())) {
+                ExamPaperPageResponseVM vm = modelMapper.map(e, ExamPaperPageResponseVM.class);
+                vm.setCreateTime(DateTimeUtil.dateFormat(e.getCreateTime()));
+                return vm;
+            }
+            return null;
         });
+        Integer[] userIds = examPaperUserService.getByUserId(user.getId())
+                .stream().map(ExamPaperUser::getExamPaperId).toArray(Integer[]::new);
+
+        if (userIds.length > 0) {
+            List<ExamPaper> papers = examPaperService.gets(userIds);
+            pageInfo.getList().addAll(papers);
+        }
+        page.setList(page.getList().stream().filter(e -> e != null).collect(Collectors.toList()));
         return RestResponse.ok(page);
     }
+
+    @RequestMapping(value = "/edit", method = RequestMethod.POST)
+    public RestResponse<ExamPaperEditRequestVO> edit(@RequestBody @Valid ExamPaperEditRequestVM model) throws Exception {
+        ExamPaperUser examPaperUser = new ExamPaperUser();
+        User user = getCurrentUser();
+        model.setDepartmentIds(new Integer[0]);
+        model.setPaperType(7);
+        ExamPaper examPaper = examPaperService.savePaperFromVM(model, getCurrentUser());
+
+        examPaperUser.setExamPaperId(examPaper.getId());
+        examPaperUser.setUserId(user.getId());
+        examPaperUser.setDeleted("0");
+        examPaperUserService.add(examPaperUser);
+
+        return RestResponse.ok(examPaperService.examPaperToVM(examPaper.getId()));
+    }
 }

--
Gitblit v1.8.0