瀏覽代碼

paper edit

tangss 8 年之前
父節點
當前提交
8958c6ca12

+ 2 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/ExamService.java

@@ -33,4 +33,6 @@ public interface ExamService {
     List<Task> getAllTask();
 
     Task getExamByName(String name);
+
+    void deleteExam2Paper(Long examId, Long paperId);
 }

+ 9 - 4
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/impl/ExamServiceImpl.java

@@ -96,16 +96,21 @@ public class ExamServiceImpl extends BaseService implements ExamService {
 
     @Override
     public void saveExam2Paper(Long examId, Long paperId) {
-        List<Exam2Paper> exam2Papers = exam2PaperDao.findByExamId(examId);
-        if(exam2Papers.size()>0){
-            exam2PaperDao.delete(exam2Papers);
-        }
+        deleteExam2Paper(examId, paperId);
         Exam2Paper exam2Paper = new Exam2Paper();
         exam2Paper.setPaperId(paperId);
         exam2Paper.setExamId(examId);
         exam2PaperDao.save(exam2Paper);
     }
 
+    @Override
+    public void deleteExam2Paper(Long examId, Long paperId) {
+        List<Exam2Paper> exam2Papers = exam2PaperDao.findByExamId(examId);
+        if(exam2Papers.size()>0){
+            exam2PaperDao.delete(exam2Papers);
+        }
+    }
+
     private Specification<Task> getTaskWhereClause(Long ownerId, Integer status, Byte type, String keyword) {
         return new Specification<Task>() {
             @Override

+ 11 - 10
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/ctrl/ExamController.java

@@ -64,16 +64,6 @@ public class ExamController extends BaseController {
         }
     }
 
-    @RequiresPermissions("tasks:view")
-    @RequestMapping(value = "/api/test/exams", method = RequestMethod.GET)
-    public List<ExamVO> getExams() {
-        if (!SecurityUtils.getSubject().isPermitted("tasks:view")) {
-            throw new UnauthorizedException("unauthorized");
-        }
-        String username = (String) SecurityUtils.getSubject().getPrincipals().getPrimaryPrincipal();
-        return examLogic.getExamList(username);
-    }
-
     @RequiresPermissions("task:view")
     @RequestMapping(value = "api/exam/{examId}", method = RequestMethod.GET)
     public ExamVO getExamById(@PathVariable Long examId) {
@@ -108,6 +98,17 @@ public class ExamController extends BaseController {
     }
 
     @RequiresPermissions("task:update")
+    @RequestMapping(value = "api/exam2paper/{examId}/{paperId}", method = RequestMethod.DELETE)
+    public Boolean deleteExam2Paper(@PathVariable Long examId, @PathVariable Long paperId) {
+        User user = (User) SecurityUtils.getSubject().getSession().getAttribute("User");
+        String examPermissionStr = user.getId().toString() + ":task:update:" + examId.toString();
+        if (!SecurityUtils.getSubject().isPermitted(new TaskPermission(examPermissionStr))) {
+            throw new UnauthorizedException("unauthorized");
+        }
+        return examLogic.deleteExam2Paper(examId, paperId);
+    }
+
+    @RequiresPermissions("task:update")
     @RequestMapping(value = "api/exam/{examId}", method = RequestMethod.PUT)
     public ExamVO update(@PathVariable Long examId, @RequestBody ExamVO examVO) {
         User user = (User) SecurityUtils.getSubject().getSession().getAttribute("User");

+ 2 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/ExamLogic.java

@@ -46,4 +46,6 @@ public interface ExamLogic {
     boolean updateStatutsForAllTask();
 
     public void clearAllSchedulers();
+
+    Boolean deleteExam2Paper(Long examId, Long paperId);
 }

+ 7 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/impl/ExamLogicImpl.java

@@ -284,5 +284,12 @@ public class ExamLogicImpl extends BaseLogic implements ExamLogic {
         examSchedulerService.clearAllSchedulers();
     }
 
+    @Override
+    public Boolean deleteExam2Paper(Long examId, Long paperId) {
+        examService.deleteExam2Paper(examId, paperId);
+        exam2CaseService.deleteExam2Case(examId);
+        return true;
+    }
+
 
 }

+ 7 - 1
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/impl/PaperLogicImpl.java

@@ -71,6 +71,9 @@ public class PaperLogicImpl extends BaseLogic implements PaperLogic {
         if(paper == null){
             throw new IllegalArgumentException("试卷不存在");
         }
+        if(paperService.isUsedByExam(paperId)){
+            throw new IllegalArgumentException("试卷已被使用");
+        }
         paperService.deletePaper(paperId);
         return paperVOWrapper.wrap(paper);
     }
@@ -79,7 +82,7 @@ public class PaperLogicImpl extends BaseLogic implements PaperLogic {
     public PaperVO copyPaper(long paperId) {
         Paper paper=paperService.getById(paperId);
         if(paper == null){
-            throw new IllegalArgumentException("试卷不存在");
+            throw new IllegalArgumentException("试卷不存在,不可删除");
         }
         Paper newPaper=new Paper();
         newPaper.setDescription(paper.getDescription());
@@ -107,6 +110,9 @@ public class PaperLogicImpl extends BaseLogic implements PaperLogic {
 
     @Override
     public PaperVO updatePaper(PaperVO paperVO) {
+        if(paperService.isUsedByExam(paperVO.getId())){
+            throw new IllegalArgumentException("试卷已被使用,不可更改");
+        }
         return savePaperVO(paperVO);
     }