Просмотр исходного кода

Merge branch 'feature-V2.0' of http://git.mooctest.com/crowd-2019/crowd-test-service-backend into feature-V2.0

 Conflicts:
	site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdProjectServiceImpl.java
xuxuan 5 лет назад
Родитель
Сommit
f99906d3af
26 измененных файлов с 410 добавлено и 67 удалено
  1. 18 0
      core/src/main/java/com/mooctest/crowd/domain/dao/ApplicationTypeDao.java
  2. 18 0
      core/src/main/java/com/mooctest/crowd/domain/dao/ApplicationTypeToTestTypeDao.java
  3. 2 2
      core/src/main/java/com/mooctest/crowd/domain/dao/CrowdTestProjectDao.java
  4. 18 0
      core/src/main/java/com/mooctest/crowd/domain/dao/TestTypeDao.java
  5. 16 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/ApplicationType.java
  6. 16 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/ApplicationTypeToTestType.java
  7. 1 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestProject.java
  8. 0 1
      core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestTask.java
  9. 17 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/TestType.java
  10. 25 0
      core/src/main/java/com/mooctest/crowd/domain/model/ApplicationTypePO.java
  11. 24 0
      core/src/main/java/com/mooctest/crowd/domain/model/ApplicationTypeToTestTypePO.java
  12. 24 0
      core/src/main/java/com/mooctest/crowd/domain/model/TestTypePO.java
  13. 1 1
      core/src/main/java/com/mooctest/crowd/domain/repository/CrowdTestProjectRepo.java
  14. 0 0
      site/src/main/java/com/mooctest/crowd/site/controller/CommonController.java
  15. 23 2
      site/src/main/java/com/mooctest/crowd/site/controller/CrowdProjectController.java
  16. 25 0
      site/src/main/java/com/mooctest/crowd/site/data/dto/IndexInfoDTO.java
  17. 12 4
      site/src/main/java/com/mooctest/crowd/site/data/enums/ProjectType.java
  18. 14 0
      site/src/main/java/com/mooctest/crowd/site/data/vo/ApplicationTypeVO.java
  19. 14 0
      site/src/main/java/com/mooctest/crowd/site/data/vo/TestTypeVO.java
  20. 5 4
      site/src/main/java/com/mooctest/crowd/site/mediator/ViewMediator.java
  21. 16 6
      site/src/main/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImpl.java
  22. 3 0
      site/src/main/java/com/mooctest/crowd/site/service/CommonService.java
  23. 4 0
      site/src/main/java/com/mooctest/crowd/site/service/CrowdProjectService.java
  24. 6 2
      site/src/main/java/com/mooctest/crowd/site/service/impl/CommonServiceImpl.java
  25. 83 45
      site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdProjectServiceImpl.java
  26. 25 0
      site/src/main/resources/application.yml

+ 18 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/ApplicationTypeDao.java

@@ -0,0 +1,18 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.ApplicationTypePO;
+import org.springframework.data.repository.CrudRepository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+import java.util.Optional;
+
+@Transactional
+public interface ApplicationTypeDao extends CrudRepository<ApplicationTypePO, Long>{
+
+    ApplicationTypePO findByCode(String code);
+
+    Optional<ApplicationTypePO> findById(Long id);
+
+    List<ApplicationTypePO> findAll();
+}

+ 18 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/ApplicationTypeToTestTypeDao.java

@@ -0,0 +1,18 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.ApplicationTypeToTestTypePO;
+import org.springframework.data.repository.CrudRepository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+import java.util.Optional;
+
+@Transactional
+public interface ApplicationTypeToTestTypeDao extends CrudRepository<ApplicationTypeToTestTypePO, Long>{
+
+    ApplicationTypeToTestTypePO findByCode(String code);
+
+    Optional<ApplicationTypeToTestTypePO> findById(Long id);
+
+    List<ApplicationTypeToTestTypePO> findAll();
+}

+ 2 - 2
core/src/main/java/com/mooctest/crowd/domain/dao/CrowdTestProjectDao.java

@@ -32,9 +32,9 @@ public interface CrowdTestProjectDao extends CrudRepository<CrowdTestProjectPO,
 
     List<CrowdTestProjectPO> findByRegionalManagerIdAndIsDeleted(Long regionalManagerId, int isDeleted);
 
-    List<CrowdTestProjectPO> findAllByStatusLessThanAndProjectDistributionTypeId(Integer status, Long distribution);
+    List<CrowdTestProjectPO> findAllByStatusLessThanAndProjectDistributionTypeIdAndIsDeletedAndUserIdIsNot(Integer status, Long distribution, int isDeleted, Long userId);
 
-    List<CrowdTestProjectPO> findByStatusLessThanAndProjectDistributionTypeId(Integer status, Long distributionType);
+    List<CrowdTestProjectPO> findByStatusLessThanAndProjectDistributionTypeIdAndIsDeletedAndUserIdIsNot(Integer status, Long distributionType, int isDeleted, Long userId);
 
     @Query(value = "SELECT new com.mooctest.crowd.domain.model.RankInfo(SUM(p.quotedPrice), p.userId) FROM CrowdTestProjectPO p where p.status>1 GROUP BY p.userId ORDER BY SUM(p.quotedPrice) DESC")
     List<RankInfo> findTotalPriceOfUser(Pageable pageable);

+ 18 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/TestTypeDao.java

@@ -0,0 +1,18 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.TestTypePO;
+import org.springframework.data.repository.CrudRepository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+import java.util.Optional;
+
+@Transactional
+public interface TestTypeDao extends CrudRepository<TestTypePO, Long>{
+
+    TestTypePO findByCode(String code);
+
+    Optional<TestTypePO> findById(Long id);
+
+    List<TestTypePO> findAll();
+}

+ 16 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/ApplicationType.java

@@ -0,0 +1,16 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import lombok.Data;
+
+import javax.persistence.*;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 17:54
+ */
+@Data
+public class ApplicationType {
+    private Long id;
+    private String code;
+    private String name;
+}

+ 16 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/ApplicationTypeToTestType.java

@@ -0,0 +1,16 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import lombok.Data;
+
+import javax.persistence.*;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 17:54
+ */
+@Data
+public class ApplicationTypeToTestType {
+    private Long id;
+    private String applicationTypeCode;
+    private String testTypeCode;
+}

+ 1 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestProject.java

@@ -668,6 +668,7 @@ public class CrowdTestProject {
         }else{
             //结束项目时查看是否已结束任务
             if(this.getCrowdTestTaskList().stream().filter(task -> task.getStatus()!=CrowdTestTaskStatus.HAS_REJECTED)
+                    .filter(task -> task.getStatus() != CrowdTestTaskStatus.HAS_TIME_OUT)
                     .anyMatch(task -> task.getStatus()!=CrowdTestTaskStatus.HAS_FINISHED)){
                 throw new CrowdTestTaskException("存在未结束的任务,项目不能被提交");
             }

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

@@ -152,7 +152,6 @@ public class CrowdTestTask {
             throw new CrowdTestTaskException("当前状态不能提交任务");
         }
         this.setStatus(CrowdTestTaskStatus.HAS_COMMITED);
-        System.out.println(this.status);
         this.setEndTime(new Timestamp(System.currentTimeMillis()));
     }
 

+ 17 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/TestType.java

@@ -0,0 +1,17 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import lombok.Data;
+
+import javax.persistence.*;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 17:54
+ */
+@Data
+@Entity(name = "test_type")
+public class TestType {
+    private Long id;
+    private String code;
+    private String name;
+}

+ 25 - 0
core/src/main/java/com/mooctest/crowd/domain/model/ApplicationTypePO.java

@@ -0,0 +1,25 @@
+package com.mooctest.crowd.domain.model;
+
+import lombok.Data;
+
+import javax.persistence.*;
+import java.sql.Timestamp;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 17:54
+ */
+@Data
+@Entity(name = "application_type")
+public class ApplicationTypePO {
+    @Id
+    @Column(name = "AT_ID")
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @Column(name = "AT_CODE")
+    private String code;
+
+    @Column(name = "AT_NAME")
+    private String name;
+}

+ 24 - 0
core/src/main/java/com/mooctest/crowd/domain/model/ApplicationTypeToTestTypePO.java

@@ -0,0 +1,24 @@
+package com.mooctest.crowd.domain.model;
+
+import lombok.Data;
+
+import javax.persistence.*;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 17:54
+ */
+@Data
+@Entity(name = "application_type_to_test_type")
+public class ApplicationTypeToTestTypePO {
+    @Id
+    @Column(name = "ATTTT_ID")
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @Column(name = "ATTTT_AT_CODE")
+    private String applicationTypeCode;
+
+    @Column(name = "ATTTT_TT_CODE")
+    private String testTypeCode;
+}

+ 24 - 0
core/src/main/java/com/mooctest/crowd/domain/model/TestTypePO.java

@@ -0,0 +1,24 @@
+package com.mooctest.crowd.domain.model;
+
+import lombok.Data;
+
+import javax.persistence.*;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 17:54
+ */
+@Data
+@Entity(name = "test_type")
+public class TestTypePO {
+    @Id
+    @Column(name = "TT_ID")
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @Column(name = "TT_CODE")
+    private String code;
+
+    @Column(name = "TT_NAME")
+    private String name;
+}

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

@@ -250,7 +250,7 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
      * @param crowdTestTaskCode
      * @return
      */
-    private List<CrowdTestReport> getCrowdTestReportByCrowdTestTask(String crowdTestTaskCode) {
+    public List<CrowdTestReport> getCrowdTestReportByCrowdTestTask(String crowdTestTaskCode) {
         List<CrowdTestReportPO> crowdTestReportPOList = crowdTestReportDao.findByDependencyCodeAndIsDeleted(crowdTestTaskCode, DeletedStatus.isNotDeleted);
         List<CrowdTestReport> crowdTestReportListResult = new ArrayList<>();
         for(CrowdTestReportPO crowdTestReportPO : crowdTestReportPOList){

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
site/src/main/java/com/mooctest/crowd/site/controller/CommonController.java


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

@@ -44,7 +44,8 @@ public class CrowdProjectController {
         if (result.hasErrors())
             throw new BaseException(result.getFieldErrors().toString());
         else if (!crowdTestProjectCommand.isLegal())
-            throw new BaseException("信息不合法,项目可见性存在问题");
+            throw new BaseException("信息不合法,项目可见性必须选择指定的市");
+//            throw new BaseException("信息不合法,项目可见性存在问题");
         return projectService.createCrowdProject(crowdTestProjectCommand);
     }
 
@@ -85,7 +86,8 @@ public class CrowdProjectController {
         if (result.hasErrors())
             throw new BaseException(result.getFieldErrors().toString());
         else if (!crowdTestProjectCommand.isLegal())
-            throw new BaseException("信息不合法,项目可见性存在问题");
+            throw new BaseException("信息不合法,项目可见性必须选择指定的市");
+//            throw new BaseException("信息不合法,项目可见性存在问题");
         return projectService.updateProject(projectCode, crowdTestProjectCommand);
     }
 
@@ -177,4 +179,23 @@ public class CrowdProjectController {
         return projectService.getRegionalManagerList();
     }
 
+    /**
+     * 修正数据库信息
+     * @param projectCode
+     * @return
+     */
+    @RequestMapping(value = "/api/modify/{projectCode}", method = RequestMethod.GET)
+    public boolean modifyData(@PathVariable("projectCode") String projectCode){
+        return projectService.modifyData(projectCode);
+    }
+
+    /**
+     * 修正数据库信息
+     * @return
+     */
+    @RequestMapping(value = "/api/modify", method = RequestMethod.GET)
+    public boolean modifyData(){
+        return projectService.modifyAllData();
+    }
+
 }

+ 25 - 0
site/src/main/java/com/mooctest/crowd/site/data/dto/IndexInfoDTO.java

@@ -0,0 +1,25 @@
+package com.mooctest.crowd.site.data.dto;
+
+import com.mooctest.crowd.site.data.vo.ApplicationTypeVO;
+import com.mooctest.crowd.site.data.vo.EvolutionAgencyVO;
+import com.mooctest.crowd.site.data.vo.TestTypeVO;
+import com.mooctest.crowd.site.data.vo.UserVO;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.7.15 20:15
+ */
+@Data
+public class IndexInfoDTO {
+
+    private List<TestTypeVO> testTypeList;
+    private List<ApplicationTypeVO> applicationTypeList;
+    private List<EvolutionAgencyVO> agencyRank;
+    private List<UserVO> userRank;
+//    private List<String> imgList;
+//    private List<CrowdTaskVO> hotTaskList;
+//    private List<PieChartDataVO> systemStatistics;
+}

+ 12 - 4
site/src/main/java/com/mooctest/crowd/site/data/enums/ProjectType.java

@@ -7,12 +7,20 @@ package com.mooctest.crowd.site.data.enums;
  */
 public enum ProjectType {
     JKCS("JKCS", "接口测试",0),
-    LDSM("LDSM", "安全漏洞扫描", 1),
-    FXPG("FXPG","风险评估", 2),
-    YMAQSJ("YMAQSJ", "源代码安全审计", 3),
+    JRXCE("JRXCE", "兼容性测试", 1),
+    KKXCS("KKXCS","可靠性测试", 2),
+    WDXCS("WDXCS", "稳定性测试", 3),
     GNCS("GNCS", "功能测试", 4),
     XNCS("XNCS", "性能测试", 5),
-    GNYYXCS("GNYYXCS", "功能和易用性测试", 6);
+    AQCS("AQCS", "安全测试", 6),
+    YYXCS("YYXCS", "易用性测试", 7),
+    YYGGZD("YYGGZD", "应用故障诊断", 8),
+    YYLDSM("YYLDSM", "应用漏洞扫描", 9),
+    DMAQSJ("DMAQSJ", "代码安全审计", 10),
+    FXPG("FXPG", "风险评估", 11),
+    DBCP("DBCP", "等保测评", 12),
+    PGPJ("PGPJ", "评估评价", 13),
+    DZCS("DZCS", "定制测试", 14);
 
     private String typeCode;
     private String typeName;

+ 14 - 0
site/src/main/java/com/mooctest/crowd/site/data/vo/ApplicationTypeVO.java

@@ -0,0 +1,14 @@
+package com.mooctest.crowd.site.data.vo;
+
+import lombok.Data;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 17:54
+ */
+@Data
+public class ApplicationTypeVO {
+    private Long id;
+    private String code;
+    private String name;
+}

+ 14 - 0
site/src/main/java/com/mooctest/crowd/site/data/vo/TestTypeVO.java

@@ -0,0 +1,14 @@
+package com.mooctest.crowd.site.data.vo;
+
+import lombok.Data;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 17:54
+ */
+@Data
+public class TestTypeVO {
+    private Long id;
+    private String code;
+    private String name;
+}

+ 5 - 4
site/src/main/java/com/mooctest/crowd/site/mediator/ViewMediator.java

@@ -1,14 +1,13 @@
 package com.mooctest.crowd.site.mediator;
 
 import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
-import com.mooctest.crowd.domain.domainobject.EvaluationAgency;
 import com.mooctest.crowd.domain.domainobject.User;
-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 com.mooctest.crowd.site.data.vo.AgencyVO;
+import com.mooctest.crowd.site.command.LoginCommand;
+import com.mooctest.crowd.site.command.RegisterCommand;
+import com.mooctest.crowd.site.data.dto.*;
 import com.mooctest.crowd.site.data.vo.BaseAuthVO;
 import com.mooctest.crowd.site.data.vo.EvolutionAgencyVO;
 import com.mooctest.crowd.site.data.vo.RegionalManagerVO;
@@ -27,6 +26,8 @@ public interface ViewMediator {
 
     IndexDTO renderIndex();
 
+    IndexInfoDTO renderIndexInfos();
+
     MyCrowdDTO renderMyCrowd(Long userId);
 
     TaskSquareDTO renderTaskSquare();

+ 16 - 6
site/src/main/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImpl.java

@@ -92,6 +92,11 @@ public class WebMediatorImpl implements ViewMediator {
     }
 
     @Override
+    public IndexInfoDTO renderIndexInfos() {
+        return null;
+    }
+
+    @Override
     public IndexDTO renderIndex() {
 
         Pageable pageable = PageRequest.of(0, 10);
@@ -108,9 +113,10 @@ public class WebMediatorImpl implements ViewMediator {
             return null;
         }).filter(Objects::nonNull).collect(Collectors.toList());
         //获取机构排名
+        String agencyName = agencyDao.findById(Long.parseLong(agencyId)).get().getEvaluationAgencyName();
         List<EvolutionAgencyVO> agencyRanks = taskToUserDao.findTotalPriceOfAgency(pageable).stream().map(rankInfo -> {
             EvaluationAgencyPO agency = agencyDao.findByUserId(rankInfo.getEntityId());
-            if (agency!=null) {
+            if (agency!=null && !agency.getEvaluationAgencyName().equals(agencyName)) {
                 EvolutionAgencyVO agencyVO = new EvolutionAgencyVO();
                 agencyVO.setName(agency.getEvaluationAgencyName());
                 agencyVO.setLogo(agency.getAgencyPhoto());
@@ -189,12 +195,13 @@ public class WebMediatorImpl implements ViewMediator {
             //定向
             List<CrowdTestProjectPO> acceptableProject = crowdTestProjectPOList.stream().filter(crowdTestProjectPO -> crowdTestProjectPO.getStatus()==CrowdTestProjectStatus.HAS_RELEASED).collect(Collectors.toList());
             //广场的
-            acceptableProject.addAll(projectDao.findAllByStatusLessThanAndProjectDistributionTypeId(CrowdTestProjectStatus.HAS_RECEIVED, 2L));
+            acceptableProject.addAll(projectDao.findAllByStatusLessThanAndProjectDistributionTypeIdAndIsDeletedAndUserIdIsNot(CrowdTestProjectStatus.HAS_RECEIVED, 2L,DeletedStatus.isNotDeleted, userId));
             //区域的
-            acceptableProject.addAll(projectDao.findByStatusLessThanAndProjectDistributionTypeId(CrowdTestProjectStatus.HAS_RECEIVED, 1L)
+            acceptableProject.addAll(projectDao.findByStatusLessThanAndProjectDistributionTypeIdAndIsDeletedAndUserIdIsNot(CrowdTestProjectStatus.HAS_RECEIVED, 1L,DeletedStatus.isNotDeleted, userId)
                     .stream().filter(crowdTestProjectPO -> user.getRegionalManager().getRegionalList().stream()
                             .anyMatch(reg -> (reg.getProvince().equals("*") || reg.getProvince().equals(crowdTestProjectPO.getDistributionProvince())) && (reg.getCity().equals("*")||reg.getCity().equals(crowdTestProjectPO.getDistributionCity())))).collect(Collectors.toList()));
-            myCrowdDTO.setAcceptableProjects(acceptableProject.stream().map(crowdTestProjectPO -> {
+            myCrowdDTO.setAcceptableProjects(acceptableProject.stream().sorted(Comparator.comparing(CrowdTestProjectPO::getCreateTime).thenComparing(CrowdTestProjectPO::getStatus).reversed())
+                    .map(crowdTestProjectPO -> {
                 CrowdTestProject project = new CrowdTestProject();
                 BeanUtils.copyProperties(crowdTestProjectPO, project);
                 return new CrowdProjectVO(project); }).collect(Collectors.toList()));
@@ -214,7 +221,7 @@ public class WebMediatorImpl implements ViewMediator {
         if (user.getRoleList().stream().anyMatch(role -> role.getName().equals("evaluationAgency"))) {
             List<TaskToUserPO> taskToUserPOS = taskToUserDao.findByUserId(user.getId());
             if(taskToUserPOS != null && taskToUserPOS.size() > 0){
-                allTaskOfAgency = taskToUserPOS.stream()
+                allTaskOfAgency = taskToUserPOS.stream().sorted(Comparator.comparing(TaskToUserPO::getAcceptTime))
                         .map(taskToUserPO -> {
                             CrowdTestTaskPO crowdTestTaskPO = taskDao.findByCodeAndIsDeleted(taskToUserPO.getTaskCode(), DeletedStatus.isNotDeleted);
                             if(crowdTestTaskPO != null){
@@ -534,12 +541,14 @@ public class WebMediatorImpl implements ViewMediator {
         if (project.getUserId().equals(user.getId())||user.getRoleList().stream().anyMatch(role -> role.getName().equals("SystemAdministrator"))){
             if (project.getStatus() < CrowdTestProjectStatus.HAS_RECEIVED){
                 operationControl.setUpdate(true);
+                operationControl.setReceive(false);
             } else if (project.getStatus() == CrowdTestProjectStatus.HAS_COMMITED){
                 operationControl.setConfirmFinish(true);
             }
         }
         //区域管理员视角
-        if (user.getRoleList().stream().anyMatch(role -> role.getName().equals("RegionalManager"))){
+        else if (user.getRoleList().stream().anyMatch(role -> role.getName().equals("RegionalManager"))){
+            operationControl.setUpdate(false);
             if ((project.getProjectDistributionTypeId() == 0 && project.getRegionalManagerId().equals(user.getId()))
                     || (project.getProjectDistributionTypeId()>0 && project.getStatus()>=CrowdTestProjectStatus.HAS_RECEIVED && project.getRegionalManagerId().equals(user.getId()))){
                 if (project.getStatus() == CrowdTestProjectStatus.HAS_RELEASED){
@@ -558,6 +567,7 @@ public class WebMediatorImpl implements ViewMediator {
                     }
                     if (project.getCrowdTestReportForProject()!=null){
                         operationControl.setFinish(true);
+                        operationControl.setUploadReport(false);
                     }
                 } else if (project.getStatus() == CrowdTestProjectStatus.HAS_COMMITED){
                     operationControl.setCreateTask(false);

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

@@ -1,6 +1,7 @@
 package com.mooctest.crowd.site.service;
 
 import com.mooctest.crowd.site.data.dto.IndexDTO;
+import com.mooctest.crowd.site.data.dto.IndexInfoDTO;
 import com.mooctest.crowd.site.data.dto.MyCrowdDTO;
 import org.springframework.stereotype.Service;
 
@@ -8,5 +9,7 @@ import org.springframework.stereotype.Service;
 public interface CommonService {
     IndexDTO getIndexInfo();
 
+    IndexInfoDTO getIndexInfos();
+
     MyCrowdDTO getPersonCrowd(Long userId);
 }

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

@@ -44,4 +44,8 @@ public interface CrowdProjectService {
     ProjectDetailsDTO commitProject(String projectCode, Long userId);
 
     ProjectDetailsDTO confirmFinished(String projectCode, Long userId);
+
+    boolean modifyData(String projectCode);
+
+    boolean modifyAllData();
 }

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

@@ -1,6 +1,7 @@
 package com.mooctest.crowd.site.service.impl;
 
 import com.mooctest.crowd.site.data.dto.IndexDTO;
+import com.mooctest.crowd.site.data.dto.IndexInfoDTO;
 import com.mooctest.crowd.site.data.dto.MyCrowdDTO;
 import com.mooctest.crowd.site.mediator.ViewMediator;
 import com.mooctest.crowd.site.service.CommonService;
@@ -15,14 +16,17 @@ public class CommonServiceImpl implements CommonService {
     @Qualifier("WebMediator")
     private ViewMediator viewMediator;
 
-
-
     @Override
     public IndexDTO getIndexInfo() {
         return viewMediator.renderIndex();
     }
 
     @Override
+    public IndexInfoDTO getIndexInfos() {
+        return viewMediator.renderIndexInfos();
+    }
+
+    @Override
     public MyCrowdDTO getPersonCrowd(Long userId) {
         return viewMediator.renderMyCrowd(userId);
     }

+ 83 - 45
site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdProjectServiceImpl.java

@@ -25,8 +25,6 @@ import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -60,19 +58,16 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
     private OperationMediator operationMediator;
 
 
-    /**
-     *
-     * 过滤掉已经结束的
-     * @return
-     */
+
+
     @Override
     public List<CrowdTestProjectPO> findAll() {
-        return projectRepo.findAll();
+        return  projectRepo.findAll();
     }
 
     @Override
     public ProjectDetailsDTO getProjectDetails(String projectCode, Long userId) {
-        if (userId == null)
+        if (userId==null)
             return viewMediator.renderProjectDetails(projectRepo.getByProjectCode(projectCode), null);
         return viewMediator.renderProjectDetails(projectRepo.getByProjectCode(projectCode), userRepo.getByID(userId));
     }
@@ -81,7 +76,7 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
     public ProjectDetailsDTO createCrowdProject(CrowdTestProjectCommand command) {
         CrowdTestProject project = command.toCrowdProject();
         project.setStatus(CrowdTestProjectStatus.HAS_RELEASED);
-        log.info("\n" + project.toString() + "\n");
+        log.info("\n"+project.toString()+"\n");
         String projectCode = GenerateFlowCodeUtil.generateFlowCode("PROJ");
         project.setCode(projectCode);
         ProjectDetailsDTO projectDetailsDTO = new ProjectDetailsDTO();
@@ -96,7 +91,7 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
         if (project.getStatus() == CrowdTestProjectStatus.HAS_FINISHED)
             throw new BaseException("结项项目禁止修改!");
         if (!project.getUserId().equals(crowdTestProjectCommand.getUserId()))
-            throw new BaseException("UserId不一致, newUserId: " + crowdTestProjectCommand.getUserId() + ", oldUserId: " + project.getUserId());
+            throw new BaseException("UserId不一致, newUserId: "+crowdTestProjectCommand.getUserId()+", oldUserId: "+project.getUserId());
         //todo 后面需要加入是否有权限进行更新
         projectRepo.saveCrowdTestProject(operationMediator.updateProject(project, crowdTestProjectCommand));
         return getProjectDetails(projectCode, crowdTestProjectCommand.getUserId());
@@ -123,9 +118,9 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
             task.setEndTime(command.getDatetime());
             task.setDeadTime(command.getDatetime());
             task.setRequirementFile(command.getFile());
-            task.setName(command.getName() + "-" + type);
-            task.setQuotedPrice(command.getPrice() / command.getType().size());
-            task.setFixedPrice(command.getPrice() / command.getType().size());
+            task.setName(command.getName()+"-"+type);
+            task.setQuotedPrice(command.getPrice()/command.getType().size());
+            task.setFixedPrice(command.getPrice()/command.getType().size());
             tasks.add(task);
         });
 
@@ -150,7 +145,7 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
     }
 
     @Override
-    public List<CrowdTestProject> generateProjectByExcel(Long userId, MultipartFile file) {
+    public List<CrowdTestProject> generateProjectByExcel(Long userId, MultipartFile file){
         User user = userRepo.getByID(userId);
         List<CrowdTestProject> projects = transferExcel2Projects(file);
         projects.forEach(project -> {
@@ -164,11 +159,11 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
             task.setEndTime(project.getEndTime());
             task.setDeadTime(project.getDeadTime());
             task.setRequirementFile(project.getRequirementFile());
-            task.setName(project.getName() + "-" + task.getType());
+            task.setName(project.getName()+"-"+task.getType());
             task.setQuotedPrice(project.getQuotedPrice());
             task.setFixedPrice(project.getFixedPrice());
             task.setDescription(project.getDescription());
-            if (user.getEvaluationAgency() == null)
+            if (user.getEvaluationAgency()==null)
                 task.setEvaluationAgencyId(1L);
             else
                 task.setEvaluationAgencyId(user.getEvaluationAgency().getId());
@@ -177,7 +172,7 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
             project.getCrowdTestReportForProject().setCode(GenerateFlowCodeUtil.generateReportCode());
             project.getCrowdTestReportForProject().setDependencyCode(project.getCode());
             project.getCrowdTestReportForProject().setDescription(project.getDescription());
-            project.getCrowdTestReportForProject().setName(project.getName() + "测试报告");
+            project.getCrowdTestReportForProject().setName(project.getName()+"测试报告");
             project.getCrowdTestReportForProject().setType(project.getType());
             project.getCrowdTestReportForProject().setTestObject(project.getName());
         });
@@ -221,7 +216,52 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
         return getProjectDetails(projectCode, userId);
     }
 
-    private List<CrowdTestProject> transferExcel2Projects(MultipartFile file) {
+    @Override
+    public boolean modifyData(String projectCode) {
+        CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
+        if(project.getStatus() == CrowdTestProjectStatus.HAS_FINISHED && project.getLinkMan().contains("先生")){
+            project.setRestPrice(0.00);
+            project.setJoinCount(1);
+            project.getCrowdTestTaskList().stream()
+                    .filter(crowdTestTask -> crowdTestTask.getStatus() == CrowdTestTaskStatus.HAS_FINISHED)
+                    .map(crowdTestTask -> {
+                crowdTestTask.setParticipantCount(1);
+                crowdTestTask.setAcceptedCount(1);
+                crowdTestTask.setParticipantHasCommittedCount(1);
+                crowdTestTask.setFullStatus(1);
+                TaskToUser taskToUser = new TaskToUser();
+                taskToUser.setValue(crowdTestTask.getCode(), crowdTestTask.getEvaluationAgencyId(), crowdTestTask.getQuotedPrice(),
+                        1,crowdTestTask.getDistributionType(), 1, crowdTestTask.getCreateTime());
+                taskToUser.setCommitReportTime(crowdTestTask.getCreateTime());
+                taskToUser.setIsCommitted(1);
+                taskToUser.setCommitTaskTime(crowdTestTask.getCreateTime());
+                List<CrowdTestReport> reportList = projectRepo.getCrowdTestReportByCrowdTestTask(crowdTestTask.getCode());
+                List<CrowdTestReport> testReportList = reportList.stream().peek(crowdTestReport -> crowdTestReport.setUserId(crowdTestTask.getEvaluationAgencyId())).collect(Collectors.toList());
+                taskToUser.setCrowdTestReportList(testReportList);
+                crowdTestTask.getAcceptedUserList().add(taskToUser);
+                return crowdTestTask;
+            }).collect(Collectors.toList());
+            List<CrowdTestReport> reportList = projectRepo.getCrowdTestReportByCrowdTestTask(project.getCode()).stream().peek(crowdTestReport -> crowdTestReport.setUserId(project.getRegionalManagerId())).collect(Collectors.toList());
+            project.setCrowdTestReportForProject(reportList.get(0));
+
+        }else{
+            project.setIsDeleted(1);
+            project.getCrowdTestTaskList().stream().peek(crowdTestTask -> crowdTestTask.setIsDeleted(1)).collect(Collectors.toList());
+        }
+        projectRepo.saveCrowdTestProject(project);
+        return true;
+    }
+
+    @Override
+    public boolean modifyAllData(){
+        List<CrowdTestProject> projectList = projectRepo.getAllCrowdTestProject();
+        for(CrowdTestProject crowdTestProject : projectList){
+            modifyData(crowdTestProject.getCode());
+        }
+        return true;
+    }
+
+    private List<CrowdTestProject> transferExcel2Projects(MultipartFile file){
         List<String> logList = new ArrayList<>();
         List<CrowdTestProject> projects = new ArrayList<>();
         Workbook workbook = null;
@@ -243,36 +283,36 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
 
         Row keyRow = sheet.getRow(0);
         int cellCount = keyRow.getPhysicalNumberOfCells();
-        log.info("CellCount: " + cellCount);
+        log.info("CellCount: "+cellCount);
         log.info("Rows: " + sheet.getPhysicalNumberOfRows());
-        for (int i = 1; i < sheet.getPhysicalNumberOfRows(); i++) {
+        for (int i = 1; i < sheet.getPhysicalNumberOfRows(); i++ ){
             CrowdTestProject project = CrowdTestProjectFactory.defaulstCrowdTestProject();
             CrowdTestReport report = CrowdTestProjectFactory.defaultProjectReport();
             Row row = sheet.getRow(i);
-            if (row == null) {
+            if (row == null){
                 logList.add("表中存在错误的单元格,请把与内容无关的单元格置空");
                 break;
             }
-            for (int j = 0; j < cellCount; j++) {
+            for (int j = 0; j < cellCount; j++){
                 Cell cell = row.getCell(j);
-                if (cell == null) {
+                if (cell == null ) {
                     logList.add("错误 - 行: " + (i + 1) + "; 列: " + (j + 1) + "; 原因: " + "单元格为空");
                     log.error("错误 - 行: " + (i + 1) + "; 列: " + (j + 1) + "; 原因: " + "单元格为空");
                     continue;
                 }
                 cell.setCellType(CellType.STRING);
-                log.info("ROW: " + i + ", COL: " + j + ", DATA: " + cell.getStringCellValue());
-                if (cell.getStringCellValue().trim().equals("")) {
+                log.info("ROW: "+i+", COL: "+j +", DATA: "+ cell.getStringCellValue());
+                if (cell.getStringCellValue().trim().equals("")){
                     logList.add("错误 - 行: " + (i + 1) + "; 列: " + (j + 1) + "; 原因: " + "单元格为空");
                     continue;
                 }
-                switch (j) {
+                switch (j){
                     case 0:
                         project.setName(cell.getStringCellValue().trim());
                         break;
                     case 1:
-                        if (!(cell.getStringCellValue().trim().equals("IOS") || cell.getStringCellValue().trim().equals("WEB") || cell.getStringCellValue().trim().equals("ANDROID"))) {
-                            logList.add("错误 - 行: " + (i + 1) + "; 列: " + (j + 1) + "; 原因: " + "测试平台数据不合法:" + cell.getStringCellValue());
+                        if(!(cell.getStringCellValue().trim().equals("IOS")||cell.getStringCellValue().trim().equals("WEB")||cell.getStringCellValue().trim().equals("ANDROID"))){
+                            logList.add("错误 - 行: " + (i + 1) + "; 列: " + (j + 1) + "; 原因: " + "测试平台数据不合法:"+cell.getStringCellValue());
                             break;
                         }
                         List<String> platforms = new ArrayList<>();
@@ -283,15 +323,15 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
                         project.setLinkMan(cell.getStringCellValue().trim());
                         break;
                     case 3:
-                        if (!isRightPhone(cell.getStringCellValue().trim())) {
-                            logList.add("错误 - 行: " + (i + 1) + "; 列: " + (j + 1) + "; 原因: " + "不合法的手机号码:" + cell.getStringCellValue());
+                        if (!isRightPhone(cell.getStringCellValue().trim())){
+                            logList.add("错误 - 行: " + (i + 1) + "; 列: " + (j + 1) + "; 原因: " + "不合法的手机号码:"+cell.getStringCellValue());
                             break;
                         }
                         project.setLinkManMobile(cell.getStringCellValue().trim());
                         break;
                     case 4:
-                        if (ProjectType.getCode(cell.getStringCellValue().trim()) == null) {
-                            logList.add("错误 - 行: " + (i + 1) + "; 列: " + (j + 1) + "; 原因: " + "错误的测试服务类型:" + cell.getStringCellValue());
+                        if (ProjectType.getCode(cell.getStringCellValue().trim())==null){
+                            logList.add("错误 - 行: " + (i + 1) + "; 列: " + (j + 1) + "; 原因: " + "错误的测试服务类型:"+cell.getStringCellValue());
                             break;
                         }
                         List<String> types = new ArrayList<>();
@@ -319,7 +359,7 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
         projects.forEach(project -> {
             log.info(project.toString());
         });
-        if (logList.size() > 0)
+        if (logList.size()>0)
             throw new Excel2ProjectException(logList);
         return projects;
     }
@@ -327,7 +367,7 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
     /**
      * 匹配平台类型 0,1,2 任意  ^[0-2](([,][0-2])?([,][0-2])?)$
      */
-    private boolean isPlatform(String str) throws PatternSyntaxException {
+    private boolean isPlatform(String str)throws PatternSyntaxException {
         String regExp = "^[0-2](([,][0-2])?([,][0-2])?)$";
         Pattern p = Pattern.compile(regExp);
         Matcher m = p.matcher(str);
@@ -337,7 +377,7 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
     /**
      * 匹配项目类型 0,1,2,3,4,5,6 任意  ^[0-6](([,][0-6])?([,][0-6])?([,][0-6])?([,][0-6])?([,][0-6])?([,][0-6])?)$
      */
-    private boolean isType(String str) throws PatternSyntaxException {
+    private boolean isType(String str)throws PatternSyntaxException {
         String regExp = "^[0-6](([,][0-6])?([,][0-6])?([,][0-6])?([,][0-6])?([,][0-6])?([,][0-6])?)$";
         Pattern p = Pattern.compile(regExp);
         Matcher m = p.matcher(str);
@@ -346,23 +386,21 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
 
     /**
      * 判断手机号或者座机是正确
-     *
      * @param phone
      * @return
      */
-    private boolean isRightPhone(String phone) {
-        if (phone.startsWith("0")) {
-            if (!isTel(phone)) {
+    private boolean isRightPhone(String phone){
+        if(phone.startsWith("0")){
+            if(!isTel(phone)){
                 return false;
             }
-        } else {
-            if (!(isChinaPhoneLegal(phone) || isHKPhoneLegal(phone))) {
+        }else{
+            if(!(isChinaPhoneLegal(phone) || isHKPhoneLegal(phone))){
                 return false;
             }
         }
         return true;
     }
-
     /**
      * 大陆手机号码11位数,匹配格式:前三位固定格式+后8位任意数
      * 此方法中前三位格式有:
@@ -382,7 +420,7 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
     /**
      * 香港手机号码8位数,5|6|8|9开头+7位任意数
      */
-    private boolean isHKPhoneLegal(String str) throws PatternSyntaxException {
+    private boolean isHKPhoneLegal(String str)throws PatternSyntaxException {
         String regExp = "^(5|6|8|9)\\d{7}$";
         Pattern p = Pattern.compile(regExp);
         Matcher m = p.matcher(str);
@@ -392,7 +430,7 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
     /**
      * 座机号
      */
-    private boolean isTel(String str) throws PatternSyntaxException {
+    private boolean isTel(String str)throws PatternSyntaxException {
         String regExp = "^0[1-9](\\d{1,2}\\-?)\\d{7,8}";
         Pattern p = Pattern.compile(regExp);
         Matcher m = p.matcher(str);

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

@@ -82,6 +82,31 @@ website:
 
 ---
 spring:
+  profiles: dev-pre
+  datasource:
+    url: jdbc:mysql://101.37.175.111:3306/crowd-test-service-pre?useSSL=false&useUnicode=yes&characterEncoding=UTF-8
+    username: mooctest
+    password: secr3t!
+  redis:
+    host: 59.42.10.53
+    pool: 6379
+    password: '#2019@callforttest@!'
+    jedis:
+      pool:
+        max-active: 8
+        max-idle: 8
+        max-wait: -1
+        min-idle: 0
+    database: 6
+user:
+  service:
+    baseUrl: http://59.42.10.53:8081
+
+website:
+  domain: mooctest.net
+
+---
+spring:
   profiles: pre
   datasource:
     url: jdbc:mysql://101.37.175.111:3306/crowd-test-service?useSSL=false&useUnicode=yes&characterEncoding=UTF-8

Некоторые файлы не были показаны из-за большого количества измененных файлов