Bläddra i källkod

优化众测广场相关接口。

xuxuan 5 år sedan
förälder
incheckning
277364ad5e

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

@@ -33,9 +33,19 @@ public interface CrowdTestProjectDao extends CrudRepository<CrowdTestProjectPO,
     List<CrowdTestProjectPO> findMoreHotProjects();
 
 
-    @Query(value = "SELECT * FROM crowd_test_project p WHERE CTP_STATUS !=4 ORDER BY CTP_CREATE_TIME DESC", nativeQuery = true)
+    @Query(value = "SELECT * FROM crowd_test_project p WHERE CTP_STATUS !=4 ORDER BY CTP_CREATE_TIME DESC ", nativeQuery = true)
     List<CrowdTestProjectPO> findAll();
 
+    //这个指定了查询条数 适用于众测广场首页 这样性能会高一点。
+    @Query(value = "SELECT * FROM crowd_test_project p WHERE CTP_STATUS !=4 ORDER BY CTP_JOIN_COUNT DESC ,CTP_CREATE_TIME LIMIT 6; ", nativeQuery = true)
+    List<CrowdTestProjectPO> findindexProject();
+
+
+
+    //这个指定了查询条数 适用于众测广场首页 这样性能会高一点对应热门项目
+    @Query(value = "SELECT * FROM crowd_test_project p WHERE CTP_STATUS !=4 ORDER BY CTP_JOIN_COUNT DESC ,CTP_CREATE_TIME LIMIT 7; ", nativeQuery = true)
+    List<CrowdTestProjectPO> findall();
+
     Page<CrowdTestProjectPO> findAll(Specification<CrowdTestProjectPO> spec, Pageable pageable);
 
     CrowdTestProjectPO findByIdAndIsDeleted(Long id, int isDeleted);

+ 4 - 6
core/src/main/java/com/mooctest/crowd/domain/dao/CrowdTestTaskDao.java

@@ -29,14 +29,12 @@ public interface CrowdTestTaskDao extends CrudRepository<CrowdTestTaskPO, Long>,
          "CTT_STATUS,CTT_FULL_STATUS,CTT_DEAD_LINE,CTT_IS_DELETED,CTT_PARTICIPANT_COUNT,CTT_ACCEPTED_COUNT,CTT_PARTICIPANT_HAS_COMMITTED_COUNT,CTT_CREATE_TIME,CTT_END_TIME FROM  crowd_test_task t where CTT_STATUS=1 or CTT_STATUS=2 ORDER BY CTT_CREATE_TIME DESC",nativeQuery = true)
   List<CrowdTestTaskPO> findAll();
 
+   @Query(value = "select * FROM  crowd_test_task  ORDER BY CTT_CREATE_TIME DESC LIMIT 6 ",nativeQuery = true)
+   List<CrowdTestTaskPO> findindexTask();
 
 
-
-
- @Query(value = "select CTT_ID,CTT_CODE,CTT_NAME,CTT_CTP_CODE,CTT_EA_ID," +
-         "CTT_TYPE,CTT_DISTRIBUTION_TYPE,CTT_DISTRIBUTION_PROVINCE,CTT_DISTRIBUTION_CITY," +
-         "CTT_REQUIREMENT_FILE,CTT_DESCRIPTION,CTT_QUOTED_PRICE,CTT_FIXED_PRICE," +
-         "CTT_STATUS,CTT_FULL_STATUS,CTT_DEAD_LINE,CTT_IS_DELETED,CTT_PARTICIPANT_COUNT,CTT_ACCEPTED_COUNT,CTT_PARTICIPANT_HAS_COMMITTED_COUNT,CTT_CREATE_TIME,CTT_END_TIME FROM  crowd_test_task t ORDER BY CTT_CREATE_TIME DESC",nativeQuery = true)
+//热门任务
+ @Query(value = "select * FROM  crowd_test_task  ORDER BY CTT_ACCEPTED_COUNT DESC,CTT_CREATE_TIME DESC LIMIT 7",nativeQuery = true)
    List<CrowdTestTaskPO> findMoreHotTasks();
 
    List<CrowdTestTaskPO>  findByNameLike(String name);

+ 4 - 3
site/src/main/java/com/mooctest/crowd/site/controller/CrowTestSquareController.java

@@ -49,9 +49,10 @@ public class CrowTestSquareController extends BaseSearchController {
         CrowdTestSquareIndexDTO crowdTestSquareIndexDTO = new CrowdTestSquareIndexDTO();
         List<CrowdTestProjectVO> list = crowdProjectService.findAll();
         List<CrowdTaskVO> crowdTestTasks = crowdTaskService.findAll();
-        crowdTestSquareIndexDTO.setCrowdTestProjectVOs(list);
-        crowdTestSquareIndexDTO.setCrowdTestTaskVOS(crowdTestTasks);
-        crowdTestSquareIndexDTO.initHotTaskAndProject();
+        crowdTestSquareIndexDTO.setCrowdTestProjectVOs(list);//众测项目
+        crowdTestSquareIndexDTO.setCrowdTestTaskVOS(crowdTestTasks);//众测任务
+        crowdTestSquareIndexDTO.setHotCrowdTaskVOs(crowdTaskService.findMoreHotTasks());
+        crowdTestSquareIndexDTO.setHotCrowdTestProjectVOs(crowdProjectService.findAllMoreHotProjects());
         return new ResponseVO(ServerCode.SUCCESS, crowdTestSquareIndexDTO);
     }
 

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

