|
|
@@ -1,16 +1,26 @@
|
|
|
package com.mooctest.crowd.site.controller;
|
|
|
|
|
|
+import com.mooctest.crowd.domain.domainobject.TestCase;
|
|
|
+import com.mooctest.crowd.domain.domainobject.TestEnv;
|
|
|
+import com.mooctest.crowd.domain.env.TestStatus;
|
|
|
import com.mooctest.crowd.domain.exception.BaseException;
|
|
|
import com.mooctest.crowd.domain.exception.UnauthorizedException;
|
|
|
+import com.mooctest.crowd.domain.page.DOPage;
|
|
|
import com.mooctest.crowd.site.annotation.LoginRequired;
|
|
|
import com.mooctest.crowd.site.command.CrowdTestTaskCommand;
|
|
|
import com.mooctest.crowd.site.command.TaskDataBoardCommand;
|
|
|
import com.mooctest.crowd.site.data.dto.TaskDetailsDTO;
|
|
|
import com.mooctest.crowd.site.data.dto.TaskSquareDTO;
|
|
|
+import com.mooctest.crowd.site.data.vo.*;
|
|
|
import com.mooctest.crowd.site.data.response.ResponseVO;
|
|
|
import com.mooctest.crowd.site.data.response.ServerCode;
|
|
|
import com.mooctest.crowd.site.data.tfidf.JabaResult;
|
|
|
import com.mooctest.crowd.site.service.CrowdTaskService;
|
|
|
+import com.mooctest.crowd.site.service.TestCaseService;
|
|
|
+import com.mooctest.crowd.site.service.TestEnvService;
|
|
|
+import com.mooctest.crowd.site.service.TestToolService;
|
|
|
+import com.mooctest.crowd.site.util.RedisHelper;
|
|
|
+import com.mooctest.crowd.site.util.RequestUtils;
|
|
|
import io.swagger.annotations.Api;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
@@ -18,8 +28,11 @@ import org.springframework.validation.BindingResult;
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpSession;
|
|
|
import java.util.List;
|
|
|
+import java.util.UUID;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* @author: Diors.Po
|
|
|
@@ -34,6 +47,14 @@ public class CrowdTaskController{
|
|
|
|
|
|
@Autowired
|
|
|
private CrowdTaskService taskService;
|
|
|
+ @Autowired
|
|
|
+ private TestCaseService testCaseService;
|
|
|
+ @Autowired
|
|
|
+ private TestEnvService testEnvService;
|
|
|
+ @Autowired
|
|
|
+ private TestToolService testToolService;
|
|
|
+ @Autowired
|
|
|
+ private RedisHelper redisHelper;
|
|
|
|
|
|
@RequestMapping(value = "/project/{projectCode}/task/{taskCode}", method = RequestMethod.GET)
|
|
|
public TaskDetailsDTO getTask(@PathVariable("projectCode") String projectCode, @PathVariable("taskCode") String taskCode, HttpSession session){
|
|
|
@@ -152,4 +173,90 @@ public class CrowdTaskController{
|
|
|
Long userId = Long.parseLong((String)session.getAttribute("userId"));
|
|
|
return new ResponseVO<>(ServerCode.SUCCESS, taskService.getToken(projectCode, taskCode, userId));
|
|
|
}
|
|
|
+
|
|
|
+ @LoginRequired
|
|
|
+ @RequestMapping(value = "/simpleusertaskdatas", method = RequestMethod.GET)
|
|
|
+ public ResponseVO<List<SimpleUserTaskDataVO>> getSimpleUserTaskDatas(HttpServletRequest request){
|
|
|
+ return new ResponseVO(ServerCode.SUCCESS, taskService.findSimpleTaskDatasByUserId(RequestUtils.getUserId(request)));
|
|
|
+ }
|
|
|
+
|
|
|
+ @RequestMapping(value = "/simpletaskdatas/{projectCode}", method = RequestMethod.GET)
|
|
|
+ public ResponseVO<List<SimpleTaskDataVO>> getSimpleTaskDatasByProject(@PathVariable String projectCode){
|
|
|
+ return new ResponseVO(ServerCode.SUCCESS, taskService.findSimpleTaskDatasByProjectCode(projectCode));
|
|
|
+ }
|
|
|
+
|
|
|
+ @LoginRequired
|
|
|
+ @RequestMapping(value = "/project/{projectCode}/task/{taskCode}/taskusers", method = RequestMethod.GET)
|
|
|
+ public ResponseVO<List<TaskUserSimpleData>> getTaskUserDatas(HttpServletRequest request, @PathVariable("projectCode") String projectCode, @PathVariable("taskCode") String taskCode){
|
|
|
+ return new ResponseVO(ServerCode.SUCCESS, taskService.getTaskDetails(projectCode, taskCode, RequestUtils.getUserId(request))
|
|
|
+ .getAcceptedUserList().stream().map(taskToUserVO -> {
|
|
|
+ UserVO userVO = taskToUserVO.getUserVO();
|
|
|
+ TaskUserSimpleData taskUserSimpleData = new TaskUserSimpleData();
|
|
|
+ taskUserSimpleData.setUsername(userVO.getUserName());
|
|
|
+ taskUserSimpleData.setName(userVO.getName());
|
|
|
+ taskUserSimpleData.setId(userVO.getId());
|
|
|
+ taskUserSimpleData.setIsCommitted(taskToUserVO.getIsCommitted());
|
|
|
+ return taskUserSimpleData;
|
|
|
+ }).collect(Collectors.toList()));
|
|
|
+ }
|
|
|
+
|
|
|
+ @LoginRequired
|
|
|
+ @RequestMapping(value = "/task/{taskCode}/commit", method = RequestMethod.PUT)
|
|
|
+ public ResponseVO commitTask2(HttpServletRequest request, @PathVariable("taskCode") String taskCode){
|
|
|
+ Long userId = RequestUtils.getUserId(request);
|
|
|
+ DOPage<TestCase> page = testCaseService.find(userId, userId, taskCode, 0, 1000, null);
|
|
|
+ if (page.getDatas().size() == 0) {
|
|
|
+ return new ResponseVO(ServerCode.ERROR, "提交的任务未包含测试用例!");
|
|
|
+ }
|
|
|
+ long count = page.getDatas().stream().filter(testCase ->
|
|
|
+ testCase.getTestStatus().equals(TestStatus.WAIT)
|
|
|
+ ).count();
|
|
|
+ if (count > 0) {
|
|
|
+ return new ResponseVO(ServerCode.ERROR, String.format("测试用例中存在%d条未测试的记录,请确认并更新未测试记录的测试结论!", count));
|
|
|
+ }
|
|
|
+ count = page.getDatas().stream().filter(testCase ->
|
|
|
+ testCase.getTestStatus().equals(TestStatus.NO_PASS) && testCase.getDefects().size() == 0
|
|
|
+ ).count();
|
|
|
+ if (count > 0) {
|
|
|
+ return new ResponseVO(ServerCode.ERROR, String.format("测试用例中存在%d条测试未通过且未包含缺陷的记录,请确认并添加至少一条缺陷记录!", count));
|
|
|
+ }
|
|
|
+ count = page.getDatas().stream().filter(testCase ->
|
|
|
+ testCase.getTestStatus().equals(TestStatus.PASS) && testCase.getDefects().size() > 0
|
|
|
+ ).count();
|
|
|
+ if (count > 0) {
|
|
|
+ return new ResponseVO(ServerCode.ERROR, String.format("测试用例中存在%d条测试通过却包含缺陷的记录,请确认并删除多余的缺陷记录!", count));
|
|
|
+ }
|
|
|
+ List<TestEnv> testEnvs = testEnvService.findAllByTaskCodeAndUserId(taskCode, userId, userId);
|
|
|
+ if (testEnvs.size() == 0) {
|
|
|
+ return new ResponseVO(ServerCode.ERROR, "请补充测试的环境信息");
|
|
|
+ }
|
|
|
+ taskService.commitTask(page.getDatas().get(0).getProjectCode(), taskCode, userId);
|
|
|
+ return new ResponseVO(ServerCode.SUCCESS);
|
|
|
+ }
|
|
|
+
|
|
|
+ @LoginRequired
|
|
|
+ @RequestMapping(value = "/task/{taskCode}/statistics", method = RequestMethod.GET)
|
|
|
+ public ResponseVO<TaskStatisticsVO> getTaskStatistics(HttpServletRequest request, @PathVariable("taskCode") String taskCode) {
|
|
|
+ Long userId = RequestUtils.getUserId(request);
|
|
|
+ return new ResponseVO(ServerCode.SUCCESS, taskService.getTaskStatistics(userId, taskCode));
|
|
|
+ }
|
|
|
+
|
|
|
+ @LoginRequired
|
|
|
+ @RequestMapping(value = "/task/{taskCode}/completion", method = RequestMethod.GET)
|
|
|
+ public ResponseVO<Double> getTaskCompletion(HttpServletRequest request, @PathVariable("taskCode") String taskCode) {
|
|
|
+ Long userId = RequestUtils.getUserId(request);
|
|
|
+ String token = UUID.randomUUID().toString();
|
|
|
+ redisHelper.hset("token", token, userId, 360000);
|
|
|
+ System.out.println("token=======" + token);
|
|
|
+ return new ResponseVO(ServerCode.SUCCESS, 0.0d);
|
|
|
+ }
|
|
|
+
|
|
|
+ @RequestMapping(value = "/task/{taskCode}/moreinfo", method = RequestMethod.GET)
|
|
|
+ public ResponseVO<TaskMoreInfoVO> getTaskMoreInfo(String token, @PathVariable("taskCode") String taskCode){
|
|
|
+ Long userId = (Long)redisHelper.hget("token", token);
|
|
|
+ if (userId == null) {
|
|
|
+ throw new BaseException("token无效");
|
|
|
+ }
|
|
|
+ return new ResponseVO(ServerCode.SUCCESS, taskService.getTaskMoreInfo(userId, taskCode));
|
|
|
+ }
|
|
|
}
|