Browse Source

调整Project的Command

Diors.Po 6 years ago
parent
commit
a499cdff50

+ 82 - 13
site/src/main/java/com/mooctest/crowd/site/command/CrowdTestProjectCommand.java

@@ -1,24 +1,93 @@
 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 java.io.File;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Pattern;
+import java.sql.Date;
+import java.sql.Timestamp;
+import java.util.Map;
 
 /**
- * @author guochao
- * @date 2019/7/6 18:50
+ * @author: Diors.Po
+ * @Email: 171256175@qq.com
+ * @date 2019-07-25 14:37
  */
 @Data
 public class CrowdTestProjectCommand {
-    private Long id;
+    @NotNull(message = "UserId不可为空")
+    private Long userId;
+
+    @NotNull(message = "项目名称不可为空")
     private String name;
-    private Long ownerId;
-    private Long managerId;
-    private Long distributeId;
-    private String description;
-    private File projectFile;
-    private File requirement;
-    private Double quotedPrice;
-    private Double fixedPrice;
-    private String status;
+
+    @NotNull(message = "项目服务类型不可为空")
+    private String type;
+
+    private String platform;
+
+    @NotNull(message = "项目描述不可为空")
+    private String desc;
+
+    @NotNull(message = "可见性选择不可为空")
+    private Long resource;
+
+    private Map<String, 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 budget;
+
+    private Timestamp datetime;
+
+    private String usage;
+
+    private Double price;
+
+    public CrowdTestProject toCrowdProject(){
+        CrowdTestProject crowdTestProject = CrowdTestProjectFactory.createCrowdTestProject();
+        crowdTestProject.setUserId(this.userId);
+        crowdTestProject.setName(this.name);
+        crowdTestProject.setLinkMan(this.contactName);
+        crowdTestProject.setLinkManMobile(this.contactPhone);
+        crowdTestProject.setType(this.type);
+        crowdTestProject.setPlatform(this.platform);
+        crowdTestProject.setDescription(this.desc);
+        crowdTestProject.setRequirementFile(this.doc);
+        crowdTestProject.setProjectFile(this.file);
+        crowdTestProject.setProjectDistributionTypeId(this.resource);
+        crowdTestProject.setDistributionProvince(this.location.get("provinceCode"));
+        crowdTestProject.setDistributionCity(this.location.get("cityCode"));
+        crowdTestProject.setRegionalManagerId(this.getInstitution());
+        crowdTestProject.setDeadTime(this.datetime);
+        crowdTestProject.setQuotedPrice(this.budget);
+        crowdTestProject.setFixedPrice(this.price);
+        return crowdTestProject;
+    }
+
+    public boolean isLegal(){
+        if (this.resource == 1 && this.location == null)
+            return false;
+        else if (this.resource == 0 && this.institution == null)
+            return false;
+        return true;
+    }
 }

+ 29 - 7
site/src/main/java/com/mooctest/crowd/site/command/CrowdTestTaskCommand.java

@@ -2,7 +2,10 @@ package com.mooctest.crowd.site.command;
 
 import lombok.Data;
 
+import javax.validation.constraints.NotNull;
 import java.io.File;
+import java.sql.Timestamp;
+import java.util.Map;
 
 /**
  * @author guochao
@@ -10,13 +13,32 @@ import java.io.File;
  */
 @Data
 public class CrowdTestTaskCommand {
-    private Long id;
+
+    @NotNull(message = "请填写任务名称")
     private String name;
-    private Long projectId;
-    private Long evaluationAgencyId;
+
+    @NotNull(message = "请填写任务描述")
+    private String desc;
+
+    @NotNull(message = "请填写任务类型")
     private int type;
-    private String description;
-    private File requirementFile;
-    public Double price;
-    private String status;
+
+    @NotNull(message = "请指定任务发布类型")
+    private int resource;
+
+    private Map<String, String> location;
+
+    private Long institution;
+
+    @NotNull(message = "请填写截止时间")
+    private Timestamp datetime;
+
+
+    public boolean isLegal(){
+        if (this.resource == 1 && this.location == null)
+            return false;
+        else if (this.resource == 0 && this.institution == null)
+            return false;
+        return true;
+    }
 }

