Ver Fonte

"增加城市代码"

guochao há 6 anos atrás
pai
commit
8a0f827bea
20 ficheiros alterados com 186 adições e 101 exclusões
  1. 8 0
      core/src/main/java/com/mooctest/crowd/domain/dao/CrowdTestProjectDao.java
  2. 10 0
      core/src/main/java/com/mooctest/crowd/domain/dao/CrowdTestTaskDao.java
  3. 3 0
      core/src/main/java/com/mooctest/crowd/domain/dao/EvaluationAgencyDao.java
  4. 5 0
      core/src/main/java/com/mooctest/crowd/domain/dao/UserDao.java
  5. 2 1
      core/src/main/java/com/mooctest/crowd/domain/model/CrowdTestTaskPO.java
  6. 18 0
      core/src/main/java/com/mooctest/crowd/domain/model/RankInfo.java
  7. 1 1
      site/src/main/java/com/mooctest/crowd/site/command/GenerateProjectCommand.java
  8. 9 3
      site/src/main/java/com/mooctest/crowd/site/controller/CrowdProjectController.java
  9. 14 5
      site/src/main/java/com/mooctest/crowd/site/controller/TestController.java
  10. 2 1
      site/src/main/java/com/mooctest/crowd/site/controller/UserController.java
  11. 1 0
      site/src/main/java/com/mooctest/crowd/site/data/dto/UserDTO.java
  12. 1 0
      site/src/main/java/com/mooctest/crowd/site/data/vo/EvolutionAgencyVO.java
  13. 18 0
      site/src/main/java/com/mooctest/crowd/site/data/vo/RegionalManagerVO.java
  14. 5 0
      site/src/main/java/com/mooctest/crowd/site/mediator/ViewMediator.java
  15. 63 80
      site/src/main/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImpl.java
  16. 4 1
      site/src/main/java/com/mooctest/crowd/site/service/CrowdProjectService.java
  17. 1 1
      site/src/main/java/com/mooctest/crowd/site/service/UserService.java
  18. 18 5
      site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdProjectServiceImpl.java
  19. 1 1
      site/src/main/java/com/mooctest/crowd/site/service/impl/UserServiceImpl.java
  20. 2 2
      site/src/main/resources/application.yml

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

@@ -1,6 +1,10 @@
 package com.mooctest.crowd.domain.dao;
 
+import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
 import com.mooctest.crowd.domain.model.CrowdTestProjectPO;
+import com.mooctest.crowd.domain.model.RankInfo;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.CrudRepository;
 
 import javax.transaction.Transactional;
@@ -27,6 +31,10 @@ public interface CrowdTestProjectDao extends CrudRepository<CrowdTestProjectPO,
 
     List<CrowdTestProjectPO> findByRegionalManagerIdAndIsDeleted(Long regionalManagerId, int isDeleted);
 
+
+    @Query(value = "SELECT new com.mooctest.crowd.domain.model.RankInfo(SUM(p.quotedPrice), p.userId) FROM CrowdTestProjectPO p GROUP BY p.userId ORDER BY SUM(p.quotedPrice) DESC")
+    List<RankInfo> findTotalPriceOfUser(Pageable pageable);
+
     @Override
     void delete(CrowdTestProjectPO crowdTestProjectPO);
 

+ 10 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/CrowdTestTaskDao.java

@@ -1,6 +1,9 @@
 package com.mooctest.crowd.domain.dao;
 
 import com.mooctest.crowd.domain.model.CrowdTestTaskPO;
+import com.mooctest.crowd.domain.model.RankInfo;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.CrudRepository;
 
 import javax.transaction.Transactional;
@@ -23,6 +26,13 @@ public interface CrowdTestTaskDao extends CrudRepository<CrowdTestTaskPO, Long>
     List<CrowdTestTaskPO> findByEvaluationAgencyIdAndIsDeleted(Long evaluationAgencyId, int isDeleted);
 
     List<CrowdTestTaskPO> findAllByIsDeleted(int isDeleted);
+
+    @Query(value = "SELECT new com.mooctest.crowd.domain.model.RankInfo(SUM(p.quotedPrice), p.evaluationAgencyId) FROM CrowdTestTaskPO p GROUP BY p.evaluationAgencyId ORDER BY SUM(p.quotedPrice) DESC")
+    List<RankInfo> findTotalPriceOfAgency(Pageable pageable);
+
+    @Query(nativeQuery = true, value = "select * from crowd_test_task where CTT_STATUS = 1 order by CTT_QUOTED_PRICE DESC LIMIT 4")
+    List<CrowdTestTaskPO> findHotTask();
+
     @Override
     void delete(CrowdTestTaskPO crowdTestProjectPO);
 

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

@@ -1,7 +1,10 @@
 package com.mooctest.crowd.domain.dao;
 
 import com.mooctest.crowd.domain.model.EvaluationAgencyPO;
+import com.mooctest.crowd.domain.model.RankInfo;
+import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.PagingAndSortingRepository;
 
 import javax.transaction.Transactional;

+ 5 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/UserDao.java

@@ -1,10 +1,14 @@
 package com.mooctest.crowd.domain.dao;
 
+import com.mooctest.crowd.domain.model.RankInfo;
 import com.mooctest.crowd.domain.model.UserPO;
+import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.PagingAndSortingRepository;
 
 import javax.transaction.Transactional;
+import java.util.List;
 import java.util.Optional;
 
 @Transactional
@@ -27,4 +31,5 @@ public interface UserDao extends PagingAndSortingRepository<UserPO, Long>, JpaSp
 
     UserPO save(UserPO userPo);
 
+
 }

+ 2 - 1
core/src/main/java/com/mooctest/crowd/domain/model/CrowdTestTaskPO.java

@@ -10,7 +10,8 @@ import java.sql.Timestamp;
  * @date 2019/7/11 14:14
  */
 @Data
-@Entity(name = "crowd_test_task")
+@Entity
+@Table(name = "crowd_test_task")
 public class
 CrowdTestTaskPO {
     @Id

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

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

+ 1 - 1
site/src/main/java/com/mooctest/crowd/site/command/GenerateProjectCommand.java

@@ -65,7 +65,7 @@ public class GenerateProjectCommand {
         CrowdTestProject crowdTestProject = CrowdTestProjectFactory.createCrowdTestProject();
         crowdTestProject.setName(this.name);
         if (userId == null)
-            userId = 0L;
+            userId = 1L;
         crowdTestProject.setUserId(userId);
         crowdTestProject.setLinkMan(this.contactName);
         crowdTestProject.setLinkManMobile(this.contactPhone);

+ 9 - 3
site/src/main/java/com/mooctest/crowd/site/controller/CrowdProjectController.java

@@ -6,6 +6,7 @@ import com.mooctest.crowd.domain.exception.BaseException;
 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.vo.RegionalManagerVO;
 import com.mooctest.crowd.site.service.CrowdProjectService;
 import com.mooctest.crowd.site.util.FileUtil;
 import lombok.extern.slf4j.Slf4j;
@@ -99,15 +100,15 @@ public class CrowdProjectController {
      * @param file
      * @return
      */
-    @RequestMapping(value = "/api/greenChannel/excel/projects", method = RequestMethod.POST)
-    public List<CrowdTestProject> parseExcel2Projects(MultipartFile file){
+    @RequestMapping(value = "/api/greenChannel/excel/{userId}/projects", method = RequestMethod.POST)
+    public List<CrowdTestProject> parseExcel2Projects(@PathVariable("userId")Long userId, MultipartFile file){
         try {
             if (!FileUtil.checkExcel(file.getInputStream()))
                 throw new BadRequestException("请上传Excel文件,xls/xlsx");
         } catch (IOException e) {
             e.printStackTrace();
         }
-        return projectService.generateProjectByExcel(file);
+        return projectService.generateProjectByExcel(userId, file);
     }
 
     /**
@@ -123,4 +124,9 @@ public class CrowdProjectController {
     @RequestMapping(value = "/api/project/{projectCode}/status/accept")
     public void acceptProject(@PathVariable("projectCode") String projectCode, HttpServletRequest request){
     }
+
+    @RequestMapping(value = "/api/regionalManager", method = RequestMethod.GET)
+    public List<RegionalManagerVO> getRegionalManagerList(){
+        return projectService.getRegionalManagerList();
+    }
 }

+ 14 - 5
site/src/main/java/com/mooctest/crowd/site/controller/TestController.java

@@ -1,19 +1,21 @@
 package com.mooctest.crowd.site.controller;
 
 import com.alibaba.fastjson.JSONObject;
+import com.mooctest.crowd.domain.dao.CrowdTestProjectDao;
+import com.mooctest.crowd.domain.dao.CrowdTestTaskDao;
+import com.mooctest.crowd.domain.dao.UserDao;
 import com.mooctest.crowd.site.annotation.LoginRequired;
 import com.mooctest.crowd.site.anticorruption.impl.data.UserInfo;
 import com.mooctest.crowd.site.service.CrowdProjectService;
-import com.mooctest.crowd.site.service.UploadService;
-import com.mooctest.crowd.site.util.FileUtil;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpMethod;
 import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.client.RestTemplate;
-import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
 import java.io.IOException;
@@ -33,6 +35,12 @@ public class TestController {
     private CrowdProjectService projectService;
 
     @Autowired
+    private CrowdTestProjectDao projectDao;
+
+    @Autowired
+    private CrowdTestTaskDao taskDao;
+
+    @Autowired
     private RestTemplate restTemplate;
 
     @RequestMapping(value = "/test/rest", method = RequestMethod.POST)
@@ -52,8 +60,9 @@ public class TestController {
     }
 
     @RequestMapping(value = "/test", method = RequestMethod.POST)
-    public Object exceptionTest(MultipartFile file) throws IOException {
-        return FileUtil.checkFile(file.getInputStream());
+    public Object exceptionTest() throws IOException {
+        Pageable pageable = PageRequest.of(0, 10);
+        return taskDao.findTotalPriceOfAgency(pageable);
     }
 
     @RequestMapping(value = "/session/put", method = RequestMethod.GET)

+ 2 - 1
site/src/main/java/com/mooctest/crowd/site/controller/UserController.java

@@ -5,6 +5,7 @@ import com.mooctest.crowd.site.data.dto.UserDTO;
 import com.mooctest.crowd.domain.exception.AccountNotExistException;
 import com.mooctest.crowd.domain.exception.BadRequestException;
 import com.mooctest.crowd.domain.exception.PasswordErrorException;
+import com.mooctest.crowd.site.mediator.ViewMediator;
 import com.mooctest.crowd.site.service.UserService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.BindingResult;
@@ -47,7 +48,7 @@ public class UserController {
 
     @RequestMapping(value = "/user/{userId}", method = RequestMethod.GET)
     public UserDTO getUser(@PathVariable Long userId){
-        return null;
+        return userService.getUser(userId);
     }
 
     @RequestMapping(value = "/user", method = RequestMethod.GET)

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

@@ -22,6 +22,7 @@ public class UserDTO {
     private AgencyVO agencyVO;
     private List<Permission> permissions;
     private List<CrowdProjectVO> crowdProjectVOS;
+    private List<String> roleList;
 
     public UserDTO(UserVO userVO) {
         this.userVO = userVO;

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

@@ -14,4 +14,5 @@ import lombok.NoArgsConstructor;
 public class EvolutionAgencyVO {
     private String logo;
     private String name;
+    private Double allTaskPrice;
 }

+ 18 - 0
site/src/main/java/com/mooctest/crowd/site/data/vo/RegionalManagerVO.java

@@ -0,0 +1,18 @@
+package com.mooctest.crowd.site.data.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author: Diors.Po
+ * @Email: 171256175@qq.com
+ * @date 2019-08-20 14:05
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class RegionalManagerVO {
+    private Long id;        //此ID为RegionalManager对应的UserID
+    private String name;
+}

+ 5 - 0
site/src/main/java/com/mooctest/crowd/site/mediator/ViewMediator.java

@@ -7,6 +7,9 @@ import com.mooctest.crowd.site.data.dto.*;
 import com.mooctest.crowd.domain.exception.AccountNotExistException;
 import com.mooctest.crowd.domain.exception.BadRequestException;
 import com.mooctest.crowd.domain.exception.PasswordErrorException;
+import com.mooctest.crowd.site.data.vo.RegionalManagerVO;
+
+import java.util.List;
 
 /**
  * @Author: xuexb
@@ -32,4 +35,6 @@ public interface ViewMediator {
 
     UserDTO renderUser(User user);
 
+    List<RegionalManagerVO> renderRegionManager();
+
 }

+ 63 - 80
site/src/main/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImpl.java

@@ -1,9 +1,11 @@
 package com.mooctest.crowd.site.mediator.impl;
 
-import com.mooctest.crowd.domain.dao.CrowdTestProjectDao;
-import com.mooctest.crowd.domain.dao.CrowdTestTaskDao;
+import com.mooctest.crowd.domain.dao.*;
 import com.mooctest.crowd.domain.domainobject.*;
 import com.mooctest.crowd.domain.exception.AccountNotExistException;
+import com.mooctest.crowd.domain.model.EvaluationAgencyPO;
+import com.mooctest.crowd.domain.model.RegionalManagerPO;
+import com.mooctest.crowd.domain.model.UserPO;
 import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
 import com.mooctest.crowd.domain.repository.EvaluationAgencyRepo;
 import com.mooctest.crowd.domain.repository.UserRepo;
@@ -14,6 +16,8 @@ import com.mooctest.crowd.site.mediator.ViewMediator;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
@@ -40,6 +44,15 @@ public class WebMediatorImpl implements ViewMediator {
     private CrowdTestTaskDao taskDao;
 
     @Autowired
+    private UserDao userDao;
+
+    @Autowired
+    private RegionalManagerDao regionalManagerDao;
+
+    @Autowired
+    private EvaluationAgencyDao agencyDao;
+
+    @Autowired
     private CrowdTestProjectDao projectDao;
 
     @Override
@@ -54,88 +67,44 @@ public class WebMediatorImpl implements ViewMediator {
 
     @Override
     public IndexDTO renderIndex() {
-        ArrayList<CrowdTaskVO> allTasks = new ArrayList<>();
-        List<CrowdTestProject> allProjects = projectRepo.getAllCrowdTestProject();
-        allProjects.forEach(project -> {
-            allTasks.addAll(project.getCrowdTestTaskList()
-                    .stream().filter(crowdTestTask -> crowdTestTask.getStatus() == CrowdTestTaskStatus.HAS_RELEASED)
-                    .map(crowdTestTask -> new CrowdTaskVO(crowdTestTask)).collect(Collectors.toList()));
-        });
-
-        //对Project按照UserId进行分组
-        Map<Long, List<CrowdTestProject>> projectsGroup = new HashMap<>();
-        allProjects.forEach(project -> {
-            if (!projectsGroup.keySet().contains(project.getUserId()))
-                projectsGroup.put(project.getUserId(), new ArrayList<>());
-            projectsGroup.get(project.getUserId()).add(project);
-        });
-        //根据组的项目总价进行排序,提取UserId
-        List<Long> userIds = projectsGroup.entrySet().stream().sorted((o1, o2) -> {
-            Double sumPrice1 = o1.getValue().stream().mapToDouble(CrowdTestProject::getQuotedPrice).sum();
-            Double sumPrice2 = o2.getValue().stream().mapToDouble(CrowdTestProject::getQuotedPrice).sum();
-            if (sumPrice1 > sumPrice2)
-                return -1;
-            else if (sumPrice1 < sumPrice2)
-                return 1;
-            else
-                return 0;
-        }).map(Map.Entry::getKey).collect(Collectors.toList());
-        for (Long id : userIds)
-            log.info("UserId from Project: " + id);
-        if (userIds.size()>10)
-            userIds = userIds.subList(0,9);
-        List<UserVO> userRanks = userIds.stream().map(id -> new UserVO(userRepo.getByID(id))).collect(Collectors.toList());
-        userRanks.forEach(userVO -> userVO.setAllProjectPrice(projectsGroup.get(userVO.getId()).stream().mapToDouble(CrowdTestProject::getQuotedPrice).sum()));
-
-        allTasks.sort(Comparator.comparing(CrowdTaskVO::getQuotePrice).reversed());
-        List<CrowdTaskVO> hotTasks = allTasks.subList(0,3);
-        List<EvolutionAgencyVO> agencyVOS = new ArrayList<>();
-        EvolutionAgencyVO agency1 = new EvolutionAgencyVO();
-        agency1.setLogo("http://www.mooctest.net/assets/img/mooctest.png");
-        agency1.setName("agency1");
-        EvolutionAgencyVO agency2 = new EvolutionAgencyVO();
-        agency2.setLogo("http://www.mooctest.net/assets/img/mooctest.png");
-        agency2.setName("agency2");
-        EvolutionAgencyVO agency3 = new EvolutionAgencyVO();
-        agency3.setLogo("http://www.mooctest.net/assets/img/mooctest.png");
-        agency3.setName("agency3");
-        EvolutionAgencyVO agency4 = new EvolutionAgencyVO();
-        agency4.setLogo("http://www.mooctest.net/assets/img/mooctest.png");
-        agency4.setName("agency4");
-        EvolutionAgencyVO agency5 = new EvolutionAgencyVO();
-        agency5.setLogo("http://www.mooctest.net/assets/img/mooctest.png");
-        agency5.setName("agency5");
-        EvolutionAgencyVO agency6 = new EvolutionAgencyVO();
-        agency6.setLogo("http://www.mooctest.net/assets/img/mooctest.png");
-        agency6.setName("agency6");
-        EvolutionAgencyVO agency7 = new EvolutionAgencyVO();
-        agency7.setLogo("http://www.mooctest.net/assets/img/mooctest.png");
-        agency7.setName("agency7");
-        EvolutionAgencyVO agency8 = new EvolutionAgencyVO();
-        agency8.setLogo("http://www.mooctest.net/assets/img/mooctest.png");
-        agency8.setName("agency8");
-        EvolutionAgencyVO agency9 = new EvolutionAgencyVO();
-        agency9.setLogo("http://www.mooctest.net/assets/img/mooctest.png");
-        agency9.setName("agency9");
-        EvolutionAgencyVO agency10 = new EvolutionAgencyVO();
-        agency10.setLogo("http://www.mooctest.net/assets/img/mooctest.png");
-        agency10.setName("agency10");
-        agencyVOS.add(agency1);
-        agencyVOS.add(agency2);
-        agencyVOS.add(agency3);
-        agencyVOS.add(agency4);
-        agencyVOS.add(agency5);
-        agencyVOS.add(agency6);
-        agencyVOS.add(agency7);
-        agencyVOS.add(agency8);
-        agencyVOS.add(agency9);
-        agencyVOS.add(agency10);
-        IndexDTO indexDTO = new IndexDTO();
 
+        Pageable pageable = PageRequest.of(0, 10);
+        //获取用户排名
+        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());
+        //获取机构排名
+        List<EvolutionAgencyVO> agencyRanks = taskDao.findTotalPriceOfAgency(pageable).stream().map(rankInfo -> {
+            Optional<EvaluationAgencyPO> agency = agencyDao.findById(rankInfo.getEntityId());
+            if (agency.isPresent()) {
+                EvolutionAgencyVO agencyVO = new EvolutionAgencyVO();
+                agencyVO.setName(agency.get().getEvaluationAgencyName());
+                agencyVO.setLogo(agency.get().getAgencyPhoto());
+                agencyVO.setAllTaskPrice(rankInfo.getTotalPrice());
+                return agencyVO;
+            }
+            return null;
+        }).filter(Objects::nonNull).collect(Collectors.toList());
+
+        //获取热门任务
+        List<CrowdTaskVO> hotTasks = taskDao.findHotTask().stream().map(crowdTestTaskPO -> {
+            CrowdTestTask task = new CrowdTestTask();
+            BeanUtils.copyProperties(crowdTestTaskPO, task);
+            return new CrowdTaskVO(task);
+        }).collect(Collectors.toList());
 
+        IndexDTO indexDTO = new IndexDTO();
         indexDTO.setHotTaskList(hotTasks);
         indexDTO.setUserRank(userRanks);
-        indexDTO.setAgencyRank(agencyVOS);
+        indexDTO.setAgencyRank(agencyRanks);
         List<String> img = new ArrayList<>();
         img.add("http://mooctest-crowd-service.oss-cn-hangzhou.aliyuncs.com/Image/daylight.jpg");
         img.add("http://mooctest-crowd-service.oss-cn-hangzhou.aliyuncs.com/Image/invictus.jpg");
@@ -216,9 +185,23 @@ public class WebMediatorImpl implements ViewMediator {
     @Override
     public UserDTO renderUser(User user) {
         UserDTO userDTO = new UserDTO();
+        userDTO.setRoleList(user.getRoleList().stream().map(Role::getName).collect(Collectors.toList()));
         userDTO.setUserVO(new UserVO(user));
         if (user.getEvaluationAgency() != null)
             userDTO.setAgencyVO(new AgencyVO(user.getEvaluationAgency()));
         return userDTO;
     }
+
+    @Override
+    public List<RegionalManagerVO> renderRegionManager() {
+        List<RegionalManagerVO> regionalManagerVOList = new ArrayList<>();
+        regionalManagerDao.findAll().forEach(regionalManagerPO -> {
+            RegionalManagerVO regionalManagerVO = new RegionalManagerVO();
+            regionalManagerVO.setId(regionalManagerPO.getUserId());
+            regionalManagerVO.setName(userDao.findById(regionalManagerPO.getUserId()).get().getName());
+            regionalManagerVOList.add(regionalManagerVO);
+        });
+        List<RegionalManagerVO> results = regionalManagerVOList.stream().distinct().collect(Collectors.toList());
+        return results;
+    }
 }

+ 4 - 1
site/src/main/java/com/mooctest/crowd/site/service/CrowdProjectService.java

@@ -4,6 +4,7 @@ import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
 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.vo.RegionalManagerVO;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
@@ -26,5 +27,7 @@ public interface CrowdProjectService {
 
     List<ProjectDetailsDTO> importMultiProjectsByExcel(List<CrowdTestProject> projects);
 
-    List<CrowdTestProject> generateProjectByExcel(MultipartFile file);
+    List<CrowdTestProject> generateProjectByExcel(Long userId, MultipartFile file);
+
+    List<RegionalManagerVO> getRegionalManagerList();
 }

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

@@ -1 +1 @@
-package com.mooctest.crowd.site.service;

import com.mooctest.crowd.site.command.LoginCommand;
import com.mooctest.crowd.site.command.RegisterCommand;
import com.mooctest.crowd.site.data.dto.UserDTO;
import com.mooctest.crowd.domain.exception.AccountNotExistException;
import com.mooctest.crowd.domain.exception.BadRequestException;
import com.mooctest.crowd.domain.exception.PasswordErrorException;
import com.mooctest.crowd.site.data.vo.EvolutionAgencyVO;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @Author: xuexb
 * @Date: 2019.7.22 16:52
 */
public interface UserService {
    UserDTO register(RegisterCommand registerCommand) throws AccountNotExistException;

    UserDTO loginByMobileAndPwd(LoginCommand loginCommand) throws PasswordErrorException, AccountNotExistException, BadRequestException;

    List<EvolutionAgencyVO> getAgencies();
}
+package com.mooctest.crowd.site.service;

import com.mooctest.crowd.site.command.LoginCommand;
import com.mooctest.crowd.site.command.RegisterCommand;
import com.mooctest.crowd.site.data.dto.UserDTO;
import com.mooctest.crowd.domain.exception.AccountNotExistException;
import com.mooctest.crowd.domain.exception.BadRequestException;
import com.mooctest.crowd.domain.exception.PasswordErrorException;
import com.mooctest.crowd.site.data.vo.EvolutionAgencyVO;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @Author: xuexb
 * @Date: 2019.7.22 16:52
 */
public interface UserService {
    UserDTO register(RegisterCommand registerCommand) throws AccountNotExistException;

    UserDTO loginByMobileAndPwd(LoginCommand loginCommand) throws PasswordErrorException, AccountNotExistException, BadRequestException;

    List<EvolutionAgencyVO> getAgencies();

    UserDTO getUser(Long userId);
}

+ 18 - 5
site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdProjectServiceImpl.java

@@ -2,20 +2,19 @@ package com.mooctest.crowd.site.service.impl;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
-import com.mooctest.crowd.domain.domainobject.CrowdTestProjectStatus;
-import com.mooctest.crowd.domain.domainobject.CrowdTestReport;
-import com.mooctest.crowd.domain.domainobject.CrowdTestTask;
+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.repository.CrowdTestProjectRepo;
+import com.mooctest.crowd.domain.repository.UserRepo;
 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.vo.CrowdProjectVO;
+import com.mooctest.crowd.site.data.vo.RegionalManagerVO;
 import com.mooctest.crowd.site.mediator.OperationMediator;
 import com.mooctest.crowd.site.mediator.ViewMediator;
 import com.mooctest.crowd.site.service.CrowdProjectService;
@@ -51,6 +50,9 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
     private CrowdTestProjectRepo projectRepo;
 
     @Autowired
+    private UserRepo userRepo;
+
+    @Autowired
     private OperationMediator operationMediator;
 
 
@@ -132,10 +134,12 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
     }
 
     @Override
-    public List<CrowdTestProject> generateProjectByExcel(MultipartFile file){
+    public List<CrowdTestProject> generateProjectByExcel(Long userId, MultipartFile file){
+        User user = userRepo.getByID(userId);
         List<CrowdTestProject> projects = transferExcel2Projects(file);
         projects.forEach(project -> {
             project.setCode(GenerateFlowCodeUtil.generateProjCode());
+            project.setUserId(userId);
             List<CrowdTestTask> tasks = new ArrayList<>();
             CrowdTestTask task = CrowdTestProjectFactory.defaultFinishedCrowdTask();
             task.setType(((List<String>) JSONArray.parse(project.getType())).get(0));
@@ -148,6 +152,10 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
             task.setQuotedPrice(project.getQuotedPrice());
             task.setFixedPrice(project.getFixedPrice());
             task.setDescription(project.getDescription());
+            if (user.getEvaluationAgency()==null)
+                task.setEvaluationAgencyId(1L);
+            else
+                task.setEvaluationAgencyId(user.getEvaluationAgency().getId());
             tasks.add(task);
             project.setCrowdTestTaskList(tasks);
             project.getCrowdTestReportForProject().setCode(GenerateFlowCodeUtil.generateReportCode());
@@ -160,6 +168,11 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
         return projects;
     }
 
+    @Override
+    public List<RegionalManagerVO> getRegionalManagerList() {
+        return viewMediator.renderRegionManager();
+    }
+
     private List<CrowdTestProject> transferExcel2Projects(MultipartFile file){
         List<String> logList = new ArrayList<>();
         List<CrowdTestProject> projects = new ArrayList<>();

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

@@ -1 +1 @@
-package com.mooctest.crowd.site.service.impl;

import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
import com.mooctest.crowd.domain.repository.UserRepo;
import com.mooctest.crowd.site.command.LoginCommand;
import com.mooctest.crowd.site.command.RegisterCommand;
import com.mooctest.crowd.site.data.dto.UserDTO;

import com.mooctest.crowd.domain.exception.AccountNotExistException;
import com.mooctest.crowd.domain.exception.BadRequestException;
import com.mooctest.crowd.domain.exception.PasswordErrorException;
import com.mooctest.crowd.site.data.vo.EvolutionAgencyVO;
import com.mooctest.crowd.site.mediator.ViewMediator;
import com.mooctest.crowd.site.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @Author: xuexb
 * @Date: 2019.7.22 16:53
 */
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    @Qualifier("WebMediator")
    private ViewMediator viewMediator;

    @Autowired
    private UserRepo userRepo;

    @Autowired
    private CrowdTestProjectRepo projectRepo;

    @Override
    public UserDTO register(RegisterCommand registerCommand) throws AccountNotExistException {
        return viewMediator.register(registerCommand);
    }

    @Override
    public UserDTO loginByMobileAndPwd(LoginCommand loginCommand) throws PasswordErrorException, AccountNotExistException, BadRequestException {
        return viewMediator.loginByMobileAndPwd(loginCommand);
    }

    @Override
    public List<EvolutionAgencyVO> getAgencies() {
        return null;
    }
}
+package com.mooctest.crowd.site.service.impl;

import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
import com.mooctest.crowd.domain.repository.UserRepo;
import com.mooctest.crowd.site.command.LoginCommand;
import com.mooctest.crowd.site.command.RegisterCommand;
import com.mooctest.crowd.site.data.dto.UserDTO;

import com.mooctest.crowd.domain.exception.AccountNotExistException;
import com.mooctest.crowd.domain.exception.BadRequestException;
import com.mooctest.crowd.domain.exception.PasswordErrorException;
import com.mooctest.crowd.site.data.vo.EvolutionAgencyVO;
import com.mooctest.crowd.site.mediator.ViewMediator;
import com.mooctest.crowd.site.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @Author: xuexb
 * @Date: 2019.7.22 16:53
 */
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    @Qualifier("WebMediator")
    private ViewMediator viewMediator;

    @Autowired
    private UserRepo userRepo;

    @Autowired
    private CrowdTestProjectRepo projectRepo;


    @Override
    public UserDTO register(RegisterCommand registerCommand) throws AccountNotExistException {
        return viewMediator.register(registerCommand);
    }

    @Override
    public UserDTO loginByMobileAndPwd(LoginCommand loginCommand) throws PasswordErrorException, AccountNotExistException, BadRequestException {
        return viewMediator.loginByMobileAndPwd(loginCommand);
    }

    @Override
    public List<EvolutionAgencyVO> getAgencies() {
        return null;
    }

    @Override
    public UserDTO getUser(Long userId) {
        return viewMediator.renderUser(userRepo.getByID(userId));
    }
}

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

@@ -62,7 +62,7 @@ spring:
     database: 6
 user:
   service:
-    baseUrl: http://111.231.143.6:8081
+    baseUrl: http://118.25.48.10:8081
 
 ---
 spring:
@@ -75,7 +75,7 @@ spring:
     database: 7
 user:
   service:
-    baseUrl: http://111.231.143.6:8081
+    baseUrl: http://118.25.48.10:8081