git 5 年之前
父节点
当前提交
b3068b9074
共有 28 个文件被更改,包括 201 次插入82 次删除
  1. 2 2
      core/src/main/java/com/mooctest/crowd/domain/controller/CrowdTestProjectController.java
  2. 2 0
      core/src/main/java/com/mooctest/crowd/domain/dao/ApplicationTypeDao.java
  3. 5 3
      core/src/main/java/com/mooctest/crowd/domain/dao/CrowdTestProjectDao.java
  4. 2 0
      core/src/main/java/com/mooctest/crowd/domain/dao/FieldDao.java
  5. 2 0
      core/src/main/java/com/mooctest/crowd/domain/dao/TestTypeDao.java
  6. 3 1
      core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestProject.java
  7. 1 1
      core/src/main/java/com/mooctest/crowd/domain/domainobject/PersonalAuthentication.java
  8. 7 0
      core/src/main/java/com/mooctest/crowd/domain/factory/CrowdTestProjectFactory.java
  9. 7 2
      core/src/main/java/com/mooctest/crowd/domain/model/CrowdTestProjectPO.java
  10. 3 0
      core/src/main/java/com/mooctest/crowd/domain/repository/CrowdTestProjectRepo.java
  11. 2 2
      core/src/test/java/com/mooctest/crowd/domain/domainobject/CrowdTestProjectTest.java
  12. 1 1
      core/src/test/java/com/mooctest/crowd/domain/domainobject/CrowdTestReportTest.java
  13. 1 1
      core/src/test/java/com/mooctest/crowd/domain/domainobject/CrowdTestTaskTest.java
  14. 1 1
      core/src/test/java/com/mooctest/crowd/domain/repository/CrowdTestProjectRepoTest.java
  15. 1 2
      site/src/main/java/com/mooctest/crowd/site/command/ApplyAgencyAuthCommand.java
  16. 3 3
      site/src/main/java/com/mooctest/crowd/site/command/ApplyEnterpriseAuthCommand.java
  17. 3 5
      site/src/main/java/com/mooctest/crowd/site/command/ApplyPersonalAuthCommand.java
  18. 2 2
      site/src/main/java/com/mooctest/crowd/site/command/CrowdTestProjectCommand.java
  19. 2 2
      site/src/main/java/com/mooctest/crowd/site/command/GenerateProjectCommand.java
  20. 1 1
      site/src/main/java/com/mooctest/crowd/site/data/dto/CrowdTestSquareIndexDTO.java
  21. 13 4
      site/src/main/java/com/mooctest/crowd/site/data/vo/CrowdProjectVO.java
  22. 2 2
      site/src/main/java/com/mooctest/crowd/site/data/vo/CrowdTestProjectVO.java
  23. 1 2
      site/src/main/java/com/mooctest/crowd/site/data/vo/PersonalAuthVO.java
  24. 1 1
      site/src/main/java/com/mooctest/crowd/site/mediator/ViewMediator.java
  25. 38 14
      site/src/main/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImpl.java
  26. 2 1
      site/src/main/java/com/mooctest/crowd/site/service/CommonService.java
  27. 2 2
      site/src/main/java/com/mooctest/crowd/site/service/impl/CommonServiceImpl.java
  28. 91 27
      site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdProjectServiceImpl.java

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

@@ -197,7 +197,7 @@ public class CrowdTestProjectController {
 //        crowdTestProject.setName(projectName);
 //        crowdTestProject.setProjectDistributionTypeId(1L);
 //        crowdTestProject.setLinkMan("郭超");
-//        crowdTestProject.setPlatform("IOS");
+//        crowdTestProject.setApplicationType("IOS");
 //        crowdTestProject.setType("安卓测试");
 //        crowdTestProject.setDescription("测试内容");
 //        crowdTestProject.setLinkManMobile("13657094936");
@@ -546,7 +546,7 @@ public class CrowdTestProjectController {
 //    /**
 //     * 匹配平台类型 0,1,2 任意  ^[0-2](([,][0-2])?([,][0-2])?)$
 //     */
-//    private boolean isPlatform(String str)throws PatternSyntaxException {
+//    private boolean isApplicationType(String str)throws PatternSyntaxException {
 //        String regExp = "^[0-2](([,][0-2])?([,][0-2])?)$";
 //        Pattern p = Pattern.compile(regExp);
 //        Matcher m = p.matcher(str);

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

@@ -18,6 +18,8 @@ public interface ApplicationTypeDao extends CrudRepository<ApplicationTypePO, Lo
 
     Optional<ApplicationTypePO> findByCode(String code);
 
+    Optional<ApplicationTypePO> findByName(String name);
+
     Optional<ApplicationTypePO> findById(Long id);
 
     List<ApplicationTypePO> findAll();

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

@@ -1,9 +1,12 @@
 package com.mooctest.crowd.domain.dao;
 
 import com.mooctest.crowd.domain.model.CrowdTestProjectPO;
-import com.mooctest.crowd.domain.model.RankInfos;
 import com.mooctest.crowd.domain.model.RankInfo;
+<<<<<<< HEAD
+import com.mooctest.crowd.domain.model.RankInfos;
+=======
 import com.mooctest.crowd.domain.model.TechnicalArticlesPO;
+>>>>>>> 787ffae43e39377b3c3024cdf1d4e2e71cbb7a65
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.domain.Specification;
@@ -13,7 +16,6 @@ import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.CrudRepository;
 import org.springframework.data.repository.PagingAndSortingRepository;
 
-import javax.persistence.criteria.From;
 import javax.transaction.Transactional;
 import java.util.List;
 
@@ -65,7 +67,7 @@ public interface CrowdTestProjectDao extends CrudRepository<CrowdTestProjectPO,
     List<RankInfos> findTotalCountOfField(Pageable pageable);
 
 
-    @Query(value = "SELECT new com.mooctest.crowd.domain.model.RankInfos(COUNT(p.platform),0L ,p.platform) FROM CrowdTestProjectPO p where p.status>1 GROUP BY p.platform ORDER BY COUNT(p.platform) DESC")
+    @Query(value = "SELECT new com.mooctest.crowd.domain.model.RankInfos(COUNT(p.applicationType),0L ,p.applicationType) FROM CrowdTestProjectPO p where p.status>1 GROUP BY p.applicationType ORDER BY COUNT(p.applicationType) DESC")
     List<RankInfos> findTotalCountOfApplicationType(Pageable pageable);
 
     @Override

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

@@ -12,6 +12,8 @@ public interface FieldDao extends CrudRepository<FieldPO, Long>{
 
     Optional<FieldPO> findByCode(String code);
 
+    Optional<FieldPO> findByName(String name);
+
     Optional<FieldPO> findById(Long id);
 
     List<FieldPO> findAll();

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

@@ -12,6 +12,8 @@ public interface TestTypeDao extends CrudRepository<TestTypePO, Long>{
 
     Optional<TestTypePO> findByCode(String code);
 
+    Optional<TestTypePO> findByName(String name);
+    
     Optional<TestTypePO> findById(Long id);
 
     List<TestTypePO> findAll();

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

@@ -22,7 +22,7 @@ public class CrowdTestProject {
     private Long regionalManagerId;
     private Long projectDistributionTypeId;
     private String fieldType;
-    private String platform;
+    private String applicationType;
     private String type;
     private String linkMan;
     private String linkManMobile;
@@ -31,9 +31,11 @@ public class CrowdTestProject {
     private String requirementFile;
     private String distributionProvince;
     private String distributionCity;
+    private String valuationStandard;
     private Double quotedPrice;
     private Double fixedPrice;
     private Double restPrice;
+    private String entrustUnit;
     private int status;
     private Timestamp deadTime;
     private Timestamp endTime;

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

@@ -18,7 +18,7 @@ public class PersonalAuthentication{
     private Long userId;
     private String realName;
     private String IDCard;
-    private String IDCardPostivePhoto;//身份证正面照片
+    private String IDCardPositivePhoto;//身份证正面照片
     private String IDCardBackPhoto;//身份证反面照片
     private String sex;
     private String bankAccount;

+ 7 - 0
core/src/main/java/com/mooctest/crowd/domain/factory/CrowdTestProjectFactory.java

@@ -50,6 +50,13 @@ public class CrowdTestProjectFactory {
         return report;
     }
 
+    public static CrowdTestReport defaultTaskReport() {
+        CrowdTestReport report = new CrowdTestReport();
+        report.setScope(1);
+        report.setIsDeleted(0);
+        return report;
+    }
+
     public static CrowdTestTask defaultTask() {
         CrowdTestTask task = new CrowdTestTask();
         return task;

+ 7 - 2
core/src/main/java/com/mooctest/crowd/domain/model/CrowdTestProjectPO.java

@@ -4,7 +4,6 @@ import lombok.Data;
 
 import javax.persistence.*;
 import java.io.Serializable;
-import java.sql.Date;
 import java.sql.Timestamp;
 
 /**
@@ -40,7 +39,7 @@ public class CrowdTestProjectPO implements Serializable {
     private String fieldType;
 
     @Column(name = "CTP_PLATFORM")
-    private String platform;
+    private String applicationType;
 
     @Column(name = "CTP_TYPE")
     private String type;
@@ -66,6 +65,9 @@ public class CrowdTestProjectPO implements Serializable {
     @Column(name = "CTP_REQUIREMENT_FILE")
     private String requirementFile;
 
+    @Column(name = "CTP_VALUATION_STANDARD")
+    private String valuationStandard;
+
     @Column(name = "CTP_QUOTED_PRICE")
     private Double quotedPrice;
 
@@ -76,6 +78,9 @@ public class CrowdTestProjectPO implements Serializable {
     @Column(name = "CTP_REST_PRICE")
     private Double restPrice;
 
+    @Column(name = "CTP_ENTRUST_UNIT")
+    private String entrustUnit;
+
     @Column(name = "CTP_STATUS")
     private int status;
 

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

@@ -47,6 +47,9 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
     @Autowired
     private UserDao userDao;
 
+    @Autowired
+    private ApplicationTypeDao applicationTypeDao;
+
     @Override
     public Page<CrowdTestProjectPO> findAll(Specification specification, Pageable pageable) {
         return crowdTestProjectDao.findAll(specification, pageable);

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

@@ -46,7 +46,7 @@
 //        crowdTestProject.setRegionalManagerId(1L);
 //        crowdTestProject.setProjectDistributionTypeId(1L);
 //        crowdTestProject.setType("性能测试");
-//        crowdTestProject.setPlatform("IOS");
+//        crowdTestProject.setApplicationType("IOS");
 //        crowdTestProject.setLinkMan("郭超");
 //        crowdTestProject.setLinkManMobile("1233343443");
 //        crowdTestProject.setDescription("测试IOS应用");
@@ -330,7 +330,7 @@
 //        crowdTestProject.getRegionalManagerId();
 //        crowdTestProject.getUserId();
 //        crowdTestProject.getId();
-//        crowdTestProject.getPlatform();
+//        crowdTestProject.getApplicationType();
 //        crowdTestProject.getProjectDistributionTypeId();
 //        crowdTestProject.toString();
 //

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

@@ -31,7 +31,7 @@
 //        crowdTestProject.setRegionalManagerId(1L);
 //        crowdTestProject.setProjectDistributionTypeId(1L);
 //        crowdTestProject.setType("性能测试");
-//        crowdTestProject.setPlatform("IOS");
+//        crowdTestProject.setApplicationType("IOS");
 //        crowdTestProject.setLinkMan("郭超");
 //        crowdTestProject.setLinkManMobile("1233343443");
 //        crowdTestProject.setDescription("测试IOS应用");

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

@@ -31,7 +31,7 @@ public class CrowdTestTaskTest {
         crowdTestProject.setRegionalManagerId(1L);
         crowdTestProject.setProjectDistributionTypeId(1L);
         crowdTestProject.setType("性能测试");
-        crowdTestProject.setPlatform("IOS");
+        crowdTestProject.setApplicationType("IOS");
         crowdTestProject.setLinkMan("郭超");
         crowdTestProject.setLinkManMobile("1233343443");
         crowdTestProject.setDescription("测试IOS应用");

+ 1 - 1
core/src/test/java/com/mooctest/crowd/domain/repository/CrowdTestProjectRepoTest.java

@@ -78,7 +78,7 @@ public class CrowdTestProjectRepoTest {
         crowdTestProjectPO.setCode("PROR-IOS");
         crowdTestProjectPO.setUserId(user.getId());
         crowdTestProjectPO.setType("性能测试");
-        crowdTestProjectPO.setPlatform("IOS");
+        crowdTestProjectPO.setApplicationType("IOS");
         crowdTestProjectPO.setLinkMan("郭超");
         crowdTestProjectPO.setLinkManMobile("1233343443");
         crowdTestProjectPO.setDescription("测试IOS应用");

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

@@ -7,7 +7,6 @@ import lombok.Data;
 import org.springframework.beans.BeanUtils;
 
 import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Pattern;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -20,7 +19,7 @@ import java.util.stream.Collectors;
 public class ApplyAgencyAuthCommand {
     @NotNull(message = "机构名称不可为空")
     private String evaluationAgencyName;
-    @NotNull(message = "银行卡号不可为空")
+//    @NotNull(message = "银行卡号不可为空")
     private String bankAccount;
     @NotNull(message = "机构地址不可为空")
     private String address;

+ 3 - 3
site/src/main/java/com/mooctest/crowd/site/command/ApplyEnterpriseAuthCommand.java

@@ -25,11 +25,11 @@ public class ApplyEnterpriseAuthCommand {
     private String address;
     @NotNull(message = "请选择性别")
     private String sex;//2.0新加性别
-    @NotNull(message = "请上传身份证正面照")
+//    @NotNull(message = "请上传身份证正面照")
     private String IDCardPositivePhoto;//身份证正面照
-    @NotNull(message = "请上传身份证反面照")
+//    @NotNull(message = "请上传身份证反面照")
     private String IDCardBackPhoto;//身份证反面照
-    @NotNull(message = "请正确填写身份证过期时间")
+//    @NotNull(message = "请正确填写身份证过期时间")
     private Timestamp IDCardDeadTime;
 
 

+ 3 - 5
site/src/main/java/com/mooctest/crowd/site/command/ApplyPersonalAuthCommand.java

@@ -22,7 +22,7 @@ public class ApplyPersonalAuthCommand {
     @NotNull(message = "请填写真实姓名")
     private String realName;
 
-    @NotNull(message = "请选择性别")
+//    @NotNull(message = "请选择性别")
     private String sex;
 
     @JsonProperty(value = "IDCard")
@@ -35,15 +35,13 @@ public class ApplyPersonalAuthCommand {
     private String IDCardPositivePhoto;
 
     @JsonProperty(value = "IDCardBackPhoto")
-    @NotNull(message = "请上传身份证反面图片")
+//    @NotNull(message = "请上传身份证反面图片")
     private String IDCardBackPhoto;
 
     @JsonProperty(value = "IDCardDeadTime")
-    @NotNull(message = "请正确填写身份证过期时间")
+//    @NotNull(message = "请正确填写身份证过期时间")
     private Timestamp IDCardDeadTime;
 
-
-
     @NotNull(message = "请填写单位或者家庭地址")
     private String address;
 

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

@@ -29,7 +29,7 @@ public class CrowdTestProjectCommand {
     private String fieldType;
 
     @NotNull(message = "项目应用类型不可为空")
-    private String platform;
+    private String applicationType;
 
     @NotNull(message = "项目服务类型不可为空")
     private ArrayList<String> type;
@@ -74,7 +74,7 @@ public class CrowdTestProjectCommand {
         crowdTestProject.setLinkManMobile(this.contactPhone);
         crowdTestProject.setFieldType(this.fieldType);
         crowdTestProject.setType(JSONObject.toJSONString(this.type));
-        crowdTestProject.setPlatform(this.platform);
+        crowdTestProject.setApplicationType(this.applicationType);
         crowdTestProject.setDescription(this.desc);
         crowdTestProject.setRequirementFile(this.doc);
         crowdTestProject.setProjectFile(this.file);

+ 2 - 2
site/src/main/java/com/mooctest/crowd/site/command/GenerateProjectCommand.java

@@ -29,7 +29,7 @@ public class GenerateProjectCommand {
     @NotNull(message = "项目服务类型不可为空")
     private ArrayList<String> type;
 
-    private ArrayList<String> platform;
+    private ArrayList<String> applicationType;
 
     @NotNull(message = "项目描述不可为空")
     private String description;
@@ -71,7 +71,7 @@ public class GenerateProjectCommand {
         crowdTestProject.setLinkManMobile(this.contactPhone);
         crowdTestProject.setStatus(CrowdTestProjectStatus.HAS_FINISHED);
         crowdTestProject.setType(JSONObject.toJSONString(this.type));
-        crowdTestProject.setPlatform(JSONObject.toJSONString(this.platform));
+        crowdTestProject.setApplicationType(JSONObject.toJSONString(this.applicationType));
         crowdTestProject.setDescription(this.description);
         crowdTestProject.setRequirementFile(this.doc);
         crowdTestProject.setProjectFile(this.file);

+ 1 - 1
site/src/main/java/com/mooctest/crowd/site/data/dto/CrowdTestSquareIndexDTO.java

@@ -43,7 +43,7 @@ public class CrowdTestSquareIndexDTO {
         this.hotCrowdTestProjectVOs = list1.subList(0, 7);
         List<CrowdTaskVO> tasklist1 = crowdTestTaskVOS.subList(0, 6);
         List<CrowdTaskVO> tasklist2 = crowdTestTaskVOS.stream().sorted(Comparator.comparing(CrowdTaskVO::getAcceptedCount).reversed()).collect(Collectors.toList());
-        this.hotCrowdTaskVOs = crowdTestTaskVOS.subList(0, 7);
+        this.hotCrowdTaskVOs = tasklist2.subList(0, 7);
         this.crowdTestTaskVOS = tasklist1;
     }
 }

+ 13 - 4
site/src/main/java/com/mooctest/crowd/site/data/vo/CrowdProjectVO.java

@@ -2,6 +2,7 @@ package com.mooctest.crowd.site.data.vo;
 
 
 import com.alibaba.fastjson.JSONArray;
+import com.google.common.collect.Lists;
 import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
 import com.mooctest.crowd.domain.domainobject.CrowdTestProjectStatus;
 import lombok.Data;
@@ -26,7 +27,7 @@ public class CrowdProjectVO implements Serializable {
     private String contactName;
     private String contactPhone;
     private String platform;
-    private String fieldType;
+    private String field;
     private List<String> type;
     private String desc;
     private String doc;
@@ -36,9 +37,11 @@ public class CrowdProjectVO implements Serializable {
     private Map<String, String> location;
     private String institution;
     private Timestamp datetime;
+    private String valuationStandard;
     private Double price;
     private Double budget;
     private Double restPrice;
+    private String entrustUnit;
     private String usage;
     private Integer status;
     private int joinCount;
@@ -52,9 +55,13 @@ public class CrowdProjectVO implements Serializable {
         this.name = project.getName();
         this.contactName = project.getLinkMan();
         this.contactPhone = project.getLinkManMobile();
-        this.type = (List<String>)JSONArray.parse(project.getType());
-        this.platform = project.getPlatform();
-        this.fieldType = project.getFieldType();
+        if(project.getType().contains("[")){
+            this.type = (List<String>)JSONArray.parse(project.getType());
+        }else{
+            this.type = Lists.newArrayList(project.getType());
+        }
+        this.platform = project.getApplicationType();
+        this.field = project.getFieldType();
         this.desc = project.getDescription();
         this.doc = project.getRequirementFile();
         this.file = project.getProjectFile();
@@ -65,8 +72,10 @@ public class CrowdProjectVO implements Serializable {
         this.location.put("cityCode", project.getDistributionCity());
         this.datetime = project.getDeadTime();
         this.budget = project.getQuotedPrice();
+        this.valuationStandard = project.getValuationStandard();
         this.price = project.getFixedPrice();
         this.restPrice = project.getRestPrice();
+        this.entrustUnit = project.getEntrustUnit();
         this.usage = null;
         this.status = project.getStatus();
         this.joinCount = project.getJoinCount();

+ 2 - 2
site/src/main/java/com/mooctest/crowd/site/data/vo/CrowdTestProjectVO.java

@@ -26,7 +26,7 @@ public class CrowdTestProjectVO   {
     private Long userId;
     private Long regionalManagerId;
     private Long projectDistributionTypeId;
-    private String platform;
+    private String applicationType;
     private String linkMan;
     private String linkManMobile;
     private String type;
@@ -57,7 +57,7 @@ public class CrowdTestProjectVO   {
         userId = crowdTestProject.getUserId();
         regionalManagerId = crowdTestProject.getRegionalManagerId();
         projectDistributionTypeId = crowdTestProject.getProjectDistributionTypeId();
-        platform = crowdTestProject.getPlatform();
+        applicationType = crowdTestProject.getApplicationType();
         linkMan = crowdTestProject.getLinkMan();
         linkManMobile = crowdTestProject.getLinkManMobile();
         type = crowdTestProject.getType();

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

@@ -1,6 +1,5 @@
 package com.mooctest.crowd.site.data.vo;
 
-import com.mooctest.crowd.domain.domainobject.AuthenticationStatus;
 import com.mooctest.crowd.domain.domainobject.PersonalAuthentication;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -28,7 +27,7 @@ public class PersonalAuthVO {
     private Timestamp applyTime;
     private Timestamp checkTime;
     private StatusVO authStatus;
-    private String IDCardPostivePhoto;//身份证正面照片
+    private String IDCardPositivePhoto;//身份证正面照片
     private String IDCardBackPhoto;//身份证反面照片
     private  String sex;
 

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

@@ -28,7 +28,7 @@ import java.util.Optional;
  */
 public interface ViewMediator {
 
-    Page<UserVO> renderMoreUser(Pageable pageable);
+    List<UserVO> renderMoreUser(Pageable pageable);
 
 
 

+ 38 - 14
site/src/main/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImpl.java

@@ -18,7 +18,6 @@ import com.mooctest.crowd.site.data.dto.*;
 import com.mooctest.crowd.site.data.enums.RoleType;
 import com.mooctest.crowd.site.data.vo.*;
 import com.mooctest.crowd.site.mediator.ViewMediator;
-import com.mooctest.crowd.site.service.UploadService;
 import com.mooctest.crowd.site.util.DataUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -27,6 +26,7 @@ import org.codehaus.jettison.json.JSONObject;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cache.annotation.Cacheable;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
@@ -34,16 +34,7 @@ import org.springframework.data.jpa.domain.Specification;
 import org.springframework.data.jpa.domain.Specifications;
 import org.springframework.stereotype.Component;
 import org.springframework.web.client.RestTemplate;
-import org.springframework.web.multipart.MultipartFile;
-
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-import java.awt.*;
-import java.io.File;
 import java.util.*;
-import java.util.List;
 import java.util.stream.Collectors;
 
 /**
@@ -65,9 +56,9 @@ public class WebMediatorImpl implements ViewMediator {
     @Autowired
     private EvaluationAgencyRepo evaluationAgencyRepo;
 
-
     @Autowired
     private CommonRepo commonRepo;
+
     @Autowired
     private CrowdTestTaskDao taskDao;
 
@@ -110,11 +101,17 @@ public class WebMediatorImpl implements ViewMediator {
     @Autowired
     private BankLogoDao bankLogoDao;
 
+    @Autowired
+    private ApplicationTypeDao applicationTypeDao;
+
+    @Autowired
+    private FieldDao fieldDao;
+
     @Value("${agency}")
     private String agencyId;
 
     @Override
-    public Page<UserVO> renderMoreUser(Pageable pageable) {
+    public List<UserVO> renderMoreUser(Pageable pageable) {
         List<UserVO> userVOS=new ArrayList<>();
         List<RankCountInfo> rankCountInfos=taskToUserDao.findTotalCountOfUser();
         long []ids=new long[rankCountInfos.size()];
@@ -129,8 +126,7 @@ public class WebMediatorImpl implements ViewMediator {
             }
 
         }
-        Page<UserVO> Page= DataUtils.listToPage(userVOS,pageable);
-        return  Page;
+        return userVOS;
     }
 
     @Override
@@ -544,6 +540,34 @@ public class WebMediatorImpl implements ViewMediator {
                 .stream().filter(task -> task.getStatus() == CrowdTestTaskStatus.HAS_FINISHED).count()));
         progress.add(new PieChartDataVO("进行中", crowdTestTaskList
                 .stream().filter(task -> task.getStatus() > CrowdTestTaskStatus.HAS_CREATED && task.getStatus() < CrowdTestTaskStatus.HAS_FINISHED).count()));
+
+        // 应用类型值的转换
+        Optional<ApplicationTypePO> applicationTypePO = applicationTypeDao.findByCode(projectVO.getPlatform());
+        if(applicationTypePO.isPresent()){
+            projectVO.setPlatform(applicationTypePO.get().getName());
+        }else{
+            throw new HttpBadRequestException("不存在此应用类型");
+        }
+
+        // 领域类型值的转换
+        Optional<FieldPO> fieldPO = fieldDao.findByCode(projectVO.getField());
+        if(fieldPO.isPresent()){
+            projectVO.setField(fieldPO.get().getName());
+        }else{
+            throw new HttpBadRequestException("不存在此领域类型");
+        }
+
+        // 测试类型的转换
+        List<String> testStringList = projectVO.getType().stream().map(testType -> {
+            Optional<TestTypePO> testTypePO = testTypeDao.findByCode(testType);
+            if (testTypePO.isPresent()) {
+                return testTypePO.get().getName();
+            } else {
+                throw new HttpBadRequestException("不存在此测试类型");
+            }
+        }).collect(Collectors.toList());
+        projectVO.setType(testStringList);
+
         projectDetailsDTO.setProjectDetails(projectVO);
         projectDetailsDTO.setTaskList(taskVOList);
         projectDetailsDTO.setReportList(reportVOList);

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

@@ -8,6 +8,7 @@ import com.mooctest.crowd.site.data.vo.*;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
+import java.util.List;
 
 import java.util.Map;
 
@@ -15,7 +16,7 @@ import java.util.Map;
 public interface CommonService {
 
 
-    Page<UserVO> getMoreUser(Pageable pageable);
+    List<UserVO> getMoreUser(Pageable pageable);
 
     IndexDTO getIndexInfo();
 

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

@@ -14,7 +14,7 @@ import org.springframework.cache.annotation.Cacheable;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
-
+import java.util.List;
 import java.util.Map;
 
 @Service
@@ -42,7 +42,7 @@ public class CommonServiceImpl implements CommonService {
 //    private CacheUtil cacheUtil;
 
     @Override
-    public Page<UserVO> getMoreUser(Pageable pageable) {
+    public List<UserVO> getMoreUser(Pageable pageable) {
 
         return  viewMediator.renderMoreUser(pageable);
     }

+ 91 - 27
site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdProjectServiceImpl.java

@@ -1,7 +1,9 @@
 package com.mooctest.crowd.site.service.impl;
 
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
+import com.google.common.collect.Lists;
+import com.mooctest.crowd.domain.dao.ApplicationTypeDao;
+import com.mooctest.crowd.domain.dao.FieldDao;
+import com.mooctest.crowd.domain.dao.TestTypeDao;
 import com.mooctest.crowd.domain.domainobject.*;
 import com.mooctest.crowd.domain.exception.BadRequestException;
 import com.mooctest.crowd.domain.exception.BaseException;
@@ -30,6 +32,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
+import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.List;
@@ -59,6 +62,15 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
     @Autowired
     private OperationMediator operationMediator;
 
+    @Autowired
+    private TestTypeDao testTypeDao;
+
+    @Autowired
+    private ApplicationTypeDao applicationTypeDao;
+
+    @Autowired
+    private FieldDao fieldDao;
+
 
     @Override
     public List<CrowdTestProjectVO> findAllMoreHotProjects() {
@@ -173,6 +185,9 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
     public List<ProjectDetailsDTO> importMultiProjectsByExcel(List<CrowdTestProject> projects) {
         List<ProjectDetailsDTO> dtos = new ArrayList<>();
         projects.forEach(project -> {
+            project.setFieldType(fieldDao.findByName(project.getFieldType()).get().getCode());
+            project.setApplicationType(applicationTypeDao.findByName(project.getApplicationType()).get().getCode());
+            project.setType(testTypeDao.findByName(project.getType()).get().getCode());
             projectRepo.saveCrowdTestProject(project);
             dtos.add(getProjectDetails(project.getCode(), project.getUserId()));
         });
@@ -186,23 +201,62 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
         projects.forEach(project -> {
             project.setCode(GenerateFlowCodeUtil.generateProjCode());
             project.setUserId(userId);
+            project.setJoinCount(1);
+            project.setRestPrice(0.0);
+            project.setCreateTime(new Timestamp(System.currentTimeMillis() - 1000));
+//            project.setProjectDistributionTypeId(0L);
+//            project.setRegionalManagerId();
             List<CrowdTestTask> tasks = new ArrayList<>();
             CrowdTestTask task = CrowdTestProjectFactory.defaultFinishedCrowdTask();
-            task.setType(((List<String>) JSONArray.parse(project.getType())).get(0));
-            task.setCode(GenerateFlowCodeUtil.generateTaskCode(ProjectType.getCode(task.getType())));
+
+            // 构造任务
+            task.setType(testTypeDao.findByName(project.getType()).get().getCode());
+            task.setCode(GenerateFlowCodeUtil.generateTaskCode(task.getType()));
             task.setCrowdTestProjectCode(project.getCode());
-            task.setEndTime(project.getEndTime());
             task.setDeadTime(project.getDeadTime());
             task.setRequirementFile(project.getRequirementFile());
             task.setName(project.getName() + "-" + task.getType());
             task.setQuotedPrice(project.getQuotedPrice());
             task.setFixedPrice(project.getFixedPrice());
             task.setDescription(project.getDescription());
+            task.setFixedPrice(project.getFixedPrice());
+            task.setQuotedPrice(project.getQuotedPrice());
+            task.setParticipantCount(1);
+            task.setAcceptedCount(1);
+            task.setParticipantHasCommittedCount(1);
+            task.setCreateTime(project.getCreateTime());
+            task.setEndTime(project.getEndTime());
             if (user.getEvaluationAgency() == null)
                 task.setEvaluationAgencyId(1L);
             else
                 task.setEvaluationAgencyId(user.getEvaluationAgency().getId());
+
+            // 构造taskToUser
+            TaskToUser taskToUser = new TaskToUser();
+            taskToUser.setTaskCode(task.getCode());
+            taskToUser.setUserId(userId);
+            taskToUser.setHasReport(1);
+            taskToUser.setDistributionType(1L);
+            taskToUser.setIsAccepted(1);
+            taskToUser.setAcceptTime(task.getCreateTime());
+            taskToUser.setIsCommitted(1);
+            taskToUser.setCommitTaskTime(task.getDeadTime());
+            taskToUser.setCommitReportTime(task.getDeadTime());
+
+            // 构造任务报告
+            CrowdTestReport crowdTestReport = CrowdTestProjectFactory.defaultTaskReport();
+            crowdTestReport.setCode(GenerateFlowCodeUtil.generateReportCode());
+            crowdTestReport.setUserId(userId);
+            crowdTestReport.setDependencyCode(task.getCode());
+            crowdTestReport.setType("测试报告");
+            crowdTestReport.setName(task.getName() + "测试报告");
+            crowdTestReport.setContent(project.getCrowdTestReportForProject().getContent());
+            crowdTestReport.setConclusion(project.getCrowdTestReportForProject().getConclusion());
+            taskToUser.setCrowdTestReportList(Lists.newArrayList(crowdTestReport));
+            task.setAcceptedUserList(Lists.newArrayList(taskToUser));
             tasks.add(task);
+
+            // 构造项目报告
             project.setCrowdTestTaskList(tasks);
             project.getCrowdTestReportForProject().setCode(GenerateFlowCodeUtil.generateReportCode());
             project.getCrowdTestReportForProject().setDependencyCode(project.getCode());
@@ -346,49 +400,59 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
                         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(fieldDao.findAll().stream().noneMatch(fieldPO -> fieldPO.getName().equals(cell.getStringCellValue().trim()))){
+                            logList.add("错误 - 行: " + (i + 1) + "; 列: " + (j + 1) + "; 原因: " + "领域类型数据不合法:" + cell.getStringCellValue());
                             break;
                         }
-                        List<String> platforms = new ArrayList<>();
-                        platforms.add(cell.getStringCellValue().trim());
-                        project.setPlatform(JSONObject.toJSONString(platforms));
+                        project.setFieldType(cell.getStringCellValue().trim());
+//                        project.setFieldType(fieldDao.findByName(cell.getStringCellValue().trim()).get().getCode());
                         break;
                     case 2:
-                        project.setLinkMan(cell.getStringCellValue().trim());
-                        break;
-                    case 3:
-                        if (!isRightPhone(cell.getStringCellValue().trim())) {
-                            logList.add("错误 - 行: " + (i + 1) + "; 列: " + (j + 1) + "; 原因: " + "不合法的手机号码:" + cell.getStringCellValue());
+                        if(applicationTypeDao.findAll().stream().noneMatch(applicationTypePO -> applicationTypePO.getName().equals(cell.getStringCellValue().trim()))){
+                            logList.add("错误 - 行: " + (i + 1) + "; 列: " + (j + 1) + "; 原因: " + "应用类型数据不合法:" + cell.getStringCellValue());
                             break;
                         }
-                        project.setLinkManMobile(cell.getStringCellValue().trim());
+                        project.setApplicationType(cell.getStringCellValue().trim());
+//                        project.setApplicationType(applicationTypeDao.findByName(cell.getStringCellValue().trim()).get().getCode());
                         break;
-                    case 4:
-                        if (ProjectType.getCode(cell.getStringCellValue().trim()) == null) {
-                            logList.add("错误 - 行: " + (i + 1) + "; 列: " + (j + 1) + "; 原因: " + "错误的测试服务类型:" + cell.getStringCellValue());
+                    case 3:
+                        if(testTypeDao.findAll().stream().noneMatch(testTypePO -> testTypePO.getName().equals(cell.getStringCellValue().trim()))){
+                            logList.add("错误 - 行: " + (i + 1) + "; 列: " + (j + 1) + "; 原因: " + "测试类型数据不合法:" + cell.getStringCellValue());
                             break;
                         }
-                        List<String> types = new ArrayList<>();
-                        types.add(cell.getStringCellValue().trim());
-                        project.setType(JSONObject.toJSONString(types));
+                        project.setType(cell.getStringCellValue().trim());
+//                        project.setType(testTypeDao.findByName(cell.getStringCellValue().trim()).get().getCode());
                         break;
+                    case 4:
+                        project.setEntrustUnit(cell.getStringCellValue().trim());
                     case 5:
-                        project.setDescription(cell.getStringCellValue().trim());
+                        project.setLinkMan(cell.getStringCellValue().trim());
                         break;
                     case 6:
-                        project.setFixedPrice(Double.parseDouble(cell.getStringCellValue().trim()));
+                        if(!cell.getStringCellValue().trim().contains("*")){
+                            if (!isRightPhone(cell.getStringCellValue().trim())) {
+                                logList.add("错误 - 行: " + (i + 1) + "; 列: " + (j + 1) + "; 原因: " + "不合法的手机号码:" + cell.getStringCellValue());
+                                break;
+                            }
+                        }
+                        project.setLinkManMobile(cell.getStringCellValue().trim());
                         break;
                     case 7:
-                        report.setContent(cell.getStringCellValue().trim());
+                        project.setDescription(cell.getStringCellValue().trim());
                         break;
                     case 8:
+                        project.setValuationStandard(cell.getStringCellValue().trim());
+                        break;
+                    case 9:
+                        report.setContent(cell.getStringCellValue().trim());
+                        break;
+                    case 10:
                         report.setConclusion(cell.getStringCellValue().trim());
                         break;
                 }
             }
             project.setCrowdTestReportForProject(report);
-            project.setQuotedPrice(project.getFixedPrice());
+//            project.setQuotedPrice(project.getFixedPrice());
             projects.add(project);
         }
         projects.forEach(project -> {
@@ -402,7 +466,7 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
     /**
      * 匹配平台类型 0,1,2 任意  ^[0-2](([,][0-2])?([,][0-2])?)$
      */
-    private boolean isPlatform(String str) throws PatternSyntaxException {
+    private boolean isApplicationType(String str) throws PatternSyntaxException {
         String regExp = "^[0-2](([,][0-2])?([,][0-2])?)$";
         Pattern p = Pattern.compile(regExp);
         Matcher m = p.matcher(str);