소스 검색

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

xuxuan 5 년 전
부모
커밋
46914d95b5

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

@@ -1,8 +1,7 @@
 package com.mooctest.crowd.domain.dao;
 
 import com.mooctest.crowd.domain.model.CrowdTestProjectPO;
-import com.mooctest.crowd.domain.model.CrowdTestReportPO;
-import com.mooctest.crowd.domain.model.FieldRankInfo;
+import com.mooctest.crowd.domain.model.RankInfos;
 import com.mooctest.crowd.domain.model.RankInfo;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
@@ -49,8 +48,12 @@ 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);
+    @Query(value = "SELECT new com.mooctest.crowd.domain.model.RankInfos(COUNT(p.fieldType),0L ,p.fieldType) FROM CrowdTestProjectPO p where p.status=4 GROUP BY p.fieldType ORDER BY COUNT(p.fieldType) DESC")
+    List<RankInfos> findTotalCountOfField(Pageable pageable);
+
+
+    @Query(value = "SELECT new com.mooctest.crowd.domain.model.RankInfos(COUNT(p.platform),0L ,p.platform) FROM CrowdTestProjectPO p where p.status>1 GROUP BY p.platform ORDER BY COUNT(p.platform) DESC")
+    List<RankInfos> findTotalCountOfApplicationType(Pageable pageable);
 
     @Override
     void delete(CrowdTestProjectPO crowdTestProjectPO);

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

