Forráskód Böngészése

获取首页信息

guo00guo 5 éve
szülő
commit
d3c2e05b73
37 módosított fájl, 720 hozzáadás és 17 törlés
  1. 1 1
      core/src/main/java/com/mooctest/crowd/domain/dao/ApplicationTypeDao.java
  2. 2 2
      core/src/main/java/com/mooctest/crowd/domain/dao/ApplicationTypeToTestTypeDao.java
  3. 19 0
      core/src/main/java/com/mooctest/crowd/domain/dao/CompetitionDao.java
  4. 18 0
      core/src/main/java/com/mooctest/crowd/domain/dao/FieldDao.java
  5. 18 0
      core/src/main/java/com/mooctest/crowd/domain/dao/PartnerDao.java
  6. 18 0
      core/src/main/java/com/mooctest/crowd/domain/dao/ResidentAgencyDao.java
  7. 19 0
      core/src/main/java/com/mooctest/crowd/domain/dao/ResourceDao.java
  8. 1 1
      core/src/main/java/com/mooctest/crowd/domain/dao/TestTypeDao.java
  9. 2 1
      core/src/main/java/com/mooctest/crowd/domain/domainobject/ApplicationType.java
  10. 18 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/Competition.java
  11. 14 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/Field.java
  12. 14 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/Partner.java
  13. 14 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/ResidentAgency.java
  14. 14 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/Resource.java
  15. 0 3
      core/src/main/java/com/mooctest/crowd/domain/domainobject/TestType.java
  16. 8 0
      core/src/main/java/com/mooctest/crowd/domain/exception/ApplicationTypeNoExistException.java
  17. 8 0
      core/src/main/java/com/mooctest/crowd/domain/exception/ApplicationTypeToTestTypeNoExistException.java
  18. 8 0
      core/src/main/java/com/mooctest/crowd/domain/exception/FieldNoExistException.java
  19. 8 0
      core/src/main/java/com/mooctest/crowd/domain/exception/ResourceNoExistException.java
  20. 8 0
      core/src/main/java/com/mooctest/crowd/domain/exception/TestTypeNoExistException.java
  21. 31 0
      core/src/main/java/com/mooctest/crowd/domain/model/CompetitionPO.java
  22. 24 0
      core/src/main/java/com/mooctest/crowd/domain/model/FieldPO.java
  23. 24 0
      core/src/main/java/com/mooctest/crowd/domain/model/PartnerPO.java
  24. 24 0
      core/src/main/java/com/mooctest/crowd/domain/model/ResidentAgencyPO.java
  25. 24 0
      core/src/main/java/com/mooctest/crowd/domain/model/ResourcePO.java
  26. 126 0
      core/src/main/java/com/mooctest/crowd/domain/repository/CommonRepo.java
  27. 16 4
      site/src/main/java/com/mooctest/crowd/site/controller/advice/ExceptionAdvice.java
  28. 6 4
      site/src/main/java/com/mooctest/crowd/site/data/dto/IndexInfoDTO.java
  29. 10 0
      site/src/main/java/com/mooctest/crowd/site/data/vo/ApplicationTypeVO.java
  30. 27 0
      site/src/main/java/com/mooctest/crowd/site/data/vo/CompetitionVO.java
  31. 7 0
      site/src/main/java/com/mooctest/crowd/site/data/vo/EvolutionAgencyVO.java
  32. 21 0
      site/src/main/java/com/mooctest/crowd/site/data/vo/FieldVO.java
  33. 21 0
      site/src/main/java/com/mooctest/crowd/site/data/vo/PartnerVO.java
  34. 21 0
      site/src/main/java/com/mooctest/crowd/site/data/vo/ResidentAgencyVO.java
  35. 21 0
      site/src/main/java/com/mooctest/crowd/site/data/vo/ResourceVO.java
  36. 7 0
      site/src/main/java/com/mooctest/crowd/site/data/vo/TestTypeVO.java
  37. 98 1
      site/src/main/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImpl.java

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

