Browse Source

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

xuxuan 5 năm trước cách đây
mục cha
commit
c3829eaca5
31 tập tin đã thay đổi với 384 bổ sung175 xóa
  1. 2 0
      core/src/main/java/com/mooctest/crowd/domain/dao/BankLogoDao.java
  2. 20 0
      core/src/main/java/com/mooctest/crowd/domain/dao/UserTaskCountDao.java
  3. 1 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/ApplicationType.java
  4. 1 1
      core/src/main/java/com/mooctest/crowd/domain/domainobject/Expert.java
  5. 1 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/Field.java
  6. 1 1
      core/src/main/java/com/mooctest/crowd/domain/domainobject/ResourceStatus.java
  7. 1 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/TestType.java
  8. 25 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/UserTaskCount.java
  9. 3 0
      core/src/main/java/com/mooctest/crowd/domain/model/ApplicationTypePO.java
  10. 3 0
      core/src/main/java/com/mooctest/crowd/domain/model/ExpertPO.java
  11. 3 0
      core/src/main/java/com/mooctest/crowd/domain/model/FieldPO.java
  12. 3 0
      core/src/main/java/com/mooctest/crowd/domain/model/TestTypePO.java
  13. 27 0
      core/src/main/java/com/mooctest/crowd/domain/model/UserTaskCountPO.java
  14. 2 0
      core/src/main/java/com/mooctest/crowd/domain/repository/IUserRepo.java
  15. 10 0
      core/src/main/java/com/mooctest/crowd/domain/repository/UserRepo.java
  16. 0 0
      site/src/main/java/com/mooctest/crowd/site/controller/CommonController.java
  17. 7 5
      site/src/main/java/com/mooctest/crowd/site/data/enums/RoleType.java
  18. 4 2
      site/src/main/java/com/mooctest/crowd/site/data/vo/ApplicationTypeVO.java
  19. 0 1
      site/src/main/java/com/mooctest/crowd/site/data/vo/BankCardVO.java
  20. 0 22
      site/src/main/java/com/mooctest/crowd/site/data/vo/CrowdTaskDataVO.java
  21. 2 0
      site/src/main/java/com/mooctest/crowd/site/data/vo/ExpertVO.java
  22. 2 0
      site/src/main/java/com/mooctest/crowd/site/data/vo/FieldVO.java
  23. 2 0
      site/src/main/java/com/mooctest/crowd/site/data/vo/TestTypeVO.java
  24. 19 0
      site/src/main/java/com/mooctest/crowd/site/data/vo/UserTaskCountVO.java
  25. 16 13
      site/src/main/java/com/mooctest/crowd/site/mediator/ViewMediator.java
  26. 170 105
      site/src/main/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImpl.java
  27. 3 1
      site/src/main/java/com/mooctest/crowd/site/service/CommonService.java
  28. 18 21
      site/src/main/java/com/mooctest/crowd/site/service/impl/AgencyServiceImpl.java
  29. 7 2
      site/src/main/java/com/mooctest/crowd/site/service/impl/CommonServiceImpl.java
  30. 30 0
      site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdProjectServiceImpl.java
  31. 1 1
      site/src/main/resources/application.yml

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

@@ -14,4 +14,6 @@ public interface BankLogoDao extends CrudRepository<BankLogoPO, Long>{
     Optional<BankLogoPO> findByCode(String code);
 
     List<BankLogoPO> findAll();
+
+    Optional<BankLogoPO> findByName(String name);
 }

+ 20 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/UserTaskCountDao.java

@@ -0,0 +1,20 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.UserTaskCountPO;
+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 UserTaskCountDao extends CrudRepository<UserTaskCountPO, Long>, JpaSpecificationExecutor<UserTaskCountPO> {
+
+    Optional<UserTaskCountPO> findByUserId(Long userId);
+
+    List<UserTaskCountPO> findByType(Long type);
+
+    Optional<UserTaskCountPO> findById(Long id);
+
+}

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

@@ -15,5 +15,6 @@ public class ApplicationType {
     private String name;
     private String image;
     private List<TestType> testTypeList;
+    private String introduction;
     private Long count;
 }

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

@@ -12,5 +12,5 @@ public class Expert {
     private String name;
     private String photo;
     private String introduction;
-
+    private String title;
 }

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

@@ -11,4 +11,5 @@ public class Field {
     private Long id;
     private String code;
     private String name;
+    private String introduction;
 }

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

@@ -5,5 +5,5 @@ public class ResourceStatus {
     public static final int R_FREE = 0;  //空闲
     public static final int R_OCCUPY = 1; //占用
     public static final int R_USABLE = 2; //可用
-    public static final int R_FAULT = 4; //故障
+    public static final int R_FAULT = 3; //故障
 }

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

@@ -11,4 +11,5 @@ public class TestType {
     private Long id;
     private String code;
     private String name;
+    private String introduction;
 }

+ 25 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/UserTaskCount.java

@@ -0,0 +1,25 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 17:54
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class UserTaskCount {
+    private Long id;
+    private Long userId;
+    private Long count;
+    private Long type;
+
+    public UserTaskCount(Long userId, Long count, Long type) {
+        this.userId = userId;
+        this.count = count;
+        this.type = type;
+    }
+}

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