+ 0 - 93
site/src/main/java/com/mooctest/crowd/site/command/ProjectDetailsCommand.java

@@ -1,93 +0,0 @@
-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;
-import java.sql.Timestamp;
-import java.util.Map;
-
-/**
- * @author: Diors.Po
- * @Email: 171256175@qq.com
- * @date 2019-07-25 14:37
- */
-@Data
-public class ProjectDetailsCommand {
-    @NotNull(message = "UserId不可为空")
-    private Long userId;
-
-    @NotNull(message = "项目名称不可为空")
-    private String name;
-
-    @NotNull(message = "项目服务类型不可为空")
-    private String type;
-
-    private String platform;
-
-    @NotNull(message = "项目描述不可为空")
-    private String desc;
-
-    @NotNull(message = "可见性选择不可为空")
-    private Long resource;
-
-    private Map<String, 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 budget;
-
-    private Timestamp datetime;
-
-    private String usage;
-
-    private Double price;
-
-    public CrowdTestProject toCrowdProject(){
-        CrowdTestProject crowdTestProject = CrowdTestProjectFactory.createCrowdTestProject();
-        crowdTestProject.setUserId(this.userId);
-        crowdTestProject.setName(this.name);
-        crowdTestProject.setLinkMan(this.contactName);
-        crowdTestProject.setLinkManMobile(this.contactPhone);
-        crowdTestProject.setType(this.type);
-        crowdTestProject.setPlatform(this.platform);
-        crowdTestProject.setDescription(this.desc);
-        crowdTestProject.setRequirementFile(this.doc);
-        crowdTestProject.setProjectFile(this.file);
-        crowdTestProject.setProjectDistributionTypeId(this.resource);
-        crowdTestProject.setDistributionProvince(this.location.get("provinceCode"));
-        crowdTestProject.setDistributionCity(this.location.get("cityCode"));
-        crowdTestProject.setRegionalManagerId(this.getInstitution());
-        crowdTestProject.setDeadTime(this.datetime);
-        crowdTestProject.setQuotedPrice(this.budget);
-        crowdTestProject.setFixedPrice(this.price);
-        return crowdTestProject;
-    }
-
-    public boolean isLegal(){
-        if (this.resource == 1 && this.location == null)
-            return false;
-        else if (this.resource == 0 && this.institution == null)
-            return false;
-        return true;
-    }
-}

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

@@ -1,7 +1,7 @@
 package com.mooctest.crowd.site.controller;
 
 import com.mooctest.crowd.domain.exception.BaseException;
-import com.mooctest.crowd.site.command.ProjectDetailsCommand;
+import com.mooctest.crowd.site.command.CrowdTestProjectCommand;
 import com.mooctest.crowd.site.data.dto.ProjectDetailsDTO;
 import com.mooctest.crowd.site.service.CrowdProjectService;
 import lombok.extern.slf4j.Slf4j;
