Prechádzať zdrojové kódy

add: 首页专家分页信息

guo00guo 5 rokov pred
rodič
commit
a420568e42

+ 17 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/ExpertDao.java

@@ -0,0 +1,17 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.ExpertPO;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.repository.CrudRepository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+import java.util.Optional;
+
+@Transactional
+public interface ExpertDao extends CrudRepository<ExpertPO, Long>, JpaSpecificationExecutor<ExpertPO> {
+
+    Optional<ExpertPO> findById(Long id);
+
+    List<ExpertPO> findAll();
+}

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

@@ -1,7 +1,7 @@
 package com.mooctest.crowd.domain.dao;
 
 import com.mooctest.crowd.domain.model.ResourcePO;
-import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.repository.CrudRepository;
 
 import javax.transaction.Transactional;
@@ -9,7 +9,7 @@ import java.util.List;
 import java.util.Optional;
 
 @Transactional
-public interface ResourceDao extends CrudRepository<ResourcePO, Long>{
+public interface ResourceDao extends CrudRepository<ResourcePO, Long>, JpaSpecificationExecutor<ResourcePO> {
 
     Optional<ResourcePO> findByCode(String code);
 

+ 16 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/Expert.java

@@ -0,0 +1,16 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import lombok.Data;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 17:54
+ */
+@Data
+public class Expert {
+    private Long id;
+    private String name;
+    private String photo;
+    private String introduction;
+
+}

+ 28 - 0
core/src/main/java/com/mooctest/crowd/domain/model/ExpertPO.java

@@ -0,0 +1,28 @@
+package com.mooctest.crowd.domain.model;
+
+import lombok.Data;
+
+import javax.persistence.*;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 17:54
+ */
+@Data
+@Entity(name = "expert")
+public class ExpertPO {
+    @Id
+    @Column(name = "E_ID")
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @Column(name = "E_NAME")
+    private String name;
+
+    @Column(name = "E_PHOTO")
+    private String photo;
+
+    @Column(name = "E_INTRODUCTION")
+    private String introduction;
+    
+}

+ 50 - 0
core/src/main/java/com/mooctest/crowd/domain/repository/CommonRepo.java

@@ -7,10 +7,18 @@ import com.mooctest.crowd.domain.exception.FieldNoExistException;
 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.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;
 import java.util.List;
 import java.util.Optional;
 import java.util.stream.Collectors;
@@ -45,6 +53,9 @@ public class CommonRepo {
     @Autowired
     private PartnerDao partnerDao;
 
+    @Autowired
+    private ExpertDao expertDao;
+
     public List<TestType> getAllTestType(){
         return testTypeDao.findAll().stream().map(testTypePO -> Converter.convert(TestType.class, testTypePO)).collect(Collectors.toList());
     }
@@ -122,4 +133,43 @@ public class CommonRepo {
         return testTypeList;
     }
 
+    public Page<Resource> findAllResourceByPage(Pageable pageable, String keyword){
+        Specifications<ResourcePO> where =  Specifications.where(getResource(keyword));
+        return resourceDao.findAll(where, pageable).map(resourcePO -> Converter.convert(Resource.class, resourcePO));
+    }
+
+    private Specification<ResourcePO> getResource(String keyword) {
+        return new Specification<ResourcePO>() {
+            @Override
+            public Predicate toPredicate(Root<ResourcePO> 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 Page<Expert> findAllExpertByPage(Pageable pageable, String keyword){
+        Specifications<ExpertPO> where =  Specifications.where(getExpert(keyword));
+        return expertDao.findAll(where, pageable).map(expertPO -> Converter.convert(Expert.class, expertPO));
+    }
+
+    private Specification<ExpertPO> getExpert(String keyword) {
+        return new Specification<ExpertPO>() {
+            @Override
+            public Predicate toPredicate(Root<ExpertPO> 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;
+            }
+        };
+    }
 }

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
site/src/main/java/com/mooctest/crowd/site/controller/CommonController.java


+ 23 - 0
site/src/main/java/com/mooctest/crowd/site/data/vo/ExpertVO.java

@@ -0,0 +1,23 @@
+package com.mooctest.crowd.site.data.vo;
+
+import com.mooctest.crowd.domain.domainobject.Expert;
+import lombok.Data;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 17:54
+ */
+@Data
+public class ExpertVO {
+    private Long id;
+    private String name;
+    private String photo;
+    private String introduction;
+
+    public ExpertVO(Expert expert){
+        id = expert.getId();
+        name = expert.getName();
+        photo = expert.getPhoto();
+        introduction = expert.getIntroduction();
+    }
+}

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

@@ -5,6 +5,8 @@ import com.mooctest.crowd.site.data.dto.IndexInfoDTO;
 import com.mooctest.crowd.site.data.dto.MyCrowdDTO;
 import com.mooctest.crowd.site.data.vo.AgencyVO;
 import com.mooctest.crowd.site.data.vo.CrowdProjectVO;
+import com.mooctest.crowd.site.data.vo.ExpertVO;
+import com.mooctest.crowd.site.data.vo.ResourceVO;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
@@ -20,4 +22,8 @@ public interface CommonService {
     Page<CrowdProjectVO> getProjectInfo(Pageable pageable, String keyword, int deletedStatus);
 
     Page<AgencyVO> getAgencyInfo(Pageable pageable, String keyword, int deletedStatus);
+
+    Page<ResourceVO> getResourceInfo(Pageable pageable, String keyword);
+
+    Page<ExpertVO> getExpertInfo(Pageable pageable, String keyword);
 }

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

@@ -1,5 +1,6 @@
 package com.mooctest.crowd.site.service.impl;
 
+import com.mooctest.crowd.domain.repository.CommonRepo;
 import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
 import com.mooctest.crowd.domain.repository.EvaluationAgencyRepo;
 import com.mooctest.crowd.site.data.dto.IndexDTO;
@@ -7,6 +8,8 @@ import com.mooctest.crowd.site.data.dto.IndexInfoDTO;
 import com.mooctest.crowd.site.data.dto.MyCrowdDTO;
 import com.mooctest.crowd.site.data.vo.AgencyVO;
 import com.mooctest.crowd.site.data.vo.CrowdProjectVO;
+import com.mooctest.crowd.site.data.vo.ExpertVO;
+import com.mooctest.crowd.site.data.vo.ResourceVO;
 import com.mooctest.crowd.site.mediator.ViewMediator;
 import com.mooctest.crowd.site.service.CommonService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -28,6 +31,9 @@ public class CommonServiceImpl implements CommonService {
     @Autowired
     private EvaluationAgencyRepo agencyRepo;
 
+    @Autowired
+    private CommonRepo commonRepo;
+
     @Override
     public IndexDTO getIndexInfo() {
         return viewMediator.renderIndex();
@@ -53,4 +59,14 @@ public class CommonServiceImpl implements CommonService {
         return agencyRepo.findAllByPage(pageable, keyword, deletedStatus).map(agency -> new AgencyVO(agency));
     }
 
+    @Override
+    public Page<ResourceVO> getResourceInfo(Pageable pageable, String keyword) {
+        return commonRepo.findAllResourceByPage(pageable, keyword).map(resource -> new ResourceVO(resource));
+    }
+
+    @Override
+    public Page<ExpertVO> getExpertInfo(Pageable pageable, String keyword) {
+        return commonRepo.findAllExpertByPage(pageable, keyword).map(expert -> new ExpertVO(expert));
+    }
+
 }

Niektoré súbory nie sú zobrazené, pretože je v týchto rozdielových dátach zmenené mnoho súborov