Selaa lähdekoodia

MOOC-35 修复我的众测、众测广场的项目和任务、热门众测的项目的排序显示问题。

guo00guo 5 vuotta sitten
vanhempi
commit
f0562bffad

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

@@ -35,11 +35,11 @@ public interface CrowdTestProjectDao extends CrudRepository<CrowdTestProjectPO,
     List<CrowdTestProjectPO> findAll();
 
     //这个指定了查询条数 适用于众测广场首页 这样性能会高一点。
-    @Query(value = "SELECT * FROM crowd_test_project p WHERE CTP_STATUS =1 and CTP_PDT_ID = 2 and CTP_IS_DELETED = 0 ORDER BY CTP_JOIN_COUNT DESC ,CTP_CREATE_TIME LIMIT 6; ", nativeQuery = true)
+    @Query(value = "SELECT * FROM crowd_test_project p WHERE CTP_STATUS =1 and CTP_PDT_ID = 2 and CTP_IS_DELETED = 0 ORDER BY CTP_CREATE_TIME DESC LIMIT 6; ", nativeQuery = true)
     List<CrowdTestProjectPO> findindexProject();
 
 
-    @Query(value = "SELECT * FROM crowd_test_project p WHERE CTP_STATUS !=4 and CTP_STATUS !=5 and CTP_IS_DELETED = 0 ORDER BY CTP_JOIN_COUNT DESC ,CTP_CREATE_TIME; ", nativeQuery = true)
+    @Query(value = "SELECT * FROM crowd_test_project p WHERE CTP_STATUS !=4 and CTP_STATUS !=5 and CTP_IS_DELETED = 0 ORDER BY CTP_JOIN_COUNT DESC ,CTP_STATUS ASC, CTP_CREATE_TIME DESC; ", nativeQuery = true)
     List<CrowdTestProjectPO> findAllHotProject();
 
     //这个指定了查询条数 适用于众测广场首页 这样性能会高一点对应热门项目

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

@@ -33,8 +33,7 @@ public interface CrowdTestTaskDao extends CrudRepository<CrowdTestTaskPO, Long>,
     List<CrowdTestTaskPO> findindexTask();
 
 
-    //热门任务
-    @Query(value = "select * FROM crowd_test_task WHERE (CTT_STATUS =1 or (CTT_STATUS =2 and CTT_FULL_STATUS = 0)) and CTT_DISTRIBUTION_TYPE = 2 and CTT_IS_DELETED = 0 ORDER BY CTT_ACCEPTED_COUNT DESC,CTT_CREATE_TIME", nativeQuery = true)
+    @Query(value = "select * FROM crowd_test_task WHERE (CTT_STATUS =1 or (CTT_STATUS =2 and CTT_FULL_STATUS = 0)) and CTT_DISTRIBUTION_TYPE = 2 and CTT_IS_DELETED = 0 ORDER BY CTT_CREATE_TIME DESC", nativeQuery = true)
     List<CrowdTestTaskPO> findCanAcceptTask();
 
     //热门任务
@@ -42,7 +41,7 @@ public interface CrowdTestTaskDao extends CrudRepository<CrowdTestTaskPO, Long>,
     List<CrowdTestTaskPO> findMoreHotTasks();
 
     //热门任务
-    @Query(value = "select * FROM  crowd_test_task WHERE CTT_STATUS !=4 and CTT_STATUS !=5 and CTT_IS_DELETED = 0  ORDER BY CTT_ACCEPTED_COUNT DESC,CTT_CREATE_TIME", nativeQuery = true)
+    @Query(value = "select * FROM  crowd_test_task WHERE CTT_STATUS !=4 and CTT_STATUS !=5 and CTT_IS_DELETED = 0  ORDER BY CTT_ACCEPTED_COUNT DESC, CTT_STATUS ASC ,CTT_CREATE_TIME DESC", nativeQuery = true)
     List<CrowdTestTaskPO> findMoreHotTasksList();
 
     List<CrowdTestTaskPO> findByNameLike(String name);

+ 35 - 11
core/src/main/java/com/mooctest/crowd/domain/repository/CommonRepo.java

@@ -2,13 +2,17 @@ package com.mooctest.crowd.domain.repository;
 
 import com.mooctest.crowd.domain.dao.*;
 import com.mooctest.crowd.domain.domainobject.*;
-import com.mooctest.crowd.domain.exception.*;
+import com.mooctest.crowd.domain.exception.ApplicationTypeNoExistException;
+import com.mooctest.crowd.domain.exception.BadRequestException;
+import com.mooctest.crowd.domain.exception.HttpBadRequestException;
+import com.mooctest.crowd.domain.exception.TestTypeNoExistException;
 import com.mooctest.crowd.domain.model.*;
 import com.mooctest.crowd.domain.util.Converter;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.data.jpa.domain.Specifications;
 import org.springframework.stereotype.Component;
@@ -17,6 +21,7 @@ import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
 import java.util.stream.Collectors;
@@ -199,27 +204,46 @@ public class CommonRepo {
         };
     }
 
-    public Page<CrowdTestProject> getProjectList(Pageable pageable, String code, String keyword) {
+    public List<CrowdTestProject> getProjectList(Pageable pageable, String code, String keyword) {
         System.out.println("code " + code);
         Specifications<CrowdTestProjectPO> where = Specifications.where(getCode(code, keyword));
-        return crowdTestProjectDao.findAll(where, pageable).map(crowdTestProjectPO -> Converter.convert(CrowdTestProject.class, crowdTestProjectPO));
+        //添加排序
+        Sort sort = new Sort(Sort.Direction.ASC,"status");
+        return crowdTestProjectDao.findAll(where, sort).stream().map(crowdTestProjectPO -> Converter.convert(CrowdTestProject.class, crowdTestProjectPO)).collect(Collectors.toList());
     }
 
     private Specification<CrowdTestProjectPO> getCode(String code, String keyword) {
         return new Specification<CrowdTestProjectPO>() {
+//            @Override
+//            public Predicate toPredicate(Root<CrowdTestProjectPO> a, CriteriaQuery<?> q, CriteriaBuilder cb) {
+//                Predicate predicate = cb.conjunction();
+//                if (code != null) {
+//                    predicate.getExpressions().add(cb.equal(a.get("applicationType"), code));
+//                }
+//                if (keyword != null && keyword != "") {
+//                    predicate.getExpressions().add(
+//                            cb.like(a.<String>get("name"), "%" + StringUtils.trim(keyword) + "%")
+//                    );
+//                }
+////                q.orderBy(cb.desc(a.get("status").as(Integer.class)));
+//                return predicate;
+//            }
+
             @Override
-            public Predicate toPredicate(Root<CrowdTestProjectPO> a, CriteriaQuery<?> q, CriteriaBuilder cb) {
-                Predicate predicate = cb.conjunction();
+            public Predicate toPredicate(Root<CrowdTestProjectPO> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
+                //用于暂时存放查询条件的集合
+                List<Predicate> predicatesList = new ArrayList<>();
                 if (code != null) {
-                    predicate.getExpressions().add(cb.equal(a.get("applicationType"), code));
+                    Predicate codePredicate = cb.equal(root.get("applicationType"), code);
+                    predicatesList.add(codePredicate);
                 }
                 if (keyword != null && keyword != "") {
-                    predicate.getExpressions().add(
-                            cb.like(a.<String>get("name"), "%" + StringUtils.trim(keyword) + "%")
-                    );
+                    Predicate namePredicate = cb.like(root.get("name"), '%'+StringUtils.trim(keyword)+'%');
+                    predicatesList.add(namePredicate);
                 }
-//                q.orderBy(cb.desc(a.get("status").as(Integer.class)));
-                return predicate;
+                //最终将查询条件拼好然后return
+                Predicate[] predicates = new Predicate[predicatesList.size()];
+                return cb.and(predicatesList.toArray(predicates));
             }
         };
     }

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
site/src/main/java/com/mooctest/crowd/site/controller/CommonController.java


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

@@ -593,7 +593,7 @@ public class WebMediatorImpl implements ViewMediator {
         //对于区域管理员crowdTestProjectPO -> crowdTestProjectPO.getStatus() > CrowdTestProjectStatus.HAS_RELEASED
         if (user.getRoleList().stream().anyMatch(role -> role.getName().equals("RegionalManager"))) {
             List<CrowdTestProjectPO> crowdTestProjectPOList = projectDao.findByRegionalManagerIdAndIsDeleted(userId, DeletedStatus.isNotDeleted)
-                    .stream().sorted(Comparator.comparing(CrowdTestProjectPO::getCreateTime).thenComparing(CrowdTestProjectPO::getStatus).reversed()).collect(Collectors.toList());
+                    .stream().sorted(Comparator.comparing(CrowdTestProjectPO::getStatus).reversed().thenComparing(CrowdTestProjectPO::getCreateTime).reversed()).collect(Collectors.toList());
             //获取区域管理员正在处理中的项目列表
             myCrowdDTO.setHandlingProjects(crowdTestProjectPOList.stream().filter(crowdTestProjectPO -> crowdTestProjectPO.getStatus() > CrowdTestProjectStatus.HAS_RELEASED).map(crowdTestProjectPO -> {
                 CrowdTestProject project = new CrowdTestProject();
@@ -1075,7 +1075,7 @@ public class WebMediatorImpl implements ViewMediator {
             CrowdTestProject crowdTestProject = new CrowdTestProject();
             BeanUtils.copyProperties(crowdTestProjectPO, crowdTestProject);
             return new CrowdTestProjectVO(crowdTestProject);
-        }).collect(Collectors.toList()));
+        }).collect(Collectors.toList()).stream().sorted(Comparator.comparing(CrowdTestProjectVO::getCreateTime).reversed()).collect(Collectors.toList()));
         return authingList;
     }
 
@@ -1089,7 +1089,7 @@ public class WebMediatorImpl implements ViewMediator {
             BeanUtils.copyProperties(crowdTestTaskPO, crowdTestTask);
             crowdTestTask.setType(serviceType.get().getName());
             return new CrowdTaskVO(crowdTestTask);
-        }).collect(Collectors.toList()));
+        }).collect(Collectors.toList()).stream().sorted(Comparator.comparing(CrowdTaskVO::getCreateTime).reversed()).collect(Collectors.toList()));
         return authingList;
     }
 

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

@@ -34,7 +34,7 @@ public interface CommonService {
 
     Page<CompetitionVO> getCompetition(Pageable pageable,String keyword);
 
-    Page<CrowdProjectVO> getProjectList(Pageable pageable,String code,String keyword);
+    List<CrowdProjectVO> getProjectList(Pageable pageable,String code,String keyword);
 
     List<ResourceVO>  getResource();
 

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

@@ -149,13 +149,13 @@ public class CommonServiceImpl implements CommonService {
     }
 
     @Override
-    public Page<CrowdProjectVO> getProjectList(Pageable pageable, String code,String keyword) {
-        return commonRepo.getProjectList(pageable,code,keyword).map(project->{
+    public List<CrowdProjectVO> getProjectList(Pageable pageable, String code,String keyword) {
+        return commonRepo.getProjectList(pageable,code,keyword).stream().map(project->{
             CrowdProjectVO crowdProjectVO = new CrowdProjectVO(project);
             String applicationName = commonRepo.getApplicationNameByCode(crowdProjectVO.getPlatform());
             crowdProjectVO.setPlatform(applicationName);
             return crowdProjectVO;
-        });
+        }).collect(Collectors.toList());
     }
 
     @Override

Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä