瀏覽代碼

ProjectController相关接口

Diors.Po 6 年之前
父節點
當前提交
0902d85655
共有 32 個文件被更改,包括 459 次插入106 次删除
  1. 3 4
      core/pom.xml
  2. 0 0
      core/src/main/java/com/mooctest/crowd/domain/controller/TestUserController.java
  3. 0 0
      core/src/main/java/com/mooctest/crowd/domain/controller/UserController.java
  4. 14 0
      core/src/main/java/com/mooctest/crowd/domain/repository/CrowdTestProjectRepo.java
  5. 2 0
      core/src/main/java/com/mooctest/crowd/domain/repository/ICrowdTestProjectRepo.java
  6. 6 0
      pom.xml
  7. 3 4
      site/pom.xml
  8. 2 1
      site/src/main/java/com/mooctest/crowd/site/SiteApplication.java
  9. 0 12
      site/src/main/java/com/mooctest/crowd/site/command/CreateProjectCommand.java
  10. 74 1
      site/src/main/java/com/mooctest/crowd/site/command/ProjectDetailsCommand.java
  11. 36 21
      site/src/main/java/com/mooctest/crowd/site/controller/CrowdProjectController.java
  12. 6 6
      site/src/main/java/com/mooctest/crowd/site/controller/CrowdReportController.java
  13. 13 5
      site/src/main/java/com/mooctest/crowd/site/controller/CrowdTaskController.java
  14. 1 1
      site/src/main/java/com/mooctest/crowd/site/controller/advice/ExceptionAdvice.java
  15. 4 3
      site/src/main/java/com/mooctest/crowd/site/data/dto/IndexDTO.java
  16. 3 3
      site/src/main/java/com/mooctest/crowd/site/data/dto/ProjectDetailsDTO.java
  17. 18 3
      site/src/main/java/com/mooctest/crowd/site/data/vo/CrowdProjectVO.java
  18. 13 3
      site/src/main/java/com/mooctest/crowd/site/data/vo/CrowdReportVO.java
  19. 20 3
      site/src/main/java/com/mooctest/crowd/site/data/vo/CrowdTaskVO.java
  20. 17 0
      site/src/main/java/com/mooctest/crowd/site/mediator/OperationMediator.java
  21. 4 2
      site/src/main/java/com/mooctest/crowd/site/mediator/ViewMediator.java
  22. 37 0
      site/src/main/java/com/mooctest/crowd/site/mediator/impl/OperationMediatorImpl.java
  23. 28 10
      site/src/main/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImpl.java
  24. 19 0
      site/src/main/java/com/mooctest/crowd/site/service/CrowdProjectService.java
  25. 12 0
      site/src/main/java/com/mooctest/crowd/site/service/CrowdTaskService.java
  26. 3 3
      site/src/main/java/com/mooctest/crowd/site/service/impl/CommonServiceImpl.java
  27. 64 0
      site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdProjectServiceImpl.java
  28. 18 0
      site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdTaskServiceImpl.java
  29. 1 1
      site/src/main/java/com/mooctest/crowd/site/service/impl/UserServiceImpl.java
  30. 0 1
      site/src/main/resources/application.properties
  31. 27 0
      site/src/main/resources/application.yml
  32. 11 19
      site/src/test/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImplTest.java

+ 3 - 4
core/pom.xml

@@ -4,10 +4,9 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-parent</artifactId>
-        <version>2.1.6.RELEASE</version>
-        <relativePath/> <!-- lookup parent from repository -->
+        <groupId>com.mooctest.crowd</groupId>
+        <artifactId>crowd</artifactId>
+        <version>1.0-SNAPSHOT</version>
     </parent>
     <groupId>com.mooctest.crowd</groupId>
     <artifactId>core</artifactId>

File diff suppressed because it is too large
+ 0 - 0
core/src/main/java/com/mooctest/crowd/domain/controller/TestUserController.java


File diff suppressed because it is too large
+ 0 - 0
core/src/main/java/com/mooctest/crowd/domain/controller/UserController.java


+ 14 - 0
core/src/main/java/com/mooctest/crowd/domain/repository/CrowdTestProjectRepo.java

@@ -93,6 +93,18 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
         return true;
     }
 
+    /**
+     * 根据projectId删除Project
+     * @param projectId
+     * @return boolean
+     */
+    public void deleteByProjectId(Long projectId){
+        Optional<CrowdTestProjectPO> project = crowdTestProjectDao.findById(projectId);
+        if (!project.isPresent())
+            throw new CrowdTestProjectNotExistException();
+        crowdTestProjectDao.delete(project.get());
+    }
+
 
     /**
      * 通过项目信息获取项目-任务-报告信息
@@ -144,6 +156,8 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
         return crowdTestProjectListResult;
     }
 
+
+
 //    @Override
 //    public List<CrowdTestProject> getByIDList(String[] ids) {
 //        return null;

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

@@ -22,6 +22,8 @@ public interface ICrowdTestProjectRepo {
 
     boolean saveCrowdTestProjectAndCrowdTestTask(CrowdTestProject crowdTestProject);
 
+    void deleteByProjectId(Long projectId);
+
 //    List<CrowdTestProject> getByIDList(String[] ids);
 //
 //    boolean removeCrowdTestProject(CrowdTestProject crowdTestProject) throws CrowdTestProjectNotExistException;

+ 6 - 0
pom.xml

@@ -2,6 +2,12 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>2.1.6.RELEASE</version>
+        <relativePath/> <!-- lookup parent from repository -->
+    </parent>
     <groupId>com.mooctest.crowd</groupId>
     <artifactId>crowd</artifactId>
     <packaging>pom</packaging>

+ 3 - 4
site/pom.xml

@@ -3,10 +3,9 @@
 	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 	<parent>
-		<groupId>org.springframework.boot</groupId>
-		<artifactId>spring-boot-starter-parent</artifactId>
-		<version>2.1.6.RELEASE</version>
-		<relativePath/> <!-- lookup parent from repository -->
+		<groupId>com.mooctest.crowd</groupId>
+		<artifactId>crowd</artifactId>
+		<version>1.0-SNAPSHOT</version>
 	</parent>
 	<groupId>com.mooctest.crowd</groupId>
 	<artifactId>site</artifactId>

+ 2 - 1
site/src/main/java/com/mooctest/crowd/site/SiteApplication.java

@@ -2,8 +2,9 @@ package com.mooctest.crowd.site;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
 
-@SpringBootApplication
+@SpringBootApplication(scanBasePackages = "com.mooctest.crowd")
 public class SiteApplication {
 
 	public static void main(String[] args) {

+ 0 - 12
site/src/main/java/com/mooctest/crowd/site/command/CreateProjectCommand.java

@@ -1,12 +0,0 @@
-package com.mooctest.crowd.site.command;
-
-import lombok.Data;
-
-/**
- * @author: Diors.Po
- * @Email: 171256175@qq.com
- * @date 2019-07-25 14:37
- */
-@Data
-public class CreateProjectCommand {
-}

+ 74 - 1
site/src/main/java/com/mooctest/crowd/site/command/ProjectDetailsCommand.java

@@ -1,9 +1,82 @@
 package com.mooctest.crowd.site.command;
 
+import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
+
+import com.mooctest.crowd.domain.factory.CrowdTestProjectFactory;
+import lombok.Data;
+import org.springframework.beans.BeanUtils;
+
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Pattern;
+import java.sql.Date;
+
 /**
  * @author: Diors.Po
  * @Email: 171256175@qq.com
- * @date 2019-07-25 14:42
+ * @date 2019-07-25 14:37
  */
+@Data
 public class ProjectDetailsCommand {
+    @NotNull(message = "UserId不可为空")
+    private Long userId;
+
+    @NotNull(message = "项目名称不可为空")
+    private String name;
+
+    @NotNull(message = "项目服务类型不可为空")
+    private Integer type;
+
+    @NotNull(message = "项目平台不可为空")
+    private Integer platform;
+
+    @NotNull(message = "项目描述不可为空")
+    private String descrition;
+
+    @NotNull(message = "可见性选择不可为空")
+    private Long visibility;
+
+    private String location;
+
+    private Long institution;
+
+    @NotNull(message = "项目联系人不可为空")
+    private String contactName;
+
+    @NotNull(message = "项目联系人电话不可为空")
+    @Pattern(regexp = "^[0-9]{11}$", message = "Mobile number is illegal")
+    private String contactPhone;
+
+    @NotNull(message = "请上传需求文档")
+    private String doc;
+
+    @NotNull(message = "请上传应用apk")
+    private String file;
+
+    @NotNull(message = "请填写预算价格")
+    private Double quotedPrice;
+
+    @NotNull(message = "请填写截止日期")
+    private Date datetime;
+
+    private String usage;
+
+    private Double fixedPrice;
+
+    public CrowdTestProject toCrowdProject(){
+        CrowdTestProject crowdTestProject = CrowdTestProjectFactory.createCrowdTestProject();
+        BeanUtils.copyProperties(this, crowdTestProject);
+        crowdTestProject.setProjectFile(file);
+        crowdTestProject.setRequirementFile(file);
+        crowdTestProject.setRegionalManagerId(this.institution);
+        crowdTestProject.setProjectDistributionTypeId(this.visibility);
+        return crowdTestProject;
+    }
+
+    public boolean isLegal(){
+        if (this.visibility == 1 && this.location == null)
+            return false;
+        else if (this.visibility == 0 && this.institution == null)
+            return false;
+        return true;
+    }
 }

+ 36 - 21
site/src/main/java/com/mooctest/crowd/site/controller/CrowdProjectController.java

@@ -1,15 +1,17 @@
 package com.mooctest.crowd.site.controller;
 
-import com.mooctest.crowd.site.command.CreateProjectCommand;
+import com.mooctest.crowd.domain.exception.BaseException;
 import com.mooctest.crowd.site.command.ProjectDetailsCommand;
-import com.mooctest.crowd.site.constants.ResponseConstant;
-import com.mooctest.crowd.site.data.ResponseMessage;
 import com.mooctest.crowd.site.data.dto.ProjectDetailsDTO;
-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 com.mooctest.crowd.site.service.CrowdProjectService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+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;
 
 /**
@@ -17,31 +19,44 @@ import java.util.List;
  * @Email: 171256175@qq.com
  * @date 2019-07-24 23:50
  */
-@RestController("/api")
+@Slf4j
+@RestController
 public class CrowdProjectController {
 
-    @RequestMapping(value = "/project", method = RequestMethod.POST)
-    public Boolean createProject(CreateProjectCommand createProjectCommand){
-        return null;
+    @Autowired
+    private CrowdProjectService projectService;
+
+    @RequestMapping(value = "/api/project", method = RequestMethod.POST)
+    public ProjectDetailsDTO createProject(@Validated @RequestBody ProjectDetailsCommand projectDetailsCommand, BindingResult result){
+        if (result.hasErrors())
+            throw new BaseException(result.getFieldErrors().toString());
+        else if (!projectDetailsCommand.isLegal())
+            throw new BaseException("信息不合法,项目可见性存在问题");
+        return projectService.createCrowdProject(projectDetailsCommand);
     }
 
-    @RequestMapping(value = "/project/{projectId}", method = RequestMethod.GET)
+    @RequestMapping(value = "/api/project/{projectId}", method = RequestMethod.GET)
     public ProjectDetailsDTO getProject(@PathVariable("projectId") Long projectId){
-        return null;
+        log.info("访问Project详情,projectId:"+projectId);
+        return projectService.getProjectDetails(projectId);
     }
 
-    @RequestMapping(value = "/project", method = RequestMethod.GET)
+    @RequestMapping(value = "/api/project", method = RequestMethod.GET)
     public List<ProjectDetailsDTO> getProjects(){
         return null;
     }
 
-    @RequestMapping(value = "/project}", method = RequestMethod.PUT)
-    public ProjectDetailsDTO updateProject(ProjectDetailsCommand projectDetailsCommand){
-        return null;
+    @RequestMapping(value = "/api/project/{projectId}}", method = RequestMethod.PUT)
+    public ProjectDetailsDTO updateProject(@Validated @RequestBody ProjectDetailsCommand projectDetailsCommand, @PathVariable("projectId") Long projectId, BindingResult result){
+        if (result.hasErrors())
+            throw new BaseException(result.getFieldErrors().toString());
+        else if (!projectDetailsCommand.isLegal())
+            throw new BaseException("信息不合法,项目可见性存在问题");
+        return projectService.updateProject(projectId, projectDetailsCommand);
     }
 
-    @RequestMapping(value = "/project/{projectId}", method = RequestMethod.DELETE)
-    public boolean deleteProject(@PathVariable("projectId") Long projectId){
-        return true;
+    @RequestMapping(value = "/api/project/{projectId}", method = RequestMethod.DELETE)
+    public void deleteProject(@PathVariable("projectId") Long projectId, HttpSession session){
+        projectService.deleteProject(projectId, (Long)session.getAttribute("userId"));
     }
 }

+ 6 - 6
site/src/main/java/com/mooctest/crowd/site/controller/CrowdReportController.java

@@ -14,30 +14,30 @@ import java.util.List;
  * @Email: 171256175@qq.com
  * @date 2019-07-24 23:50
  */
-@RestController("/api")
+@RestController
 public class CrowdReportController {
 
-    @RequestMapping(value = "/report", method = RequestMethod.POST)
+    @RequestMapping(value = "/api/report", method = RequestMethod.POST)
     public ReportDetailsDTO createReport(CrowdTestReportCommand command){
         return null;
     }
 
-    @RequestMapping(value = "/report/{reportId}", method = RequestMethod.DELETE)
+    @RequestMapping(value = "/api/report/{reportId}", method = RequestMethod.DELETE)
     public boolean deleteReport(@PathVariable("reportId")Long reportId){
         return true;
     }
 
-    @RequestMapping(value = "/report/{reportId}", method = RequestMethod.GET)
+    @RequestMapping(value = "/api/report/{reportId}", method = RequestMethod.GET)
     public ReportDetailsDTO getReport(@PathVariable("reportId") Long reportId){
         return null;
     }
 
-    @RequestMapping(value = "/report", method = RequestMethod.GET)
+    @RequestMapping(value = "/api/report", method = RequestMethod.GET)
     public List<ReportDetailsDTO> getReports(){
         return null;
     }
 
-    @RequestMapping(value = "/report", method = RequestMethod.PUT)
+    @RequestMapping(value = "/api/report", method = RequestMethod.PUT)
     public ReportDetailsDTO updateReport(CrowdTestReportCommand command){
         return null;
     }

+ 13 - 5
site/src/main/java/com/mooctest/crowd/site/controller/CrowdTaskController.java

@@ -2,9 +2,12 @@ package com.mooctest.crowd.site.controller;
 
 import com.mooctest.crowd.site.command.CrowdTestTaskCommand;
 import com.mooctest.crowd.site.data.dto.TaskDetailsDTO;
+import com.mooctest.crowd.site.service.CrowdTaskService;
+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 java.util.List;
 
@@ -13,8 +16,18 @@ import java.util.List;
  * @Email: 171256175@qq.com
  * @date 2019-07-24 23:50
  */
+@RestController
+@RequestMapping("/api")
 public class CrowdTaskController {
 
+    @Autowired
+    private CrowdTaskService taskService;
+
+    @RequestMapping(value = "/project/{projectId}/task/{taskCode}", method = RequestMethod.GET)
+    public TaskDetailsDTO getTask(@PathVariable("projectId") Long projectId, @PathVariable("taskCode") String taskCode){
+        return taskService.getTaskDetails(projectId, taskCode);
+    }
+
     @RequestMapping(value = "/task", method = RequestMethod.POST)
     public TaskDetailsDTO createTask(CrowdTestTaskCommand command){
         return null;
@@ -25,11 +38,6 @@ public class CrowdTaskController {
         return true;
     }
 
-    @RequestMapping(value = "/task/{taskId}", method = RequestMethod.GET)
-    public TaskDetailsDTO getTask(@PathVariable("taskId") Long taskId){
-        return null;
-    }
-
     @RequestMapping(value = "/task", method = RequestMethod.GET)
     public List<TaskDetailsDTO> getTasks(){
         return null;

+ 1 - 1
site/src/main/java/com/mooctest/crowd/site/controller/advice/ExceptionAdvice.java

@@ -36,7 +36,7 @@ public class ExceptionAdvice {
         } else if (e instanceof PasswordErrorException){
             return new ResponseMessage(ResponseConstant.UNAUTH, "密码错误");
         } else
-            return new ResponseMessage(ResponseConstant.FAIL, ResponseConstant.REQUEST_FAILED);
+            return new ResponseMessage(ResponseConstant.FAIL, e.getMessage());
     }
 
     @ExceptionHandler(Exception.class)

+ 4 - 3
site/src/main/java/com/mooctest/crowd/site/data/dto/IndexDTO.java

@@ -13,7 +13,8 @@ import java.util.List;
  */
 @Data
 public class IndexDTO {
-    private List<CrowdTaskVO> hotTasks;
-    private List<EvolutionAgencyVO> agencyRanks;
-    private List<UserVO> userRanks;
+    private List<String> imgList;
+    private List<CrowdTaskVO> hotTaskList;
+    private List<EvolutionAgencyVO> agencyRank;
+    private List<UserVO> userRank;
 }

+ 3 - 3
site/src/main/java/com/mooctest/crowd/site/data/dto/ProjectDetailsDTO.java

@@ -13,7 +13,7 @@ import java.util.List;
  */
 @Data
 public class ProjectDetailsDTO {
-    private CrowdProjectVO crowdProjectVO;
-    private List<CrowdTaskVO> crowdTaskVOList;
-    private List<CrowdReportVO> crowdReportVOList;
+    private CrowdProjectVO projectDetails;
+    private List<CrowdTaskVO> taskList;
+    private List<CrowdReportVO> reportList;
 }

+ 18 - 3
site/src/main/java/com/mooctest/crowd/site/data/vo/CrowdProjectVO.java

@@ -6,6 +6,8 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 import org.springframework.beans.BeanUtils;
 
+import java.sql.Timestamp;
+
 /**
  * @Author: xuexb
  * @Date: 2019.7.15 20:41
@@ -13,13 +15,26 @@ import org.springframework.beans.BeanUtils;
 @Data
 public class CrowdProjectVO {
 
+    private Long id;
+    private String name;
+    private Long userId;
+    private Long regionalManagerId;
+    private Long projectDistributionTypeId;
+    private String description;
+    private String projectFile;
+    private String requirementFile;
+    private Double quotedPrice;
+    private Double fixedPrice;
+    private String status;
+    private Timestamp createTime;
+
     public CrowdProjectVO(CrowdTestProject project){
         BeanUtils.copyProperties(project, this);
     }
 
     public CrowdTestProject toCrowdTestProject(){
-        //todo
-
-        return new CrowdTestProject();
+        CrowdTestProject crowdTestProject = new CrowdTestProject();
+        BeanUtils.copyProperties(this, crowdTestProject);
+        return crowdTestProject;
     }
 }

+ 13 - 3
site/src/main/java/com/mooctest/crowd/site/data/vo/CrowdReportVO.java

@@ -7,20 +7,30 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 import org.springframework.beans.BeanUtils;
 
+import java.sql.Timestamp;
+
 /**
  * @Author: xuexb
  * @Date: 2019.7.15 20:36
  */
 @Data
 public class CrowdReportVO {
+    private Long id;
+    private String name;
+    private Long crowdTestTaskId;
+    private String type;
+    private String description;
+    private String content;
+    private String status;
+    private Timestamp createTime;
 
     public CrowdReportVO(CrowdTestReport report){
         BeanUtils.copyProperties(report, this);
     }
 
     public CrowdTestReport toCrowdTestReport(){
-        //todo
-
-        return new CrowdTestReport();
+        CrowdTestReport crowdTestReport = new CrowdTestReport();
+        BeanUtils.copyProperties(this, crowdTestReport);
+        return crowdTestReport;
     }
 }

+ 20 - 3
site/src/main/java/com/mooctest/crowd/site/data/vo/CrowdTaskVO.java

@@ -1,11 +1,15 @@
 package com.mooctest.crowd.site.data.vo;
 
+import com.mooctest.crowd.domain.domainobject.CrowdTestReport;
 import com.mooctest.crowd.domain.domainobject.CrowdTestTask;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import org.springframework.beans.BeanUtils;
 
+import java.sql.Timestamp;
+import java.util.List;
+
 /**
  * @Author: xuexb
  * @Date: 2019.7.15 20:36
@@ -13,13 +17,26 @@ import org.springframework.beans.BeanUtils;
 @Data
 public class CrowdTaskVO {
 
+    private Long id;
+    private String name;
+    private Long crowdTestProjectId;
+    private Long evaluationAgencyId;
+    private String type;
+    private String description;
+    private String requirementFile;
+    private Double quotedPrice;
+    private Double fixedPrice;
+    private String status;
+    private Timestamp createTime;
+    private List<CrowdTestReport> crowdTestReportList;
+
     public CrowdTaskVO(CrowdTestTask task){
         BeanUtils.copyProperties(task, this);
     }
 
     public CrowdTestTask toCrowdTestTask(){
-        //todo
-
-        return new CrowdTestTask();
+        CrowdTestTask crowdTestTask = new CrowdTestTask();
+        BeanUtils.copyProperties(this, crowdTestTask);
+        return crowdTestTask;
     }
 }

+ 17 - 0
site/src/main/java/com/mooctest/crowd/site/mediator/OperationMediator.java

@@ -0,0 +1,17 @@
+package com.mooctest.crowd.site.mediator;
+
+import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
+import com.mooctest.crowd.site.command.ProjectDetailsCommand;
+import com.mooctest.crowd.site.data.dto.ProjectDetailsDTO;
+
+/**
+ * @author: Diors.Po
+ * @Email: 171256175@qq.com
+ * @date 2019-07-29 10:24
+ */
+public interface OperationMediator {
+
+    ProjectDetailsDTO createCrowdProject(ProjectDetailsCommand command);
+
+    CrowdTestProject updateProject(CrowdTestProject project, ProjectDetailsCommand projectDetailsCommand);
+}

+ 4 - 2
site/src/main/java/com/mooctest/crowd/site/mediator/Mediator.java → site/src/main/java/com/mooctest/crowd/site/mediator/ViewMediator.java

@@ -1,16 +1,18 @@
 package com.mooctest.crowd.site.mediator;
 
+import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
 import com.mooctest.crowd.site.command.*;
 import com.mooctest.crowd.site.data.dto.*;
 import com.mooctest.crowd.domain.exception.AccountNotExistException;
 import com.mooctest.crowd.domain.exception.BadRequestException;
 import com.mooctest.crowd.domain.exception.PasswordErrorException;
+import sun.util.resources.ga.LocaleNames_ga;
 
 /**
  * @Author: xuexb
  * @Date: 2019.7.16 20:25
  */
-public interface Mediator {
+public interface ViewMediator {
 
     UserDTO loginByMobileAndPwd(LoginCommand cmd) throws PasswordErrorException, AccountNotExistException, BadRequestException;
 
@@ -22,7 +24,7 @@ public interface Mediator {
 
     TaskSquareDTO renderTaskSquare(CrowdTestTaskCommand crowdTestTaskCommand);
 
-    ProjectDetailsDTO renderProjectDetails(CrowdTestProjectCommand crowdTestProjectCommand);
+    ProjectDetailsDTO renderProjectDetails(CrowdTestProject project);
 
     ReportDetailsDTO renderReportDetails(CrowdTestReportCommand crowdTestReportCommand);
 

+ 37 - 0
site/src/main/java/com/mooctest/crowd/site/mediator/impl/OperationMediatorImpl.java

@@ -0,0 +1,37 @@
+package com.mooctest.crowd.site.mediator.impl;
+
+import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
+import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
+import com.mooctest.crowd.site.command.ProjectDetailsCommand;
+import com.mooctest.crowd.site.data.dto.ProjectDetailsDTO;
+import com.mooctest.crowd.site.data.vo.CrowdProjectVO;
+import com.mooctest.crowd.site.mediator.OperationMediator;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author: Diors.Po
+ * @Email: 171256175@qq.com
+ * @date 2019-07-29 10:25
+ */
+@Component
+public class OperationMediatorImpl implements OperationMediator {
+
+    @Autowired
+    private CrowdTestProjectRepo projectRepo;
+
+    @Override
+    public ProjectDetailsDTO createCrowdProject(ProjectDetailsCommand command) {
+        CrowdTestProject project = command.toCrowdProject();
+        ProjectDetailsDTO projectDetailsDTO = new ProjectDetailsDTO();
+        projectDetailsDTO.setProjectDetails(new CrowdProjectVO(projectRepo.saveCreateCrowdTestProject(project)));
+        return projectDetailsDTO;
+    }
+
+    @Override
+    public CrowdTestProject updateProject(CrowdTestProject project, ProjectDetailsCommand projectDetailsCommand) {
+        CrowdTestProject updateProject = projectDetailsCommand.toCrowdProject();
+        updateProject.setId(project.getId());
+        return updateProject;
+    }
+}

+ 28 - 10
site/src/main/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImpl.java

@@ -1,27 +1,33 @@
 package com.mooctest.crowd.site.mediator.impl;
 
+import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
 import com.mooctest.crowd.domain.exception.AccountNotExistException;
-import com.mooctest.crowd.domain.exception.BadRequestException;
-import com.mooctest.crowd.domain.exception.PasswordErrorException;
-import com.mooctest.crowd.domain.repository.AccountUTRepo;
+import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
 import com.mooctest.crowd.site.command.*;
 import com.mooctest.crowd.site.data.dto.*;
-import com.mooctest.crowd.site.mediator.Mediator;
+import com.mooctest.crowd.site.data.vo.CrowdProjectVO;
+import com.mooctest.crowd.site.data.vo.CrowdReportVO;
+import com.mooctest.crowd.site.data.vo.CrowdTaskVO;
+import com.mooctest.crowd.site.mediator.ViewMediator;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.util.List;
+import java.util.stream.Collectors;
+
 /**
  * @Author: xuexb
  * @Date: 2019.7.16 20:27
  */
 @Component("WebMediator")
-public class WebMediatorImpl implements Mediator {
+public class WebMediatorImpl implements ViewMediator {
+
+    @Autowired
+    private CrowdTestProjectRepo projectRepo;
 
-    AccountUTRepo accountUTRepo = new AccountUTRepo();
 
     @Override
     public UserDTO loginByMobileAndPwd(LoginCommand cmd) {
-
-//            throw new BadRequestException("登录失败");
         return null;
     }
 
@@ -46,8 +52,20 @@ public class WebMediatorImpl implements Mediator {
     }
 
     @Override
-    public ProjectDetailsDTO renderProjectDetails(CrowdTestProjectCommand crowdTestProjectCommand) {
-        return new ProjectDetailsDTO();
+    public ProjectDetailsDTO renderProjectDetails(CrowdTestProject project) {
+        ProjectDetailsDTO projectDetailsDTO = new ProjectDetailsDTO();
+        List<CrowdTaskVO> taskVOList = project.getCrowdTestTaskList().stream().map(crowdTestTask -> {
+            return new CrowdTaskVO(crowdTestTask);
+        }).collect(Collectors.toList());
+//        List<CrowdReportVO> reportVOList = project.getCrowdTestReportListByProjectId(projectId, taskVOList.get(0).getId())
+//                .stream()
+//                .map(crowdTestReport -> {
+//            return new CrowdReportVO(crowdTestReport);
+//        }).collect(Collectors.toList());
+        projectDetailsDTO.setProjectDetails(new CrowdProjectVO(project));
+        projectDetailsDTO.setTaskList(taskVOList);
+//        projectDetailsDTO.setCrowdReportVOList(reportVOList);
+        return projectDetailsDTO;
     }
 
     @Override

+ 19 - 0
site/src/main/java/com/mooctest/crowd/site/service/CrowdProjectService.java

@@ -0,0 +1,19 @@
+package com.mooctest.crowd.site.service;
+
+import com.mooctest.crowd.site.command.ProjectDetailsCommand;
+import com.mooctest.crowd.site.data.dto.ProjectDetailsDTO;
+
+/**
+ * @author: Diors.Po
+ * @Email: 171256175@qq.com
+ * @date 2019-07-29 10:49
+ */
+public interface CrowdProjectService {
+    ProjectDetailsDTO getProjectDetails(Long projectId);
+
+    ProjectDetailsDTO createCrowdProject(ProjectDetailsCommand command);
+
+    ProjectDetailsDTO updateProject(Long projectId, ProjectDetailsCommand projectDetailsCommand);
+
+    void deleteProject(Long projectId, Long userId);
+}

+ 12 - 0
site/src/main/java/com/mooctest/crowd/site/service/CrowdTaskService.java

@@ -0,0 +1,12 @@
+package com.mooctest.crowd.site.service;
+
+import com.mooctest.crowd.site.data.dto.TaskDetailsDTO;
+
+/**
+ * @author: Diors.Po
+ * @Email: 171256175@qq.com
+ * @date 2019-07-29 18:47
+ */
+public interface CrowdTaskService {
+    TaskDetailsDTO getTaskDetails(Long projectId, String taskCode);
+}

+ 3 - 3
site/src/main/java/com/mooctest/crowd/site/service/impl/CommonServiceImpl.java

@@ -1,7 +1,7 @@
 package com.mooctest.crowd.site.service.impl;
 
 import com.mooctest.crowd.site.data.dto.IndexDTO;
-import com.mooctest.crowd.site.mediator.Mediator;
+import com.mooctest.crowd.site.mediator.ViewMediator;
 import com.mooctest.crowd.site.service.CommonService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
@@ -12,10 +12,10 @@ public class CommonServiceImpl implements CommonService {
 
     @Autowired
     @Qualifier("WebMediator")
-    private Mediator mediator;
+    private ViewMediator viewMediator;
 
     @Override
     public IndexDTO getIndexInfo() {
-        return mediator.renderIndex();
+        return viewMediator.renderIndex();
     }
 }

+ 64 - 0
site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdProjectServiceImpl.java

@@ -0,0 +1,64 @@
+package com.mooctest.crowd.site.service.impl;
+
+import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
+import com.mooctest.crowd.domain.domainobject.CrowdTestProjectStatus;
+import com.mooctest.crowd.domain.exception.BaseException;
+import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
+import com.mooctest.crowd.site.command.ProjectDetailsCommand;
+import com.mooctest.crowd.site.data.dto.ProjectDetailsDTO;
+import com.mooctest.crowd.site.data.vo.CrowdProjectVO;
+import com.mooctest.crowd.site.mediator.OperationMediator;
+import com.mooctest.crowd.site.mediator.ViewMediator;
+import com.mooctest.crowd.site.service.CrowdProjectService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author: Diors.Po
+ * @Email: 171256175@qq.com
+ * @date 2019-07-29 10:51
+ */
+@Service
+public class CrowdProjectServiceImpl implements CrowdProjectService {
+
+    @Autowired
+    private ViewMediator viewMediator;
+
+    @Autowired
+    private CrowdTestProjectRepo projectRepo;
+
+    @Autowired
+    private OperationMediator operationMediator;
+
+    @Override
+    public ProjectDetailsDTO getProjectDetails(Long projectId) {
+        return viewMediator.renderProjectDetails(projectRepo.getByID(projectId));
+    }
+
+    @Override
+    public ProjectDetailsDTO createCrowdProject(ProjectDetailsCommand command) {
+        CrowdTestProject project = command.toCrowdProject();
+        project.setStatus(CrowdTestProjectStatus.CREATED);
+        ProjectDetailsDTO projectDetailsDTO = new ProjectDetailsDTO();
+        projectDetailsDTO.setProjectDetails(new CrowdProjectVO(projectRepo.saveCreateCrowdTestProject(project)));
+        return projectDetailsDTO;
+    }
+
+    @Override
+    public ProjectDetailsDTO updateProject(Long projectId, ProjectDetailsCommand projectDetailsCommand) {
+        CrowdTestProject project = projectRepo.getByID(projectId);
+        if (project.getUserId() != projectDetailsCommand.getUserId())
+            throw new BaseException("UserId不一致");
+        //todo 后面需要加入是否有权限进行更新
+        projectRepo.saveCreateCrowdTestProject(operationMediator.updateProject(project, projectDetailsCommand));
+        return getProjectDetails(projectId);
+    }
+
+    @Override
+    public void deleteProject(Long projectId, Long userId) {
+        //todo 后面需要加入是否有权限进行删除
+        if (projectRepo.getByID(projectId).getUserId() != userId)
+            throw new BaseException("没有权限");
+        projectRepo.deleteByProjectId(projectId);
+    }
+}

+ 18 - 0
site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdTaskServiceImpl.java

@@ -0,0 +1,18 @@
+package com.mooctest.crowd.site.service.impl;
+
+import com.mooctest.crowd.site.data.dto.TaskDetailsDTO;
+import com.mooctest.crowd.site.service.CrowdTaskService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author: Diors.Po
+ * @Email: 171256175@qq.com
+ * @date 2019-07-29 18:47
+ */
+@Service
+public class CrowdTaskServiceImpl implements CrowdTaskService {
+    @Override
+    public TaskDetailsDTO getTaskDetails(Long projectId, String taskCode) {
+        return null;
+    }
+}

+ 1 - 1
site/src/main/java/com/mooctest/crowd/site/service/impl/UserServiceImpl.java

@@ -1 +1 @@
-package com.mooctest.crowd.site.service.impl;

import com.mooctest.crowd.site.command.LoginCommand;
import com.mooctest.crowd.site.command.RegisterCommand;
import com.mooctest.crowd.site.data.dto.UserDTO;

import com.mooctest.crowd.domain.exception.AccountNotExistException;
import com.mooctest.crowd.domain.exception.BadRequestException;
import com.mooctest.crowd.domain.exception.PasswordErrorException;
import com.mooctest.crowd.site.mediator.Mediator;
import com.mooctest.crowd.site.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

/**
 * @Author: xuexb
 * @Date: 2019.7.22 16:53
 */
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    @Qualifier("WebMediator")
    private Mediator mediator;

    @Override
    public UserDTO register(RegisterCommand registerCommand) throws AccountNotExistException {
        return mediator.register(registerCommand);
    }

    @Override
    public UserDTO loginByMobileAndPwd(LoginCommand loginCommand) throws PasswordErrorException, AccountNotExistException, BadRequestException {
        return mediator.loginByMobileAndPwd(loginCommand);
    }
}
+package com.mooctest.crowd.site.service.impl;

import com.mooctest.crowd.site.command.LoginCommand;
import com.mooctest.crowd.site.command.RegisterCommand;
import com.mooctest.crowd.site.data.dto.UserDTO;

import com.mooctest.crowd.domain.exception.AccountNotExistException;
import com.mooctest.crowd.domain.exception.BadRequestException;
import com.mooctest.crowd.domain.exception.PasswordErrorException;
import com.mooctest.crowd.site.mediator.ViewMediator;
import com.mooctest.crowd.site.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

/**
 * @Author: xuexb
 * @Date: 2019.7.22 16:53
 */
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    @Qualifier("WebMediator")
    private ViewMediator viewMediator;

    @Override
    public UserDTO register(RegisterCommand registerCommand) throws AccountNotExistException {
        return viewMediator.register(registerCommand);
    }

    @Override
    public UserDTO loginByMobileAndPwd(LoginCommand loginCommand) throws PasswordErrorException, AccountNotExistException, BadRequestException {
        return viewMediator.loginByMobileAndPwd(loginCommand);
    }
}

+ 0 - 1
site/src/main/resources/application.properties

@@ -1 +0,0 @@
-

+ 27 - 0
site/src/main/resources/application.yml

@@ -0,0 +1,27 @@
+spring:
+  cache:
+    guava:
+      spec: expireAfterWrite=30s
+  datasource:
+    driver-class-name: com.mysql.jdbc.Driver
+    url: jdbc:mysql://101.37.175.111:3306/crowd-test-service?useSSL=false&useUnicode=yes&characterEncoding=UTF-8
+    username: mooctest
+    password: secr3t!
+    # Keep the connection alive if idle for a long time (needed in production)
+    testWhileIdle: true
+    validationQuery: SELECT 1
+  # Show or not log for each sql query
+  jpa:
+    show-sql: true
+  # Hibernate ddl auto (create, create-drop, update)
+  hibernate:
+    ddl-auto: validate
+    #hbm2ddl.auto: update
+    # Naming strategy
+    naming-strategy: org.hibernate.cfg.ImprovedNamingStrategy
+  # The SQL dialect makes Hibernate generate better SQL for the chosen database
+  properties.hibernate.dialect: org.hibernate.dialect.MySQL5Dialect
+
+feature-switch:
+  default:
+    role: generalUser

+ 11 - 19
site/src/test/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImplTest.java

@@ -7,7 +7,7 @@ import com.mooctest.crowd.site.command.CrowdTestProjectCommand;
 import com.mooctest.crowd.site.command.CrowdTestReportCommand;
 import com.mooctest.crowd.site.command.CrowdTestTaskCommand;
 import com.mooctest.crowd.site.data.dto.*;
-import com.mooctest.crowd.site.mediator.Mediator;
+import com.mooctest.crowd.site.mediator.ViewMediator;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -25,7 +25,7 @@ import static org.junit.Assert.assertNotNull;
 public class WebMediatorImplTest {
 
 
-    private Mediator mediator;
+    private ViewMediator viewMediator;
     private Account account;
 
     @Before
@@ -34,7 +34,7 @@ public class WebMediatorImplTest {
         account.setPassword("CORRECT_PWD");
         account.setMobileNum("EXiSTS_MOBILE");
 
-        mediator = new WebMediatorImpl();
+        viewMediator = new WebMediatorImpl();
     }
 
 //    @Test
@@ -44,7 +44,7 @@ public class WebMediatorImplTest {
 //        PowerMockito.when(AccountFactory.createAccount()).thenReturn(account);
 //        LoginCommand cmd = new LoginCommand("EXiSTS_MOBILE", "CORRECT_PWD", "CODE");
 //        //action
-//        UserDTO success = mediator.loginByMobileAndPwd(cmd);
+//        UserDTO success = viewMediator.loginByMobileAndPwd(cmd);
 //    }
 
 
@@ -53,7 +53,7 @@ public class WebMediatorImplTest {
     public void should_return_index_dto_when_render_index(){
         //arrange
         //action
-        IndexDTO indexDTO = mediator.renderIndex();
+        IndexDTO indexDTO = viewMediator.renderIndex();
         //assert
         assertNotNull(indexDTO);
     }
@@ -63,27 +63,19 @@ public class WebMediatorImplTest {
         //arrange
         AccountCommand accountCommand = new AccountCommand();
         //action
-        MyCrowdDTO myCrowdDTO = mediator.renderMyCrowd(accountCommand);
+        MyCrowdDTO myCrowdDTO = viewMediator.renderMyCrowd(accountCommand);
         //assert
         assertNotNull(myCrowdDTO);
     }
 
-    @Test
-    public void should_return_project_details_dto_when_render_project_details_success(){
-        //arrange
-        CrowdTestProjectCommand crowdTestProjectCommand = new CrowdTestProjectCommand();
-        //action
-        ProjectDetailsDTO projectDetailsDTO = mediator.renderProjectDetails(crowdTestProjectCommand);
-        //assert
-        assertNotNull(projectDetailsDTO);
-    }
+
 
     @Test
     public void should_return_task_square_dto_when_render_task_square_success(){
         //arrange
         CrowdTestTaskCommand crowdTestTaskCommand = new CrowdTestTaskCommand();
         //action
-        TaskSquareDTO taskSquareDTO = mediator.renderTaskSquare(crowdTestTaskCommand);
+        TaskSquareDTO taskSquareDTO = viewMediator.renderTaskSquare(crowdTestTaskCommand);
         //assert
         assertNotNull(taskSquareDTO);
     }
@@ -93,7 +85,7 @@ public class WebMediatorImplTest {
         //arrange
         CrowdTestReportCommand crowdTestReportCommand = new CrowdTestReportCommand();
         //action
-        ReportDetailsDTO reportDetailsDTO = mediator.renderReportDetails(crowdTestReportCommand);
+        ReportDetailsDTO reportDetailsDTO = viewMediator.renderReportDetails(crowdTestReportCommand);
         //assert
         assertNotNull(reportDetailsDTO);
     }
@@ -103,7 +95,7 @@ public class WebMediatorImplTest {
         //arrange
         CrowdTestTaskCommand crowdTestTaskCommand = new CrowdTestTaskCommand();
         //action
-        TaskDetailsDTO taskDetailsDTO = mediator.renderTaskDetails(crowdTestTaskCommand);
+        TaskDetailsDTO taskDetailsDTO = viewMediator.renderTaskDetails(crowdTestTaskCommand);
         //assert
         assertNotNull(taskDetailsDTO);
     }
@@ -113,7 +105,7 @@ public class WebMediatorImplTest {
         //arrage
         AccountCommand accountCommand = new AccountCommand();
         //action
-        UserDTO userDTO = mediator.renderUser(accountCommand);
+        UserDTO userDTO = viewMediator.renderUser(accountCommand);
         //assert
         assertNotNull(userDTO);
     }

Some files were not shown because too many files changed in this diff