Browse Source

修改项目和用户聚合根下的测试用例

guochao 6 years ago
parent
commit
2d03bdc115

+ 180 - 189
core/src/main/java/com/mooctest/crowd/domain/controller/CrowdTestProjectController.java

@@ -2,27 +2,18 @@ package com.mooctest.crowd.domain.controller;
 
 import com.google.gson.Gson;
 import com.mooctest.crowd.domain.domainobject.*;
-import com.mooctest.crowd.domain.model.CrowdTestProjectPO;
 import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
 import com.mooctest.crowd.domain.repository.UserRepo;
-import com.mooctest.crowd.domain.util.Converter;
-import com.mooctest.crowd.domain.util.FileUtil;
-import org.apache.poi.hssf.usermodel.HSSFCell;
-import org.apache.poi.hssf.usermodel.HSSFRow;
-import org.apache.poi.hssf.usermodel.HSSFSheet;
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.multipart.MultipartFile;
 
-import java.io.FileNotFoundException;
-import java.io.IOException;
 import java.sql.Timestamp;
-import java.text.DecimalFormat;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.regex.PatternSyntaxException;
@@ -155,7 +146,7 @@ public class CrowdTestProjectController {
         Gson gson = new Gson();
         crowdTestProjectModify = gson.fromJson(gson.toJson(crowdTestProject), CrowdTestProject.class);
         crowdTestProjectModify.setLinkMan(linkMan);
-        CrowdTestProject updateCrowdTestProject = crowdTestProject.updateCrowdTestProject(crowdTestProject, crowdTestProjectModify);
+        CrowdTestProject updateCrowdTestProject = crowdTestProject.updateCrowdTestProject(crowdTestProjectModify);
         crowdTestProjectRepo.saveCrowdTestProject(updateCrowdTestProject);
     }
 
@@ -174,7 +165,7 @@ public class CrowdTestProjectController {
             }
         }
         crowdTestTaskModify.setName(taskName);
-        CrowdTestProject updateCrowdTestProject = crowdTestProject.updateCrowdTestTask(crowdTestProject, crowdTestTaskCode, crowdTestTaskModify);
+        CrowdTestProject updateCrowdTestProject = crowdTestProject.updateCrowdTestTask(crowdTestTaskCode, crowdTestTaskModify);
         crowdTestProjectRepo.saveCrowdTestProject(updateCrowdTestProject);
     }
 
@@ -194,7 +185,7 @@ public class CrowdTestProjectController {
             }
         }
         crowdTestReportModify.setName(reportName);
-        CrowdTestProject updateCrowdTestProject = crowdTestProject.updateCrowdTestReport(crowdTestProject, crowdTestTaskCode, crowdTestReportCode, crowdTestReportModify);
+        CrowdTestProject updateCrowdTestProject = crowdTestProject.updateCrowdTestReport(crowdTestTaskCode, crowdTestReportCode, crowdTestReportModify);
         crowdTestProjectRepo.saveCrowdTestProject(updateCrowdTestProject);
     }
 
@@ -464,22 +455,22 @@ public class CrowdTestProjectController {
      * @param file
      * @return
      */
-    @RequestMapping(value = "projectListImportByExcel", method = RequestMethod.POST)
-    public String projectListImportByExcel(MultipartFile file){
-        //解析excel
-        List<CrowdTestProjectPO> crowdTestProjectPOList = FileUtil.importExcel(file,0,1,CrowdTestProjectPO.class);
-
-        for(int i = 0; i < crowdTestProjectPOList.size(); i++){
-            CrowdTestProject crowdTestProject = Converter.convert(CrowdTestProject.class, crowdTestProjectPOList.get(i));
-            CrowdTestProject crowdTestProjectResult = crowdTestProject.generateDefaultTaskAndReportData();
-            //TODO 保存数据库
-            crowdTestProjectRepo.saveCrowdTestProject(crowdTestProjectResult);
-
-        }
-        System.out.println("共导入数据【"+crowdTestProjectPOList.size()+"】行");
-
-        return "success";
-    }
+//    @RequestMapping(value = "projectListImportByExcel", method = RequestMethod.POST)
+//    public String projectListImportByExcel(MultipartFile file){
+//        //解析excel
+//        List<CrowdTestProjectPO> crowdTestProjectPOList = FileUtil.importExcel(file,0,1,CrowdTestProjectPO.class);
+//
+//        for(int i = 0; i < crowdTestProjectPOList.size(); i++){
+//            CrowdTestProject crowdTestProject = Converter.convert(CrowdTestProject.class, crowdTestProjectPOList.get(i));
+//            CrowdTestProject crowdTestProjectResult = crowdTestProject.generateDefaultTaskAndReportData();
+//            //TODO 保存数据库
+//            crowdTestProjectRepo.saveCrowdTestProject(crowdTestProjectResult);
+//
+//        }
+//        System.out.println("共导入数据【"+crowdTestProjectPOList.size()+"】行");
+//
+//        return "success";
+//    }
 
 
     /**
@@ -487,170 +478,170 @@ public class CrowdTestProjectController {
      * @param file
      * @return
      */
-    @RequestMapping(value = "projectImportByExcel", method = RequestMethod.POST)
-    public String projectImportByExcel(MultipartFile file) {
-        List<String> logList = new ArrayList<>();
-        List<Map<Integer,Object>> recordList = new ArrayList<>();
-        HSSFWorkbook workbook=null;
-        try {
-            workbook = new HSSFWorkbook(file.getInputStream());
-        } catch (FileNotFoundException e) {
-            e.printStackTrace();
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-
-        //获取指定标签页
-        HSSFSheet sheet = workbook.getSheetAt(0);
-        if(sheet==null){
-            throw new RuntimeException("标签页不存在!");
-        }
-
-        //总行数
-        int rows = sheet.getPhysicalNumberOfRows();
-        if (rows < 2) {
-            throw new RuntimeException(file.getName()+" 内容为空,请重新编辑!");
-        }
-
-        //不为空的单元格数  ,第一行是标题列
-        HSSFRow keyRow = sheet.getRow(0);
-        int cellNumber = keyRow.getPhysicalNumberOfCells();
-
-        //循环遍历,第一行是标题,所以从 1 开始遍历(0表示第一行,1表示第二行)
-        for (int r = 1; r < rows; r++) {
-            Map<Integer,Object> record = new LinkedHashMap<Integer,Object>();//使用HashMap的话,存进去的顺序与取出来的顺序是不一致的,此处需要使用LinkedHashMap
-            HSSFRow row = sheet.getRow(r);
-            if(row == null){
-                logList.add("表中存在错误的单元格,请把与内容无关的单元格置空");
-                break;
-            }
-
-            for (int c = 0; c < cellNumber; c++){ //共cellNumber列
-                HSSFCell cell = row.getCell(c);
-                String cellValue = "";
-                DecimalFormat df = new DecimalFormat("#");
-                //如果单元格不为空
-                if (cell != null) {
-                    if(c == 1){
-                        String platform =cell.getRichStringCellValue().getString().trim();
-                        if(platform.length() == 0){
-                            logList.add("第"+(r+1)+"行第"+(c+1)+"列数据为空");
-                        }else{
-                            if(!isPlatform(platform)){
-                                logList.add("第"+(r+1)+"行第"+(c+1)+"列数据不符合要求");
-                            }else{
-                                String platformSave = "[" + platform + "]";
-                                record.put(c,platformSave);
-                                continue;
-                            }
-
-                        }
-                    }
-
-                    if(c == 4){
-                        String type =cell.getRichStringCellValue().getString().trim();
-                        if(type.length() == 0){
-                            logList.add("第"+(r+1)+"行第"+(c+1)+"列数据为空");
-                        }else{
-                            if(!isType(type)){
-                                logList.add("第"+(r+1)+"行第"+(c+1)+"列数据不符合要求");
-                            }else{
-                                String typeSave = "[" + type + "]";
-                                record.put(c,typeSave);
-                                continue;
-                            }
-
-                        }
-                    }
-
-                    if(c == 3){
-                        String phone = cell.getRichStringCellValue().getString().trim();
-                        if(!isRightPhone(phone)){
-                            logList.add("第"+(r+1)+"行第"+(c+1)+"列手机号格式不正确");
-                        }
-                    }
-
-                    switch (cell.getCellType()) {
-                        case HSSFCell.CELL_TYPE_STRING:
-                            cellValue =cell.getRichStringCellValue().getString().trim();
-                            if(cellValue.indexOf(" ") != -1){
-                                logList.add("第"+(r+1)+"行第"+(c+1)+"列数据中存在空格");
-                            }
-                            break;
-                        case HSSFCell.CELL_TYPE_NUMERIC:
-                            cellValue =df.format(cell.getNumericCellValue());
-                            break;
-                        case HSSFCell.CELL_TYPE_BOOLEAN:
-                            cellValue =String.valueOf(cell.getBooleanCellValue()).trim();
-                            break;
-                        case HSSFCell.CELL_TYPE_FORMULA:
-                            cellValue =cell.getCellFormula();
-                            break;
-                        case HSSFCell.CELL_TYPE_BLANK:
-                            logList.add("第"+(r+1)+"行第"+(c+1)+"列数据为空");
-                            break;
-                        default:
-                            cellValue = "";
-                    }
-                }else{
-                    logList.add("第"+(r+1)+"行第"+(c+1)+"列为空");
-                }
-                record.put(c,cellValue);
-            }
-            recordList.add(record);
-        }
-
-//        System.out.println("logList.toString() " + logList.toString());
-        System.out.println("recordList.toString()  " + recordList.toString());
-
-        if(logList.size() != 0){
-            String mes = "表格中存在问题,导入失败!";
-            return mes + logList.toString();
-        }else{
-            List<CrowdTestProjectPO> crowdTestProjectPOList = new ArrayList<>();
-            CrowdTestProjectPO crowdTestProjectPO = new CrowdTestProjectPO();
-            for(Map<Integer,Object> map : recordList){
-                crowdTestProjectPO.setName(map.get(0).toString());
-                crowdTestProjectPO.setPlatform(map.get(1).toString());
-                crowdTestProjectPO.setLinkMan(map.get(2).toString());
-                crowdTestProjectPO.setLinkManMobile(map.get(3).toString());
-                crowdTestProjectPO.setType(map.get(4).toString());
-                crowdTestProjectPO.setDescription(map.get(5).toString());
-                crowdTestProjectPOList.add(crowdTestProjectPO);
-            }
-            for(int i = 0; i < crowdTestProjectPOList.size(); i++){
-                CrowdTestProject crowdTestProject = Converter.convert(CrowdTestProject.class, crowdTestProjectPOList.get(i));
-                CrowdTestProject crowdTestProjectResult = crowdTestProject.generateDefaultTaskAndReportData();
-                //TODO 保存数据库
-//                crowdTestProjectRepo.saveCrowdTestProject(crowdTestProjectResult);
-            }
-            return "SUCCESS";
-        }
-    }
+//    @RequestMapping(value = "projectImportByExcel", method = RequestMethod.POST)
+//    public String projectImportByExcel(MultipartFile file) {
+//        List<String> logList = new ArrayList<>();
+//        List<Map<Integer,Object>> recordList = new ArrayList<>();
+//        HSSFWorkbook workbook=null;
+//        try {
+//            workbook = new HSSFWorkbook(file.getInputStream());
+//        } catch (FileNotFoundException e) {
+//            e.printStackTrace();
+//        } catch (IOException e) {
+//            e.printStackTrace();
+//        }
+//
+//        //获取指定标签页
+//        HSSFSheet sheet = workbook.getSheetAt(0);
+//        if(sheet==null){
+//            throw new RuntimeException("标签页不存在!");
+//        }
+//
+//        //总行数
+//        int rows = sheet.getPhysicalNumberOfRows();
+//        if (rows < 2) {
+//            throw new RuntimeException(file.getName()+" 内容为空,请重新编辑!");
+//        }
+//
+//        //不为空的单元格数  ,第一行是标题列
+//        HSSFRow keyRow = sheet.getRow(0);
+//        int cellNumber = keyRow.getPhysicalNumberOfCells();
+//
+//        //循环遍历,第一行是标题,所以从 1 开始遍历(0表示第一行,1表示第二行)
+//        for (int r = 1; r < rows; r++) {
+//            Map<Integer,Object> record = new LinkedHashMap<Integer,Object>();//使用HashMap的话,存进去的顺序与取出来的顺序是不一致的,此处需要使用LinkedHashMap
+//            HSSFRow row = sheet.getRow(r);
+//            if(row == null){
+//                logList.add("表中存在错误的单元格,请把与内容无关的单元格置空");
+//                break;
+//            }
+//
+//            for (int c = 0; c < cellNumber; c++){ //共cellNumber列
+//                HSSFCell cell = row.getCell(c);
+//                String cellValue = "";
+//                DecimalFormat df = new DecimalFormat("#");
+//                //如果单元格不为空
+//                if (cell != null) {
+//                    if(c == 1){
+//                        String platform =cell.getRichStringCellValue().getString().trim();
+//                        if(platform.length() == 0){
+//                            logList.add("第"+(r+1)+"行第"+(c+1)+"列数据为空");
+//                        }else{
+//                            if(!isPlatform(platform)){
+//                                logList.add("第"+(r+1)+"行第"+(c+1)+"列数据不符合要求");
+//                            }else{
+//                                String platformSave = "[" + platform + "]";
+//                                record.put(c,platformSave);
+//                                continue;
+//                            }
+//
+//                        }
+//                    }
+//
+//                    if(c == 4){
+//                        String type =cell.getRichStringCellValue().getString().trim();
+//                        if(type.length() == 0){
+//                            logList.add("第"+(r+1)+"行第"+(c+1)+"列数据为空");
+//                        }else{
+//                            if(!isType(type)){
+//                                logList.add("第"+(r+1)+"行第"+(c+1)+"列数据不符合要求");
+//                            }else{
+//                                String typeSave = "[" + type + "]";
+//                                record.put(c,typeSave);
+//                                continue;
+//                            }
+//
+//                        }
+//                    }
+//
+//                    if(c == 3){
+//                        String phone = cell.getRichStringCellValue().getString().trim();
+//                        if(!isRightPhone(phone)){
+//                            logList.add("第"+(r+1)+"行第"+(c+1)+"列手机号格式不正确");
+//                        }
+//                    }
+//
+//                    switch (cell.getCellType()) {
+//                        case HSSFCell.CELL_TYPE_STRING:
+//                            cellValue =cell.getRichStringCellValue().getString().trim();
+//                            if(cellValue.indexOf(" ") != -1){
+//                                logList.add("第"+(r+1)+"行第"+(c+1)+"列数据中存在空格");
+//                            }
+//                            break;
+//                        case HSSFCell.CELL_TYPE_NUMERIC:
+//                            cellValue =df.format(cell.getNumericCellValue());
+//                            break;
+//                        case HSSFCell.CELL_TYPE_BOOLEAN:
+//                            cellValue =String.valueOf(cell.getBooleanCellValue()).trim();
+//                            break;
+//                        case HSSFCell.CELL_TYPE_FORMULA:
+//                            cellValue =cell.getCellFormula();
+//                            break;
+//                        case HSSFCell.CELL_TYPE_BLANK:
+//                            logList.add("第"+(r+1)+"行第"+(c+1)+"列数据为空");
+//                            break;
+//                        default:
+//                            cellValue = "";
+//                    }
+//                }else{
+//                    logList.add("第"+(r+1)+"行第"+(c+1)+"列为空");
+//                }
+//                record.put(c,cellValue);
+//            }
+//            recordList.add(record);
+//        }
+//
+////        System.out.println("logList.toString() " + logList.toString());
+//        System.out.println("recordList.toString()  " + recordList.toString());
+//
+//        if(logList.size() != 0){
+//            String mes = "表格中存在问题,导入失败!";
+//            return mes + logList.toString();
+//        }else{
+//            List<CrowdTestProjectPO> crowdTestProjectPOList = new ArrayList<>();
+//            CrowdTestProjectPO crowdTestProjectPO = new CrowdTestProjectPO();
+//            for(Map<Integer,Object> map : recordList){
+//                crowdTestProjectPO.setName(map.get(0).toString());
+//                crowdTestProjectPO.setPlatform(map.get(1).toString());
+//                crowdTestProjectPO.setLinkMan(map.get(2).toString());
+//                crowdTestProjectPO.setLinkManMobile(map.get(3).toString());
+//                crowdTestProjectPO.setType(map.get(4).toString());
+//                crowdTestProjectPO.setDescription(map.get(5).toString());
+//                crowdTestProjectPOList.add(crowdTestProjectPO);
+//            }
+//            for(int i = 0; i < crowdTestProjectPOList.size(); i++){
+//                CrowdTestProject crowdTestProject = Converter.convert(CrowdTestProject.class, crowdTestProjectPOList.get(i));
+//                CrowdTestProject crowdTestProjectResult = crowdTestProject.generateDefaultTaskAndReportData();
+//                //TODO 保存数据库
+////                crowdTestProjectRepo.saveCrowdTestProject(crowdTestProjectResult);
+//            }
+//            return "SUCCESS";
+//        }
+//    }
 
 
     /**
      * 通过表单向数据库中导入众包项目文件,并补全项目中任务和报告的数据
      * @return
      */
-    @RequestMapping(value = "projectListImportByForm", method = RequestMethod.GET)
-    public String projectListImportByForm(){
-
-        //数据准备
-        CrowdTestProject crowdTestProject = new CrowdTestProject();
-        crowdTestProject.setName("百度APP");
-        crowdTestProject.setPlatform("[1,2]");
-        crowdTestProject.setLinkMan("薛晓波");
-        crowdTestProject.setLinkManMobile("13567908766");
-        crowdTestProject.setType("[1]");
-        crowdTestProject.setDescription("测试项目中存在的bug");
-
-        //具体操作
-        CrowdTestProject crowdTestProjectResult = crowdTestProject.generateDefaultTaskAndReportData();
-        //TODO 保存数据库
-        crowdTestProjectRepo.saveCrowdTestProject(crowdTestProjectResult);
-        return "success";
-    }
+//    @RequestMapping(value = "projectListImportByForm", method = RequestMethod.GET)
+//    public String projectListImportByForm(){
+//
+//        //数据准备
+//        CrowdTestProject crowdTestProject = new CrowdTestProject();
+//        crowdTestProject.setName("百度APP");
+//        crowdTestProject.setPlatform("[1,2]");
+//        crowdTestProject.setLinkMan("薛晓波");
+//        crowdTestProject.setLinkManMobile("13567908766");
+//        crowdTestProject.setType("[1]");
+//        crowdTestProject.setDescription("测试项目中存在的bug");
+//
+//        //具体操作
+//        CrowdTestProject crowdTestProjectResult = crowdTestProject.generateDefaultTaskAndReportData();
+//        //TODO 保存数据库
+//        crowdTestProjectRepo.saveCrowdTestProject(crowdTestProjectResult);
+//        return "success";
+//    }
 
 
 

+ 117 - 122
core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestProject.java

@@ -7,7 +7,6 @@ import lombok.Data;
 
 import java.sql.Timestamp;
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.List;
 
 /**
@@ -76,26 +75,23 @@ public class CrowdTestProject {
 
     /**
      * 更新项目信息
-     * @param crowdTestProject
      * @param crowdTestProjectModify
      * @return
      */
-    public CrowdTestProject updateCrowdTestProject(CrowdTestProject crowdTestProject, CrowdTestProject crowdTestProjectModify){
+    public CrowdTestProject updateCrowdTestProject( CrowdTestProject crowdTestProjectModify){
         Gson gson = new Gson();
-        crowdTestProject = gson.fromJson(gson.toJson(crowdTestProjectModify),CrowdTestProject.class);
-        return crowdTestProject;
+        return gson.fromJson(gson.toJson(crowdTestProjectModify),CrowdTestProject.class);
     }
 
     /**
      * 更新项目中的指定任务信息
-     * @param crowdTestProject
      * @param crowdTestTaskCode
      * @param crowdTestTaskModify
      * @return
      */
-    public CrowdTestProject updateCrowdTestTask(CrowdTestProject crowdTestProject, String crowdTestTaskCode, CrowdTestTask crowdTestTaskModify){
+    public CrowdTestProject updateCrowdTestTask(String crowdTestTaskCode, CrowdTestTask crowdTestTaskModify){
         List<CrowdTestTask> crowdTestTaskListNew = new ArrayList<>();
-        List<CrowdTestTask> crowdTestTaskList = crowdTestProject.getCrowdTestTaskList();
+        List<CrowdTestTask> crowdTestTaskList = this.getCrowdTestTaskList();
         for(CrowdTestTask crowdTestTaskSelect : crowdTestTaskList){
             List<CrowdTestReport> crowdTestReportList = crowdTestTaskSelect.getCrowdTestReportList();
             if(crowdTestTaskCode.equals(crowdTestTaskSelect.getCode())){
@@ -105,21 +101,20 @@ public class CrowdTestProject {
             crowdTestTaskSelect.setCrowdTestReportList(crowdTestReportList);
             crowdTestTaskListNew.add(crowdTestTaskSelect);
         }
-        crowdTestProject.setCrowdTestTaskList(crowdTestTaskListNew);
-        return crowdTestProject;
+        this.setCrowdTestTaskList(crowdTestTaskListNew);
+        return this;
     }
 
     /**
      * 更新项目中任务的指定报告信息
-     * @param crowdTestProject
      * @param crowdTestTaskCode
      * @param crowdTestReportCode
      * @param crowdTestReportModify
      * @return
      */
-    public CrowdTestProject updateCrowdTestReport(CrowdTestProject crowdTestProject, String crowdTestTaskCode, String crowdTestReportCode, CrowdTestReport crowdTestReportModify) {
+    public CrowdTestProject updateCrowdTestReport( String crowdTestTaskCode, String crowdTestReportCode, CrowdTestReport crowdTestReportModify) {
         List<CrowdTestTask> crowdTestTaskListNew = new ArrayList<>();
-        List<CrowdTestTask> crowdTestTaskList = crowdTestProject.getCrowdTestTaskList();
+        List<CrowdTestTask> crowdTestTaskList = this.getCrowdTestTaskList();
         for(CrowdTestTask crowdTestTaskSelect : crowdTestTaskList){
             List<CrowdTestReport> crowdTestReportListNew = new ArrayList<>();
             if(crowdTestTaskCode.equals(crowdTestTaskSelect.getCode())){
@@ -135,8 +130,8 @@ public class CrowdTestProject {
             crowdTestTaskSelect.setCrowdTestReportList(crowdTestReportListNew);
             crowdTestTaskListNew.add(crowdTestTaskSelect);
         }
-        crowdTestProject.setCrowdTestTaskList(crowdTestTaskListNew);
-        return crowdTestProject;
+        this.setCrowdTestTaskList(crowdTestTaskListNew);
+        return this;
     }
 
     /**
@@ -155,7 +150,7 @@ public class CrowdTestProject {
                     crowdTestReport.removeCrowdTestReport();
                 }
             }
-            this.setStatus(DeletedStatus.isDeleted);
+            this.setIsDeleted(DeletedStatus.isDeleted);
         }
         return this;
     }
@@ -177,15 +172,15 @@ public class CrowdTestProject {
             }
         }
 
-        boolean judgeHasCrowdTestTask = false;
+        boolean judgeHasCrowdTestTask = true;
         for(CrowdTestTask crowdTestTask : this.getCrowdTestTaskList()){
             if(crowdTestTask.getIsDeleted() == DeletedStatus.isNotDeleted){
-                judgeHasCrowdTestTask = true;
+                judgeHasCrowdTestTask = false;
             }
         }
 
         // 如果删除任务后,项目中不存在任务,把项目状态从HAS_SPLITED改为HAS_RECEIVED
-        if(!judgeHasCrowdTestTask){
+        if(judgeHasCrowdTestTask){
             this.setStatus(CrowdTestProjectStatus.HAS_RECEIVED);
         }
         return this;
@@ -210,17 +205,17 @@ public class CrowdTestProject {
             }
         }
 
-        boolean judgeHasCrowdTestReport = false;
+        boolean judgeHasCrowdTestReport = true;
         for(CrowdTestTask crowdTestTask : this.getCrowdTestTaskList()){
             if(crowdTestTaskCode.equals(crowdTestTask.getCode())){
                 List<CrowdTestReport> crowdTestReportList = crowdTestTask.getCrowdTestReportList();
                 for(CrowdTestReport crowdTestReport : crowdTestReportList){
                     if(crowdTestReport.getIsDeleted() == DeletedStatus.isNotDeleted){
-                        judgeHasCrowdTestReport = true;
+                        judgeHasCrowdTestReport = false;
                     }
                 }
                 // 删除报告后,如果任务中不存在报告,把任务状态从HAS_REPORTED改为HAS_RECEIVED
-                if(!judgeHasCrowdTestReport){
+                if(judgeHasCrowdTestReport){
                     crowdTestTask.setStatus(CrowdTestTaskStatus.HAS_RECEIVED);
                 }
             }
@@ -256,104 +251,104 @@ public class CrowdTestProject {
         this.setStatus(CrowdTestProjectStatus.HAS_SPLITED);
     }
 
-    /**
-     * 设置任务和报告的数据
-     * @return
-     */
-    public CrowdTestProject generateDefaultTaskAndReportData() {
-        this.setCode("PROJ-"+ this.getName()); //换成名称
-        this.setUserId(11L);
-        this.setRegionalManagerId(13L);
-        this.setProjectDistributionTypeId(1L);
-        this.setDistributionProvince("江苏");
-        this.setDistributionCity("南京");
-        this.setFixedPrice(100000.00);
-        this.setQuotedPrice(100000.00);
-        this.setStatus(CrowdTestProjectStatus.HAS_FINISHED);
-        this.setIsDeleted(DeletedStatus.isNotDeleted);
-        this.setCreateTime(new Timestamp(getBeforeDay(new Date(System.currentTimeMillis()),5).getTime()));
-        this.setDeadTime(new Timestamp(getBeforeDay(new Date(System.currentTimeMillis()),1).getTime()));
-        
-        //初始化任务
-        int taskCount = 1;
-        List<CrowdTestTask> crowdTestTaskList = new ArrayList<>();
-        for(int j = 0; j < taskCount; j++){
-            CrowdTestTask crowdTestTask = new CrowdTestTask();
-            crowdTestTask.setCode(this.getCode()+"-TASK-任务"+(j+1));
-            crowdTestTask.setName(this.getName() + "-任务" + (j+1));
-            crowdTestTask.setCrowdTestProjectCode(this.getCode());
-            crowdTestTask.setEvaluationAgencyId(12L);
-            crowdTestTask.setType("接口测试");
-            crowdTestTask.setDistributionType(this.getProjectDistributionTypeId());
-            crowdTestTask.setDistributionProvince(this.getDistributionProvince());
-            crowdTestTask.setDistributionCity(this.getDistributionCity());
-            crowdTestTask.setDescription("这是"+this.getName()+"测试项目的第"+(j+1)+"个测试任务");
-            crowdTestTask.setQuotedPrice(this.getQuotedPrice() / taskCount);
-            crowdTestTask.setFixedPrice(this.getFixedPrice() / taskCount);
-            crowdTestTask.setStatus(CrowdTestTaskStatus.HAS_FINISHED);
-            crowdTestTask.setIsDeleted(DeletedStatus.isNotDeleted);
-            crowdTestTask.setCreateTime(new Timestamp(getBeforeDay(new Date(System.currentTimeMillis()),4).getTime()));
-            crowdTestTask.setDeadTime(new Timestamp(getBeforeDay(new Date(System.currentTimeMillis()),2).getTime()));
-
-            //初始化任务报告
-            int reportCount = 1;
-            List<CrowdTestReport> crowdTestReportList = new ArrayList<>();
-
-            for(int k = 0; k < reportCount; k++){
-                CrowdTestReport crowdTestReport = new CrowdTestReport();
-                crowdTestReport.setCode(crowdTestTask.getCode()+"REPO-报告"+(k+1));
-                crowdTestReport.setName(crowdTestTask.getName()+"-报告"+(k+1));
-                crowdTestReport.setDependencyCode(crowdTestTask.getCode());
-                crowdTestReport.setType("测试报告");
-                crowdTestReport.setScope(0);
-                crowdTestReport.setContent(crowdTestTask.getDescription()+"的第"+(k+1)+"的测试报告");
-                crowdTestReport.setConclusion("TEST SUCCESS");
-                crowdTestReport.setIsDeleted(DeletedStatus.isNotDeleted);
-                crowdTestReport.setCreateTime(new Timestamp(getBeforeDay(new Date(System.currentTimeMillis()),3).getTime()));
-                crowdTestReportList.add(crowdTestReport);
-            }
-            crowdTestTask.setCrowdTestReportList(crowdTestReportList);
-            crowdTestTaskList.add(crowdTestTask);
-        }
-        //初始化项目报告
-        CrowdTestReport crowdTestReportForProject = new CrowdTestReport();
-        crowdTestReportForProject.setCode(this.getCode()+"-项目报告");
-        crowdTestReportForProject.setName(this.getName()+"-项目报告");
-        crowdTestReportForProject.setDependencyCode(this.getCode());
-        crowdTestReportForProject.setType("项目可行性报告");
-        crowdTestReportForProject.setScope(0);
-        crowdTestReportForProject.setContent(this.getName()+"的项目报告");
-        crowdTestReportForProject.setConclusion("PROJECT TEST SUCCESS");
-        crowdTestReportForProject.setIsDeleted(DeletedStatus.isNotDeleted);
-        crowdTestReportForProject.setCreateTime(new Timestamp(getBeforeDay(new Date(System.currentTimeMillis()),2).getTime()));
-
-        this.setCrowdTestReportForProject(crowdTestReportForProject);
-        this.setCrowdTestTaskList(crowdTestTaskList);
-
-        return this;
-    }
-
-    /**
-     * 计算指定时间的后几天
-     */
-    private Date getNextDay(Date date, int day){
-        //计算相关的时间间隔
-        long addTime = 24*3600*1000;
-        addTime *= day;
-        //把时间间隔转换为毫秒数
-        Date nextDate=new Date(date.getTime() + addTime);
-        return nextDate;
-    }
-
-    /**
-     * 计算指定时间的前几天
-     */
-    private Date getBeforeDay(Date date, int day){
-        //计算相关的时间间隔
-        long subTime = 24*3600*1000;
-        subTime *= day;
-        //把时间间隔转换为毫秒数
-        Date beforeDate=new Date(date.getTime() - subTime);
-        return beforeDate;
-    }
+//    /**
+//     * 设置任务和报告的数据
+//     * @return
+//     */
+//    public CrowdTestProject generateDefaultTaskAndReportData() {
+//        this.setCode("PROJ-"+ this.getName()); //换成名称
+//        this.setUserId(11L);
+//        this.setRegionalManagerId(13L);
+//        this.setProjectDistributionTypeId(1L);
+//        this.setDistributionProvince("江苏");
+//        this.setDistributionCity("南京");
+//        this.setFixedPrice(100000.00);
+//        this.setQuotedPrice(100000.00);
+//        this.setStatus(CrowdTestProjectStatus.HAS_FINISHED);
+//        this.setIsDeleted(DeletedStatus.isNotDeleted);
+//        this.setCreateTime(new Timestamp(getBeforeDay(new Date(System.currentTimeMillis()),5).getTime()));
+//        this.setDeadTime(new Timestamp(getBeforeDay(new Date(System.currentTimeMillis()),1).getTime()));
+//
+//        //初始化任务
+//        int taskCount = 1;
+//        List<CrowdTestTask> crowdTestTaskList = new ArrayList<>();
+//        for(int j = 0; j < taskCount; j++){
+//            CrowdTestTask crowdTestTask = new CrowdTestTask();
+//            crowdTestTask.setCode(this.getCode()+"-TASK-任务"+(j+1));
+//            crowdTestTask.setName(this.getName() + "-任务" + (j+1));
+//            crowdTestTask.setCrowdTestProjectCode(this.getCode());
+//            crowdTestTask.setEvaluationAgencyId(12L);
+//            crowdTestTask.setType("接口测试");
+//            crowdTestTask.setDistributionType(this.getProjectDistributionTypeId());
+//            crowdTestTask.setDistributionProvince(this.getDistributionProvince());
+//            crowdTestTask.setDistributionCity(this.getDistributionCity());
+//            crowdTestTask.setDescription("这是"+this.getName()+"测试项目的第"+(j+1)+"个测试任务");
+//            crowdTestTask.setQuotedPrice(this.getQuotedPrice() / taskCount);
+//            crowdTestTask.setFixedPrice(this.getFixedPrice() / taskCount);
+//            crowdTestTask.setStatus(CrowdTestTaskStatus.HAS_FINISHED);
+//            crowdTestTask.setIsDeleted(DeletedStatus.isNotDeleted);
+//            crowdTestTask.setCreateTime(new Timestamp(getBeforeDay(new Date(System.currentTimeMillis()),4).getTime()));
+//            crowdTestTask.setDeadTime(new Timestamp(getBeforeDay(new Date(System.currentTimeMillis()),2).getTime()));
+//
+//            //初始化任务报告
+//            int reportCount = 1;
+//            List<CrowdTestReport> crowdTestReportList = new ArrayList<>();
+//
+//            for(int k = 0; k < reportCount; k++){
+//                CrowdTestReport crowdTestReport = new CrowdTestReport();
+//                crowdTestReport.setCode(crowdTestTask.getCode()+"REPO-报告"+(k+1));
+//                crowdTestReport.setName(crowdTestTask.getName()+"-报告"+(k+1));
+//                crowdTestReport.setDependencyCode(crowdTestTask.getCode());
+//                crowdTestReport.setType("测试报告");
+//                crowdTestReport.setScope(0);
+//                crowdTestReport.setContent(crowdTestTask.getDescription()+"的第"+(k+1)+"的测试报告");
+//                crowdTestReport.setConclusion("TEST SUCCESS");
+//                crowdTestReport.setIsDeleted(DeletedStatus.isNotDeleted);
+//                crowdTestReport.setCreateTime(new Timestamp(getBeforeDay(new Date(System.currentTimeMillis()),3).getTime()));
+//                crowdTestReportList.add(crowdTestReport);
+//            }
+//            crowdTestTask.setCrowdTestReportList(crowdTestReportList);
+//            crowdTestTaskList.add(crowdTestTask);
+//        }
+//        //初始化项目报告
+//        CrowdTestReport crowdTestReportForProject = new CrowdTestReport();
+//        crowdTestReportForProject.setCode(this.getCode()+"-项目报告");
+//        crowdTestReportForProject.setName(this.getName()+"-项目报告");
+//        crowdTestReportForProject.setDependencyCode(this.getCode());
+//        crowdTestReportForProject.setType("项目可行性报告");
+//        crowdTestReportForProject.setScope(0);
+//        crowdTestReportForProject.setContent(this.getName()+"的项目报告");
+//        crowdTestReportForProject.setConclusion("PROJECT TEST SUCCESS");
+//        crowdTestReportForProject.setIsDeleted(DeletedStatus.isNotDeleted);
+//        crowdTestReportForProject.setCreateTime(new Timestamp(getBeforeDay(new Date(System.currentTimeMillis()),2).getTime()));
+//
+//        this.setCrowdTestReportForProject(crowdTestReportForProject);
+//        this.setCrowdTestTaskList(crowdTestTaskList);
+//
+//        return this;
+//    }
+//
+//    /**
+//     * 计算指定时间的后几天
+//     */
+//    private Date getNextDay(Date date, int day){
+//        //计算相关的时间间隔
+//        long addTime = 24*3600*1000;
+//        addTime *= day;
+//        //把时间间隔转换为毫秒数
+//        Date nextDate=new Date(date.getTime() + addTime);
+//        return nextDate;
+//    }
+//
+//    /**
+//     * 计算指定时间的前几天
+//     */
+//    private Date getBeforeDay(Date date, int day){
+//        //计算相关的时间间隔
+//        long subTime = 24*3600*1000;
+//        subTime *= day;
+//        //把时间间隔转换为毫秒数
+//        Date beforeDate=new Date(date.getTime() - subTime);
+//        return beforeDate;
+//    }
 }

+ 9 - 11
core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestTask.java

@@ -1,7 +1,5 @@
 package com.mooctest.crowd.domain.domainobject;
 
-import com.mooctest.crowd.domain.exception.CrowdTestReportNotExistException;
-import com.mooctest.crowd.domain.exception.CrowdTestTaskNotExistException;
 import lombok.Data;
 
 import java.sql.Timestamp;
@@ -58,15 +56,15 @@ public class CrowdTestTask {
                 '}';
     }
 
-    public CrowdTestReport getCrowdTestReportByReportId(CrowdTestTask crowdTestTask, Long reportId) throws CrowdTestTaskNotExistException, CrowdTestReportNotExistException {
-        List<CrowdTestReport> crowdTestReportList = crowdTestTask.getCrowdTestReportList();
-        for (CrowdTestReport crowdTestReport : crowdTestReportList) {
-            if (crowdTestReport.getId().equals(reportId)) {
-                return crowdTestReport;
-            }
-        }
-        throw new CrowdTestReportNotExistException();
-    }
+//    public CrowdTestReport getCrowdTestReportByReportId(CrowdTestTask crowdTestTask, Long reportId) throws CrowdTestTaskNotExistException, CrowdTestReportNotExistException {
+//        List<CrowdTestReport> crowdTestReportList = crowdTestTask.getCrowdTestReportList();
+//        for (CrowdTestReport crowdTestReport : crowdTestReportList) {
+//            if (crowdTestReport.getId().equals(reportId)) {
+//                return crowdTestReport;
+//            }
+//        }
+//        throw new CrowdTestReportNotExistException();
+//    }
 
     public void removeCrowdTestTask() {
         this.isDeleted = DeletedStatus.isDeleted;

+ 4 - 2
core/src/main/java/com/mooctest/crowd/domain/domainobject/User.java

@@ -20,6 +20,7 @@ public class User {
     private String password;
     private String gender;
     private String mobile;
+    private String email;
     private String province;
     private String city;
     private String photoUrl;
@@ -28,8 +29,8 @@ public class User {
     private Timestamp createTime;
 
     private RegionalManager regionalManager;
-    private List<Role> roleList;
     private EvaluationAgency evaluationAgency;
+    private List<Role> roleList;
 
     @Override
     public String toString() {
@@ -40,6 +41,7 @@ public class User {
                 ", password='" + password + '\'' +
                 ", gender='" + gender + '\'' +
                 ", mobile='" + mobile + '\'' +
+                ", email='" + email + '\'' +
                 ", province='" + province + '\'' +
                 ", city='" + city + '\'' +
                 ", photoUrl='" + photoUrl + '\'' +
@@ -47,8 +49,8 @@ public class User {
                 ", isDeleted=" + isDeleted +
                 ", createTime=" + createTime +
                 ", regionalManager=" + regionalManager +
-                ", roleList=" + roleList +
                 ", evaluationAgency=" + evaluationAgency +
+                ", roleList=" + roleList +
                 '}';
     }
 

+ 290 - 0
core/src/test/java/com/mooctest/crowd/domain/domainobject/CrowdTestProjectTest.java

@@ -0,0 +1,290 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import com.mooctest.crowd.domain.exception.BaseException;
+import com.mooctest.crowd.domain.exception.CrowdTestProjectException;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author guochao
+ * @date 2019-08-14 21:41
+ */
+public class CrowdTestProjectTest {
+    
+    private CrowdTestProject crowdTestProject = new CrowdTestProject();
+    private CrowdTestTask crowdTestTask = new CrowdTestTask();
+    private CrowdTestReport crowdTestReport = new CrowdTestReport();
+    private CrowdTestReport crowdTestProjectReport = new CrowdTestReport();
+    private List<CrowdTestReport> crowdTestReportList = new ArrayList<>();
+    private List<CrowdTestTask> crowdTestTaskList = new ArrayList<>();
+    
+    
+    @Before
+    public void before(){
+        //测试项目
+        crowdTestProject.setId(1L);
+        crowdTestProject.setName("慕测科技");
+        crowdTestProject.setCode("PROR-IOS");
+        crowdTestProject.setUserId(1L);
+        crowdTestProject.setRegionalManagerId(1L);
+        crowdTestProject.setProjectDistributionTypeId(1L);
+        crowdTestProject.setType("性能测试");
+        crowdTestProject.setPlatform("IOS");
+        crowdTestProject.setLinkMan("郭超");
+        crowdTestProject.setLinkManMobile("1233343443");
+        crowdTestProject.setDescription("测试IOS应用");
+        crowdTestProject.setRequirementFile("https://mooctestfile.com");
+        crowdTestProject.setProjectFile("https://mooctestfile.com");
+        crowdTestProject.setQuotedPrice(1000.00);
+        crowdTestProject.setFixedPrice(1000.00);
+        crowdTestProject.setDeadTime(new Timestamp(System.currentTimeMillis()));
+        crowdTestProject.setEndTime(new Timestamp(System.currentTimeMillis()));
+        crowdTestProject.setCreateTime(new Timestamp(System.currentTimeMillis()));
+        crowdTestProject.setStatus(0);
+        crowdTestProject.setIsDeleted(0);
+        crowdTestProject.setDistributionProvince("江苏");
+        crowdTestProject.setDistributionCity("南京");
+
+        //测试报告一
+        crowdTestReport.setCode("PROR-IOS-TASK-ONE-RE-ONE");
+        crowdTestReport.setId(1L);
+        crowdTestReport.setDependencyCode(crowdTestTask.getCode());
+        crowdTestReport.setName(crowdTestTask.getName()+"报告一");
+        crowdTestReport.setCreateTime(crowdTestTask.getCreateTime());
+        crowdTestReport.setScope(1);
+        crowdTestReport.setFile(crowdTestTask.getRequirementFile());
+        crowdTestReport.setType(crowdTestTask.getType());
+        crowdTestReport.setContent("测试报告正确");
+        crowdTestReport.setConclusion("测试完美");
+        crowdTestReport.setScope(1);
+        crowdTestReport.setTestObject("test");
+        crowdTestReport.setIsDeleted(0);
+        crowdTestReportList.add(crowdTestReport);
+
+        //测试任务一
+        crowdTestTask.setCode("PROR-IOS-TASK-ONE");
+        crowdTestTask.setId(1L);
+        crowdTestTask.setCrowdTestProjectCode(crowdTestProject.getCode());
+        crowdTestTask.setDistributionProvince(crowdTestProject.getDistributionProvince());
+        crowdTestTask.setDistributionCity(crowdTestProject.getDistributionCity());
+        crowdTestTask.setEvaluationAgencyId(1L);
+        crowdTestTask.setType(crowdTestProject.getType());
+        crowdTestTask.setName(crowdTestProject.getName()+"任务一");
+        crowdTestTask.setDescription(crowdTestProject.getDescription()+"任务一");
+        crowdTestTask.setRequirementFile(crowdTestProject.getRequirementFile());
+        crowdTestTask.setQuotedPrice(crowdTestProject.getQuotedPrice()/2);
+        crowdTestTask.setFixedPrice(crowdTestProject.getFixedPrice()/2);
+        crowdTestTask.setCreateTime(crowdTestProject.getCreateTime());
+        crowdTestTask.setEndTime(crowdTestProject.getEndTime());
+        crowdTestTask.setDeadTime(crowdTestProject.getDeadTime());
+        crowdTestTask.setDescription("测试任务一");
+        crowdTestTask.setStatus(0);
+        crowdTestTask.setIsDeleted(0);
+        crowdTestTaskList.add(crowdTestTask);
+
+        crowdTestTask.setCrowdTestReportList(crowdTestReportList);
+        crowdTestProject.setCrowdTestTaskList(crowdTestTaskList);
+
+        //项目报告
+        crowdTestProjectReport.setCode(crowdTestProject.getCode());
+        crowdTestProjectReport.setId(2L);
+        crowdTestProjectReport.setContent("项目报告正确");
+        crowdTestProjectReport.setConclusion("项目完美");
+        crowdTestProjectReport.setScope(0);
+        crowdTestProjectReport.setIsDeleted(0);
+        crowdTestProject.setCrowdTestReportForProject(crowdTestProjectReport);
+    }
+
+    @Test
+    public void should_return_project_when_update_project() {
+        //arrange
+        CrowdTestProject crowdTestProjectModify = crowdTestProject;
+        crowdTestProjectModify.setCode("Project-Modify");
+        //action
+        CrowdTestProject crowdTestProjectResult = crowdTestProject.updateCrowdTestProject(crowdTestProjectModify);
+        //assert
+        Assert.assertEquals(crowdTestProjectResult.getCode(), crowdTestProjectModify.getCode());
+    }
+
+    @Test
+    public void should_return_project_when_update_task() {
+        //arrange
+        CrowdTestTask crowdTestTaskModify = new CrowdTestTask();
+        crowdTestTaskModify.setCode(crowdTestTask.getCode());
+        crowdTestTaskModify.setName("modify_task");
+        //action
+        CrowdTestProject crowdTestProjectResult = this.crowdTestProject.updateCrowdTestTask(crowdTestTask.getCode(), crowdTestTaskModify);
+        //assert
+        Assert.assertEquals(crowdTestProjectResult.getCrowdTestTaskList().get(0).getName(), crowdTestTaskModify.getName());
+    }
+
+    @Test
+    public void should_return_project_when_update_report() {
+        //arrange
+        CrowdTestReport crowdTestReportModify = new CrowdTestReport();
+        crowdTestReportModify.setCode(crowdTestReport.getCode());
+        crowdTestReportModify.setName("modify_report");
+        //action
+        CrowdTestProject crowdTestProjectResult = this.crowdTestProject.updateCrowdTestReport(crowdTestTask.getCode(), crowdTestReport.getCode(), crowdTestReportModify);
+        //assert
+        Assert.assertEquals(crowdTestProjectResult.getCrowdTestTaskList().get(0).getCrowdTestReportList().get(0).getName(), crowdTestReportModify.getName());
+    }
+
+
+    @Test
+    public void should_return_project_when_remove_project() {
+        //action
+        CrowdTestProject crowdTestProjectResult = this.crowdTestProject.removeCrowdTestProject();
+        //assert
+        Assert.assertEquals(crowdTestProjectResult.getIsDeleted(), DeletedStatus.isDeleted);
+    }
+
+    @Test(expected = CrowdTestProjectException.class)
+    public void should_throw_when_remove_project_is_deleted() {
+        //arrange
+        crowdTestProject.setIsDeleted(DeletedStatus.isDeleted);
+        //action
+        this.crowdTestProject.removeCrowdTestProject();
+    }
+
+    @Test
+    public void should_return_project_when_remove_task() {
+        //arrange
+        this.crowdTestProject.getCrowdTestTaskList().get(0).setIsDeleted(DeletedStatus.isNotDeleted);
+        //action
+        CrowdTestProject crowdTestProjectResult = this.crowdTestProject.removeCrowdTestTask(crowdTestTask.getCode());
+        //assert
+        Assert.assertEquals(crowdTestProjectResult.getCrowdTestTaskList().get(0).getIsDeleted(), DeletedStatus.isDeleted);
+        Assert.assertEquals(crowdTestProjectResult.getStatus(),CrowdTestProjectStatus.HAS_RECEIVED);
+    }
+
+    @Test
+    public void should_return_project_when_remove_task_exist_is_not_deleted() {
+        //arrange
+        this.crowdTestProject.getCrowdTestTaskList().get(0).setIsDeleted(DeletedStatus.isNotDeleted);
+        //测试报告二
+        CrowdTestReport crowdTestReportTwo = new CrowdTestReport();
+        crowdTestReportTwo.setCode("PROR-IOS-TASK-ONE-RE-TWO");
+        crowdTestReportTwo.setIsDeleted(0);
+        crowdTestReportList.add(crowdTestReportTwo);
+
+        //测试任务二
+        CrowdTestTask crowdTestTaskTwo = new CrowdTestTask();
+        crowdTestTaskTwo.setCode("PROR-IOS-TASK-TWO");
+        crowdTestTaskTwo.setIsDeleted(0);
+        crowdTestTaskList.add(crowdTestTaskTwo);
+        crowdTestTask.setCrowdTestReportList(crowdTestReportList);
+        crowdTestProject.setCrowdTestTaskList(crowdTestTaskList);
+        //action
+        CrowdTestProject crowdTestProjectResult = this.crowdTestProject.removeCrowdTestTask(crowdTestTask.getCode());
+        //assert
+        Assert.assertEquals(crowdTestProjectResult.getCrowdTestTaskList().get(0).getIsDeleted(), DeletedStatus.isDeleted);
+    }
+
+    @Test
+    public void should_return_project_when_remove_task_report() {
+        //arrange
+        this.crowdTestProject.getCrowdTestTaskList().get(0).getCrowdTestReportList().get(0).setIsDeleted(DeletedStatus.isNotDeleted);
+
+        //action
+        CrowdTestProject crowdTestProjectResult = this.crowdTestProject.removeCrowdTestReport(crowdTestTask.getCode(), crowdTestReport.getCode());
+        //assert
+        Assert.assertEquals(crowdTestProjectResult.getCrowdTestTaskList().get(0).getCrowdTestReportList().get(0).getIsDeleted(), DeletedStatus.isDeleted);
+        Assert.assertEquals(crowdTestProjectResult.getCrowdTestTaskList().get(0).getStatus(),CrowdTestTaskStatus.HAS_RECEIVED);
+    }
+
+
+    @Test
+    public void should_return_project_when_remove_task_report_exist_is_not_deleted() {
+        //arrange
+        this.crowdTestProject.getCrowdTestTaskList().get(0).getCrowdTestReportList().get(0).setIsDeleted(DeletedStatus.isNotDeleted);
+        //测试报告二
+        CrowdTestReport crowdTestReportTwo = new CrowdTestReport();
+        crowdTestReportTwo.setCode("PROR-IOS-TASK-ONE-RE-TWO");
+        crowdTestReportTwo.setIsDeleted(0);
+        crowdTestReportList.add(crowdTestReportTwo);
+
+        //测试任务二
+        CrowdTestTask crowdTestTaskTwo = new CrowdTestTask();
+        crowdTestTaskTwo.setCode("PROR-IOS-TASK-TWO");
+        crowdTestTaskTwo.setIsDeleted(0);
+        crowdTestTaskList.add(crowdTestTaskTwo);
+        crowdTestTask.setCrowdTestReportList(crowdTestReportList);
+        crowdTestProject.setCrowdTestTaskList(crowdTestTaskList);
+        //action
+        CrowdTestProject crowdTestProjectResult = this.crowdTestProject.removeCrowdTestReport(crowdTestTask.getCode(), crowdTestReport.getCode());
+        //assert
+        Assert.assertEquals(crowdTestProjectResult.getCrowdTestTaskList().get(0).getCrowdTestReportList().get(0).getIsDeleted(), DeletedStatus.isDeleted);
+    }
+
+    @Test
+    public void should_return_project_when_remove_project_report() {
+        //arrange
+        crowdTestProject.getCrowdTestReportForProject().setIsDeleted(DeletedStatus.isNotDeleted);
+        crowdTestProject.setStatus(CrowdTestProjectStatus.HAS_REPORTED);
+        //action
+        CrowdTestProject crowdTestProjectResult = this.crowdTestProject.removeCrowdTestProjectReport();
+        //assert
+        Assert.assertEquals(crowdTestProjectResult.getCrowdTestReportForProject().getIsDeleted(),DeletedStatus.isDeleted);
+        Assert.assertEquals(crowdTestProjectResult.getStatus(),CrowdTestProjectStatus.HAS_SPLITED);
+    }
+
+    @Test(expected = CrowdTestProjectException.class)
+    public void should_throw_when_remove_project_report_is_deleted() {
+        //arrange
+        crowdTestProject.getCrowdTestReportForProject().setIsDeleted(DeletedStatus.isDeleted);
+        //action
+        this.crowdTestProject.removeCrowdTestProjectReport();
+    }
+
+    @Test(expected = CrowdTestProjectException.class)
+    public void should_throw_when_remove_project_report_project_status_is_not_has_reported() {
+        //arrange
+        crowdTestProject.getCrowdTestReportForProject().setIsDeleted(DeletedStatus.isNotDeleted);
+        crowdTestProject.setStatus(CrowdTestProjectStatus.HAS_CREATED);
+        //action
+        this.crowdTestProject.removeCrowdTestProjectReport();
+    }
+
+    @Test
+    public void should_return_project_when_add_task() {
+        //arrange
+        crowdTestProject.setStatus(CrowdTestProjectStatus.HAS_RECEIVED);
+        CrowdTestTask crowdTestTaskTwo = new CrowdTestTask();
+        crowdTestTaskTwo.setCode("PROR-IOS-TASK-TWO");
+        crowdTestTaskTwo.setIsDeleted(0);
+        crowdTestTaskList.add(crowdTestTaskTwo);
+        //action
+        crowdTestProject.addTask(crowdTestTaskTwo);
+    }
+
+    @Test(expected = BaseException.class)
+    public void should_throw_when_add_task() {
+        //arrange
+        CrowdTestTask crowdTestTaskTwo = new CrowdTestTask();
+        crowdTestTaskTwo.setCode("PROR-IOS-TASK-TWO");
+        crowdTestTaskTwo.setIsDeleted(0);
+        crowdTestTaskList.add(crowdTestTaskTwo);
+        //action
+        crowdTestProject.addTask(crowdTestTaskTwo);
+    }
+
+    @Test
+    public void should_return_project_infor_when_get_field() {
+        crowdTestProject.getLinkMan();
+        crowdTestProject.getLinkManMobile();
+        crowdTestProject.getProjectFile();
+        crowdTestProject.getRegionalManagerId();
+        crowdTestProject.getUserId();
+        crowdTestProject.getId();
+        crowdTestProject.getPlatform();
+        crowdTestProject.getProjectDistributionTypeId();
+        crowdTestProject.toString();
+
+    }
+}

+ 116 - 0
core/src/test/java/com/mooctest/crowd/domain/domainobject/CrowdTestReportTest.java

@@ -0,0 +1,116 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author guochao
+ * @date 2019-08-15 14:49
+ */
+public class CrowdTestReportTest {
+
+    private CrowdTestProject crowdTestProject = new CrowdTestProject();
+    private CrowdTestTask crowdTestTask = new CrowdTestTask();
+    private CrowdTestReport crowdTestReport = new CrowdTestReport();
+    private CrowdTestReport crowdTestProjectReport = new CrowdTestReport();
+    private List<CrowdTestReport> crowdTestReportList = new ArrayList<>();
+    private List<CrowdTestTask> crowdTestTaskList = new ArrayList<>();
+
+
+    @Before
+    public void before(){
+        //测试项目
+        crowdTestProject.setId(1L);
+        crowdTestProject.setName("慕测科技");
+        crowdTestProject.setCode("PROR-IOS");
+        crowdTestProject.setUserId(1L);
+        crowdTestProject.setRegionalManagerId(1L);
+        crowdTestProject.setProjectDistributionTypeId(1L);
+        crowdTestProject.setType("性能测试");
+        crowdTestProject.setPlatform("IOS");
+        crowdTestProject.setLinkMan("郭超");
+        crowdTestProject.setLinkManMobile("1233343443");
+        crowdTestProject.setDescription("测试IOS应用");
+        crowdTestProject.setRequirementFile("https://mooctestfile.com");
+        crowdTestProject.setProjectFile("https://mooctestfile.com");
+        crowdTestProject.setQuotedPrice(1000.00);
+        crowdTestProject.setFixedPrice(1000.00);
+        crowdTestProject.setDeadTime(new Timestamp(System.currentTimeMillis()));
+        crowdTestProject.setEndTime(new Timestamp(System.currentTimeMillis()));
+        crowdTestProject.setCreateTime(new Timestamp(System.currentTimeMillis()));
+        crowdTestProject.setStatus(0);
+        crowdTestProject.setIsDeleted(0);
+        crowdTestProject.setDistributionProvince("江苏");
+        crowdTestProject.setDistributionCity("南京");
+
+        //测试报告一
+        crowdTestReport.setCode("PROR-IOS-TASK-ONE-RE-ONE");
+        crowdTestReport.setId(1L);
+        crowdTestReport.setDependencyCode(crowdTestTask.getCode());
+        crowdTestReport.setName(crowdTestTask.getName()+"报告一");
+        crowdTestReport.setCreateTime(crowdTestTask.getCreateTime());
+        crowdTestReport.setScope(1);
+        crowdTestReport.setFile(crowdTestTask.getRequirementFile());
+        crowdTestReport.setType(crowdTestTask.getType());
+        crowdTestReport.setContent("测试报告正确");
+        crowdTestReport.setConclusion("测试完美");
+        crowdTestReport.setScope(1);
+        crowdTestReport.setTestObject("test");
+        crowdTestReport.setIsDeleted(0);
+        crowdTestReportList.add(crowdTestReport);
+
+        //测试任务一
+        crowdTestTask.setCode("PROR-IOS-TASK-ONE");
+        crowdTestTask.setId(1L);
+        crowdTestTask.setCrowdTestProjectCode(crowdTestProject.getCode());
+        crowdTestTask.setDistributionProvince(crowdTestProject.getDistributionProvince());
+        crowdTestTask.setDistributionCity(crowdTestProject.getDistributionCity());
+        crowdTestTask.setEvaluationAgencyId(1L);
+        crowdTestTask.setType(crowdTestProject.getType());
+        crowdTestTask.setName(crowdTestProject.getName()+"任务一");
+        crowdTestTask.setDescription(crowdTestProject.getDescription()+"任务一");
+        crowdTestTask.setRequirementFile(crowdTestProject.getRequirementFile());
+        crowdTestTask.setQuotedPrice(crowdTestProject.getQuotedPrice()/2);
+        crowdTestTask.setFixedPrice(crowdTestProject.getFixedPrice()/2);
+        crowdTestTask.setCreateTime(crowdTestProject.getCreateTime());
+        crowdTestTask.setEndTime(crowdTestProject.getEndTime());
+        crowdTestTask.setDeadTime(crowdTestProject.getDeadTime());
+        crowdTestTask.setDescription("测试任务一");
+        crowdTestTask.setStatus(0);
+        crowdTestTask.setIsDeleted(0);
+        crowdTestTaskList.add(crowdTestTask);
+
+        crowdTestTask.setCrowdTestReportList(crowdTestReportList);
+        crowdTestProject.setCrowdTestTaskList(crowdTestTaskList);
+
+        //项目报告
+        crowdTestProjectReport.setCode(crowdTestProject.getCode());
+        crowdTestProjectReport.setId(2L);
+        crowdTestProjectReport.setContent("项目报告正确");
+        crowdTestProjectReport.setConclusion("项目完美");
+        crowdTestProjectReport.setScope(0);
+        crowdTestProjectReport.setIsDeleted(0);
+        crowdTestProject.setCrowdTestReportForProject(crowdTestProjectReport);
+    }
+
+    @Test
+    public void should_return_report_detail_when_get_field(){
+        crowdTestReport.getId();
+        crowdTestReport.getConclusion();
+        crowdTestReport.getContent();
+        crowdTestReport.getCreateTime();
+        crowdTestReport.getDependencyCode();
+        crowdTestReport.getScope();
+        crowdTestReport.getTestObject();
+        crowdTestReport.getDescription();
+        crowdTestReport.getFile();
+        crowdTestReport.getType();
+        crowdTestReport.toString();
+
+    }
+
+}

+ 115 - 0
core/src/test/java/com/mooctest/crowd/domain/domainobject/CrowdTestTaskTest.java

@@ -0,0 +1,115 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author guochao
+ * @date 2019-08-15 14:31
+ */
+public class CrowdTestTaskTest {
+
+    private CrowdTestProject crowdTestProject = new CrowdTestProject();
+    private CrowdTestTask crowdTestTask = new CrowdTestTask();
+    private CrowdTestReport crowdTestReport = new CrowdTestReport();
+    private CrowdTestReport crowdTestProjectReport = new CrowdTestReport();
+    private List<CrowdTestReport> crowdTestReportList = new ArrayList<>();
+    private List<CrowdTestTask> crowdTestTaskList = new ArrayList<>();
+
+
+    @Before
+    public void before(){
+        //测试项目
+        crowdTestProject.setId(1L);
+        crowdTestProject.setName("慕测科技");
+        crowdTestProject.setCode("PROR-IOS");
+        crowdTestProject.setUserId(1L);
+        crowdTestProject.setRegionalManagerId(1L);
+        crowdTestProject.setProjectDistributionTypeId(1L);
+        crowdTestProject.setType("性能测试");
+        crowdTestProject.setPlatform("IOS");
+        crowdTestProject.setLinkMan("郭超");
+        crowdTestProject.setLinkManMobile("1233343443");
+        crowdTestProject.setDescription("测试IOS应用");
+        crowdTestProject.setRequirementFile("https://mooctestfile.com");
+        crowdTestProject.setProjectFile("https://mooctestfile.com");
+        crowdTestProject.setQuotedPrice(1000.00);
+        crowdTestProject.setFixedPrice(1000.00);
+        crowdTestProject.setDeadTime(new Timestamp(System.currentTimeMillis()));
+        crowdTestProject.setEndTime(new Timestamp(System.currentTimeMillis()));
+        crowdTestProject.setCreateTime(new Timestamp(System.currentTimeMillis()));
+        crowdTestProject.setStatus(0);
+        crowdTestProject.setIsDeleted(0);
+        crowdTestProject.setDistributionProvince("江苏");
+        crowdTestProject.setDistributionCity("南京");
+
+        //测试报告一
+        crowdTestReport.setCode("PROR-IOS-TASK-ONE-RE-ONE");
+        crowdTestReport.setId(1L);
+        crowdTestReport.setDependencyCode(crowdTestTask.getCode());
+        crowdTestReport.setName(crowdTestTask.getName()+"报告一");
+        crowdTestReport.setCreateTime(crowdTestTask.getCreateTime());
+        crowdTestReport.setScope(1);
+        crowdTestReport.setFile(crowdTestTask.getRequirementFile());
+        crowdTestReport.setType(crowdTestTask.getType());
+        crowdTestReport.setContent("测试报告正确");
+        crowdTestReport.setConclusion("测试完美");
+        crowdTestReport.setScope(1);
+        crowdTestReport.setTestObject("test");
+        crowdTestReport.setIsDeleted(0);
+        crowdTestReportList.add(crowdTestReport);
+
+        //测试任务一
+        crowdTestTask.setCode("PROR-IOS-TASK-ONE");
+        crowdTestTask.setId(1L);
+        crowdTestTask.setCrowdTestProjectCode(crowdTestProject.getCode());
+        crowdTestTask.setDistributionProvince(crowdTestProject.getDistributionProvince());
+        crowdTestTask.setDistributionCity(crowdTestProject.getDistributionCity());
+        crowdTestTask.setEvaluationAgencyId(1L);
+        crowdTestTask.setType(crowdTestProject.getType());
+        crowdTestTask.setName(crowdTestProject.getName()+"任务一");
+        crowdTestTask.setDescription(crowdTestProject.getDescription()+"任务一");
+        crowdTestTask.setRequirementFile(crowdTestProject.getRequirementFile());
+        crowdTestTask.setQuotedPrice(crowdTestProject.getQuotedPrice()/2);
+        crowdTestTask.setFixedPrice(crowdTestProject.getFixedPrice()/2);
+        crowdTestTask.setCreateTime(crowdTestProject.getCreateTime());
+        crowdTestTask.setEndTime(crowdTestProject.getEndTime());
+        crowdTestTask.setDeadTime(crowdTestProject.getDeadTime());
+        crowdTestTask.setDescription("测试任务一");
+        crowdTestTask.setStatus(0);
+        crowdTestTask.setIsDeleted(0);
+        crowdTestTaskList.add(crowdTestTask);
+
+        crowdTestTask.setCrowdTestReportList(crowdTestReportList);
+        crowdTestProject.setCrowdTestTaskList(crowdTestTaskList);
+
+        //项目报告
+        crowdTestProjectReport.setCode(crowdTestProject.getCode());
+        crowdTestProjectReport.setId(2L);
+        crowdTestProjectReport.setContent("项目报告正确");
+        crowdTestProjectReport.setConclusion("项目完美");
+        crowdTestProjectReport.setScope(0);
+        crowdTestProjectReport.setIsDeleted(0);
+        crowdTestProject.setCrowdTestReportForProject(crowdTestProjectReport);
+    }
+    @Test
+    public void should_return_task_detail_when_get_field() {
+        crowdTestTask.getId();
+        crowdTestTask.getQuotedPrice();
+        crowdTestTask.getFixedPrice();
+        crowdTestTask.getRequirementFile();
+        crowdTestTask.getEndTime();
+        crowdTestTask.getDeadTime();
+        crowdTestTask.getCrowdTestProjectCode();
+        crowdTestTask.getDistributionProvince();
+        crowdTestTask.getDistributionCity();
+        crowdTestTask.getDescription();
+        crowdTestTask.getEvaluationAgencyId();
+        crowdTestTask.getDistributionType();
+        crowdTestTask.toString();
+    }
+}

+ 123 - 0
core/src/test/java/com/mooctest/crowd/domain/domainobject/UserTest.java

@@ -0,0 +1,123 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author guochao
+ * @date 2019-08-15 14:53
+ */
+public class UserTest {
+
+    private User user = new User();
+    private RegionalManager regionalManager = new RegionalManager();
+    private EvaluationAgency evaluationAgency = new EvaluationAgency();
+    private Role role = new Role();
+    private List<Role> roleList = new ArrayList<>();
+    private Permission permission = new Permission();
+    private List<Permission> permissionList = new ArrayList<>();
+    private Regional regional = new Regional();
+    private List<Regional> regionalList = new ArrayList<>();
+    private EvaluationAgencyAbility evaluationAgencyAbility = new EvaluationAgencyAbility();
+    private List<EvaluationAgencyAbility> evaluationAgencyAbilityList = new ArrayList<>();
+    private EvaluationAgencyResource evaluationAgencyResource = new EvaluationAgencyResource();
+    private List<EvaluationAgencyResource> evaluationAgencyResourceList = new ArrayList<>();
+
+    @Before
+    public void before() {
+        user.setId(1L);
+        user.setName("郭超");
+        user.setEmail("1021172957@qq.com");
+        user.setPassword("123456");
+        user.setMobile("13657094936");
+        user.setProvince("江苏");
+        user.setCity("南京");
+        user.setPhotoUrl("https://mooctest.phone.com");
+        user.setGender("男");
+        user.setUserName("guochao");
+        user.setIsAvailable(1);
+        user.setIsDeleted(DeletedStatus.isNotDeleted);
+
+        permission.setId(1L);
+        permission.setName("查看项目");
+        permission.setOperation("查看项目");
+        permission.setResource("项目");
+        permission.setCreateTime(role.getCreateTime());
+        permissionList.add(permission);
+
+        role.setId(1L);
+        role.setName("generalUser");
+        role.setCreateTime(user.getCreateTime());
+        role.setPermissionList(permissionList);
+        roleList.add(role);
+        user.setRoleList(roleList);
+
+        regional.setId(1L);
+        regional.setCity(user.getCity());
+        regional.setProvince(user.getProvince());
+        regionalList.add(regional);
+
+        regionalManager.setId(1L);
+        regionalManager.setUserId(user.getId());
+        regionalManager.setRegionalList(regionalList);
+        user.setRegionalManager(regionalManager);
+
+        evaluationAgency.setId(1L);
+        evaluationAgency.setUserId(user.getId());
+        evaluationAgency.setEvaluationAgencyName("测评机构");
+        evaluationAgency.setBankAccount("111111111");
+        evaluationAgency.setAgencyPhoto("https://mooctest.phone.com");
+        evaluationAgency.setAddress(user.getProvince()+user.getCity());
+        evaluationAgency.setIsDeleted(DeletedStatus.isNotDeleted);
+        evaluationAgency.setIsAuthentication(AuthenticationStatus.isAuthenticated);
+        evaluationAgency.setExpireTime(user.getCreateTime());
+        evaluationAgency.setUpdateTime(user.getCreateTime());
+        evaluationAgency.setCreateTime(user.getCreateTime());
+
+        evaluationAgencyAbility.setId(1L);
+        evaluationAgencyAbility.setAbilityName("IOS");
+        evaluationAgencyAbility.setEvaluationAgencyId(evaluationAgency.getId());
+        evaluationAgencyAbilityList.add(evaluationAgencyAbility);
+
+        evaluationAgencyResource.setId(1L);
+        evaluationAgencyResource.setEvaluationAgencyId(evaluationAgency.getId());
+        evaluationAgencyResource.setType("人力资源");
+        evaluationAgencyResourceList.add(evaluationAgencyResource);
+
+        evaluationAgency.setEvaluationAgencyAbilityList(evaluationAgencyAbilityList);
+        evaluationAgency.setEvaluationAgencyResourceList(evaluationAgencyResourceList);
+        user.setEvaluationAgency(evaluationAgency);
+
+    }
+
+    @Test
+    public void createCrowdTestProject() {
+    }
+
+    @Test
+    public void releaseCrowdTestProject() {
+    }
+
+    @Test
+    public void receiveTask() {
+    }
+
+    @Test
+    public void createCrowdTestReport() {
+    }
+
+    @Test
+    public void commitCrowdTestTask() {
+    }
+
+    @Test
+    public void finishCrowdTestProjet() {
+    }
+
+    @Test
+    public void applyAgencyAuthentication() {
+    }
+}