@@ -25,6 +25,9 @@ public class ApplicationTypePO {
     @Column(name = "AT_IMAGE")
     private String image;
 
+    @Column(name="AT_INTRODUCTION")
+    private String introduction;
+
     @Column(name="AT_COUNT")
     private Long count;
 }

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

@@ -22,6 +22,9 @@ public class ExpertPO {
     @Column(name = "E_PHOTO")
     private String photo;
 
+    @Column(name = "E_TITLE")
+    private String title;
+
     @Column(name = "E_INTRODUCTION")
     private String introduction;
     

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

@@ -21,4 +21,7 @@ public class FieldPO {
 
     @Column(name = "F_NAME")
     private String name;
+
+    @Column(name = "F_INTRODUCTION")
+    private String introduction;
 }

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

@@ -21,4 +21,7 @@ public class TestTypePO {
 
     @Column(name = "TT_NAME")
     private String name;
+
+    @Column(name = "TT_INTRODUCTION")
+    private String introduction;
 }

+ 27 - 0
core/src/main/java/com/mooctest/crowd/domain/model/UserTaskCountPO.java

@@ -0,0 +1,27 @@
+package com.mooctest.crowd.domain.model;
+
+import lombok.Data;
+
+import javax.persistence.*;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 17:54
+ */
+@Data
+@Entity(name = "user_task_count")
+public class UserTaskCountPO {
+    @Id
+    @Column(name = "UTC_ID")
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @Column(name = "UTC_USER_ID")
+    private Long userId;
+
+    @Column(name = "UTC_COUNT")
+    private Long count;
+
+    @Column(name = "UTC_TYPE")
+    private Long type;
+}

+ 2 - 0
core/src/main/java/com/mooctest/crowd/domain/repository/IUserRepo.java

@@ -18,6 +18,8 @@ public interface IUserRepo {
 
     User getByID(Long id) throws UserNotExistException, RoleNotFoundException;
 
+    User getByIDJustInfo(Long userId) throws UserNotExistException, RoleNotFoundException;
+
     List<User> getByIdList(List<Long> ids) throws RoleNotFoundException;
 
     List<User> getAllUser() throws RoleNotFoundException;

+ 10 - 0
core/src/main/java/com/mooctest/crowd/domain/repository/UserRepo.java

@@ -81,6 +81,16 @@ public class UserRepo implements IUserRepo {
     }
 
     @Override
+    public User getByIDJustInfo(Long userId) throws UserNotExistException, RoleNotFoundException {
+        Optional<UserPO> userPOOptional = userDao.findById(userId);
+        if (!userPOOptional.isPresent()) {
+            throw new UserNotExistException("用户不存在");
+        }else{
+            return Converter.convert(User.class, userPOOptional.get());
+        }
+    }
+
+    @Override
     public User getByMobileNum(String mobileNum) throws UserNotExistException, RoleNotFoundException {
         UserPO userPO = userDao.findByMobile(mobileNum);
         if (userPO == null) {

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
site/src/main/java/com/mooctest/crowd/site/controller/CommonController.java


+ 7 - 5
site/src/main/java/com/mooctest/crowd/site/data/enums/RoleType.java

@@ -1,7 +1,6 @@
 package com.mooctest.crowd.site.data.enums;
 
 import lombok.AllArgsConstructor;
-import lombok.Data;
 import lombok.NoArgsConstructor;
 
 /**
@@ -13,11 +12,14 @@ import lombok.NoArgsConstructor;
 @NoArgsConstructor
 public enum RoleType {
 
-    GENERAL_USER(1L, "generalUser"),
-    AGENCY(2L, "evaluationAgency"),
+    GENERAL_USER(1L, "generalUser"),        // 注册后的普通用户
+    AGENCY(2L, "evaluationAgency"),         // 注册为测评机构
     REGIONAL_MANAGER(3L, "RegionalManager"),
-    SYSTEM_ADMIN(4L, "SystemAdministrator"),
-    ENTERPRISE_USER(5L, "enterpriseUser");
+    SYSTEM_ADMIN(4L, "RegionalManager"),
+    ENTERPRISE_USER(5L, "enterpriseUser"),
+    EVALUATION_USER(6L, "evaluationUser"),  // 注册为测评用户
+    PARTY_USER(7L, "partyUser"),            // 注册为发包用户
+    PARTY_AGENCY(8L, "partyAgency");        // 注册为发包机构
 
     private Long id;
     private String name;

+ 4 - 2
site/src/main/java/com/mooctest/crowd/site/data/vo/ApplicationTypeVO.java

@@ -20,12 +20,14 @@ public class ApplicationTypeVO implements Serializable {
     private String name;
     private Long count;
     private String image;
+    private String introduction;
     private List<TestTypeVO> testTypeList;
 
-    public ApplicationTypeVO(ApplicationType applicationType){
+    public ApplicationTypeVO(ApplicationType applicationType) {
         code = applicationType.getCode();
         name = applicationType.getName();
         image = applicationType.getImage();
-        count=applicationType.getCount();
+        count = applicationType.getCount();
+        introduction = applicationType.getIntroduction();
     }
 }

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

@@ -14,5 +14,4 @@ public class BankCardVO {
     private String code;
     private Long userId;
     private String logoUrl;
-
 }

+ 0 - 22
site/src/main/java/com/mooctest/crowd/site/data/vo/CrowdTaskDataVO.java

@@ -1,22 +0,0 @@
-package com.mooctest.crowd.site.data.vo;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @Author: xuexb
- * @Date: 2019.7.15 20:36
- */
-@Data
-@NoArgsConstructor
-@AllArgsConstructor
-public class CrowdTaskDataVO implements Serializable{
-    private String code;
-    private String title;
-    private List<TaskToUserVO> taskToUserVOS = new ArrayList<>();
-}

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

@@ -13,11 +13,13 @@ public class ExpertVO {
     private String name;
     private String photo;
     private String introduction;
+    private String title;
 
     public ExpertVO(Expert expert){
         id = expert.getId();
         name = expert.getName();
         photo = expert.getPhoto();
         introduction = expert.getIntroduction();
+        title = expert.getTitle();
     }
 }

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

@@ -17,9 +17,11 @@ import java.io.Serializable;
 public class FieldVO implements Serializable {
     private String code;
     private String name;
+    private String introduction;
 
     public FieldVO(Field field){
         code = field.getCode();
         name = field.getName();
+        introduction = field.getIntroduction();
     }
 }

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

@@ -17,9 +17,11 @@ import java.io.Serializable;
 public class TestTypeVO implements Serializable {
     private String code;
     private String name;
+    private String introduction;
 
     public TestTypeVO(TestType testType){
         code = testType.getCode();
         name = testType.getName();
+        introduction = testType.getIntroduction();
     }
 }

+ 19 - 0
site/src/main/java/com/mooctest/crowd/site/data/vo/UserTaskCountVO.java

@@ -0,0 +1,19 @@
+package com.mooctest.crowd.site.data.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 17:54
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class UserTaskCountVO {
+    private Long id;
+    private Long userId;
+    private Long count;
+    private Long type;
+}

+ 16 - 13
site/src/main/java/com/mooctest/crowd/site/mediator/ViewMediator.java

@@ -23,11 +23,12 @@ public interface ViewMediator {
     List<UserVO> renderMoreUser(Pageable pageable);
 
 
-
     List<CrowdTaskVO> findMoreHotTasks();
+
     List<CrowdTestProjectVO> findMoreHotProjects();
 
     EnterpriseAuthVO getEnterpriseAuthByUserId(Long userId);
+
     PersonalAuthVO getByUserId(Long userId);
 
     UserDTO loginByMobileAndPwd(LoginCommand cmd) throws PasswordErrorException, AccountNotExistException, BadRequestException;
@@ -36,6 +37,8 @@ public interface ViewMediator {
 
     IndexDTO renderIndex();
 
+    IndexInfoDTO renderIndexInfosCache();
+
     IndexInfoDTO renderIndexInfos();
 
     MyCrowdDTO renderMyCrowd(Long userId);
@@ -63,14 +66,14 @@ public interface ViewMediator {
     List<BaseAuthVO> renderAuthedList();
 
     // 项目模糊查询
-    List<CrowdTestProjectVO>     findByNameLike(String name);
+    List<CrowdTestProjectVO> findByNameLike(String name);
 
     //任务模糊查询
-    List<CrowdTaskVO>  findTaskByNameLike(String name);
+    List<CrowdTaskVO> findTaskByNameLike(String name);
 
-    List<CrowdTestProjectVO>   crowdTestProjects();
+    List<CrowdTestProjectVO> crowdTestProjects();
 
-    List<CrowdTaskVO>    crowdTaskVos();
+    List<CrowdTaskVO> crowdTaskVos();
 
     UserDTO getInformation(long userId);
 
@@ -78,25 +81,25 @@ public interface ViewMediator {
 
     QualificationDTO getQualification(long userId);
 
-    QualificationDTO addQualification(long userId,QualificationVO qualificationVO);
+    QualificationDTO addQualification(long userId, QualificationVO qualificationVO);
 
-    QualificationDTO updateQualification(long id,long userId,QualificationVO qualificationVO);
+    QualificationDTO updateQualification(long id, long userId, QualificationVO qualificationVO);
 
-    QualificationDTO deleteQualification(long id,long userId);
+    QualificationDTO deleteQualification(long id, long userId);
 
     BankCardDTO getBankCard(long userId);
 
-    BankCardDTO addBankCard(long userId,BankCardVO bankCardVO) throws JSONException;
+    BankCardDTO addBankCard(long userId, BankCardVO bankCardVO) throws JSONException;
 
-    BankCardDTO deleteBankCard(long id,long userId);
+    BankCardDTO deleteBankCard(long id, long userId);
 
-    TechnicalArticlesDTO  updateRanking(long id);
+    TechnicalArticlesDTO updateRanking(long id);
 
-    List<ResourceVO>  getResource();
+    List<ResourceVO> getResource();
 
     ResourceVO getResourceDetailed(String code);
 
-    List<ResourceVO>  getSearchResource(String name);
+    List<ResourceVO> getSearchResource(String name);
 
     QualificationDTO getOne(long id);
 

+ 170 - 105
site/src/main/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImpl.java

@@ -58,6 +58,9 @@ public class WebMediatorImpl implements ViewMediator {
     private CrowdTestTaskDao taskDao;
 
     @Autowired
+    private UserTaskCountDao userTaskCountDao;
+
+    @Autowired
     private UserDao userDao;
 
     @Autowired
@@ -114,17 +117,27 @@ public class WebMediatorImpl implements ViewMediator {
     @Override
     public List<UserVO> renderMoreUser(Pageable pageable) {
         //获取众测人员排名
-        String agencyName = agencyDao.findById(Long.parseLong(agencyId)).get().getEvaluationAgencyName();
-        List<UserVO> userVOS = taskToUserDao.findTotalCountOfUser().stream().map(rankInfo -> {
-            EvaluationAgencyPO agency = agencyDao.findByUserId(rankInfo.getEntityId());
-            if (agency != null && agency.getEvaluationAgencyName().equals(agencyName)) {
-                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());
+//        String agencyName = agencyDao.findById(Long.parseLong(agencyId)).get().getEvaluationAgencyName();
+//        List<UserVO> userVOS = taskToUserDao.findTotalCountOfUser().stream().map(rankInfo -> {
+//            EvaluationAgencyPO agency = agencyDao.findByUserId(rankInfo.getEntityId());
+//            if (agency != null && agency.getEvaluationAgencyName().equals(agencyName)) {
+//                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());
+
+
+        List<UserVO> userVOS = userTaskCountDao.findByType(RoleType.EVALUATION_USER.getId())
+                .stream().sorted(Comparator.comparing(UserTaskCountPO::getCount)).collect(Collectors.toList())
+                .stream().map(userTaskCountPO -> {
+                    User user = userRepo.getByIDJustInfo(userTaskCountPO.getUserId());
+                    UserVO userVO = new UserVO(user);
+                    userVO.setTaskCount(userTaskCountPO.getCount());
+                    return userVO;
+                }).collect(Collectors.toList());
         return userVOS;
     }
 
@@ -190,70 +203,9 @@ public class WebMediatorImpl implements ViewMediator {
     }
 
     @Override
-    public IndexInfoDTO renderIndexInfos() {
+    public IndexInfoDTO renderIndexInfosCache() {
         IndexInfoDTO indexInfoDTO = new IndexInfoDTO();
-        Pageable pageable = PageRequest.of(0, 3);
         int top = 3;
-        //获取热门众测
-        List<ApplicationTypeVO> applicationTypeRank = 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());
-        List<ApplicationTypeVO> applicationTypeRanks = new ArrayList<>();
-        if (applicationTypeRanks.size() > top) {
-            for (int i = 0; i < top; i++) {
-                applicationTypeRanks.add(applicationTypeRank.get(i));
-            }
-        } else {
-            applicationTypeRanks = applicationTypeRank;
-        }
-
-        //获取机构排名
-        String agencyName = agencyDao.findById(Long.parseLong(agencyId)).get().getEvaluationAgencyName();
-        List<EvaluationAgencyVO> agencyRank = taskToUserDao.findTotalCountOfUser().stream().map(rankInfo -> {
-            EvaluationAgencyPO agency = agencyDao.findByUserId(rankInfo.getEntityId());
-            if (agency != null && !agency.getEvaluationAgencyName().equals(agencyName)) {
-                EvaluationAgencyVO agencyVO = new EvaluationAgencyVO();
-                agencyVO.setEvaluationAgencyName(agency.getEvaluationAgencyName());
-                agencyVO.setAgencyPhoto(agency.getAgencyPhoto());
-                agencyVO.setTaskCount(rankInfo.getCount());
-                agencyVO.setId(agency.getId());
-                agencyVO.setUserId(agency.getUserId());
-                return agencyVO;
-            }
-            return null;
-        }).filter(Objects::nonNull).collect(Collectors.toList());
-        List<EvaluationAgencyVO> agencyRanks = new ArrayList<>();
-        if (agencyRank.size() > top) {
-            for (int i = 0; i < top; i++) {
-                agencyRanks.add(agencyRank.get(i));
-            }
-        } else {
-            agencyRanks = agencyRank;
-        }
-
-        //获取众测人员排名
-        List<UserVO> userRank = taskToUserDao.findTotalCountOfUser().stream().map(rankInfo -> {
-            EvaluationAgencyPO agency = agencyDao.findByUserId(rankInfo.getEntityId());
-            if (agency != null && agency.getEvaluationAgencyName().equals(agencyName)) {
-                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());
-        List<UserVO> userRanks = new ArrayList<>();
-        if (userRank.size() > top) {
-            for (int i = 0; i < top; i++) {
-                userRanks.add(userRank.get(i));
-            }
-        } else {
-            userRanks = userRank;
-        }
-
         // 获取大赛信息
         List<Competition> competitionList = commonRepo.getAllCompetition();
         List<Competition> competitionLists = new ArrayList<>();
@@ -278,17 +230,18 @@ public class WebMediatorImpl implements ViewMediator {
         }).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<ApplicationTypeVO> applicationTypeVOS = commonRepo.getAllApplicationType().stream().map(ApplicationTypeVO::new).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();
@@ -297,21 +250,7 @@ public class WebMediatorImpl implements ViewMediator {
             return fieldVO;
         }).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<EvaluationAgencyVO> agencyVOS = allResidentAgency.stream().map(residentAgency -> {
             EvaluationAgency agency = evaluationAgencyRepo.findAgencyById(residentAgency.getAgencyId());
@@ -319,16 +258,123 @@ public class WebMediatorImpl implements ViewMediator {
             return evalutionAgencyVO;
         }).collect(Collectors.toList());
 
-        indexInfoDTO.setApplicationTypeRank(applicationTypeRanks);
-        indexInfoDTO.setAgencyRank(agencyRanks);
-        indexInfoDTO.setUserRank(userRanks);
+        // 获取合作机构
+//        List<Partner> partnerList = commonRepo.getAllPartner();
+//        List<PartnerVO> partnerVOS = partnerList.stream().map(partner -> {
+//            PartnerVO partnerVO = new PartnerVO(partner);
+//            return partnerVO;
+//        }).collect(Collectors.toList());
+
         indexInfoDTO.setTestTypeList(testTypeVOS);
         indexInfoDTO.setApplicationTypeList(applicationTypeVOS);
         indexInfoDTO.setFieldList(fieldVOS);
         indexInfoDTO.setCompetitionList(competitionVOS);
-        indexInfoDTO.setResourceList(resourceVOS);
         indexInfoDTO.setResidentAgencyList(agencyVOS);
-        indexInfoDTO.setPartnerList(partnerVOS);
+//        indexInfoDTO.setPartnerList(partnerVOS);
+        return indexInfoDTO;
+    }
+
+    @Override
+    public IndexInfoDTO renderIndexInfos() {
+        IndexInfoDTO indexInfoDTO = new IndexInfoDTO();
+        Pageable pageable = PageRequest.of(0, 3);
+        int top = 3;
+        //获取热门众测
+        List<ApplicationTypeVO> applicationTypeRank = 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());
+        List<ApplicationTypeVO> applicationTypeRanks = new ArrayList<>();
+        if (applicationTypeRanks.size() > top) {
+            for (int i = 0; i < top; i++) {
+                applicationTypeRanks.add(applicationTypeRank.get(i));
+            }
+        } else {
+            applicationTypeRanks = applicationTypeRank;
+        }
+
+        //获取机构排名
+//        String agencyName = agencyDao.findById(Long.parseLong(agencyId)).get().getEvaluationAgencyName();
+//        List<EvaluationAgencyVO> agencyRank = taskToUserDao.findTotalCountOfUser().stream().map(rankInfo -> {
+//            EvaluationAgencyPO agency = agencyDao.findByUserId(rankInfo.getEntityId());
+//            if (agency != null && !agency.getEvaluationAgencyName().equals(agencyName)) {
+//                EvaluationAgencyVO agencyVO = new EvaluationAgencyVO();
+//                agencyVO.setEvaluationAgencyName(agency.getEvaluationAgencyName());
+//                agencyVO.setAgencyPhoto(agency.getAgencyPhoto());
+//                agencyVO.setTaskCount(rankInfo.getCount());
+//                agencyVO.setId(agency.getId());
+//                agencyVO.setUserId(agency.getUserId());
+//                return agencyVO;
+//            }
+//            return null;
+//        }).filter(Objects::nonNull).collect(Collectors.toList());
+
+        List<EvaluationAgencyVO> agencyRanks = userTaskCountDao.findByType(RoleType.AGENCY.getId())
+                .stream().sorted(Comparator.comparing(UserTaskCountPO::getCount)).limit(top).collect(Collectors.toList())
+                .stream().map(userTaskCountPO -> {
+                    EvaluationAgencyPO agency = agencyDao.findByUserId(userTaskCountPO.getUserId());
+                    EvaluationAgencyVO agencyVO = new EvaluationAgencyVO();
+                    agencyVO.setAgencyPhoto(agency.getAgencyPhoto());
+                    agencyVO.setTaskCount(userTaskCountPO.getCount());
+                    agencyVO.setId(agency.getId());
+                    agencyVO.setUserId(agency.getUserId());
+                    agencyVO.setEvaluationAgencyName(agency.getEvaluationAgencyName());
+                    return agencyVO;
+                }).collect(Collectors.toList());
+
+//        List<EvaluationAgencyVO> agencyRanks = new ArrayList<>();
+//        if (agencyRank.size() > top) {
+//            for (int i = 0; i < top; i++) {
+//                agencyRanks.add(agencyRank.get(i));
+//            }
+//        } else {
+//            agencyRanks = agencyRank;
+//        }
+
+        //获取众测人员排名
+//        List<UserVO> userRank = taskToUserDao.findTotalCountOfUser().stream().map(rankInfo -> {
+//            EvaluationAgencyPO agency = agencyDao.findByUserId(rankInfo.getEntityId());
+//            if (agency != null && agency.getEvaluationAgencyName().equals(agencyName)) {
+//                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());
+
+        List<UserVO> userRanks = userTaskCountDao.findByType(RoleType.EVALUATION_USER.getId())
+                .stream().sorted(Comparator.comparing(UserTaskCountPO::getCount)).limit(top).collect(Collectors.toList())
+                .stream().map(userTaskCountPO -> {
+            User user = userRepo.getByIDJustInfo(userTaskCountPO.getUserId());
+            UserVO userVO = new UserVO(user);
+            userVO.setTaskCount(userTaskCountPO.getCount());
+            return userVO;
+        }).collect(Collectors.toList());
+
+//        List<UserVO> userRanks = new ArrayList<>();
+//        if (userRank.size() > top) {
+//            for (int i = 0; i < top; i++) {
+//                userRanks.add(userRank.get(i));
+//            }
+//        } else {
+//            userRanks = userRank;
+//        }
+
+        // 获取资源和工具
+        List<Resource> resourceList = commonRepo.getAllResource();
+        List<ResourceVO> resourceVOS = resourceList.stream().map(resource -> {
+            ResourceVO resourceVO = new ResourceVO(resource);
+            return resourceVO;
+        }).collect(Collectors.toList());
+
+        indexInfoDTO.setApplicationTypeRank(applicationTypeRanks);
+        indexInfoDTO.setAgencyRank(agencyRanks);
+        indexInfoDTO.setUserRank(userRanks);
+        indexInfoDTO.setResourceList(resourceVOS);
+
         return indexInfoDTO;
     }
 
@@ -921,6 +967,13 @@ public class WebMediatorImpl implements ViewMediator {
         authingList.addAll(projectDao.findAll().stream().map(crowdTestProjectPO -> {
             CrowdTestProject crowdTestProject = new CrowdTestProject();
             BeanUtils.copyProperties(crowdTestProjectPO, crowdTestProject);
+            // 应用类型值的转换
+            Optional<ApplicationTypePO> applicationTypePO = applicationTypeDao.findByCode(crowdTestProject.getApplicationType());
+            if (applicationTypePO.isPresent()) {
+                crowdTestProject.setApplicationType(applicationTypePO.get().getName());
+            } else {
+                throw new HttpBadRequestException("请选择应用类型");
+            }
             return new CrowdTestProjectVO(crowdTestProject);
 
         }).collect(Collectors.toList()));
@@ -1081,13 +1134,17 @@ public class WebMediatorImpl implements ViewMediator {
         if ("false".equals(validated)) {
             throw new HttpBadRequestException("请输入正确的卡号");
         }
+        String bank = String.valueOf(json.get("bank"));
+        Optional<BankLogoPO> bankLogoPO=bankLogoDao.findByName(bankCardVO.getName());
+        if(!bank.equals(bankLogoPO.get().getName())){
+            throw new HttpBadRequestException("请输入与选定银行一致的账号");
+        }
         List<BankCardPO> bankCardPOList=bankCardDao.findByUserIdAndIsDeleted(userId, DeletedStatus.isNotDeleted);
         for(int i=0;i<bankCardPOList.size();i++){
             if(bankCardVO.getNumber().equals(bankCardPOList.get(i).getNumber())){
                 throw new HttpBadRequestException("银行卡已存在");
             }
         }
-        String bank = String.valueOf(json.get("bank"));
         bankCardPO.setUser(bankCardVO.getUser());
         bankCardPO.setNumber(bankCardVO.getNumber());
         bankCardPO.setCode(bank);
@@ -1153,7 +1210,15 @@ public class WebMediatorImpl implements ViewMediator {
         resourceVO.setUnitWork(resourcePO.get().getUnitWork());
         resourceVO.setStandard(resourcePO.get().getStandard());
         resourceVO.setUnit(resourcePO.get().getUnit());
-        resourceVO.setState(resourcePO.get().getState());
+        if(resourcePO.get().getState()==0){
+            resourceVO.setState(ResourceStatus.R_FREE);
+        }else if(resourcePO.get().getState()==1){
+            resourceVO.setState(ResourceStatus.R_OCCUPY);
+        }else if(resourcePO.get().getState()==2){
+            resourceVO.setState(ResourceStatus.R_USABLE);
+        }else {
+            resourceVO.setState(ResourceStatus.R_FAULT);
+        }
         resourceVO.setStartTime(resourcePO.get().getStartTime());
         resourceVO.setPersonnel(resourcePO.get().getPersonnel());
         resourceVO.setRemarks(resourcePO.get().getRemarks());

+ 3 - 1
site/src/main/java/com/mooctest/crowd/site/service/CommonService.java

@@ -22,7 +22,9 @@ public interface CommonService {
 
     UserDataDTO getPersonCrowdData(Long userId);
 
-    IndexInfoDTO getIndexInfos(Long userId);
+    IndexInfoDTO getIndexInfosCache(Long userId);
+
+    IndexInfoDTO getIndexInfosNoCache();
 
     IndexPageDTO getIndexPageInfo(Pageable pageable, Map<String, String> extraCondition, String keyword, int deletedStatus);
 

+ 18 - 21
site/src/main/java/com/mooctest/crowd/site/service/impl/AgencyServiceImpl.java

@@ -3,6 +3,7 @@ package com.mooctest.crowd.site.service.impl;
 import com.mooctest.crowd.domain.dao.EvaluationAgencyDao;
 import com.mooctest.crowd.domain.dao.TaskToUserDao;
 import com.mooctest.crowd.domain.dao.UserDao;
+import com.mooctest.crowd.domain.dao.UserTaskCountDao;
 import com.mooctest.crowd.domain.domainobject.*;
 import com.mooctest.crowd.domain.exception.BaseException;
 import com.mooctest.crowd.domain.exception.EvaluationAgencyNotExistException;
@@ -10,7 +11,7 @@ import com.mooctest.crowd.domain.exception.HttpBadRequestException;
 import com.mooctest.crowd.domain.exception.UserNotExistException;
 import com.mooctest.crowd.domain.model.EvaluationAgencyPO;
 import com.mooctest.crowd.domain.model.RankCountInfo;
-import com.mooctest.crowd.domain.model.UserPO;
+import com.mooctest.crowd.domain.model.UserTaskCountPO;
 import com.mooctest.crowd.domain.repository.EvaluationAgencyRepo;
 import com.mooctest.crowd.domain.repository.UserRepo;
 import com.mooctest.crowd.site.anticorruption.UserAntiCorruption;
@@ -19,6 +20,7 @@ import com.mooctest.crowd.site.command.AgencyResourceCommand;
 import com.mooctest.crowd.site.command.ApplyAgencyAuthCommand;
 import com.mooctest.crowd.site.command.GenerateAgencyCommand;
 import com.mooctest.crowd.site.data.dto.UserDTO;
+import com.mooctest.crowd.site.data.enums.RoleType;
 import com.mooctest.crowd.site.data.vo.AgencyVO;
 import com.mooctest.crowd.site.data.vo.EvaluationAgencyVO;
 import com.mooctest.crowd.site.data.vo.UserVO;
@@ -61,6 +63,8 @@ public class AgencyServiceImpl implements AgencyService {
     private TaskToUserDao taskToUserDao;
     @Autowired
     private EvaluationAgencyDao agencyDao;
+    @Autowired
+    private UserTaskCountDao userTaskCountDao;
 
     @Value("${agency}")
     private String agencyId;
@@ -89,26 +93,19 @@ public class AgencyServiceImpl implements AgencyService {
 
     @Override
     public List<EvaluationAgencyVO> findMoreAgencyVO(String keyword) {
-        List<EvaluationAgencyVO> list = new ArrayList<EvaluationAgencyVO>();//机构列表
-        List<RankCountInfo> rankInfos = taskToUserDao.findTotalCountOfUser();//用户接包信息
-        String agencyName = agencyDao.findById(Long.parseLong(agencyId)).get().getEvaluationAgencyName();
-        for (int i = 0; i < rankInfos.size(); i++) {
-            Optional<UserPO> user = userDao.findById(rankInfos.get(i).getEntityId());
-            EvaluationAgencyPO evaluationAgencyPO = agencyDao.findByUserId(rankInfos.get(i).getEntityId());
-            if (evaluationAgencyPO != null && !evaluationAgencyPO.getEvaluationAgencyName().equals(agencyName)) {
-                if(keyword != null && keyword != ""){
-                    if(!evaluationAgencyPO.getEvaluationAgencyName().contains(keyword)){
-                        continue;
-                    }
-                }
-                EvaluationAgency evaluationAgency = new EvaluationAgency(evaluationAgencyPO);
-                EvaluationAgencyVO evalutionAgencyVO = new EvaluationAgencyVO(evaluationAgency);
-                evalutionAgencyVO.setTaskCount(rankInfos.get(i).getCount());
-                evalutionAgencyVO.setAddress(evaluationAgency.getAddress());
-//                evalutionAgencyVO.setAddress((user.get().getProvince() + user.get().getCity()).replaceAll("null", ""));
-                list.add(evalutionAgencyVO);
-            }
-        }
+        List<EvaluationAgencyVO> list = userTaskCountDao.findByType(RoleType.AGENCY.getId())
+                .stream().sorted(Comparator.comparing(UserTaskCountPO::getCount)).collect(Collectors.toList())
+                .stream().map(userTaskCountPO -> {
+                    EvaluationAgencyPO agency = agencyDao.findByUserId(userTaskCountPO.getUserId());
+                    EvaluationAgencyVO agencyVO = new EvaluationAgencyVO();
+                    agencyVO.setAgencyPhoto(agency.getAgencyPhoto());
+                    agencyVO.setTaskCount(userTaskCountPO.getCount());
+                    agencyVO.setId(agency.getId());
+                    agencyVO.setUserId(agency.getUserId());
+                    agencyVO.setEvaluationAgencyName(agency.getEvaluationAgencyName());
+                    agencyVO.setAddress(agency.getAddress());
+                    return agencyVO;
+                }).collect(Collectors.toList());
         return list.stream().sorted(Comparator.comparing(EvaluationAgencyVO::getTaskCount).reversed()).collect(Collectors.toList());
     }
 

+ 7 - 2
site/src/main/java/com/mooctest/crowd/site/service/impl/CommonServiceImpl.java

@@ -54,7 +54,6 @@ public class CommonServiceImpl implements CommonService {
 
     @Override
     public List<UserVO> getMoreUser(Pageable pageable) {
-
         return  viewMediator.renderMoreUser(pageable);
     }
 
@@ -75,7 +74,13 @@ public class CommonServiceImpl implements CommonService {
 
     @Override
     @Cacheable(value = "userCache",key = "#userId")
-    public IndexInfoDTO getIndexInfos(Long userId){
+    public IndexInfoDTO getIndexInfosCache(Long userId){
+        IndexInfoDTO indexInfoDTO = viewMediator.renderIndexInfosCache();
+        return indexInfoDTO;
+    }
+
+    @Override
+    public IndexInfoDTO getIndexInfosNoCache(){
         IndexInfoDTO indexInfoDTO = viewMediator.renderIndexInfos();
         return indexInfoDTO;
     }

+ 30 - 0
site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdProjectServiceImpl.java

@@ -4,17 +4,21 @@ import com.google.common.collect.Lists;
 import com.mooctest.crowd.domain.dao.ApplicationTypeDao;
 import com.mooctest.crowd.domain.dao.FieldDao;
 import com.mooctest.crowd.domain.dao.TestTypeDao;
+import com.mooctest.crowd.domain.dao.UserTaskCountDao;
 import com.mooctest.crowd.domain.domainobject.*;
 import com.mooctest.crowd.domain.exception.BadRequestException;
 import com.mooctest.crowd.domain.exception.BaseException;
 import com.mooctest.crowd.domain.exception.Excel2ProjectException;
 import com.mooctest.crowd.domain.factory.CrowdTestProjectFactory;
+import com.mooctest.crowd.domain.model.UserTaskCountPO;
 import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
 import com.mooctest.crowd.domain.repository.UserRepo;
+import com.mooctest.crowd.domain.util.Converter;
 import com.mooctest.crowd.site.command.CrowdTestProjectCommand;
 import com.mooctest.crowd.site.command.GenerateProjectCommand;
 import com.mooctest.crowd.site.data.dto.ProjectDetailsDTO;
 import com.mooctest.crowd.site.data.enums.ProjectType;
+import com.mooctest.crowd.site.data.enums.RoleType;
 import com.mooctest.crowd.site.data.vo.CrowdProjectVO;
 import com.mooctest.crowd.site.data.vo.CrowdTestProjectVO;
 import com.mooctest.crowd.site.data.vo.RegionalManagerVO;
@@ -37,6 +41,7 @@ import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.List;
+import java.util.Optional;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.regex.PatternSyntaxException;
@@ -71,6 +76,9 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
 
     @Autowired
     private FieldDao fieldDao;
+    
+    @Autowired
+    private UserTaskCountDao userTaskCountDao;
 
     @Autowired
     private ThemeSchedulerService themeSchedulerService;
@@ -310,6 +318,28 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
     @Override
     public ProjectDetailsDTO confirmFinished(String projectCode, Long userId) {
         CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
+
+        // 更新项目下测评机构或者测试人员的接包次数
+        project.getCrowdTestTaskList().stream().map(crowdTestTask -> {
+            List<TaskToUser> acceptedUserList = crowdTestTask.getAcceptedUserList();
+            acceptedUserList.stream().map(taskToUser -> {
+                User user = userRepo.getByID(taskToUser.getUserId());
+                // 对用户判断认证类型 测评机构为1 测试人员为2
+
+                Optional<UserTaskCountPO> userTaskCountPOOptional = userTaskCountDao.findByUserId(user.getId());
+                if(!userTaskCountPOOptional.isPresent()){
+                    UserTaskCount userTaskCount = new UserTaskCount(user.getId(), 1L, RoleType.EVALUATION_USER.getId());
+                    userTaskCountDao.save(Converter.convert(UserTaskCountPO.class, userTaskCount));
+                }else{
+                    UserTaskCountPO userTaskCountPO = userTaskCountPOOptional.get();
+                    userTaskCountPO.setCount(userTaskCountPO.getCount()+1);
+                    userTaskCountDao.save(userTaskCountPO);
+                }
+                return null;
+            });
+            return null;
+        }).collect(Collectors.toList());
+
         project.finishCrowdTestProject(userRepo.getByID(userId));
         projectRepo.saveCrowdTestProject(project);
         return getProjectDetails(projectCode, userId);

+ 1 - 1
site/src/main/resources/application.yml

@@ -56,7 +56,7 @@ oss:
 
 cache:
   expire:
-    duration: 3600
+    duration: 120
 
 agency: 7
 

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác