Browse Source

feat: 测试用例增删,problem getAll

haha 4 years ago
parent
commit
ce40e943de

+ 22 - 4
seec-oj-server/src/main/java/cn/seecoder/ojserver/controller/ProblemController.java

@@ -1,13 +1,12 @@
 package cn.seecoder.ojserver.controller;
 
+import cn.seecoder.ojserver.dao.entity.TestCase;
 import cn.seecoder.ojserver.model.vo.ProblemVO;
+import cn.seecoder.ojserver.model.vo.TestCaseVO;
 import cn.seecoder.ojserver.service.ProblemService;
 import cn.seecoder.ojserver.web.Response;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 @RestController
 @RequestMapping(path = "/api/problem")
@@ -22,4 +21,23 @@ public class ProblemController {
     public Response create(@RequestBody ProblemVO problemVO){
         return Response.buildSuccess(this.problemService.create(problemVO));
     }
+
+    @GetMapping("")
+    public Response getAll(){
+        return Response.buildSuccess(this.problemService.getAllProblems());
+    }
+
+    @PostMapping("/testcase")
+    public Response addTestCase(@RequestBody TestCaseVO testCaseVO){
+        return Response.buildSuccess(this.problemService.addTestCase(testCaseVO));
+    }
+
+    @DeleteMapping("/testcase")
+    public Response deleteTestCase(@RequestParam Integer testCaseId){
+        return Response.buildSuccess(this.problemService.deleteTestCase(testCaseId));
+    }
+
+
+
+
 }

+ 3 - 1
seec-oj-server/src/main/java/cn/seecoder/ojserver/dao/entity/TestCaseDAO.java → seec-oj-server/src/main/java/cn/seecoder/ojserver/dao/TestCaseDAO.java

@@ -1,5 +1,7 @@
-package cn.seecoder.ojserver.dao.entity;
+package cn.seecoder.ojserver.dao;
 
+import cn.seecoder.ojserver.dao.entity.Problem;
+import cn.seecoder.ojserver.dao.entity.TestCase;
 import org.springframework.data.jpa.repository.JpaRepository;
 
 import java.util.List;

+ 1 - 1
seec-oj-server/src/main/java/cn/seecoder/ojserver/manager/QuestionManager.java

@@ -3,7 +3,7 @@ package cn.seecoder.ojserver.manager;
 import cn.seecoder.ojserver.dao.ProblemDAO;
 import cn.seecoder.ojserver.dao.entity.Problem;
 import cn.seecoder.ojserver.dao.entity.TestCase;
-import cn.seecoder.ojserver.dao.entity.TestCaseDAO;
+import cn.seecoder.ojserver.dao.TestCaseDAO;
 import cn.seecoder.ojserver.exception.ThirdPartyServiceException;
 import cn.seecoder.ojserver.model.vo.CompleteQuestionVO;
 import cn.seecoder.ojserver.utils.thirdparty.QuestionThirdPartyService;

+ 4 - 0
seec-oj-server/src/main/java/cn/seecoder/ojserver/mapper/ProblemMapper.java

@@ -5,6 +5,8 @@ import cn.seecoder.ojserver.model.vo.ProblemVO;
 import org.mapstruct.Mapper;
 import org.mapstruct.factory.Mappers;
 
+import java.util.List;
+
 @Mapper(componentModel = "spring")
 public interface ProblemMapper {
     ProblemMapper INSTANCE = Mappers.getMapper(ProblemMapper.class);
@@ -13,4 +15,6 @@ public interface ProblemMapper {
 
     Problem toPO(ProblemVO problemVO);
 
+    List<ProblemVO> toVOList(List<Problem> problemList);
+
 }

+ 17 - 0
seec-oj-server/src/main/java/cn/seecoder/ojserver/mapper/TestCaseMapper.java

@@ -0,0 +1,17 @@
+package cn.seecoder.ojserver.mapper;
+
+import cn.seecoder.ojserver.dao.entity.TestCase;
+import cn.seecoder.ojserver.model.vo.TestCaseVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(componentModel = "spring")
+public interface TestCaseMapper {
+    TestCaseMapper INSTANCE = Mappers.getMapper(TestCaseMapper.class);
+
+    @Mapping(source = "problem.id", target = "problemId")
+    TestCaseVO toVO(TestCase testCase);
+
+    TestCase toPO(TestCaseVO testCaseVO);
+}

+ 15 - 0
seec-oj-server/src/main/java/cn/seecoder/ojserver/model/vo/TestCaseVO.java

@@ -0,0 +1,15 @@
+package cn.seecoder.ojserver.model.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class TestCaseVO {
+    private Integer id;
+    private String input;
+    private String output;
+    private Integer problemId;
+}

+ 10 - 0
seec-oj-server/src/main/java/cn/seecoder/ojserver/service/ProblemService.java

@@ -1,8 +1,18 @@
 package cn.seecoder.ojserver.service;
 
 import cn.seecoder.ojserver.dao.entity.Problem;
+import cn.seecoder.ojserver.dao.entity.TestCase;
 import cn.seecoder.ojserver.model.vo.ProblemVO;
+import cn.seecoder.ojserver.model.vo.TestCaseVO;
+
+import java.util.List;
 
 public interface ProblemService {
     public ProblemVO create(ProblemVO problemVO);
+
+    public List<ProblemVO> getAllProblems();
+
+    public TestCaseVO addTestCase(TestCaseVO testCaseVO);
+
+    public String deleteTestCase(Integer testcaseId);
 }

+ 32 - 1
seec-oj-server/src/main/java/cn/seecoder/ojserver/service/impl/ProblemServiceImpl.java

@@ -2,20 +2,27 @@ package cn.seecoder.ojserver.service.impl;
 
 import cn.seecoder.ojserver.dao.ProblemDAO;
 import cn.seecoder.ojserver.dao.entity.Problem;
+import cn.seecoder.ojserver.dao.entity.TestCase;
+import cn.seecoder.ojserver.dao.TestCaseDAO;
 import cn.seecoder.ojserver.mapper.ProblemMapper;
+import cn.seecoder.ojserver.mapper.TestCaseMapper;
 import cn.seecoder.ojserver.model.vo.ProblemVO;
+import cn.seecoder.ojserver.model.vo.TestCaseVO;
 import cn.seecoder.ojserver.service.ProblemService;
 import org.springframework.stereotype.Service;
 
 import java.util.Date;
+import java.util.List;
 
 @Service
 public class ProblemServiceImpl implements ProblemService {
 
     private final ProblemDAO problemDAO;
+    private final TestCaseDAO testCaseDAO;
 
-    public ProblemServiceImpl(ProblemDAO problemDAO) {
+    public ProblemServiceImpl(ProblemDAO problemDAO, TestCaseDAO testCaseDAO) {
         this.problemDAO = problemDAO;
+        this.testCaseDAO = testCaseDAO;
     }
 
     @Override
@@ -27,4 +34,28 @@ public class ProblemServiceImpl implements ProblemService {
         this.problemDAO.save(problem);
         return ProblemMapper.INSTANCE.toVO(problem);
     }
+
+    @Override
+    public List<ProblemVO> getAllProblems() {
+        List<Problem> problemList=this.problemDAO.findAll();
+        return ProblemMapper.INSTANCE.toVOList(problemList);
+    }
+
+    @Override
+    public TestCaseVO addTestCase(TestCaseVO testCaseVO) {
+        TestCase testCase = TestCaseMapper.INSTANCE.toPO(testCaseVO);
+        Problem problem = new Problem();
+        problem.setId(testCaseVO.getProblemId());
+        testCase.setProblem(problem);
+        this.testCaseDAO.save(testCase);
+        return TestCaseMapper.INSTANCE.toVO(testCase);
+    }
+
+    @Override
+    public String deleteTestCase(Integer testcaseId) {
+        this.testCaseDAO.deleteById(testcaseId);
+        return "删除测试用例成功";
+    }
+
+
 }