Quellcode durchsuchen

大赛,热门搜索

git vor 5 Jahren
Ursprung
Commit
6c0121e414

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

@@ -18,6 +18,7 @@ public class Competition {
     private String name;
     private String linkUrl;
     private Timestamp startTime;
+    private String unit;
     private String image;
     private int isDeleted;
 }

+ 3 - 0
core/src/main/java/com/mooctest/crowd/domain/model/CompetitionPO.java

@@ -26,6 +26,9 @@ public class CompetitionPO {
     @Column(name = "C_START_TIME")
     private Timestamp startTime;
 
+    @Column(name="C_UNIT")
+    private String unit;
+
     @Column(name = "C_IMAGE")
     private String image;
 

+ 26 - 2
core/src/main/java/com/mooctest/crowd/domain/repository/ApplicationTypeRepo.java

@@ -2,13 +2,22 @@ package com.mooctest.crowd.domain.repository;
 
 import com.mooctest.crowd.domain.dao.ApplicationTypeDao;
 import com.mooctest.crowd.domain.domainobject.ApplicationType;
+import com.mooctest.crowd.domain.model.ApplicationTypePO;
 import com.mooctest.crowd.domain.util.Converter;
 import lombok.extern.slf4j.Slf4j;
+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.jpa.domain.Specification;
+import org.springframework.data.jpa.domain.Specifications;
 import org.springframework.stereotype.Component;
 
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+
 
 @Slf4j
 @Component
@@ -19,7 +28,22 @@ public class ApplicationTypeRepo implements IApplicationTypeRepo{
     private ApplicationTypeDao applicationTypeDao;
 
     @Override
-    public Page<ApplicationType> getHotTesting(Pageable pageable) {
-        return applicationTypeDao.findAll(pageable).map(ApplicationTypePO->Converter.convert(ApplicationType.class, ApplicationTypePO));
+    public Page<ApplicationType> getHotTesting(Pageable pageable,String keyword) {
+        Specifications<ApplicationTypePO> where =  Specifications.where(getArticlesByIsNotDeleted(keyword));
+        return applicationTypeDao.findAll(where,pageable).map(ApplicationTypePO->Converter.convert(ApplicationType.class, ApplicationTypePO));
+    }
+    private Specification<ApplicationTypePO> getArticlesByIsNotDeleted(String keyword) {
+        return new Specification<ApplicationTypePO>() {
+            @Override
+            public Predicate toPredicate(Root<ApplicationTypePO> a, CriteriaQuery<?> q, CriteriaBuilder cb) {
+                Predicate predicate = cb.conjunction();
+                if(keyword != null) {
+                    predicate.getExpressions().add(
+                            cb.like(a.<String>get("name"), "%" + StringUtils.trim(keyword) + "%")
+                    );
+                }
+                return predicate;
+            }
+        };
     }
 }

+ 17 - 3
core/src/main/java/com/mooctest/crowd/domain/repository/CommonRepo.java

@@ -81,10 +81,24 @@ public class CommonRepo {
                 .filter(competition -> competition.getIsDeleted() == DeletedStatus.isNotDeleted).collect(Collectors.toList());
     }
 
-    public Page<Competition> findAllCompetition(Pageable pageable) {
-        return  competitionsDao.findAll(pageable).map(CompetitionPO -> Converter.convert(Competition.class, CompetitionPO));
+    public Page<Competition> findAllCompetition(Pageable pageable,String keyword) {
+        Specifications<CompetitionPO> where =  Specifications.where(getArticlesByIsNotDeleted(keyword));
+        return  competitionsDao.findAll(where,pageable).map(CompetitionPO -> Converter.convert(Competition.class, CompetitionPO));
+    }
+    private Specification<CompetitionPO> getArticlesByIsNotDeleted(String keyword) {
+        return new Specification<CompetitionPO>() {
+            @Override
+            public Predicate toPredicate(Root<CompetitionPO> a, CriteriaQuery<?> q, CriteriaBuilder cb) {
+                Predicate predicate = cb.conjunction();
+                if(keyword != null) {
+                    predicate.getExpressions().add(
+                            cb.like(a.<String>get("name"), "%" + StringUtils.trim(keyword) + "%")
+                    );
+                }
+                return predicate;
+            }
+        };
     }
-
     public List<Competition> getAllCompetitionTop3(Pageable pageable){
         List<CompetitionPO> competitionPOS = competitionDao.findAll(pageable);
         return competitionPOS.stream().map(competitionPO -> Converter.convert(Competition.class, competitionPO))

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

@@ -7,6 +7,6 @@ import org.springframework.data.domain.Pageable;
 
 public interface IApplicationTypeRepo {
 
-    Page<ApplicationType> getHotTesting(Pageable pageable);
+    Page<ApplicationType> getHotTesting(Pageable pageable,String keyword);
 
 }

Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
site/src/main/java/com/mooctest/crowd/site/controller/CommonController.java


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

@@ -20,6 +20,7 @@ public class CompetitionVO implements Serializable {
     private String name;
     private String linkUrl;
     private Timestamp startTime;
+    private String unit;
     private String image;
     private int isDeleted;
 
@@ -28,6 +29,7 @@ public class CompetitionVO implements Serializable {
         name = competition.getName();
         linkUrl = competition.getLinkUrl();
         startTime = competition.getStartTime();
+        unit=competition.getUnit();
         image = competition.getImage();
         isDeleted = competition.getIsDeleted();
     }

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

@@ -29,7 +29,7 @@ public interface CommonService {
 
     Page<CrowdTaskVO> getTaskinfo(Pageable pageable, String keyword, int deletedStatus);
 
-    Page<ApplicationTypeVO> getHotTesting(Pageable pageable);
+    Page<ApplicationTypeVO> getHotTesting(Pageable pageable,String keyword);
 
-    Page<CompetitionVO> getCompetition(Pageable pageable);
+    Page<CompetitionVO> getCompetition(Pageable pageable,String keyword);
 }

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

@@ -93,13 +93,13 @@ public class CommonServiceImpl implements CommonService {
     }
 
     @Override
-    public Page<ApplicationTypeVO> getHotTesting(Pageable pageable) {
-        return applicationTypeRepo.getHotTesting(pageable).map(applicationType -> new ApplicationTypeVO(applicationType));
+    public Page<ApplicationTypeVO> getHotTesting(Pageable pageable,String keyword) {
+        return applicationTypeRepo.getHotTesting(pageable,keyword).map(applicationType -> new ApplicationTypeVO(applicationType));
     }
 
     @Override
-    public Page<CompetitionVO> getCompetition(Pageable pageable) {
-        return commonRepo.findAllCompetition(pageable).map(competition -> new CompetitionVO(competition));
+    public Page<CompetitionVO> getCompetition(Pageable pageable,String keyword) {
+        return commonRepo.findAllCompetition(pageable,keyword).map(competition -> new CompetitionVO(competition));
     }
 
 }

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.