@@ -22,11 +22,11 @@ public class CrowdTestProject {
     private Long userId;
     private Long regionalManagerId;
     private Long projectDistributionTypeId;
+    private String fieldType;
     private String platform;
+    private String type;
     private String linkMan;
     private String linkManMobile;
-    private String type;
-    private String fieldType;
     private String description;
     private String projectFile;
     private String requirementFile;

+ 6 - 34
core/src/main/java/com/mooctest/crowd/domain/model/CrowdTestProjectPO.java

@@ -35,21 +35,21 @@ public class CrowdTestProjectPO implements Serializable {
     @Column(name = "CTP_PDT_ID")
     private Long projectDistributionTypeId;
 
+    @Column(name = "CTP_FIELD_TYPE")
+    private String fieldType;
+
     @Column(name = "CTP_PLATFORM")
     private String platform;
 
+    @Column(name = "CTP_TYPE")
+    private String type;
+
     @Column(name = "CTP_LINK_MAN")
     private String linkMan;
 
     @Column(name = "CTP_Link_MAN_MOBILE")
     private String linkManMobile;
 
-    @Column(name = "CTP_TYPE")
-    private String type;
-
-    @Column(name = "CTP_FIELD_TYPE")
-    private String fieldType;
-
     @Column(name = "CTP_DESCRIPTION")
     private String description;
 
@@ -92,32 +92,4 @@ public class CrowdTestProjectPO implements Serializable {
 
     @Column(name = "CTP_CREATE_TIME")
     private Timestamp createTime;
-
-    @Override
-    public String toString() {
-        return "CrowdTestProjectPO{" +
-                "id=" + id +
-                ", code='" + code + '\'' +
-                ", name='" + name + '\'' +
-                ", userId=" + userId +
-                ", regionalManagerId=" + regionalManagerId +
-                ", projectDistributionTypeId=" + projectDistributionTypeId +
-                ", description='" + description + '\'' +
-                ", platform=" + platform +
-                ", linkMan='" + linkMan + '\'' +
-                ", linkManMobile='" + linkManMobile + '\'' +
-                ", type=" + type +
-                ", distributionProvince='" + distributionProvince + '\'' +
-                ", distributionCity='" + distributionCity + '\'' +
-                ", projectFile='" + projectFile + '\'' +
-                ", requirementFile='" + requirementFile + '\'' +
-                ", quotedPrice=" + quotedPrice +
-                ", fixedPrice=" + fixedPrice +
-                ", status=" + status +
-                ", deadTime=" + deadTime +
-                ", endTime=" + endTime +
-                ", isDeleted=" + isDeleted +
-                ", createTime=" + createTime +
-                '}';
-    }
 }

+ 2 - 2
core/src/main/java/com/mooctest/crowd/domain/model/FieldRankInfo.java → core/src/main/java/com/mooctest/crowd/domain/model/RankInfos.java

@@ -12,8 +12,8 @@ import lombok.NoArgsConstructor;
 @Data
 @AllArgsConstructor
 @NoArgsConstructor
-public class FieldRankInfo {
+public class RankInfos {
     Long count;
     Long entityId;
-    String name;
+    String code;
 }

+ 8 - 3
site/src/main/java/com/mooctest/crowd/site/command/CrowdTestProjectCommand.java

@@ -25,11 +25,15 @@ public class CrowdTestProjectCommand {
     @NotNull(message = "项目名称不可为空")
     private String name;
 
+    @NotNull(message = "项目领域类型不可为空")
+    private String fieldType;
+
+    @NotNull(message = "项目应用类型不可为空")
+    private String platform;
+
     @NotNull(message = "项目服务类型不可为空")
     private ArrayList<String> type;
 
-    private ArrayList<String> platform;
-
     @NotNull(message = "项目描述不可为空")
     private String desc;
 
@@ -68,8 +72,9 @@ public class CrowdTestProjectCommand {
         crowdTestProject.setName(this.name);
         crowdTestProject.setLinkMan(this.contactName);
         crowdTestProject.setLinkManMobile(this.contactPhone);
+        crowdTestProject.setFieldType(this.fieldType);
         crowdTestProject.setType(JSONObject.toJSONString(this.type));
-        crowdTestProject.setPlatform(JSONObject.toJSONString(this.platform));
+        crowdTestProject.setPlatform(this.platform);
         crowdTestProject.setDescription(this.desc);
         crowdTestProject.setRequirementFile(this.doc);
         crowdTestProject.setProjectFile(this.file);

+ 9 - 12
site/src/main/java/com/mooctest/crowd/site/controller/TechnicalArticlesController.java

@@ -9,15 +9,13 @@ import com.mooctest.crowd.site.data.vo.SearchConditionVO;
 import com.mooctest.crowd.site.data.vo.TechnicalArticlesVO;
 import com.mooctest.crowd.site.service.TechnicalArticlesService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.domain.Sort;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
+
 
 /**
  * @Author: hanyuwei
@@ -30,15 +28,14 @@ public class TechnicalArticlesController {
     @Autowired
     private TechnicalArticlesService technical;
 
-//    @RequestMapping(value = "/articles", method = RequestMethod.POST)
-//    public ResponseVO<TechnicalArticlesDTO> technicalarticles(@RequestBody SearchConditionVO searchConditionVO){
-//        Map<String, String> extraCondition = searchConditionVO.getColumnFilters()==null? new HashMap<>() :super.getExtraCondition(searchConditionVO);
-//        Gson gson = new Gson();
-//        SearchConditionVO searchConditionVO = gson.fromJson(searchCondition, SearchConditionVO.class);
-//        Pageable pageable = this.getPageable(searchConditionVO);
-//        String keyword = searchConditionVO.getKeyword();
-//        return new ResponseVO<>(ServerCode.SUCCESS, technical.getArticles(pageable, keyword));
-//    }
+    @RequestMapping(value = "/articles", method = RequestMethod.GET)
+    public ResponseVO<TechnicalArticlesDTO> technicalarticles(@RequestParam(name = "searchCondition") String searchCondition){
+        Gson gson = new Gson();
+        SearchConditionVO searchConditionVO = gson.fromJson(searchCondition, SearchConditionVO.class);
+        Pageable pageable = this.getPageable(searchConditionVO);
+        String keyword = searchConditionVO.getKeyword();
+        return new ResponseVO<>(ServerCode.SUCCESS, technical.getArticles(pageable, keyword));
+    }
 
     Pageable getPageable(SearchConditionVO searchConditionVO){
         int activePage = searchConditionVO.getActivePage() == 0?1:searchConditionVO.getActivePage();

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

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

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

@@ -13,6 +13,7 @@ import java.util.List;
 public class ApplicationTypeVO {
     private String code;
     private String name;
+    private Long count;
     private List<TestTypeVO> testTypeList;
 
     public ApplicationTypeVO(ApplicationType applicationType){

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

@@ -24,9 +24,9 @@ public class CrowdProjectVO {
     private String name;
     private String contactName;
     private String contactPhone;
-    private List<String> type;
-    private List<String> platform;
+    private String platform;
     private String fieldType;
+    private List<String> type;
     private String desc;
     private String doc;
     private String file;
@@ -51,7 +51,7 @@ public class CrowdProjectVO {
         this.contactName = project.getLinkMan();
         this.contactPhone = project.getLinkManMobile();
         this.type = (List<String>)JSONArray.parse(project.getType());
-        this.platform = (List<String>)JSONArray.parse(project.getPlatform());
+        this.platform = project.getPlatform();
         this.fieldType = project.getFieldType();
         this.desc = project.getDescription();
         this.doc = project.getRequirementFile();

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

@@ -104,11 +104,15 @@ public class WebMediatorImpl implements ViewMediator {
         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);
-            return fieldVO;
+        List<ApplicationTypeVO> applicationTypeRanks = projectDao.findTotalCountOfApplicationType(pageable).stream().map(rankInfos -> {
+            ApplicationType applicationType = commonRepo.getApplicationTypeByAppCode(rankInfos.getCode());
+            ApplicationTypeVO applicationTypeVO = new ApplicationTypeVO(applicationType);
+            applicationTypeVO.setCount(rankInfos.getCount());
+            return applicationTypeVO;
         }).filter(Objects::nonNull).collect(Collectors.toList());
+        if (applicationTypeRanks.size() > top) {
+            applicationTypeRanks = applicationTypeRanks.subList(0, top);
+        }
 
         //获取机构排名
         String agencyName = agencyDao.findById(Long.parseLong(agencyId)).get().getEvaluationAgencyName();
@@ -203,9 +207,7 @@ public class WebMediatorImpl implements ViewMediator {
             return evolutionAgencyVO;
         }).collect(Collectors.toList());
 
-//        Page<CrowdTestProjectPO> all = projectDao.findAll(pageable);
-
-        indexInfoDTO.setFieldRank(fieldRanks);
+        indexInfoDTO.setApplicationTypeRank(applicationTypeRanks);
         indexInfoDTO.setAgencyRank(agencyRanks);
         indexInfoDTO.setUserRank(userRanks);
         indexInfoDTO.setTestTypeList(testTypeVOS);

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

@@ -2,12 +2,12 @@ package com.mooctest.crowd.site.service;
 
 import com.mooctest.crowd.site.data.dto.TechnicalArticlesDTO;
 import com.mooctest.crowd.site.data.vo.TechnicalArticlesVO;
-import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 
 import java.util.List;
 
 
+
 /**
  * @author: Diors.Po
  * @Email: 171256175@qq.com
@@ -16,7 +16,7 @@ import java.util.List;
 
 public interface TechnicalArticlesService {
 
-    TechnicalArticlesDTO getArticles(Pageable pageable, String keyword);
+    TechnicalArticlesDTO getArticles(Pageable pageable,String keyword);
 
     List<TechnicalArticlesVO> articlesRanking();
 }

+ 1 - 2
site/src/main/java/com/mooctest/crowd/site/service/impl/TechnicalArticlesServiceImpl.java

@@ -7,7 +7,6 @@ import com.mooctest.crowd.site.data.vo.TechnicalArticlesVO;
 import com.mooctest.crowd.site.mediator.ViewMediator;
 import com.mooctest.crowd.site.service.TechnicalArticlesService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 
@@ -26,7 +25,7 @@ public class TechnicalArticlesServiceImpl implements TechnicalArticlesService{
     private TechnicalArticlesRepo technicalArticlesRepo;
 
     @Override
-    public TechnicalArticlesDTO getArticles(Pageable pageable, String keyword) {
+    public TechnicalArticlesDTO getArticles(Pageable pageable,String keyword) {
         TechnicalArticlesDTO  technicalArticlesDTO= new  TechnicalArticlesDTO();
         technicalArticlesDTO.setTechnicalArticlespage(technicalArticlesRepo.getTechnicalArticles(pageable, keyword).map(technicalArticles -> new TechnicalArticlesVO(technicalArticles)));
         return technicalArticlesDTO;