Parcourir la source

编写完众测广场首页获取数据的接口。。

xuxuan il y a 5 ans
Parent
commit
4531450b39

+ 5 - 7
site/src/main/java/com/mooctest/crowd/site/controller/CrowTestSquareController.java

@@ -1,11 +1,8 @@
 package com.mooctest.crowd.site.controller;
 
-import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
-import com.mooctest.crowd.domain.domainobject.CrowdTestTask;
 import com.mooctest.crowd.domain.model.CrowdTestProjectPO;
 import com.mooctest.crowd.domain.model.CrowdTestTaskPO;
 import com.mooctest.crowd.site.data.dto.CrowdTestSquareIndexDTO;
-import com.mooctest.crowd.site.data.dto.TaskSquareDTO;
 import com.mooctest.crowd.site.service.CrowdProjectService;
 import com.mooctest.crowd.site.service.CrowdTaskService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -27,22 +24,23 @@ public class CrowTestSquareController {
     @Autowired
     private CrowdProjectService crowdProjectService;
     @Autowired
-    private CrowdTaskService  crowdTaskService;
+    private CrowdTaskService crowdTaskService;
 
 
     /**
-     * 获取众测广场首页所有的数据包装到CrowdTestSquareIndexDTO里面
+     * 获取众测广场首页所有的数据,包装到CrowdTestSquareIndexDTO里面
      *
      * @return
      */
 
     @GetMapping("/list")
-    public CrowdTestSquareIndexDTO getAll(){
+    public CrowdTestSquareIndexDTO getAll() {
         CrowdTestSquareIndexDTO crowdTestSquareIndexDTO = new CrowdTestSquareIndexDTO();
         List<CrowdTestProjectPO> list = crowdProjectService.findAll();
-        List<CrowdTestTaskPO> crowdTestTasks= crowdTaskService.getAll();
+        List<CrowdTestTaskPO> crowdTestTasks = crowdTaskService.findAll();
         crowdTestSquareIndexDTO.setCowdTestProjects(list);
         crowdTestSquareIndexDTO.setCrowdTestTaskPOS(crowdTestTasks);
+        crowdTestSquareIndexDTO.initHotTaskAndProject();
         return crowdTestSquareIndexDTO;
     }
 

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

@@ -1,20 +1,19 @@
 package com.mooctest.crowd.site.data.dto;
 
-import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
-import com.mooctest.crowd.domain.domainobject.CrowdTestTask;
+import com.mooctest.crowd.domain.domainobject.CrowdTestTaskStatus;
 import com.mooctest.crowd.domain.model.CrowdTestProjectPO;
 import com.mooctest.crowd.domain.model.CrowdTestTaskPO;
 import lombok.Data;
 
+import java.util.Comparator;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @author:xx
  * @date:2020/6/20
  * @description:众测广场首页所有数据
  */
-
-
 @Data
 public class CrowdTestSquareIndexDTO {
 
@@ -22,13 +21,30 @@ public class CrowdTestSquareIndexDTO {
     private List<CrowdTestProjectPO> cowdTestProjects;
 
     //众测任务
-    private List<CrowdTestTaskPO>  crowdTestTaskPOS;
+    private List<CrowdTestTaskPO> crowdTestTaskPOS;
 
 
+    //热门项目
+    private List<CrowdTestProjectPO> hotCrowdTestProject;
 
+    //热门任务
+    private List<CrowdTestTaskPO> hotCrowdTask;
 
 
+    /**
+     * 初始化热门任务 ,热门项目
+     */
+    public void initHotTaskAndProject() {
 
+        //根据参与人数和创建时间进行排序
+        List<CrowdTestProjectPO> list1 = this.cowdTestProjects.stream().sorted(Comparator.comparing(CrowdTestProjectPO::getCreateTime).reversed().thenComparing(Comparator.comparing(CrowdTestProjectPO::getJoinCount).reversed())).collect(Collectors.toList());
+        this.hotCrowdTestProject = list1;
+        List<CrowdTestTaskPO> tasklist1 = crowdTestTaskPOS.stream().sorted(Comparator.comparing(CrowdTestTaskPO::getAcceptedCount).reversed()).collect(Collectors.toList());
+        List<CrowdTestTaskPO> tasklist2 = tasklist1.stream().sorted(Comparator.comparing(CrowdTestTaskPO::getCreateTime).reversed()).collect(Collectors.toList());
+        //过滤掉已完成的
+        tasklist2.stream().filter(ct -> ct.getStatus() != CrowdTestTaskStatus.HAS_FINISHED);
+        this.hotCrowdTask = tasklist2;
+    }
 
 
 }

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

@@ -6,6 +6,8 @@ import com.mooctest.crowd.site.command.CrowdTestProjectCommand;
 import com.mooctest.crowd.site.command.GenerateProjectCommand;
 import com.mooctest.crowd.site.data.dto.ProjectDetailsDTO;
 import com.mooctest.crowd.site.data.vo.RegionalManagerVO;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
@@ -16,7 +18,9 @@ import java.util.List;
  * @date 2019-07-29 10:49
  */
 public interface CrowdProjectService {
+
     List<CrowdTestProjectPO> findAll();
+
     ProjectDetailsDTO getProjectDetails(String projectCode, Long userId);
 
     ProjectDetailsDTO createCrowdProject(CrowdTestProjectCommand command);

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

@@ -14,7 +14,7 @@ import java.util.List;
  * @date 2019-07-29 18:47
  */
 public interface CrowdTaskService {
-    List<CrowdTestTaskPO> getAll();
+    List<CrowdTestTaskPO> findAll();
 
     TaskDetailsDTO getTaskDetails(String projectCode, String taskCode, Long userId);
 

+ 46 - 38
site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdProjectServiceImpl.java

@@ -25,6 +25,8 @@ 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;
 
@@ -34,6 +36,7 @@ import java.util.List;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.regex.PatternSyntaxException;
+import java.util.stream.Collectors;
 
 /**
  * @author: Diors.Po
@@ -57,16 +60,19 @@ 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));
     }
@@ -75,7 +81,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();
@@ -90,7 +96,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());
@@ -117,9 +123,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);
         });
 
@@ -144,7 +150,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 -> {
@@ -158,11 +164,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());
@@ -171,7 +177,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());
         });
@@ -215,7 +221,7 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
         return getProjectDetails(projectCode, userId);
     }
 
-    private List<CrowdTestProject> transferExcel2Projects(MultipartFile file){
+    private List<CrowdTestProject> transferExcel2Projects(MultipartFile file) {
         List<String> logList = new ArrayList<>();
         List<CrowdTestProject> projects = new ArrayList<>();
         Workbook workbook = null;
@@ -237,36 +243,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<>();
@@ -277,15 +283,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<>();
@@ -313,7 +319,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;
     }
@@ -321,7 +327,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);
@@ -331,7 +337,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);
@@ -340,21 +346,23 @@ 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位任意数
      * 此方法中前三位格式有:
@@ -374,7 +382,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);
@@ -384,7 +392,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);

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

@@ -48,12 +48,12 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
     @Autowired
     private EvaluationAgencyDao agencyDao;
 
-//    @Autowired
-//    GenerateFlowCodeUtil codeUtil;
+
 
 
     @Override
-    public List<CrowdTestTaskPO> getAll() {
+    public List<CrowdTestTaskPO> findAll() {
+
         return  taskDao.findAllByIsDeleted(0);
     }