@@ -10,7 +10,7 @@ import java.util.Optional;
 @Transactional
 public interface ApplicationTypeDao extends CrudRepository<ApplicationTypePO, Long>{
 
-    ApplicationTypePO findByCode(String code);
+    Optional<ApplicationTypePO> findByCode(String code);
 
     Optional<ApplicationTypePO> findById(Long id);
 

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

@@ -10,9 +10,9 @@ import java.util.Optional;
 @Transactional
 public interface ApplicationTypeToTestTypeDao extends CrudRepository<ApplicationTypeToTestTypePO, Long>{
 
-    ApplicationTypeToTestTypePO findByCode(String code);
-
     Optional<ApplicationTypeToTestTypePO> findById(Long id);
 
+    List<ApplicationTypeToTestTypePO> findByApplicationTypeCode(String applicationTypeCode);
+
     List<ApplicationTypeToTestTypePO> findAll();
 }

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

@@ -0,0 +1,19 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.CompetitionPO;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.repository.CrudRepository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+import java.util.Optional;
+
+@Transactional
+public interface CompetitionDao extends CrudRepository<CompetitionPO, Long>{
+
+    Optional<CompetitionPO> findByIdAndIsDeleted(Long id, int isNotDeleted);
+
+    List<CompetitionPO> findAll();
+
+    List<CompetitionPO> findAll(Pageable pageable);
+}

+ 18 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/FieldDao.java

@@ -0,0 +1,18 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.FieldPO;
+import org.springframework.data.repository.CrudRepository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+import java.util.Optional;
+
+@Transactional
+public interface FieldDao extends CrudRepository<FieldPO, Long>{
+
+    Optional<FieldPO> findByCode(String code);
+
+    Optional<FieldPO> findById(Long id);
+
+    List<FieldPO> findAll();
+}

+ 18 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/PartnerDao.java

@@ -0,0 +1,18 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.PartnerPO;
+import org.springframework.data.repository.CrudRepository;
+
+import javax.transaction.Transactional;
+import java.util.List;
+import java.util.Optional;
+
+@Transactional
+public interface PartnerDao extends CrudRepository<PartnerPO, Long>{
+
+    Optional<PartnerPO> findByName(String name);
+
+    Optional<PartnerPO> findById(Long id);
+
+    List<PartnerPO> findAll();
+}

+ 18 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/ResidentAgencyDao.java

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

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

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

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

@@ -10,7 +10,7 @@ import java.util.Optional;
 @Transactional
 public interface TestTypeDao extends CrudRepository<TestTypePO, Long>{
 
-    TestTypePO findByCode(String code);
+    Optional<TestTypePO> findByCode(String code);
 
     Optional<TestTypePO> findById(Long id);
 

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

@@ -2,7 +2,7 @@ package com.mooctest.crowd.domain.domainobject;
 
 import lombok.Data;
 
-import javax.persistence.*;
+import java.util.List;
 
 /**
  * @author guochao
@@ -13,4 +13,5 @@ public class ApplicationType {
     private Long id;
     private String code;
     private String name;
+    private List<TestType> testTypeList;
 }

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

@@ -0,0 +1,18 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import lombok.Data;
+
+import java.sql.Timestamp;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 17:54
+ */
+@Data
+public class Competition {
+    private Long id;
+    private String name;
+    private String linkUrl;
+    private Timestamp startTime;
+    private int isDeleted;
+}

+ 14 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/Field.java

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

+ 14 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/Partner.java

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

+ 14 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/ResidentAgency.java

@@ -0,0 +1,14 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import lombok.Data;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 17:54
+ */
+@Data
+public class ResidentAgency {
+    private Long id;
+    private Long agencyId;
+    private Long userId;
+}

+ 14 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/Resource.java

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

+ 0 - 3
core/src/main/java/com/mooctest/crowd/domain/domainobject/TestType.java

@@ -2,14 +2,11 @@ package com.mooctest.crowd.domain.domainobject;
 
 import lombok.Data;
 
-import javax.persistence.*;
-
 /**
  * @author guochao
  * @date 2019/7/6 17:54
  */
 @Data
-@Entity(name = "test_type")
 public class TestType {
     private Long id;
     private String code;

+ 8 - 0
core/src/main/java/com/mooctest/crowd/domain/exception/ApplicationTypeNoExistException.java

@@ -0,0 +1,8 @@
+package com.mooctest.crowd.domain.exception;
+
+/**
+ * @author guochao
+ * @date 2019/7/16 9:23
+ */
+public class ApplicationTypeNoExistException extends BaseException {
+}

+ 8 - 0
core/src/main/java/com/mooctest/crowd/domain/exception/ApplicationTypeToTestTypeNoExistException.java

@@ -0,0 +1,8 @@
+package com.mooctest.crowd.domain.exception;
+
+/**
+ * @author guochao
+ * @date 2019/7/16 9:23
+ */
+public class ApplicationTypeToTestTypeNoExistException extends BaseException {
+}

+ 8 - 0
core/src/main/java/com/mooctest/crowd/domain/exception/FieldNoExistException.java

@@ -0,0 +1,8 @@
+package com.mooctest.crowd.domain.exception;
+
+/**
+ * @author guochao
+ * @date 2019/7/16 9:23
+ */
+public class FieldNoExistException extends BaseException {
+}

+ 8 - 0
core/src/main/java/com/mooctest/crowd/domain/exception/ResourceNoExistException.java

@@ -0,0 +1,8 @@
+package com.mooctest.crowd.domain.exception;
+
+/**
+ * @author guochao
+ * @date 2019/7/16 9:23
+ */
+public class ResourceNoExistException extends BaseException {
+}

+ 8 - 0
core/src/main/java/com/mooctest/crowd/domain/exception/TestTypeNoExistException.java

@@ -0,0 +1,8 @@
+package com.mooctest.crowd.domain.exception;
+
+/**
+ * @author guochao
+ * @date 2019/7/16 9:23
+ */
+public class TestTypeNoExistException extends BaseException {
+}

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

@@ -0,0 +1,31 @@
+package com.mooctest.crowd.domain.model;
+
+import lombok.Data;
+
+import javax.persistence.*;
+import java.sql.Timestamp;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 17:54
+ */
+@Data
+@Entity(name = "competition")
+public class CompetitionPO {
+    @Id
+    @Column(name = "C_ID")
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @Column(name = "C_NAME")
+    private String name;
+
+    @Column(name = "C_LINK_URL")
+    private String linkUrl;
+
+    @Column(name = "C_START_TIME")
+    private Timestamp startTime;
+
+    @Column(name = "C_IS_DELETED")
+    private int isDeleted;
+}

+ 24 - 0
core/src/main/java/com/mooctest/crowd/domain/model/FieldPO.java

@@ -0,0 +1,24 @@
+package com.mooctest.crowd.domain.model;
+
+import lombok.Data;
+
+import javax.persistence.*;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 17:54
+ */
+@Data
+@Entity(name = "field")
+public class FieldPO {
+    @Id
+    @Column(name = "F_ID")
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @Column(name = "F_CODE")
+    private String code;
+
+    @Column(name = "F_NAME")
+    private String name;
+}

+ 24 - 0
core/src/main/java/com/mooctest/crowd/domain/model/PartnerPO.java

@@ -0,0 +1,24 @@
+package com.mooctest.crowd.domain.model;
+
+import lombok.Data;
+
+import javax.persistence.*;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 17:54
+ */
+@Data
+@Entity(name = "partner")
+public class PartnerPO {
+    @Id
+    @Column(name = "P_ID")
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @Column(name = "P_NAME")
+    private String name;
+
+    @Column(name = "P_IMAGE")
+    private String imageUrl;
+}

+ 24 - 0
core/src/main/java/com/mooctest/crowd/domain/model/ResidentAgencyPO.java

@@ -0,0 +1,24 @@
+package com.mooctest.crowd.domain.model;
+
+import lombok.Data;
+
+import javax.persistence.*;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 17:54
+ */
+@Data
+@Entity(name = "resident_agency")
+public class ResidentAgencyPO {
+    @Id
+    @Column(name = "RA_ID")
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @Column(name = "RA_EA_ID")
+    private Long agencyId;
+
+    @Column(name = "RA_EA_U_ID")
+    private Long userId;
+}

+ 24 - 0
core/src/main/java/com/mooctest/crowd/domain/model/ResourcePO.java

@@ -0,0 +1,24 @@
+package com.mooctest.crowd.domain.model;
+
+import lombok.Data;
+
+import javax.persistence.*;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 17:54
+ */
+@Data
+@Entity(name = "resource")
+public class ResourcePO {
+    @Id
+    @Column(name = "R_ID")
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @Column(name = "R_CODE")
+    private String code;
+
+    @Column(name = "R_NAME")
+    private String name;
+}

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

@@ -0,0 +1,126 @@
+package com.mooctest.crowd.domain.repository;
+
+import com.mooctest.crowd.domain.dao.*;
+import com.mooctest.crowd.domain.domainobject.*;
+import com.mooctest.crowd.domain.exception.ApplicationTypeNoExistException;
+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.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Pageable;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+/**
+ * @author guochao
+ * @date 2020-06-22 17:23
+ */
+@Component
+public class CommonRepo {
+    @Autowired
+    private TestTypeDao testTypeDao;
+
+    @Autowired
+    private ApplicationTypeDao applicationTypeDao;
+
+    @Autowired
+    private ApplicationTypeToTestTypeDao applicationTypeToTestTypeDao;
+
+    @Autowired
+    private FieldDao fieldDao;
+
+    @Autowired
+    private ResourceDao resourceDao;
+
+    @Autowired
+    private CompetitionDao competitionDao;
+
+    @Autowired
+    private ResidentAgencyDao residentAgencyDao;
+
+    @Autowired
+    private PartnerDao partnerDao;
+
+    public List<TestType> getAllTestType(){
+        return testTypeDao.findAll().stream().map(testTypePO -> Converter.convert(TestType.class, testTypePO)).collect(Collectors.toList());
+    }
+
+    public List<ApplicationType> getAllApplicationType(){
+        return applicationTypeDao.findAll().stream().map(applicationTypePO -> Converter.convert(ApplicationType.class, applicationTypePO)).collect(Collectors.toList());
+    }
+
+    public List<Field> getAllFieldType(){
+        return fieldDao.findAll().stream().map(fieldPO -> Converter.convert(Field.class, fieldPO)).collect(Collectors.toList());
+    }
+
+    public List<Resource> getAllResource(){
+        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<Partner> getAllPartner(){
+        return partnerDao.findAll().stream().map(partnerPO -> Converter.convert(Partner.class, partnerPO)).collect(Collectors.toList());
+    }
+
+    public List<ResidentAgency> getAllResidentAgency(){
+        return residentAgencyDao.findAll().stream().map(residentAgencyPO -> Converter.convert(ResidentAgency.class, residentAgencyPO)).collect(Collectors.toList());
+    }
+
+    public ApplicationType getApplicationTypeByAppCode(String appCode){
+        Optional<ApplicationTypePO> applicationTypePO = applicationTypeDao.findByCode(appCode);
+        if(!applicationTypePO.isPresent()){
+            throw new ApplicationTypeNoExistException();
+        }else {
+            return Converter.convert(ApplicationType.class, applicationTypePO.get());
+        }
+
+    }
+
+    public TestType getTestTypeByAppCode(String typeCode){
+        Optional<TestTypePO> testTypePO = testTypeDao.findByCode(typeCode);
+        if(!testTypePO.isPresent()){
+            throw new TestTypeNoExistException();
+        }else {
+            return Converter.convert(TestType.class, testTypePO.get());
+        }
+    }
+
+    public Field getFieldByAppCode(String code){
+        Optional<FieldPO> fieldPO = fieldDao.findByCode(code);
+        if(!fieldPO.isPresent()){
+            throw new FieldNoExistException();
+        }else {
+            return Converter.convert(Field.class, fieldPO.get());
+        }
+    }
+
+    public List<ApplicationTypeToTestType> getAppToTypeByAppCode(String appCode){
+        List<ApplicationTypeToTestTypePO> appToTypeList = applicationTypeToTestTypeDao.findByApplicationTypeCode(appCode);
+        return appToTypeList.stream().map(applicationTypeToTestTypePO -> Converter.convert(ApplicationTypeToTestType.class, applicationTypeToTestTypePO)).collect(Collectors.toList());
+    }
+
+    public List<TestType> getTestTypeListByAppCode(String appTypeCode){
+        List<ApplicationTypeToTestType> appToTypeList = getAppToTypeByAppCode(appTypeCode);
+        List<TestType> testTypeList = appToTypeList.stream().map(applicationTypeToTestType -> {
+            TestType testTypeByAppCode = getTestTypeByAppCode(applicationTypeToTestType.getTestTypeCode());
+            return testTypeByAppCode;
+        }).collect(Collectors.toList());
+        return testTypeList;
+    }
+
+}

+ 16 - 4
site/src/main/java/com/mooctest/crowd/site/controller/advice/ExceptionAdvice.java

@@ -1,12 +1,14 @@
 package com.mooctest.crowd.site.controller.advice;
 
-import com.mooctest.crowd.site.constants.ResponseConstant;
-import com.mooctest.crowd.site.data.ResponseMessage;
 import com.mooctest.crowd.domain.exception.*;
+import com.mooctest.crowd.site.constants.ResponseConstant;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.http.HttpStatus;
 import org.springframework.web.HttpRequestMethodNotSupportedException;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.ResponseStatus;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
 
 /**
  * @author: Diors.Po
@@ -33,6 +35,16 @@ public class ExceptionAdvice {
             return "项目未设置价格";
         } else if (e instanceof PasswordErrorException){
             return "密码错误";
+        } else if (e instanceof ApplicationTypeNoExistException){
+            return "应用类型不存在";
+        } else if (e instanceof TestTypeNoExistException){
+            return "服务类型不存在";
+        } else if (e instanceof ApplicationTypeToTestTypeNoExistException){
+            return "应用类型对应的测试类型不存在";
+        } else if (e instanceof FieldNoExistException){
+            return "领域不存在";
+        } else if (e instanceof ResourceNoExistException){
+            return "资源不存在";
         } else
             return e.getMessage();
     }
@@ -56,7 +68,7 @@ public class ExceptionAdvice {
     @ResponseBody
     public String handleSystemException(Exception e){
         log.error("System Error: "+e.getMessage(), e);
-        return "There is a system error: "+e.getMessage();
+        return "系统异常 " + e.getMessage();
     }
 
     @ExceptionHandler(Excel2ProjectException.class)

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

@@ -1,9 +1,6 @@
 package com.mooctest.crowd.site.data.dto;
 
-import com.mooctest.crowd.site.data.vo.ApplicationTypeVO;
-import com.mooctest.crowd.site.data.vo.EvolutionAgencyVO;
-import com.mooctest.crowd.site.data.vo.TestTypeVO;
-import com.mooctest.crowd.site.data.vo.UserVO;
+import com.mooctest.crowd.site.data.vo.*;
 import lombok.Data;
 
 import java.util.List;
@@ -19,6 +16,11 @@ public class IndexInfoDTO {
     private List<ApplicationTypeVO> applicationTypeList;
     private List<EvolutionAgencyVO> agencyRank;
     private List<UserVO> userRank;
+    private List<FieldVO> fieldList;
+    private List<CompetitionVO> competitionList;
+    private List<ResourceVO> resourceList;
+    private List<EvolutionAgencyVO> residentAgencyList;
+    private List<PartnerVO> partnerList;
 //    private List<String> imgList;
 //    private List<CrowdTaskVO> hotTaskList;
 //    private List<PieChartDataVO> systemStatistics;

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

@@ -1,7 +1,10 @@
 package com.mooctest.crowd.site.data.vo;
 
+import com.mooctest.crowd.domain.domainobject.ApplicationType;
 import lombok.Data;
 
+import java.util.List;
+
 /**
  * @author guochao
  * @date 2019/7/6 17:54
@@ -11,4 +14,11 @@ public class ApplicationTypeVO {
     private Long id;
     private String code;
     private String name;
+    private List<TestTypeVO> testTypeList;
+
+    public ApplicationTypeVO(ApplicationType applicationType){
+        id = applicationType.getId();
+        code = applicationType.getCode();
+        name = applicationType.getName();
+    }
 }

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

@@ -0,0 +1,27 @@
+package com.mooctest.crowd.site.data.vo;
+
+import com.mooctest.crowd.domain.domainobject.Competition;
+import lombok.Data;
+
+import java.sql.Timestamp;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 17:54
+ */
+@Data
+public class CompetitionVO {
+    private Long id;
+    private String name;
+    private String linkUrl;
+    private Timestamp startTime;
+    private int isDeleted;
+
+    public CompetitionVO(Competition competition){
+        id = competition.getId();
+        name = competition.getName();
+        linkUrl = competition.getLinkUrl();
+        startTime = competition.getStartTime();
+        isDeleted = competition.getIsDeleted();
+    }
+}

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

@@ -1,5 +1,6 @@
 package com.mooctest.crowd.site.data.vo;
 
+import com.mooctest.crowd.domain.domainobject.EvaluationAgency;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -16,4 +17,10 @@ public class EvolutionAgencyVO {
     private String logo;
     private String name;
     private Double allTaskPrice;
+
+    public EvolutionAgencyVO(EvaluationAgency evaluationAgency){
+        id = evaluationAgency.getId();
+        logo = evaluationAgency.getAgencyPhoto();
+        name = evaluationAgency.getEvaluationAgencyName();
+    }
 }

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

@@ -0,0 +1,21 @@
+package com.mooctest.crowd.site.data.vo;
+
+import com.mooctest.crowd.domain.domainobject.Field;
+import lombok.Data;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 17:54
+ */
+@Data
+public class FieldVO {
+    private Long id;
+    private String code;
+    private String name;
+
+    public FieldVO(Field field){
+        id = field.getId();
+        code = field.getCode();
+        name = field.getName();
+    }
+}

+ 21 - 0
site/src/main/java/com/mooctest/crowd/site/data/vo/PartnerVO.java

@@ -0,0 +1,21 @@
+package com.mooctest.crowd.site.data.vo;
+
+import com.mooctest.crowd.domain.domainobject.Partner;
+import lombok.Data;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 17:54
+ */
+@Data
+public class PartnerVO {
+    private Long id;
+    private String name;
+    private String imageUrl;
+
+    public PartnerVO(Partner partner){
+        id = partner.getId();
+        name = partner.getName();
+        imageUrl = partner.getImageUrl();
+    }
+}

+ 21 - 0
site/src/main/java/com/mooctest/crowd/site/data/vo/ResidentAgencyVO.java

@@ -0,0 +1,21 @@
+package com.mooctest.crowd.site.data.vo;
+
+import com.mooctest.crowd.domain.domainobject.ResidentAgency;
+import lombok.Data;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 17:54
+ */
+@Data
+public class ResidentAgencyVO {
+    private Long id;
+    private Long agencyId;
+    private Long userId;
+
+    public ResidentAgencyVO(ResidentAgency residentAgency){
+        id = residentAgency.getId();
+        agencyId = residentAgency.getAgencyId();
+        userId = residentAgency.getUserId();
+    }
+}

+ 21 - 0
site/src/main/java/com/mooctest/crowd/site/data/vo/ResourceVO.java

@@ -0,0 +1,21 @@
+package com.mooctest.crowd.site.data.vo;
+
+import com.mooctest.crowd.domain.domainobject.Resource;
+import lombok.Data;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 17:54
+ */
+@Data
+public class ResourceVO {
+    private Long id;
+    private String code;
+    private String name;
+
+    public ResourceVO(Resource resource){
+        id = resource.getId();
+        code = resource.getCode();
+        name = resource.getName();
+    }
+}

+ 7 - 0
site/src/main/java/com/mooctest/crowd/site/data/vo/TestTypeVO.java

@@ -1,5 +1,6 @@
 package com.mooctest.crowd.site.data.vo;
 
+import com.mooctest.crowd.domain.domainobject.TestType;
 import lombok.Data;
 
 /**
@@ -11,4 +12,10 @@ public class TestTypeVO {
     private Long id;
     private String code;
     private String name;
+
+    public TestTypeVO(TestType testType){
+        id = testType.getId();
+        code = testType.getCode();
+        name = testType.getName();
+    }
 }

+ 98 - 1
site/src/main/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImpl.java

@@ -8,6 +8,7 @@ import com.mooctest.crowd.domain.exception.CrowdTestTaskNotExistException;
 import com.mooctest.crowd.domain.exception.HttpBadRequestException;
 import com.mooctest.crowd.domain.factory.CrowdTestProjectFactory;
 import com.mooctest.crowd.domain.model.*;
+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.domain.repository.UserRepo;
@@ -49,6 +50,9 @@ public class WebMediatorImpl implements ViewMediator {
     private EvaluationAgencyRepo evaluationAgencyRepo;
 
     @Autowired
+    private CommonRepo commonRepo;
+
+    @Autowired
     private CrowdTestTaskDao taskDao;
 
     @Autowired
@@ -93,7 +97,100 @@ public class WebMediatorImpl implements ViewMediator {
 
     @Override
     public IndexInfoDTO renderIndexInfos() {
-        return null;
+        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 -> {
+            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());
+                return agencyVO;
+            }
+            return null;
+        }).filter(Objects::nonNull).collect(Collectors.toList());
+
+        // 获取服务类型
+        List<TestType> allTestType = commonRepo.getAllTestType();
+        List<TestTypeVO> testTypeVOS = allTestType.stream().map(testType -> {
+            TestTypeVO testTypeVO = new TestTypeVO(testType);
+            return testTypeVO;
+        }).collect(Collectors.toList());
+
+        // 获取应用类型
+        List<ApplicationType> allApplicationType = commonRepo.getAllApplicationType();
+        List<ApplicationTypeVO> applicationTypeVOS = allApplicationType.stream().map(applicationType -> {
+            ApplicationTypeVO applicationTypeVO = new ApplicationTypeVO(applicationType);
+            List<TestType> testTypeList = commonRepo.getTestTypeListByAppCode(applicationType.getCode());
+            List<TestTypeVO> typeVOS = testTypeList.stream().map(testType -> {
+                TestTypeVO testTypeVO = new TestTypeVO(testType);
+                return testTypeVO;
+            }).collect(Collectors.toList());
+            applicationTypeVO.setTestTypeList(typeVOS);
+            return applicationTypeVO;
+        }).collect(Collectors.toList());
+
+        // 获取领域划分
+        List<Field> fieldList = commonRepo.getAllFieldType();
+        List<FieldVO> fieldVOS = fieldList.stream().map(field -> {
+            FieldVO fieldVO = new FieldVO(field);
+            return fieldVO;
+        }).collect(Collectors.toList());
+
+        // 获取大赛信息
+        List<Competition> competitionList = commonRepo.getAllCompetition();
+        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 -> {
+            ResourceVO resourceVO = new ResourceVO(resource);
+            return resourceVO;
+        }).collect(Collectors.toList());
+
+        // 获取入驻品牌机构
+        List<Partner> partnerList = commonRepo.getAllPartner();
+        List<PartnerVO> partnerVOS = partnerList.stream().map(partner -> {
+            PartnerVO partnerVO = new PartnerVO(partner);
+            return partnerVO;
+        }).collect(Collectors.toList());
+
+        // 获取合作机构
+        List<ResidentAgency> allResidentAgency = commonRepo.getAllResidentAgency();
+        List<EvolutionAgencyVO> agencyVOS = allResidentAgency.stream().map(residentAgency -> {
+            EvaluationAgency agency = evaluationAgencyRepo.findAgencyById(residentAgency.getAgencyId());
+            EvolutionAgencyVO evolutionAgencyVO = new EvolutionAgencyVO(agency);
+            return evolutionAgencyVO;
+        }).collect(Collectors.toList());
+
+        indexInfoDTO.setAgencyRank(agencyRanks);
+        indexInfoDTO.setUserRank(userRanks);
+        indexInfoDTO.setTestTypeList(testTypeVOS);
+        indexInfoDTO.setApplicationTypeList(applicationTypeVOS);
+        indexInfoDTO.setFieldList(fieldVOS);
+        indexInfoDTO.setCompetitionList(competitionVOS);
+        indexInfoDTO.setResourceList(resourceVOS);
+        indexInfoDTO.setResidentAgencyList(agencyVOS);
+        indexInfoDTO.setPartnerList(partnerVOS);
+        return indexInfoDTO;
     }
 
     @Override