|
|
@@ -1,5 +1,6 @@
|
|
|
package cn.seecoder.seecoderportalserver.serviceImpl;
|
|
|
|
|
|
+import cn.seecoder.seecoderportalcommon.vo.UserRole;
|
|
|
import cn.seecoder.seecoderportalserver.domain.CourseProject;
|
|
|
import cn.seecoder.seecoderportalserver.mapper.CourseMapper;
|
|
|
import cn.seecoder.seecoderportalserver.repository.CourseProjectRepository;
|
|
|
@@ -80,26 +81,32 @@ public class ProjectServiceImpl implements ProjectService {
|
|
|
|
|
|
@Override
|
|
|
public JSONObject findProjectsByCourse(Long courseId) {
|
|
|
+ if (!courseService.isCourseAccessible(courseId)) {
|
|
|
+ throw CustomErrorException.unauthorizedUser();
|
|
|
+ }
|
|
|
JSONObject projects = new JSONObject();
|
|
|
projects.put("public", new JSONArray());
|
|
|
projects.put("private", new JSONArray());
|
|
|
// public
|
|
|
List<CourseProject> publicProjects = courseProjectRepository.findByCourse_IdAndIsPublic(courseId, true);
|
|
|
for (CourseProject courseProject : publicProjects) {
|
|
|
- projects.getJSONArray("public").add(findProjectById(courseProject.getProjectId()));
|
|
|
+ if (SecurityUtils.getCurrentUser().getRole() == UserRole.TEACHER) {
|
|
|
+ projects.getJSONArray("public").add(findProjectById(courseProject.getProjectId()));
|
|
|
+ } else {
|
|
|
+ JSONObject object = new JSONObject();
|
|
|
+ object.put("id", courseProject.getProjectId());
|
|
|
+ projects.getJSONArray("public").add(object);
|
|
|
+ }
|
|
|
}
|
|
|
// private
|
|
|
- List<CourseProject> privateProjects = courseProjectRepository.findByCourse_IdAndIsPublic(courseId, false);
|
|
|
- for (CourseProject courseProject : privateProjects) {
|
|
|
- Integer projectId = courseProject.getProjectId();
|
|
|
- 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(SecurityUtils.getCurrentUser().getId())) {
|
|
|
- projects.getJSONArray("private").add(findProjectById(projectId));
|
|
|
- }
|
|
|
+ JSONArray allProjects = findAllProjects();
|
|
|
+ for (Object o : allProjects) {
|
|
|
+ JSONObject project = (JSONObject) o;
|
|
|
+ CourseProject courseProject = courseProjectRepository.findById(project.getInteger("id")).orElse(null);
|
|
|
+ if (courseProject != null && !courseProject.getPublic()) {
|
|
|
+ projects.getJSONArray("private").add(project);
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
return projects;
|
|
|
}
|
|
|
@@ -132,4 +139,9 @@ public class ProjectServiceImpl implements ProjectService {
|
|
|
public JSONObject forkPublicProject(Integer projectId) {
|
|
|
return null;
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public JSONArray findProjectMembers(Integer projectId) {
|
|
|
+ return devcloudService.getProjectMembers(projectId);
|
|
|
+ }
|
|
|
}
|