@@ -26,12 +26,12 @@ public class CrowdProjectController {
     private CrowdProjectService projectService;
 
     @RequestMapping(value = "/api/project", method = RequestMethod.POST)
-    public ProjectDetailsDTO createProject(@Validated @RequestBody ProjectDetailsCommand projectDetailsCommand, BindingResult result){
+    public ProjectDetailsDTO createProject(@Validated @RequestBody CrowdTestProjectCommand crowdTestProjectCommand, BindingResult result){
         if (result.hasErrors())
             throw new BaseException(result.getFieldErrors().toString());
-        else if (!projectDetailsCommand.isLegal())
+        else if (!crowdTestProjectCommand.isLegal())
             throw new BaseException("信息不合法,项目可见性存在问题");
-        return projectService.createCrowdProject(projectDetailsCommand);
+        return projectService.createCrowdProject(crowdTestProjectCommand);
     }
 
     @RequestMapping(value = "/api/project/{projectCode}", method = RequestMethod.GET)
@@ -45,13 +45,13 @@ public class CrowdProjectController {
         return null;
     }
 
-    @RequestMapping(value = "/api/project/{projectCode}}", method = RequestMethod.PUT)
-    public ProjectDetailsDTO updateProject(@Validated @RequestBody ProjectDetailsCommand projectDetailsCommand, @PathVariable("projectCode") String projectCode, BindingResult result){
+    @RequestMapping(value = "/api/project/{projectCode}", method = RequestMethod.PUT)
+    public ProjectDetailsDTO updateProject(@Validated @RequestBody CrowdTestProjectCommand crowdTestProjectCommand, @PathVariable("projectCode") String projectCode, BindingResult result){
         if (result.hasErrors())
             throw new BaseException(result.getFieldErrors().toString());
-        else if (!projectDetailsCommand.isLegal())
+        else if (!crowdTestProjectCommand.isLegal())
             throw new BaseException("信息不合法,项目可见性存在问题");
-        return projectService.updateProject(projectCode, projectDetailsCommand);
+        return projectService.updateProject(projectCode, crowdTestProjectCommand);
     }
 
     @RequestMapping(value = "/api/project/{projectId}", method = RequestMethod.DELETE)

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

@@ -28,7 +28,7 @@ public class CrowdTaskVO {
     private Double fixedPrice;
     private String status;
     private Timestamp createTime;
-    private List<CrowdTestReport> crowdTestReportList;
+//    private List<CrowdTestReport> crowdTestReportList;
 
     public CrowdTaskVO(CrowdTestTask task){
         BeanUtils.copyProperties(task, this);

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

@@ -1,7 +1,7 @@
 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.command.CrowdTestProjectCommand;
 import com.mooctest.crowd.site.data.dto.ProjectDetailsDTO;
 
 /**
@@ -11,7 +11,7 @@ import com.mooctest.crowd.site.data.dto.ProjectDetailsDTO;
  */
 public interface OperationMediator {
 
-    ProjectDetailsDTO createCrowdProject(ProjectDetailsCommand command);
+    ProjectDetailsDTO createCrowdProject(CrowdTestProjectCommand command);
 
-    CrowdTestProject updateProject(CrowdTestProject project, ProjectDetailsCommand projectDetailsCommand);
+    CrowdTestProject updateProject(CrowdTestProject project, CrowdTestProjectCommand crowdTestProjectCommand);
 }

+ 7 - 5
site/src/main/java/com/mooctest/crowd/site/mediator/impl/OperationMediatorImpl.java

@@ -2,7 +2,7 @@ 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.command.CrowdTestProjectCommand;
 import com.mooctest.crowd.site.data.dto.ProjectDetailsDTO;
 import com.mooctest.crowd.site.data.vo.CrowdProjectVO;
 import com.mooctest.crowd.site.mediator.OperationMediator;
@@ -21,17 +21,19 @@ public class OperationMediatorImpl implements OperationMediator {
     private CrowdTestProjectRepo projectRepo;
 
     @Override
-    public ProjectDetailsDTO createCrowdProject(ProjectDetailsCommand command) {
+    public ProjectDetailsDTO createCrowdProject(CrowdTestProjectCommand command) {
         CrowdTestProject project = command.toCrowdProject();
         ProjectDetailsDTO projectDetailsDTO = new ProjectDetailsDTO();
-        projectDetailsDTO.setProjectDetails(new CrowdProjectVO(projectRepo.saveCreateCrowdTestProject(project)));
+        projectRepo.saveCrowdTestProject(project);
+        projectDetailsDTO.setProjectDetails(new CrowdProjectVO(project));
         return projectDetailsDTO;
     }
 
     @Override
-    public CrowdTestProject updateProject(CrowdTestProject project, ProjectDetailsCommand projectDetailsCommand) {
-        CrowdTestProject updateProject = projectDetailsCommand.toCrowdProject();
+    public CrowdTestProject updateProject(CrowdTestProject project, CrowdTestProjectCommand crowdTestProjectCommand) {
+        CrowdTestProject updateProject = crowdTestProjectCommand.toCrowdProject();
         updateProject.setId(project.getId());
+        updateProject.setCode(project.getCode());
         return updateProject;
     }
 }

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

@@ -1,6 +1,6 @@
 package com.mooctest.crowd.site.service;
 
-import com.mooctest.crowd.site.command.ProjectDetailsCommand;
+import com.mooctest.crowd.site.command.CrowdTestProjectCommand;
 import com.mooctest.crowd.site.data.dto.ProjectDetailsDTO;
 
 /**
@@ -11,9 +11,9 @@ import com.mooctest.crowd.site.data.dto.ProjectDetailsDTO;
 public interface CrowdProjectService {
     ProjectDetailsDTO getProjectDetails(String projectCode);
 
-    ProjectDetailsDTO createCrowdProject(ProjectDetailsCommand command);
+    ProjectDetailsDTO createCrowdProject(CrowdTestProjectCommand command);
 
-    ProjectDetailsDTO updateProject(String projectCode, ProjectDetailsCommand projectDetailsCommand);
+    ProjectDetailsDTO updateProject(String projectCode, CrowdTestProjectCommand crowdTestProjectCommand);
 
     void deleteProject(Long projectId, Long userId);
 }

+ 7 - 6
site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdProjectServiceImpl.java

@@ -4,7 +4,7 @@ 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.command.CrowdTestProjectCommand;
 import com.mooctest.crowd.site.data.dto.ProjectDetailsDTO;
 import com.mooctest.crowd.site.data.enums.ProjectType;
 import com.mooctest.crowd.site.data.vo.CrowdProjectVO;
@@ -43,24 +43,25 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
     }
 
     @Override
-    public ProjectDetailsDTO createCrowdProject(ProjectDetailsCommand command) {
+    public ProjectDetailsDTO createCrowdProject(CrowdTestProjectCommand command) {
         CrowdTestProject project = command.toCrowdProject();
         project.setStatus(CrowdTestProjectStatus.CREATED);
         log.info("\n"+project.toString()+"\n");
         String projectCode = codeUtil.generateFlowCode(ProjectType.getCode(new Integer(command.getType())));
         project.setCode(projectCode);
         ProjectDetailsDTO projectDetailsDTO = new ProjectDetailsDTO();
-        projectDetailsDTO.setProjectDetails(new CrowdProjectVO(projectRepo.saveCreateCrowdTestProject(project)));
+        projectRepo.saveCrowdTestProject(project);
+        projectDetailsDTO.setProjectDetails(new CrowdProjectVO(project));
         return projectDetailsDTO;
     }
 
     @Override
-    public ProjectDetailsDTO updateProject(String projectCode, ProjectDetailsCommand projectDetailsCommand) {
+    public ProjectDetailsDTO updateProject(String projectCode, CrowdTestProjectCommand crowdTestProjectCommand) {
         CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
-        if (project.getUserId() != projectDetailsCommand.getUserId())
+        if (project.getUserId() != crowdTestProjectCommand.getUserId())
             throw new BaseException("UserId不一致");
         //todo 后面需要加入是否有权限进行更新
-        projectRepo.saveCreateCrowdTestProject(operationMediator.updateProject(project, projectDetailsCommand));
+        projectRepo.saveCrowdTestProject(operationMediator.updateProject(project, crowdTestProjectCommand));
         return getProjectDetails(projectCode);
     }
 

+ 0 - 1
site/src/test/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImplTest.java

@@ -3,7 +3,6 @@ package com.mooctest.crowd.site.mediator.impl;
 import com.mooctest.crowd.domain.domainobject.Account;
 import com.mooctest.crowd.domain.factory.AccountFactory;
 import com.mooctest.crowd.site.command.AccountCommand;
-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.*;