guo00guo преди 5 години
родител
ревизия
ac553f51d4

+ 3 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/CompetitionDao.java

@@ -16,4 +16,7 @@ public interface CompetitionDao extends CrudRepository<CompetitionPO, Long>{
     List<CompetitionPO> findAll();
 
     List<CompetitionPO> findAll(Pageable pageable);
+
+//    @Query(value = "SELECT new com.mooctest.crowd.domain.domainobject.Competition(c.id,c.name,c.linkUrl,c.startTime,c.isDeleted) FROM CompetitionPO c where c.isDeleted=0 ORDER BY c.startTime DESC")
+//    List<Competition> findTop3(Pageable pageable);
 }

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

@@ -1,11 +1,13 @@
 package com.mooctest.crowd.domain.dao;
 
-import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
 import com.mooctest.crowd.domain.model.CrowdTestProjectPO;
 import com.mooctest.crowd.domain.model.RankInfo;
+import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.CrudRepository;
+import org.springframework.data.repository.PagingAndSortingRepository;
 
 import javax.transaction.Transactional;
 import java.util.List;
@@ -16,12 +18,15 @@ import java.util.List;
  */
 
 @Transactional
-public interface CrowdTestProjectDao extends CrudRepository<CrowdTestProjectPO, Long> {
+public interface CrowdTestProjectDao extends CrudRepository<CrowdTestProjectPO, Long>, JpaRepository<CrowdTestProjectPO,Long>, PagingAndSortingRepository<CrowdTestProjectPO,Long> {
 
 //    @Override
 //    Optional<CrowdTestProjectPO> findById(Long id);
     List<CrowdTestProjectPO> findAll();
 
+    @Override
+    Page<CrowdTestProjectPO> findAll(Pageable pageable);
+
     CrowdTestProjectPO findByIdAndIsDeleted(Long id, int isDeleted);
 
     CrowdTestProjectPO findByCodeAndIsDeleted(String code, int isDeleted);

+ 4 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/TaskToUserDao.java

@@ -1,5 +1,6 @@
 package com.mooctest.crowd.domain.dao;
 
+import com.mooctest.crowd.domain.model.RankCountInfo;
 import com.mooctest.crowd.domain.model.RankInfo;
 import com.mooctest.crowd.domain.model.TaskToUserPO;
 import org.springframework.data.domain.Pageable;
@@ -26,4 +27,7 @@ public interface TaskToUserDao extends CrudRepository<TaskToUserPO,Long> {
 
     @Query(value = "SELECT new com.mooctest.crowd.domain.model.RankInfo(SUM(t.quotedPrice), t.userId) FROM TaskToUserPO t where t.userId is not null GROUP BY t.userId ORDER BY SUM(t.quotedPrice) DESC")
     List<RankInfo> findTotalPriceOfAgency(Pageable pageable);
+
+    @Query(value = "SELECT new com.mooctest.crowd.domain.model.RankCountInfo(SUM(t.isCommitted), t.userId) FROM TaskToUserPO t where t.userId is not null and t.isCommitted=1 GROUP BY t.userId ORDER BY SUM(t.isCommitted) DESC")
+    List<RankCountInfo> findTotalCountOfUser(Pageable pageable);
 }

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

@@ -1,6 +1,8 @@
 package com.mooctest.crowd.domain.domainobject;
 
+import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 import java.sql.Timestamp;
 
@@ -9,6 +11,8 @@ import java.sql.Timestamp;
  * @date 2019/7/6 17:54
  */
 @Data
+@AllArgsConstructor
+@NoArgsConstructor
 public class Competition {
     private Long id;
     private String name;

+ 18 - 0
core/src/main/java/com/mooctest/crowd/domain/model/RankCountInfo.java

@@ -0,0 +1,18 @@
+package com.mooctest.crowd.domain.model;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author: Diors.Po
+ * @Email: 171256175@qq.com
+ * @date 2019-08-20 01:19
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class RankCountInfo {
+    Long count;
+    Long entityId;
+}

+ 5 - 6
core/src/main/java/com/mooctest/crowd/domain/repository/CommonRepo.java

@@ -61,18 +61,17 @@ public class CommonRepo {
         return resourceDao.findAll().stream().map(resourcePO -> Converter.convert(Resource.class, resourcePO)).collect(Collectors.toList());
     }
 
-    public List<Competition> getAllCompetitionTop3(Pageable pageable){
-        List<CompetitionPO> competitionPOS = competitionDao.findAll(pageable);
-        return competitionPOS.stream().map(competitionPO -> Converter.convert(Competition.class, competitionPO))
-                .filter(competition -> competition.getIsDeleted() == DeletedStatus.isNotDeleted).collect(Collectors.toList());
-    }
-
     public List<Competition> getAllCompetition(){
         return competitionDao.findAll().stream()
                 .map(competitionPO -> Converter.convert(Competition.class, competitionPO))
                 .filter(competition -> competition.getIsDeleted() == DeletedStatus.isNotDeleted).collect(Collectors.toList());
     }
 
+    public List<Competition> getAllCompetitionTop3(Pageable pageable){
+        List<CompetitionPO> competitionPOS = competitionDao.findAll(pageable);
+        return competitionPOS.stream().map(competitionPO -> Converter.convert(Competition.class, competitionPO))
+                .filter(competition -> competition.getIsDeleted() == DeletedStatus.isNotDeleted).collect(Collectors.toList());
+    }
     public List<Partner> getAllPartner(){
         return partnerDao.findAll().stream().map(partnerPO -> Converter.convert(Partner.class, partnerPO)).collect(Collectors.toList());
     }

+ 3 - 0
site/src/main/java/com/mooctest/crowd/site/data/vo/EvolutionAgencyVO.java

@@ -14,13 +14,16 @@ import lombok.NoArgsConstructor;
 @AllArgsConstructor
 public class EvolutionAgencyVO {
     private Long id;
+    private Long userId;
     private String logo;
     private String name;
     private Double allTaskPrice;
+    private Long taskCount;
 
     public EvolutionAgencyVO(EvaluationAgency evaluationAgency){
         id = evaluationAgency.getId();
         logo = evaluationAgency.getAgencyPhoto();
         name = evaluationAgency.getEvaluationAgencyName();
+        userId = evaluationAgency.getUserId();
     }
 }

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

@@ -25,6 +25,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Component;
@@ -82,6 +83,9 @@ public class WebMediatorImpl implements ViewMediator {
     @Autowired
     private TaskToUserDao taskToUserDao;
 
+    @Autowired
+    private CrowdTestProjectDao crowdTestProjectDao;
+
     @Value("${agency}")
     private String agencyId;
 
@@ -99,27 +103,32 @@ public class WebMediatorImpl implements ViewMediator {
     public IndexInfoDTO renderIndexInfos() {
         IndexInfoDTO indexInfoDTO = new IndexInfoDTO();
         Pageable pageable = PageRequest.of(0, 3);
-        //获取用户排名
-        List<UserVO> userRanks = projectDao.findTotalPriceOfUser(pageable).stream().map(rankInfo -> {
-            Optional<UserPO> userPO = userDao.findById(rankInfo.getEntityId());
-            if (userPO.isPresent()) {
-                UserVO userVO = new UserVO();
-                userVO.setName(userPO.get().getName());
-                userVO.setUserName(userPO.get().getUserName());
-                userVO.setAllProjectPrice(rankInfo.getTotalPrice());
-                return userVO;
-            }
-            return null;
-        }).filter(Objects::nonNull).collect(Collectors.toList());
         //获取机构排名
         String agencyName = agencyDao.findById(Long.parseLong(agencyId)).get().getEvaluationAgencyName();
-        List<EvolutionAgencyVO> agencyRanks = taskToUserDao.findTotalPriceOfAgency(pageable).stream().map(rankInfo -> {
+        List<EvolutionAgencyVO> agencyRanks = taskToUserDao.findTotalCountOfUser(pageable).stream().map(rankInfo -> {
             EvaluationAgencyPO agency = agencyDao.findByUserId(rankInfo.getEntityId());
             if (agency!=null && !agency.getEvaluationAgencyName().equals(agencyName)) {
                 EvolutionAgencyVO agencyVO = new EvolutionAgencyVO();
                 agencyVO.setName(agency.getEvaluationAgencyName());
                 agencyVO.setLogo(agency.getAgencyPhoto());
-                agencyVO.setAllTaskPrice(rankInfo.getTotalPrice());
+                agencyVO.setTaskCount(rankInfo.getCount());
+                agencyVO.setId(agency.getId());
+                agencyVO.setUserId(agency.getUserId());
+                return agencyVO;
+            }
+            return null;
+        }).filter(Objects::nonNull).collect(Collectors.toList());
+
+        //获取众测人员排名
+        List<EvolutionAgencyVO> userRanks = taskToUserDao.findTotalCountOfUser(pageable).stream().map(rankInfo -> {
+            EvaluationAgencyPO agency = agencyDao.findByUserId(rankInfo.getEntityId());
+            if (agency!=null && agency.getEvaluationAgencyName().equals(agencyName)) {
+                EvolutionAgencyVO agencyVO = new EvolutionAgencyVO();
+                agencyVO.setName(agency.getEvaluationAgencyName());
+                agencyVO.setLogo(agency.getAgencyPhoto());
+                agencyVO.setTaskCount(rankInfo.getCount());
+                agencyVO.setId(agency.getId());
+                agencyVO.setUserId(agency.getUserId());
                 return agencyVO;
             }
             return null;
@@ -154,6 +163,9 @@ public class WebMediatorImpl implements ViewMediator {
 
         // 获取大赛信息
         List<Competition> competitionList = commonRepo.getAllCompetition();
+        if(competitionList.size() > 3){
+            competitionList = competitionList.subList(0,3);
+        }
         List<CompetitionVO> competitionVOS = competitionList.stream().map(competition -> {
             CompetitionVO competitionVO = new CompetitionVO(competition);
             return competitionVO;
@@ -181,8 +193,10 @@ public class WebMediatorImpl implements ViewMediator {
             return evolutionAgencyVO;
         }).collect(Collectors.toList());
 
+        Page<CrowdTestProjectPO> all = crowdTestProjectDao.findAll(pageable);
+
         indexInfoDTO.setAgencyRank(agencyRanks);
-        indexInfoDTO.setUserRank(userRanks);
+//        indexInfoDTO.setUserRank(userRanks);
         indexInfoDTO.setTestTypeList(testTypeVOS);
         indexInfoDTO.setApplicationTypeList(applicationTypeVOS);
         indexInfoDTO.setFieldList(fieldVOS);