|
|
@@ -1,11 +1,13 @@
|
|
|
package cn.seecoder.seecoderportalserver.serviceImpl;
|
|
|
|
|
|
import cn.seecoder.seecoderportalcommon.vo.UserRole;
|
|
|
+import cn.seecoder.seecoderportalcommon.vo.UserVO;
|
|
|
import cn.seecoder.seecoderportalserver.domain.CourseProject;
|
|
|
import cn.seecoder.seecoderportalserver.mapper.CourseMapper;
|
|
|
import cn.seecoder.seecoderportalserver.repository.CourseProjectRepository;
|
|
|
import cn.seecoder.seecoderportalserver.security.SecurityUtils;
|
|
|
import cn.seecoder.seecoderportalserver.service.CourseService;
|
|
|
+import cn.seecoder.seecoderportalserver.service.GroupService;
|
|
|
import cn.seecoder.seecoderportalserver.service.ProjectService;
|
|
|
import cn.seecoder.seecoderportalserver.service.subsystem.DevcloudService;
|
|
|
import cn.seecoder.seecoderportalserver.web.rest.errors.CustomErrorException;
|
|
|
@@ -16,6 +18,7 @@ import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
|
|
|
@@ -24,17 +27,19 @@ import java.util.List;
|
|
|
*/
|
|
|
@Service
|
|
|
public class ProjectServiceImpl implements ProjectService {
|
|
|
- private final static Logger log = LoggerFactory.getLogger(GroupServiceImpl.class);
|
|
|
+ private final static Logger log = LoggerFactory.getLogger(ProjectServiceImpl.class);
|
|
|
private final DevcloudService devcloudService;
|
|
|
private final CourseService courseService;
|
|
|
private final CourseMapper courseMapper;
|
|
|
private final CourseProjectRepository courseProjectRepository;
|
|
|
+ private final GroupService groupService;
|
|
|
|
|
|
- public ProjectServiceImpl(DevcloudService devcloudService, CourseService courseService, CourseMapper courseMapper, CourseProjectRepository courseProjectRepository) {
|
|
|
+ public ProjectServiceImpl(DevcloudService devcloudService, CourseService courseService, CourseMapper courseMapper, CourseProjectRepository courseProjectRepository, GroupService groupService) {
|
|
|
this.devcloudService = devcloudService;
|
|
|
this.courseService = courseService;
|
|
|
this.courseMapper = courseMapper;
|
|
|
this.courseProjectRepository = courseProjectRepository;
|
|
|
+ this.groupService = groupService;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -115,13 +120,12 @@ public class ProjectServiceImpl implements ProjectService {
|
|
|
@Transactional(rollbackFor = RuntimeException.class)
|
|
|
public JSONObject createProject(JSONObject project) {
|
|
|
JSONObject devcloudResult = devcloudService.createProject(project);
|
|
|
- log.info("new project {}", devcloudResult);
|
|
|
+ log.info("devcloudService.createProject: {}", devcloudResult);
|
|
|
CourseProject courseProject = new CourseProject();
|
|
|
courseProject.setProjectId(devcloudResult.getInteger("id"));
|
|
|
courseProject.setCourse(courseMapper.courseVOToCourse(courseService.findCourseById(project.getLong("courseId"))));
|
|
|
courseProject.setPublic(project.getBoolean("isPublic"));
|
|
|
courseProjectRepository.save(courseProject);
|
|
|
- log.info("new course project relation {}", courseProject);
|
|
|
return devcloudResult;
|
|
|
}
|
|
|
|
|
|
@@ -130,6 +134,13 @@ public class ProjectServiceImpl implements ProjectService {
|
|
|
public Boolean switchCourseProjectState(Integer projectId) {
|
|
|
CourseProject courseProject = courseProjectRepository.findById(projectId)
|
|
|
.orElseThrow(CustomErrorException::courseProjectNotFound);
|
|
|
+ JSONObject devcloudRes;
|
|
|
+ if (courseProject.getPublic()) {
|
|
|
+ devcloudRes = devcloudService.setProjectVisibility(projectId, "PRIVATE");
|
|
|
+ } else {
|
|
|
+ devcloudRes = devcloudService.setProjectVisibility(projectId, "PUBLIC");
|
|
|
+ }
|
|
|
+ log.info("devcloudService.setProjectVisibility: {}", devcloudRes);
|
|
|
courseProject.setPublic(!courseProject.getPublic());
|
|
|
courseProjectRepository.save(courseProject);
|
|
|
return courseProject.getPublic();
|
|
|
@@ -146,13 +157,26 @@ public class ProjectServiceImpl implements ProjectService {
|
|
|
throw CustomErrorException.unauthorizedUser();
|
|
|
}
|
|
|
JSONObject devcloudResult = devcloudService.forkProject(projectId, name);
|
|
|
- log.info("fork project {}", devcloudResult);
|
|
|
+ log.info("devcloudService.forkProject: {}", devcloudResult);
|
|
|
Integer newProjectId = devcloudResult.getInteger("projectId");
|
|
|
courseProject.setProjectId(newProjectId);
|
|
|
courseProject.setCourse(courseMapper.courseVOToCourse(courseService.findCourseById(courseProject.getCourse().getId())));
|
|
|
courseProject.setPublic(false);
|
|
|
courseProjectRepository.save(courseProject);
|
|
|
- log.info("new course project relation {}", courseProject);
|
|
|
+ // 若当前用户已组队,则将队友添加到当前项目当中
|
|
|
+ List<UserVO> members;
|
|
|
+ try {
|
|
|
+ members = groupService.findGroup(courseProject.getCourse().getId()).getMembers();
|
|
|
+ }catch (CustomErrorException e){
|
|
|
+ members = new ArrayList<>();
|
|
|
+ }
|
|
|
+ if(members.size() != 0){
|
|
|
+ for(UserVO member: members){
|
|
|
+ if(!member.getPhone().equals(SecurityUtils.getCurrentUser().getPhone())){
|
|
|
+ this.addProjectMember(newProjectId, member.getPhone());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
return findProjectById(newProjectId);
|
|
|
}
|
|
|
|
|
|
@@ -160,4 +184,8 @@ public class ProjectServiceImpl implements ProjectService {
|
|
|
public JSONArray findProjectMembers(Integer projectId) {
|
|
|
return devcloudService.getProjectMembers(projectId);
|
|
|
}
|
|
|
+
|
|
|
+ private void addProjectMember(Integer projectId, String phone){
|
|
|
+ JSONObject devcloudRes = devcloudService.addMember(projectId, phone);
|
|
|
+ }
|
|
|
}
|