Ver Fonte

Merge branch 'feature-V2.0' of http://git.mooctest.com/crowd-2019/crowd-test-service-backend into feature-V2.0

xuxuan há 5 anos atrás
pai
commit
5b93d031b6

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

@@ -1,6 +1,7 @@
 package com.mooctest.crowd.domain.dao;
 
 import com.mooctest.crowd.domain.model.CrowdTestProjectPO;
+import com.mooctest.crowd.domain.model.FieldRankInfo;
 import com.mooctest.crowd.domain.model.RankInfo;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
@@ -44,6 +45,9 @@ public interface CrowdTestProjectDao extends CrudRepository<CrowdTestProjectPO,
     @Query(value = "SELECT new com.mooctest.crowd.domain.model.RankInfo(SUM(p.quotedPrice), p.userId) FROM CrowdTestProjectPO p where p.status>1 GROUP BY p.userId ORDER BY SUM(p.quotedPrice) DESC")
     List<RankInfo> findTotalPriceOfUser(Pageable pageable);
 
+    @Query(value = "SELECT new com.mooctest.crowd.domain.model.FieldRankInfo(COUNT(p.fieldType),0L ,p.fieldType) FROM CrowdTestProjectPO p where p.status=4 GROUP BY p.fieldType ORDER BY COUNT(p.fieldType) DESC")
+    List<FieldRankInfo> findTotalCountOfField(Pageable pageable);
+
     @Override
     void delete(CrowdTestProjectPO crowdTestProjectPO);
 

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

@@ -29,5 +29,5 @@ public interface TaskToUserDao extends CrudRepository<TaskToUserPO,Long> {
     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);
+    List<RankCountInfo> findTotalCountOfUser();
 }

+ 1 - 30
core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestProject.java

@@ -26,6 +26,7 @@ public class CrowdTestProject {
     private String linkMan;
     private String linkManMobile;
     private String type;
+    private String fieldType;
     private String description;
     private String projectFile;
     private String requirementFile;
@@ -44,36 +45,6 @@ public class CrowdTestProject {
     private List<CrowdTestTask> crowdTestTaskList;
     private CrowdTestReport crowdTestReportForProject;
 
-    @Override
-    public String toString() {
-        return "CrowdTestProject{" +
-                "id=" + id +
-                ", name='" + name + '\'' +
-                ", code='" + code + '\'' +
-                ", userId=" + userId +
-                ", regionalManagerId=" + regionalManagerId +
-                ", projectDistributionTypeId=" + projectDistributionTypeId +
-                ", platform='" + platform + '\'' +
-                ", linkMan='" + linkMan + '\'' +
-                ", linkManMobile='" + linkManMobile + '\'' +
-                ", type='" + type + '\'' +
-                ", description='" + description + '\'' +
-                ", projectFile='" + projectFile + '\'' +
-                ", requirementFile='" + requirementFile + '\'' +
-                ", distributionProvince='" + distributionProvince + '\'' +
-                ", distributionCity='" + distributionCity + '\'' +
-                ", quotedPrice=" + quotedPrice +
-                ", fixedPrice=" + fixedPrice +
-                ", status=" + status +
-                ", deadTime=" + deadTime +
-                ", endTime=" + endTime +
-                ", isDeleted=" + isDeleted +
-                ", createTime=" + createTime +
-                ", crowdTestTaskList=" + crowdTestTaskList +
-                ", crowdTestReportForProject=" + crowdTestReportForProject +
-                '}';
-    }
-
     /**
      * 更新项目信息
      * @param crowdTestProjectModify

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

@@ -47,6 +47,9 @@ public class CrowdTestProjectPO implements Serializable {
     @Column(name = "CTP_TYPE")
     private String type;
 
+    @Column(name = "CTP_FIELD_TYPE")
+    private String fieldType;
+
     @Column(name = "CTP_DESCRIPTION")
     private String description;
 

+ 19 - 0
core/src/main/java/com/mooctest/crowd/domain/model/FieldRankInfo.java

@@ -0,0 +1,19 @@
+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 FieldRankInfo {
+    Long count;
+    Long entityId;
+    String name;
+}

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

@@ -99,7 +99,7 @@ public class CommonRepo {
         }
     }
 
-    public Field getFieldByAppCode(String code){
+    public Field getFieldByFieldCode(String code){
         Optional<FieldPO> fieldPO = fieldDao.findByCode(code);
         if(!fieldPO.isPresent()){
             throw new FieldNoExistException();

Diff do ficheiro suprimidas por serem muito extensas
+ 0 - 0
site/src/main/java/com/mooctest/crowd/site/controller/CommonController.java


+ 1 - 0
site/src/main/java/com/mooctest/crowd/site/data/dto/IndexInfoDTO.java

@@ -14,6 +14,7 @@ public class IndexInfoDTO {
 
     private List<TestTypeVO> testTypeList;
     private List<ApplicationTypeVO> applicationTypeList;
+    private List<FieldVO> fieldRank;
     private List<EvolutionAgencyVO> agencyRank;
     private List<UserVO> userRank;
     private List<FieldVO> fieldList;

+ 2 - 3
site/src/main/java/com/mooctest/crowd/site/data/vo/CrowdProjectVO.java

@@ -1,16 +1,13 @@
 package com.mooctest.crowd.site.data.vo;
 
 
-import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.TypeReference;
 import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
 import com.mooctest.crowd.domain.domainobject.CrowdTestProjectStatus;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
 import java.sql.Timestamp;
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -29,6 +26,7 @@ public class CrowdProjectVO {
     private String contactPhone;
     private List<String> type;
     private List<String> platform;
+    private String fieldType;
     private String desc;
     private String doc;
     private String file;
@@ -54,6 +52,7 @@ public class CrowdProjectVO {
         this.contactPhone = project.getLinkManMobile();
         this.type = (List<String>)JSONArray.parse(project.getType());
         this.platform = (List<String>)JSONArray.parse(project.getPlatform());
+        this.fieldType = project.getFieldType();
         this.desc = project.getDescription();
         this.doc = project.getRequirementFile();
         this.file = project.getProjectFile();

+ 1 - 0
site/src/main/java/com/mooctest/crowd/site/data/vo/FieldVO.java

@@ -12,6 +12,7 @@ public class FieldVO {
     private Long id;
     private String code;
     private String name;
+    private Long count;
 
     public FieldVO(Field field){
         id = field.getId();

+ 5 - 5
site/src/main/java/com/mooctest/crowd/site/data/vo/UserVO.java

@@ -6,8 +6,6 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 import org.springframework.beans.BeanUtils;
 
-import java.util.Date;
-
 /**
  * @Author: xuexb
  * @Date: 2019.7.15 20:41
@@ -27,6 +25,7 @@ public class UserVO {
     private String photoUrl;
     private Double allProjectPrice;
     private String authType;
+    private Long taskCount;
 
     public UserVO(User user){
         BeanUtils.copyProperties(user, this);
@@ -41,9 +40,10 @@ public class UserVO {
             this.authType = "noAuth";
     }
 
-    public User toUser(){
-        //todo
-        return new User();
+    public void toUser(User user){
+        id = user.getId();
+        name = user.getName();
+        userName = user.getUserName();
     }
 
     public UserVO(Account account){

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

@@ -25,7 +25,6 @@ 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;
@@ -101,9 +100,18 @@ public class WebMediatorImpl implements ViewMediator {
     public IndexInfoDTO renderIndexInfos() {
         IndexInfoDTO indexInfoDTO = new IndexInfoDTO();
         Pageable pageable = PageRequest.of(0, 3);
+        int top = 3;
+        //获取热门众测
+        List<FieldVO> fieldRanks = projectDao.findTotalCountOfField(pageable).stream().map(fieldRankInfo -> {
+            Field field = commonRepo.getFieldByFieldCode(fieldRankInfo.getName());
+            FieldVO fieldVO = new FieldVO(field);
+            fieldVO.setCount(fieldRankInfo.getCount());
+            return fieldVO;
+        }).filter(Objects::nonNull).collect(Collectors.toList());
+
         //获取机构排名
         String agencyName = agencyDao.findById(Long.parseLong(agencyId)).get().getEvaluationAgencyName();
-        List<EvolutionAgencyVO> agencyRanks = taskToUserDao.findTotalCountOfUser(pageable).stream().map(rankInfo -> {
+        List<EvolutionAgencyVO> agencyRanks = taskToUserDao.findTotalCountOfUser().stream().map(rankInfo -> {
             EvaluationAgencyPO agency = agencyDao.findByUserId(rankInfo.getEntityId());
             if (agency!=null && !agency.getEvaluationAgencyName().equals(agencyName)) {
                 EvolutionAgencyVO agencyVO = new EvolutionAgencyVO();
@@ -116,21 +124,34 @@ public class WebMediatorImpl implements ViewMediator {
             }
             return null;
         }).filter(Objects::nonNull).collect(Collectors.toList());
+        if(agencyRanks.size() > top){
+            agencyRanks = agencyRanks.subList(0,top);
+        }
 
         //获取众测人员排名
-        List<EvolutionAgencyVO> userRanks = taskToUserDao.findTotalCountOfUser(pageable).stream().map(rankInfo -> {
+        List<UserVO> userRanks = taskToUserDao.findTotalCountOfUser().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;
+                User user = userRepo.getByID(agency.getUserId());
+                UserVO userVO = new UserVO(user);
+                userVO.setTaskCount(rankInfo.getCount());
+                return userVO;
             }
             return null;
         }).filter(Objects::nonNull).collect(Collectors.toList());
+        if(userRanks.size() > top){
+            userRanks = userRanks.subList(0,top);
+        }
+
+        // 获取大赛信息
+        List<Competition> competitionList = commonRepo.getAllCompetition();
+        if(competitionList.size() > top){
+            competitionList = competitionList.subList(0,top);
+        }
+        List<CompetitionVO> competitionVOS = competitionList.stream().map(competition -> {
+            CompetitionVO competitionVO = new CompetitionVO(competition);
+            return competitionVO;
+        }).sorted(Comparator.comparing(CompetitionVO::getStartTime).reversed()).collect(Collectors.toList());
 
         // 获取服务类型
         List<TestType> allTestType = commonRepo.getAllTestType();
@@ -159,16 +180,6 @@ public class WebMediatorImpl implements ViewMediator {
             return fieldVO;
         }).collect(Collectors.toList());
 
-        // 获取大赛信息
-        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;
-        }).sorted(Comparator.comparing(CompetitionVO::getStartTime).reversed()).collect(Collectors.toList());
-
         // 获取资源和工具
         List<Resource> resourceList = commonRepo.getAllResource();
         List<ResourceVO> resourceVOS = resourceList.stream().map(resource -> {
@@ -191,10 +202,11 @@ public class WebMediatorImpl implements ViewMediator {
             return evolutionAgencyVO;
         }).collect(Collectors.toList());
 
-        Page<CrowdTestProjectPO> all = projectDao.findAll(pageable);
+//        Page<CrowdTestProjectPO> all = projectDao.findAll(pageable);
 
+        indexInfoDTO.setFieldRank(fieldRanks);
         indexInfoDTO.setAgencyRank(agencyRanks);
-//        indexInfoDTO.setUserRank(userRanks);
+        indexInfoDTO.setUserRank(userRanks);
         indexInfoDTO.setTestTypeList(testTypeVOS);
         indexInfoDTO.setApplicationTypeList(applicationTypeVOS);
         indexInfoDTO.setFieldList(fieldVOS);

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

@@ -10,4 +10,6 @@ public interface CommonService {
     IndexDTO getIndexInfo();
 
     MyCrowdDTO getPersonCrowd(Long userId);
+
+    IndexInfoDTO getIndexInfos();
 }

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

@@ -25,4 +25,9 @@ public class CommonServiceImpl implements CommonService {
     public MyCrowdDTO getPersonCrowd(Long userId) {
         return viewMediator.renderMyCrowd(userId);
     }
+
+    @Override
+    public IndexInfoDTO getIndexInfos() {
+        return viewMediator.renderIndexInfos();
+    }
 }

Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff