CrowdProjectController.java 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. package com.mooctest.crowd.site.controller;
  2. import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
  3. import com.mooctest.crowd.domain.exception.BadRequestException;
  4. import com.mooctest.crowd.domain.exception.BaseException;
  5. import com.mooctest.crowd.site.annotation.LoginRequired;
  6. import com.mooctest.crowd.site.command.CrowdTestProjectCommand;
  7. import com.mooctest.crowd.site.command.GenerateProjectCommand;
  8. import com.mooctest.crowd.site.data.dto.ProjectDetailsDTO;
  9. import com.mooctest.crowd.site.data.vo.RegionalManagerVO;
  10. import com.mooctest.crowd.site.service.CrowdProjectService;
  11. import com.mooctest.crowd.site.util.FileUtil;
  12. import lombok.extern.slf4j.Slf4j;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.validation.BindingResult;
  15. import org.springframework.validation.annotation.Validated;
  16. import org.springframework.web.bind.annotation.*;
  17. import org.springframework.web.multipart.MultipartFile;
  18. import javax.servlet.http.HttpSession;
  19. import java.io.IOException;
  20. import java.util.List;
  21. /**
  22. * @author: Diors.Po
  23. * @Email: 171256175@qq.com
  24. * @date 2019-07-24 23:50
  25. */
  26. @Slf4j
  27. @RestController
  28. public class CrowdProjectController{
  29. @Autowired
  30. private CrowdProjectService projectService;
  31. /**
  32. * 创建项目接口
  33. * @param crowdTestProjectCommand
  34. * @param result
  35. * @return
  36. */
  37. @RequestMapping(value = "/api/project/", method = RequestMethod.POST)
  38. public ProjectDetailsDTO createProject(@Validated @RequestBody CrowdTestProjectCommand crowdTestProjectCommand, BindingResult result,HttpSession session){
  39. long userId=Long.parseLong((String) session.getAttribute("userId"));
  40. if (result.hasErrors()) {
  41. throw new BaseException(result.getFieldErrors().toString());
  42. }
  43. else if (!crowdTestProjectCommand.isLegal())
  44. throw new BaseException("信息不合法,项目可见性必须选择指定的市");
  45. // throw new BaseException("信息不合法,项目可见性存在问题");
  46. return projectService.createCrowdProject(crowdTestProjectCommand,userId);
  47. }
  48. /**
  49. * 获取项目详情接口
  50. * @param projectCode
  51. * @return
  52. */
  53. @RequestMapping(value = "/api/project/{projectCode}", method = RequestMethod.GET)
  54. public ProjectDetailsDTO getProject(@PathVariable("projectCode") String projectCode, HttpSession session){
  55. log.info("访问Project详情,projectId:"+projectCode);
  56. Object loginUser = session.getAttribute("userId");
  57. Long userId = null;
  58. if (loginUser!=null)
  59. userId = Long.parseLong((String)loginUser);
  60. return projectService.getProjectDetails(projectCode, userId);
  61. }
  62. /**
  63. * 获取全部项目
  64. * @return
  65. */
  66. @RequestMapping(value = "/api/project", method = RequestMethod.GET)
  67. public List<ProjectDetailsDTO> getProjects(){
  68. //todo 获取所有项目列表
  69. return null;
  70. }
  71. /**
  72. * 更新项目信息接口
  73. * @param crowdTestProjectCommand
  74. * @param projectCode
  75. * @param result
  76. * @return
  77. */
  78. @RequestMapping(value = "/api/project/{projectCode}", method = RequestMethod.PUT)
  79. public ProjectDetailsDTO updateProject(@Validated @RequestBody CrowdTestProjectCommand crowdTestProjectCommand, @PathVariable("projectCode") String projectCode, BindingResult result){
  80. if (result.hasErrors())
  81. throw new BaseException(result.getFieldErrors().toString());
  82. else if (!crowdTestProjectCommand.isLegal())
  83. throw new BaseException("信息不合法,项目可见性必须选择指定的市");
  84. // throw new BaseException("信息不合法,项目可见性存在问题");
  85. return projectService.updateProject(projectCode, crowdTestProjectCommand);
  86. }
  87. /**
  88. * 删除项目
  89. * @param projectId
  90. * @param session
  91. */
  92. @RequestMapping(value = "/api/project/{projectId}", method = RequestMethod.DELETE)
  93. public void deleteProject(@PathVariable("projectId") Long projectId, HttpSession session){
  94. projectService.deleteProject(projectId, (Long)session.getAttribute("userId"));
  95. }
  96. /**
  97. * 通过表单填写,生成项目
  98. * @param command
  99. * @return
  100. */
  101. @RequestMapping(value = "/api/greenChannel/project", method = RequestMethod.POST)
  102. public ProjectDetailsDTO generateProjectWithData(@RequestBody GenerateProjectCommand command){
  103. return projectService.generateProjectWithData(command);
  104. }
  105. /**
  106. * 将Excel解析为多个项目
  107. * @param file
  108. * @return
  109. */
  110. @RequestMapping(value = "/api/greenChannel/excel/{userId}/projects", method = RequestMethod.POST)
  111. public List<CrowdTestProject> parseExcel2Projects(@PathVariable("userId")Long userId, MultipartFile file){
  112. try {
  113. if (!FileUtil.checkExcel(file.getInputStream()))
  114. throw new BadRequestException("请上传Excel文件,xls/xlsx");
  115. } catch (IOException e) {
  116. e.printStackTrace();
  117. }
  118. return projectService.generateProjectByExcel(userId, file);
  119. }
  120. /**
  121. * 导入由Excel解析而来的多个项目
  122. * @param projects
  123. * @return
  124. */
  125. @RequestMapping(value = "/api/greenChannel/projects", method = RequestMethod.POST)
  126. public List<ProjectDetailsDTO> multiProjectsImport(@RequestBody List<CrowdTestProject> projects){
  127. return projectService.importMultiProjectsByExcel(projects);
  128. }
  129. /**
  130. * 区域管理员接收项目
  131. * @param projectCode
  132. * @param userId
  133. * @return
  134. */
  135. @LoginRequired
  136. @RequestMapping(value = "/api/project/{projectCode}/regionManager/{userId}", method = RequestMethod.PUT)
  137. public ProjectDetailsDTO acceptProject(@PathVariable("projectCode") String projectCode, @PathVariable("userId") Long userId){
  138. return projectService.receiveProject(projectCode, userId);
  139. }
  140. @LoginRequired
  141. @RequestMapping(value = "/api/project/{projectCode}/status/rejected", method = RequestMethod.PUT)
  142. public void rejectProejct(@PathVariable("projectCode") String projectCode, HttpSession session){
  143. Long userId = Long.parseLong((String)session.getAttribute("userId"));
  144. projectService.rejectProject(projectCode, userId);
  145. }
  146. @LoginRequired
  147. @RequestMapping(value = "/api/project/{projectCode}/status/committed", method = RequestMethod.PUT)
  148. public ProjectDetailsDTO commitProject(@PathVariable("projectCode") String projectCode, HttpSession session){
  149. Long userId = Long.parseLong((String)session.getAttribute("userId"));
  150. return projectService.commitProject(projectCode, userId);
  151. }
  152. @LoginRequired
  153. @RequestMapping(value = "/api/project/{projectCode}/status/finished", method = RequestMethod.PUT)
  154. public ProjectDetailsDTO confirmFinished(@PathVariable("projectCode") String projectCode, HttpSession session){
  155. Long userId = Long.parseLong((String)session.getAttribute("userId"));
  156. return projectService.confirmFinished(projectCode, userId);
  157. }
  158. /**
  159. * 获取区域管理员列表
  160. * @return
  161. */
  162. @RequestMapping(value = "/api/regionalManager", method = RequestMethod.GET)
  163. public List<RegionalManagerVO> getRegionalManagerList(){
  164. return projectService.getRegionalManagerList();
  165. }
  166. /**
  167. * 修正数据库信息
  168. * @param projectCode
  169. * @return
  170. */
  171. @RequestMapping(value = "/api/modify/{projectCode}", method = RequestMethod.GET)
  172. public boolean modifyData(@PathVariable("projectCode") String projectCode){
  173. return projectService.modifyData(projectCode);
  174. }
  175. /**
  176. * 修正数据库信息
  177. * @return
  178. */
  179. @RequestMapping(value = "/api/modify", method = RequestMethod.GET)
  180. public boolean modifyData(){
  181. return projectService.modifyAllData();
  182. }
  183. /**
  184. * 获取平台总体数据
  185. * @return
  186. */
  187. @RequestMapping(value = "/api/allproject", method = RequestMethod.GET)
  188. public List<CrowdTestProject> getByProject(){
  189. return projectService.getByProject();
  190. }
  191. }