@@ -22,6 +22,8 @@ import java.util.List;
  */
 public interface ViewMediator {
 
+    List<CrowdTaskVO> findIndexTask();
+
     void saveEnterpriseRole(User user, ApplyEnterpriseAuthCommand applyEnterpriseAuthCommand);
 
     void saveUserRole(User user, ApplyPersonalAuthCommand command);
@@ -77,6 +79,12 @@ public interface ViewMediator {
     //任务模糊查询
     List<CrowdTaskVO> findTaskByNameLike(String name);
 
+
+
+    //热门项目
+    List<CrowdTestProjectVO>  hotCrowdTestProjects();
+
+
     List<CrowdTestProjectVO> crowdTestProjects();
 
     List<CrowdTaskVO> crowdTaskVos();

+ 23 - 4
site/src/main/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImpl.java

@@ -122,6 +122,16 @@ public class WebMediatorImpl implements ViewMediator {
     private UserToRoleDao userToRoleDao;
 
     @Override
+    public List<CrowdTaskVO> findIndexTask() {
+        List<CrowdTaskVO> hotMoreTestprojects = taskDao.findindexTask().stream().map(crowdTestTaskPO -> {
+            CrowdTestTask task = new CrowdTestTask();
+            BeanUtils.copyProperties(crowdTestTaskPO, task);
+            return new CrowdTaskVO(task);
+        }).collect(Collectors.toList());
+        return hotMoreTestprojects;
+    }
+
+    @Override
     public void saveEnterpriseRole(User user, ApplyEnterpriseAuthCommand applyEnterpriseAuthCommand) {
         //如果是研发机构那么能发包
         if(applyEnterpriseAuthCommand.getRoleList().contains(0) && applyEnterpriseAuthCommand.getRoleList().contains(1)){
@@ -1035,10 +1045,20 @@ public class WebMediatorImpl implements ViewMediator {
         return authingList;
     }
 
+    @Override
+    public List<CrowdTestProjectVO> hotCrowdTestProjects() {
+        List<CrowdTestProjectVO> authingList = new ArrayList<>();
+        authingList.addAll(projectDao.findall().stream().map(crowdTestProjectPO -> {
+            CrowdTestProject crowdTestProject = new CrowdTestProject();
+            BeanUtils.copyProperties(crowdTestProjectPO, crowdTestProject);
+            return  new CrowdTestProjectVO(crowdTestProject);
+    }).collect(Collectors.toList()));
+        return  authingList;
 
-    public List<CrowdTestProjectVO> crowdTestProjects() {
+    }
+    public List<CrowdTestProjectVO> crowdTestProjects(){
         List<CrowdTestProjectVO> authingList = new ArrayList<>();
-        authingList.addAll(projectDao.findAll().stream().map(crowdTestProjectPO -> {
+        authingList.addAll(projectDao.findindexProject().stream().map(crowdTestProjectPO -> {
             CrowdTestProject crowdTestProject = new CrowdTestProject();
             BeanUtils.copyProperties(crowdTestProjectPO, crowdTestProject);
             // 应用类型值的转换
@@ -1056,9 +1076,8 @@ public class WebMediatorImpl implements ViewMediator {
 
     @Override
     public List<CrowdTaskVO> crowdTaskVos() {
-
         List<CrowdTaskVO> authingList = new ArrayList<>();
-        authingList.addAll(taskDao.findAll().stream().map(crowdTestTaskPO -> {
+        authingList.addAll(taskDao.findAll().stream().map(crowdTestTaskPO ->{
             //根据code值查询出来该任务的type
             Optional<TestTypePO> serviceType = testTypeDao.findByCode(crowdTestTaskPO.getType());
             CrowdTestTask crowdTestTask = new CrowdTestTask();

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

@@ -18,6 +18,7 @@ import java.util.List;
  */
 public interface CrowdProjectService {
 
+
     List<CrowdTestProjectVO>  findAllMoreHotProjects();
 
     List<CrowdTestProjectVO> findByNameLike(String name);

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

@@ -16,6 +16,9 @@ import java.util.List;
  * @date 2019-07-29 18:47
  */
 public interface CrowdTaskService {
+
+List<CrowdTaskVO> findIndexCrwodTasks();
+
     List<CrowdTaskVO> findMoreHotTasks();
 
      List<CrowdTaskVO> findAll();

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

@@ -88,20 +88,19 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
 
     @Override
     public List<CrowdTestProjectVO> findAllMoreHotProjects() {
-        List<CrowdTestProjectVO> list = viewMediator.findMoreHotProjects();//根据创建时间已经倒叙排序好
-        //根据参与人数倒叙排序
-        List<CrowdTestProjectVO> moreHotProjects = list.stream().sorted(Comparator.comparing(CrowdTestProjectVO::getJoinCount).reversed()).collect(Collectors.toList());
-        return moreHotProjects;
+        return viewMediator.hotCrowdTestProjects();
     }
 
     @Override
     public List<CrowdTestProjectVO> findByNameLike(String name) {
-        if (name == null || name.trim().equals("")) {
-            return viewMediator.crowdTestProjects().stream().sorted(Comparator.comparing(CrowdTestProjectVO::getCreateTime).reversed()).collect(Collectors.toList());
+        if (name == null) {
+            return viewMediator.crowdTestProjects();
         }
-        return viewMediator.findByNameLike(name).stream().sorted(Comparator.comparing(CrowdTestProjectVO::getCreateTime).reversed()).collect(Collectors.toList());
-
+        if (name != null) {
+            return viewMediator.findByNameLike(name);
 
+        }
+        return null;
     }
 
     /**

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

@@ -61,12 +61,15 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
     @Autowired
     private ThemeSchedulerTaskService themeSchedulerTaskService;
 
+
+    @Override
+    public List<CrowdTaskVO> findIndexCrwodTasks() {
+        return  viewMediator.findIndexTask();
+    }
+
     @Override
     public List<CrowdTaskVO> findMoreHotTasks(){
-        List<CrowdTaskVO> list=viewMediator.findMoreHotTasks();//根据创建时间已经倒叙排序好
-        //根据参与人数倒叙排序
-        List<CrowdTaskVO>  morehotTasks=list.stream().sorted(Comparator.comparing(CrowdTaskVO::getAcceptedCount).reversed()).collect(Collectors.toList());
-        return   morehotTasks;
+           return  viewMediator.findMoreHotTasks();
     }
 
     @Override
@@ -77,11 +80,12 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
     @Override
     public List<CrowdTaskVO> findByNameLike(String name) {
         if(name==null||name.trim().equals("")){
-            return  viewMediator.crowdTaskVos().stream().sorted(Comparator.comparing(CrowdTaskVO::getCreateTime).reversed()).collect(Collectors.toList());
+            log.info("没有关键字");
+            return  viewMediator.crowdTaskVos();
+        }else if(name!=null) {
+            return viewMediator.findTaskByNameLike(name);
         }
-       return  viewMediator.findTaskByNameLike(name).stream().sorted(Comparator.comparing(CrowdTaskVO::getCreateTime).reversed()).collect(Collectors.toList());
-
-
+        return null;
     }
 
     @Override

+ 6 - 12
site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdTestSquareServiceImpl.java

@@ -43,23 +43,17 @@ public class CrowdTestSquareServiceImpl implements CrowdTestSquareService {
         Map<String, String> extraCondition = searchConditionVO.getColumnFilters() == null ? new HashMap<>() : this.getExtraCondition(searchConditionVO);
         Pageable pageable = this.getPageable(searchConditionVO);
         String keyword = searchConditionVO.getKeyword();
-        ProjectAndTaskDTO projectAndTaskDTO = new ProjectAndTaskDTO();
-        List<CrowdTestProjectVO> list = crowdProjectService.findByNameLike(keyword);
-        List<CrowdTaskVO> taskVOList = crowdTaskService.findByNameLike(keyword);
-        projectAndTaskDTO.setCrowdTaskVOList(taskVOList);
-        projectAndTaskDTO.setProjectVOList(list);
         List projectAndTaskDTOList = new ArrayList<>();
-        projectAndTaskDTOList.addAll(list);
-        projectAndTaskDTOList.addAll(taskVOList);
-        Page<ProjectAndTaskDTO> projectAndTaskDTOPage = DataUtils.listToPage(projectAndTaskDTOList, pageable);
-        Page<CrowdTestProjectVO> projectVOPage = DataUtils.listToPage(list, pageable);
-        Page<CrowdTaskVO> crowdTaskVOPage = DataUtils.listToPage(taskVOList, pageable);
         if (searchConditionVO.getColumnFilters().get(0).getType().equals("project")) {
+            List<CrowdTestProjectVO> list = crowdProjectService.findByNameLike(keyword);
+            Page<CrowdTestProjectVO> projectVOPage = DataUtils.listToPage(list, pageable);
             return new ResponseVO<>(ServerCode.SUCCESS, projectVOPage);
-        } else if (searchConditionVO.getColumnFilters().get(0).getType().equals("task")) {
+        } else if (searchConditionVO.getColumnFilters().get(0).getType().equals("task")){
+            List<CrowdTaskVO> taskVOList = crowdTaskService.findByNameLike(keyword);
+            Page<CrowdTaskVO> crowdTaskVOPage = DataUtils.listToPage(taskVOList, pageable);
             return new ResponseVO(ServerCode.SUCCESS, crowdTaskVOPage);
         }
-        return new ResponseVO<>(ServerCode.SUCCESS, projectAndTaskDTOPage);
+ return null;
     }