|
|
@@ -1,6 +1,5 @@
|
|
|
package cn.seecoder.seecoderportalserver.serviceImpl;
|
|
|
|
|
|
-import cn.seecoder.seecoderportalserver.domain.Course;
|
|
|
import cn.seecoder.seecoderportalserver.domain.CourseProject;
|
|
|
import cn.seecoder.seecoderportalserver.mapper.CourseMapper;
|
|
|
import cn.seecoder.seecoderportalserver.repository.CourseProjectRepository;
|
|
|
@@ -8,6 +7,7 @@ import cn.seecoder.seecoderportalserver.security.SecurityUtils;
|
|
|
import cn.seecoder.seecoderportalserver.service.CourseService;
|
|
|
import cn.seecoder.seecoderportalserver.service.ProjectService;
|
|
|
import cn.seecoder.seecoderportalserver.service.subsystem.DevcloudService;
|
|
|
+import cn.seecoder.seecoderportalserver.web.rest.errors.CustomErrorException;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
@@ -77,22 +77,23 @@ public class ProjectServiceImpl implements ProjectService {
|
|
|
|
|
|
@Override
|
|
|
public JSONObject findProjectsByCourse(Long courseId) {
|
|
|
- List<CourseProject> courseProjectList = courseProjectRepository.findByCourse(courseId);
|
|
|
JSONObject projects = new JSONObject();
|
|
|
projects.put("public", new JSONArray());
|
|
|
projects.put("private", new JSONArray());
|
|
|
- for (CourseProject courseProject : courseProjectList) {
|
|
|
+ // public
|
|
|
+ List<CourseProject> publicProjects = courseProjectRepository.findByCourse_IdAndIsPublic(courseId, true);
|
|
|
+ for (CourseProject courseProject : publicProjects) {
|
|
|
+ projects.getJSONArray("public").add(findProjectById(courseProject.getProjectId()));
|
|
|
+ }
|
|
|
+ // private
|
|
|
+ List<CourseProject> privateProjects = courseProjectRepository.findByCourse_IdAndIsPublic(courseId, false);
|
|
|
+ for (CourseProject courseProject : privateProjects) {
|
|
|
Integer projectId = courseProject.getProjectId();
|
|
|
- Course course = courseProject.getCourse();
|
|
|
- JSONArray members = findProjectMembers(projectId);
|
|
|
+ JSONArray members = devcloudService.getProjectMembers(projectId);
|
|
|
for (Object o : members) {
|
|
|
JSONObject member = (JSONObject) o;
|
|
|
Long memberId = Long.parseLong(String.valueOf(member.get("id")));
|
|
|
- // 项目成员包含课程教师,则说明项目为当前课程公开项目
|
|
|
- // 项目成员包含当前用户,则说明项目为当前用户私有项目
|
|
|
- if (memberId.equals(course.getTeacherId())) {
|
|
|
- projects.getJSONArray("public").add(findProjectById(projectId));
|
|
|
- } else if (memberId.equals(SecurityUtils.getCurrentUser().getId())) {
|
|
|
+ if (memberId.equals(SecurityUtils.getCurrentUser().getId())) {
|
|
|
projects.getJSONArray("private").add(findProjectById(projectId));
|
|
|
}
|
|
|
}
|
|
|
@@ -108,13 +109,24 @@ public class ProjectServiceImpl implements ProjectService {
|
|
|
CourseProject courseProject = new CourseProject();
|
|
|
courseProject.setProjectId(devcloudResult.getInteger("id"));
|
|
|
courseProject.setCourse(courseMapper.courseVOToCourse(courseService.findCourseById(project.getLong("courseId"))));
|
|
|
+ courseProject.setPublic(false);
|
|
|
courseProjectRepository.save(courseProject);
|
|
|
}
|
|
|
return devcloudResult;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public JSONArray findProjectMembers(Integer id) {
|
|
|
- return devcloudService.getProjectMembers(id);
|
|
|
+ @Transactional(rollbackFor = RuntimeException.class)
|
|
|
+ public Boolean switchCourseProjectState(Integer projectId) {
|
|
|
+ CourseProject courseProject = courseProjectRepository.findById(projectId)
|
|
|
+ .orElseThrow(CustomErrorException::courseProjectNotFound);
|
|
|
+ courseProject.setPublic(!courseProject.getPublic());
|
|
|
+ courseProjectRepository.save(courseProject);
|
|
|
+ return courseProject.getPublic();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public JSONObject forkPublicProject(Integer projectId) {
|
|
|
+ return null;
|
|
|
}
|
|
|
}
|