Browse Source

Merge branch 'feature-jump' of ssh://git.mooctest.com:1022/crowd-2019/crowd-test-service-backend into feature-jump

guo00guo 5 năm trước cách đây
mục cha
commit
6112e6ba1a

+ 24 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/EndPointDao.java

@@ -0,0 +1,24 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.EndPointPO;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.data.repository.PagingAndSortingRepository;
+import org.springframework.data.repository.query.Param;
+
+import javax.transaction.Transactional;
+import java.util.Optional;
+
+
+@Transactional
+public interface EndPointDao extends PagingAndSortingRepository<EndPointPO, Long> ,CrudRepository<EndPointPO, Long>, JpaRepository<EndPointPO, Long> ,JpaSpecificationExecutor<EndPointPO>{
+    Optional<EndPointPO> findByTaskCode(String code);
+
+    @Modifying
+    @Query(nativeQuery = true,value="delete from end_point where EP_T_CODE=?")
+    void deleteEndPoint(@Param("taskCode") String code);
+
+}

+ 7 - 2
core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestProject.java

@@ -54,9 +54,9 @@ public class CrowdTestProject {
     private int isDeleted;
     private int isDeleted;
     private int joinCount;
     private int joinCount;
     private Timestamp createTime;
     private Timestamp createTime;
-
     private List<CrowdTestTask> crowdTestTaskList;
     private List<CrowdTestTask> crowdTestTaskList;
     private CrowdTestReport crowdTestReportForProject;
     private CrowdTestReport crowdTestReportForProject;
+    private EndPoint endPoint;
 
 
 //    public CrowdTestProject wrapperCrowdTestProjectPO(CrowdTestProjectPO crowdTestProjectPO){
 //    public CrowdTestProject wrapperCrowdTestProjectPO(CrowdTestProjectPO crowdTestProjectPO){
 //        CrowdTestProject crowdTestProject = Converter.convert(CrowdTestProject.class, crowdTestProjectPO);
 //        CrowdTestProject crowdTestProject = Converter.convert(CrowdTestProject.class, crowdTestProjectPO);
@@ -262,9 +262,14 @@ public class CrowdTestProject {
         }
         }
         this.setRestPrice(this.getRestPrice() - task.getQuotedPrice());
         this.setRestPrice(this.getRestPrice() - task.getQuotedPrice());
         this.getCrowdTestTaskList().add(task);
         this.getCrowdTestTaskList().add(task);
+        if(task.getCaseId()!=null&&task.getCaseId().length()>0&&task.getExamId()!=null&task.getExamId().length()>0){
+            this.getEndPoint().setProjectCode(task.getCrowdTestProjectCode());
+            this.getEndPoint().setTaskCode(task.getCode());
+            this.getEndPoint().setCaseId(task.getCaseId());
+            this.getEndPoint().setExamId(task.getExamId());
+        }
     }
     }
 
 
-
     public void removeTask(CrowdTestTask task) {
     public void removeTask(CrowdTestTask task) {
         this.setRestPrice(this.getRestPrice() + task.getQuotedPrice());
         this.setRestPrice(this.getRestPrice() + task.getQuotedPrice());
         this.getCrowdTestTaskList().remove(task);
         this.getCrowdTestTaskList().remove(task);

+ 3 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestTask.java

@@ -1,6 +1,7 @@
 package com.mooctest.crowd.domain.domainobject;
 package com.mooctest.crowd.domain.domainobject;
 
 
 import com.mooctest.crowd.domain.exception.CrowdTestTaskException;
 import com.mooctest.crowd.domain.exception.CrowdTestTaskException;
+import com.mooctest.crowd.domain.model.EndPointPO;
 import lombok.Data;
 import lombok.Data;
 
 
 import java.sql.Timestamp;
 import java.sql.Timestamp;
@@ -45,6 +46,8 @@ public class CrowdTestTask {
     private int acceptedCount;
     private int acceptedCount;
     private int participantHasCommittedCount;
     private int participantHasCommittedCount;
     private List<TaskToUser> acceptedUserList = new ArrayList<>();
     private List<TaskToUser> acceptedUserList = new ArrayList<>();
+    private  String caseId;
+    private String  examId;
 //    private List<CrowdTestReport> crowdTestReportList = new ArrayList<>();
 //    private List<CrowdTestReport> crowdTestReportList = new ArrayList<>();
 
 
     @Override
     @Override

+ 13 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/EndPoint.java

@@ -0,0 +1,13 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import lombok.Data;
+
+
+@Data
+public class EndPoint {
+    private Long id;
+    private String projectCode;
+    private String taskCode;
+    private String  caseId;
+    private String  examId;
+}

+ 30 - 0
core/src/main/java/com/mooctest/crowd/domain/model/EndPointPO.java

@@ -0,0 +1,30 @@
+package com.mooctest.crowd.domain.model;
+
+import lombok.Data;
+
+import javax.persistence.*;
+
+
+@Data
+@Entity
+@Table(name = "end_point")
+public class EndPointPO {
+
+    @Id
+    @Column(name = "EP_ID")
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @Column(name = "EP_P_CODE")
+    private String projectCode;
+
+    @Column(name = "EP_T_CODE")
+    private String taskCode;
+
+    @Column(name = "EP_CASEID")
+    private String  caseId;
+
+    @Column(name = "EP_EXAMID")
+    private String  examId;
+
+}

+ 62 - 1
core/src/main/java/com/mooctest/crowd/domain/repository/CrowdTestProjectRepo.java

@@ -50,6 +50,9 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
     @Autowired
     @Autowired
     private ApplicationTypeDao applicationTypeDao;
     private ApplicationTypeDao applicationTypeDao;
 
 
+    @Autowired
+    private EndPointDao endPointDao;
+
     @Override
     @Override
     public Page<CrowdTestProjectPO> findAll(Specification specification, Pageable pageable) {
     public Page<CrowdTestProjectPO> findAll(Specification specification, Pageable pageable) {
         return crowdTestProjectDao.findAll(specification, pageable);
         return crowdTestProjectDao.findAll(specification, pageable);
@@ -134,8 +137,8 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
     public void saveCrowdTestProject(CrowdTestProject crowdTestProject) {
     public void saveCrowdTestProject(CrowdTestProject crowdTestProject) {
         CrowdTestProjectPO crowdTestProjectPO = Converter.convert(CrowdTestProjectPO.class, crowdTestProject);
         CrowdTestProjectPO crowdTestProjectPO = Converter.convert(CrowdTestProjectPO.class, crowdTestProject);
         crowdTestProjectDao.save(crowdTestProjectPO);
         crowdTestProjectDao.save(crowdTestProjectPO);
-
         List<CrowdTestTask> crowdTestTaskList = crowdTestProject.getCrowdTestTaskList();
         List<CrowdTestTask> crowdTestTaskList = crowdTestProject.getCrowdTestTaskList();
+        EndPoint endPoint= crowdTestProject.getEndPoint();
         if (crowdTestTaskList != null) {
         if (crowdTestTaskList != null) {
             for (CrowdTestTask crowdTestTask : crowdTestTaskList) {
             for (CrowdTestTask crowdTestTask : crowdTestTaskList) {
                 CrowdTestTaskPO crowdTestTaskPO = Converter.convert(CrowdTestTaskPO.class, crowdTestTask);
                 CrowdTestTaskPO crowdTestTaskPO = Converter.convert(CrowdTestTaskPO.class, crowdTestTask);
@@ -153,6 +156,16 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
 //                Set<Long> collect = taskToUserPOS.stream().map(TaskToUserPO::getUserId).collect(Collectors.toSet());
 //                Set<Long> collect = taskToUserPOS.stream().map(TaskToUserPO::getUserId).collect(Collectors.toSet());
 //                crowdTestTaskPO.setParticipantHasReportCount(collect.size());
 //                crowdTestTaskPO.setParticipantHasReportCount(collect.size());
                 crowdTestTaskDao.save(crowdTestTaskPO);
                 crowdTestTaskDao.save(crowdTestTaskPO);
+                if(crowdTestTask.getCaseId()!=null&&crowdTestTask.getCaseId().length()>0&&crowdTestTask.getExamId()!=null&crowdTestTask.getExamId().length()>0){
+                    Optional<EndPointPO> endPointPO=endPointDao.findByTaskCode(crowdTestTask.getCode());
+                    if(!endPointPO.isPresent()){
+                        EndPointPO addEndPointPO = Converter.convert(EndPointPO.class, endPoint);
+                        endPointDao.save(addEndPointPO);
+                    }else {
+                        throw new HttpBadRequestException("任务已存在");
+                    }
+                }
+
             }
             }
         }
         }
         // 保存项目报告
         // 保存项目报告
@@ -178,6 +191,54 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
         return crowdTestProjectList;
         return crowdTestProjectList;
     }
     }
 
 
+    @Override
+    public EndPoint getEndPoint(String taskCode) {
+        Optional<EndPointPO> endPointPO=endPointDao.findByTaskCode(taskCode);
+        if(endPointPO.isPresent()){
+            EndPoint endPoint = Converter.convert(EndPoint.class, endPointPO.get());
+            return endPoint;
+        }
+        return null;
+    }
+
+    @Override
+    public EndPoint addEndPoint(String taskCode, EndPoint endPoint) {
+        Optional<EndPointPO> endPointPO=endPointDao.findByTaskCode(taskCode);
+        if(!endPointPO.isPresent()){
+            EndPointPO addEndPointPO = Converter.convert(EndPointPO.class, endPoint);
+            endPointDao.save(addEndPointPO);
+        }else {
+            throw new HttpBadRequestException("任务已存在");
+        }
+        return this.getEndPoint(taskCode);
+    }
+
+    @Override
+    public void deleteEndPoint(String taskCode) {
+        Optional<EndPointPO> endPointPO=endPointDao.findByTaskCode(taskCode);
+        if(endPointPO.isPresent()){
+            endPointDao.deleteEndPoint(taskCode);
+            throw new HttpBadRequestException("任务已删除");
+        }else{
+            throw new HttpBadRequestException("任务不存在");
+        }
+    }
+
+    @Override
+    public EndPoint updateEndPoint(String taskCode, EndPoint endPoint) {
+        Optional<EndPointPO> endPointPO=endPointDao.findByTaskCode(taskCode);
+        if(endPointPO.isPresent()){
+            endPointPO.get().setProjectCode(endPoint.getProjectCode());
+            endPointPO.get().setTaskCode(endPoint.getTaskCode());
+            endPointPO.get().setCaseId(endPoint.getCaseId());
+            endPointPO.get().setExamId(endPoint.getExamId());
+            endPointDao.save(endPointPO.get());
+            return this.getEndPoint(endPoint.getTaskCode());
+        }else {
+            throw new HttpBadRequestException("任务不存在");
+        }
+    }
+
 //    @Override
 //    @Override
 //    public void removeCrowdTestProject(String crowdTestProjectCode){
 //    public void removeCrowdTestProject(String crowdTestProjectCode){
 //        CrowdTestProject crowdTestProject = getByProjectCode(crowdTestProjectCode);
 //        CrowdTestProject crowdTestProject = getByProjectCode(crowdTestProjectCode);

+ 9 - 0
core/src/main/java/com/mooctest/crowd/domain/repository/ICrowdTestProjectRepo.java

@@ -1,5 +1,6 @@
 package com.mooctest.crowd.domain.repository;
 package com.mooctest.crowd.domain.repository;
 import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
 import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
+import com.mooctest.crowd.domain.domainobject.EndPoint;
 import com.mooctest.crowd.domain.exception.CrowdTestProjectNotExistException;
 import com.mooctest.crowd.domain.exception.CrowdTestProjectNotExistException;
 import com.mooctest.crowd.domain.model.CrowdTestProjectPO;
 import com.mooctest.crowd.domain.model.CrowdTestProjectPO;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Page;
@@ -54,4 +55,12 @@ public interface ICrowdTestProjectRepo {
 //
 //
 //    CrowdTestProject updateCrowdTestProjectStatus(Long id, String status) throws CrowdTestProjectNotExistException;
 //    CrowdTestProject updateCrowdTestProjectStatus(Long id, String status) throws CrowdTestProjectNotExistException;
 
 
+    EndPoint getEndPoint(String taskCode);
+
+    EndPoint addEndPoint(String taskCode,EndPoint endPoint);
+
+    void deleteEndPoint(String taskCode);
+
+    EndPoint updateEndPoint(String taskCode,EndPoint endPoint);
+
 }
 }

+ 6 - 0
site/src/main/java/com/mooctest/crowd/site/command/CrowdTestTaskCommand.java

@@ -42,6 +42,8 @@ public class CrowdTestTaskCommand {
     private Double fixedPrice;
     private Double fixedPrice;
 
 
     private int participantCount;
     private int participantCount;
+    private  String caseId;
+    private String  examId;
 
 
     public boolean isLegal(){
     public boolean isLegal(){
         if (this.resource == 1 && this.location == null)
         if (this.resource == 1 && this.location == null)
@@ -68,6 +70,10 @@ public class CrowdTestTaskCommand {
         crowdTestTask.setFixedPrice(fixedPrice);
         crowdTestTask.setFixedPrice(fixedPrice);
         crowdTestTask.setRequirementFile(requirementFile);
         crowdTestTask.setRequirementFile(requirementFile);
         crowdTestTask.setParticipantCount(participantCount);
         crowdTestTask.setParticipantCount(participantCount);
+        if(caseId!=null&&caseId.length()>0&&examId!=null&examId.length()>0){
+            crowdTestTask.setCaseId(caseId);
+            crowdTestTask.setExamId(examId);
+        }
         return crowdTestTask;
         return crowdTestTask;
     }
     }
 
 

+ 16 - 0
site/src/main/java/com/mooctest/crowd/site/command/EndPointCommand.java

@@ -0,0 +1,16 @@
+package com.mooctest.crowd.site.command;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class EndPointCommand {
+    private String projectCode;
+    private String taskCode;
+    private String  caseId;
+    private String  examId;
+}

+ 43 - 0
site/src/main/java/com/mooctest/crowd/site/controller/JumpController.java

@@ -0,0 +1,43 @@
+package com.mooctest.crowd.site.controller;
+
+import com.mooctest.crowd.site.command.EndPointCommand;
+import com.mooctest.crowd.site.data.vo.EndPointVO;
+import com.mooctest.crowd.site.service.EndPointService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+
+/**
+ * @program: crowd
+ * @description: ${description}
+ * @author: hanyuwei
+ * @create: 2020-07-28 17:27
+ **/
+@RestController
+@RequestMapping("/api/jump")
+public class JumpController {
+
+    @Autowired
+    private EndPointService  endPointService;
+
+    @RequestMapping(value = "/display/{taskCode}", method = RequestMethod.GET)
+    public EndPointVO displayEndPoint(@PathVariable("taskCode") String taskCode){
+       return  endPointService.getEndPoint(taskCode);
+    }
+
+    @RequestMapping(value = "/add/{taskCode}", method = RequestMethod.POST)
+    public EndPointVO addEndPoint(@PathVariable("taskCode") String taskCode,@RequestBody EndPointCommand endPointCommand){
+        return  endPointService.addEndPoint(taskCode,endPointCommand);
+    }
+
+    @RequestMapping(value = "/delete/{taskCode}", method = RequestMethod.DELETE)
+    public void deleteQualification(@PathVariable("taskCode") String taskCode){
+        endPointService.deleteEndPoint(taskCode);
+    }
+
+    @RequestMapping(value = "/update/{taskCode}", method = RequestMethod.PUT)
+    public EndPointVO updateEndPoint(@PathVariable("taskCode") String taskCode,@RequestBody EndPointCommand endPointCommand){
+        return  endPointService.updateEndPoint(taskCode,endPointCommand);
+    }
+
+}

+ 19 - 0
site/src/main/java/com/mooctest/crowd/site/data/vo/EndPointVO.java

@@ -0,0 +1,19 @@
+package com.mooctest.crowd.site.data.vo;
+
+import com.mooctest.crowd.domain.domainobject.EndPoint;
+import lombok.Data;
+
+/**
+ * @program: crowd
+ * @description: ${description}
+ * @author: hanyuwei
+ * @create: 2020-07-28 17:23
+ **/
+@Data
+public class EndPointVO {
+    private Long id;
+    private String projectCode;
+    private String taskCode;
+    private String  caseId;
+    private String  examId;
+}

+ 2 - 0
site/src/main/java/com/mooctest/crowd/site/mediator/ViewMediator.java

@@ -128,4 +128,6 @@ public interface ViewMediator {
     List<UserTaskCountVO> getCount();
     List<UserTaskCountVO> getCount();
 
 
     void  jumpPublicTesting(String projectCode, String taskCode, Long userId);
     void  jumpPublicTesting(String projectCode, String taskCode, Long userId);
+
+
 }
 }

+ 16 - 0
site/src/main/java/com/mooctest/crowd/site/service/EndPointService.java

@@ -0,0 +1,16 @@
+package com.mooctest.crowd.site.service;
+
+
+import com.mooctest.crowd.site.command.EndPointCommand;
+import com.mooctest.crowd.site.data.vo.EndPointVO;
+
+
+public interface EndPointService {
+    EndPointVO getEndPoint(String taskCode);
+
+    EndPointVO addEndPoint(String taskCode,EndPointCommand endPointCommand);
+
+    void deleteEndPoint(String taskCode);
+
+    EndPointVO updateEndPoint(String taskCode,EndPointCommand endPointCommand);
+}

+ 2 - 4
site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdTaskServiceImpl.java

@@ -1,10 +1,7 @@
 package com.mooctest.crowd.site.service.impl;
 package com.mooctest.crowd.site.service.impl;
 
 
 import com.mooctest.crowd.domain.dao.CrowdTestTaskDao;
 import com.mooctest.crowd.domain.dao.CrowdTestTaskDao;
-import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
-import com.mooctest.crowd.domain.domainobject.CrowdTestTask;
-import com.mooctest.crowd.domain.domainobject.CrowdTestTaskStatus;
-import com.mooctest.crowd.domain.domainobject.DistributeType;
+import com.mooctest.crowd.domain.domainobject.*;
 import com.mooctest.crowd.domain.exception.BaseException;
 import com.mooctest.crowd.domain.exception.BaseException;
 import com.mooctest.crowd.domain.exception.CrowdTestTaskNotExistException;
 import com.mooctest.crowd.domain.exception.CrowdTestTaskNotExistException;
 import com.mooctest.crowd.domain.exception.UnauthorizedException;
 import com.mooctest.crowd.domain.exception.UnauthorizedException;
@@ -12,6 +9,7 @@ import com.mooctest.crowd.domain.repository.CommonRepo;
 import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
 import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
 import com.mooctest.crowd.domain.repository.CrowdTestTaskRepo;
 import com.mooctest.crowd.domain.repository.CrowdTestTaskRepo;
 import com.mooctest.crowd.domain.repository.UserRepo;
 import com.mooctest.crowd.domain.repository.UserRepo;
+import com.mooctest.crowd.domain.util.Converter;
 import com.mooctest.crowd.site.command.CrowdTestTaskCommand;
 import com.mooctest.crowd.site.command.CrowdTestTaskCommand;
 import com.mooctest.crowd.site.data.dto.TaskDetailsDTO;
 import com.mooctest.crowd.site.data.dto.TaskDetailsDTO;
 import com.mooctest.crowd.site.data.dto.TaskSquareDTO;
 import com.mooctest.crowd.site.data.dto.TaskSquareDTO;

+ 46 - 0
site/src/main/java/com/mooctest/crowd/site/service/impl/EndPointServiceImpl.java

@@ -0,0 +1,46 @@
+package com.mooctest.crowd.site.service.impl;
+
+
+import com.mooctest.crowd.domain.domainobject.EndPoint;
+import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
+import com.mooctest.crowd.domain.util.Converter;
+import com.mooctest.crowd.site.command.EndPointCommand;
+import com.mooctest.crowd.site.data.vo.EndPointVO;
+import com.mooctest.crowd.site.service.EndPointService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+
+@Service
+public class EndPointServiceImpl implements EndPointService {
+
+    @Autowired
+    private CrowdTestProjectRepo crowdTestProjectRepo;
+    @Override
+    public EndPointVO getEndPoint(String taskCode) {
+        EndPoint endPoint=crowdTestProjectRepo.getEndPoint(taskCode);
+        EndPointVO endPointVO = Converter.convert(EndPointVO.class, endPoint);
+        return endPointVO;
+    }
+
+    @Override
+    public EndPointVO addEndPoint(String taskCode, EndPointCommand endPointCommand) {
+        EndPoint endPoint = Converter.convert(EndPoint.class, endPointCommand);
+        EndPoint addEndPoint=crowdTestProjectRepo.addEndPoint(taskCode,endPoint);
+        EndPointVO endPointVO = Converter.convert(EndPointVO.class, addEndPoint);
+        return  endPointVO;
+    }
+
+    @Override
+    public void deleteEndPoint(String taskCode) {
+        crowdTestProjectRepo.deleteEndPoint(taskCode);
+    }
+
+    @Override
+    public EndPointVO updateEndPoint(String taskCode, EndPointCommand endPointCommand) {
+        EndPoint endPoint = Converter.convert(EndPoint.class, endPointCommand);
+        EndPoint updateEndPoint=crowdTestProjectRepo.updateEndPoint(taskCode,endPoint);
+        EndPointVO endPointVO = Converter.convert(EndPointVO.class, updateEndPoint);
+        return  endPointVO;
+    }
+}