Ver código fonte

feat: 查看devcloud课程项目和非课程项目

mjh 4 anos atrás
pai
commit
90c0b14b0a

+ 19 - 8
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/domain/CourseProject.java

@@ -1,21 +1,32 @@
 package cn.seecoder.seecoderportalserver.domain;
 
-import lombok.Data;
-
 import javax.persistence.*;
-import javax.validation.constraints.NotNull;
 
-@Data
 @Entity
 @Table(name = "course_project")
 public class CourseProject {
     @OneToOne
-    @JoinColumn(name = "course_id",
+    @JoinColumn(name = "course_id", nullable = false,
             foreignKey = @ForeignKey(name = "course_project_course_id_fk"))
     private Course course;
 
     @Id
-    @Column(unique = true)
-    @NotNull
-    private Long projectId;
+    @Column(unique = true, nullable = false)
+    private Integer projectId;
+
+    public Course getCourse() {
+        return course;
+    }
+
+    public void setCourse(Course course) {
+        this.course = course;
+    }
+
+    public Integer getProjectId() {
+        return projectId;
+    }
+
+    public void setProjectId(Integer projectId) {
+        this.projectId = projectId;
+    }
 }

+ 1 - 1
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/repository/CourseProjectRepository.java

@@ -5,5 +5,5 @@ import org.springframework.data.jpa.repository.JpaRepository;
 
 import java.util.List;
 
-public interface CourseProjectRepository extends JpaRepository<CourseProject, Long> {
+public interface CourseProjectRepository extends JpaRepository<CourseProject, Integer> {
 }

+ 4 - 1
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/service/ProjectService.java

@@ -1,12 +1,15 @@
 package cn.seecoder.seecoderportalserver.service;
 
+import cn.seecoder.seecoderportalcommon.vo.CourseVO;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 
+import java.util.HashMap;
+
 public interface ProjectService {
     JSONArray findAllProjects();
 
-    JSONObject findCourseProjects();
+    HashMap<String, JSONArray> findCourseProjects();
 
     JSONArray findNonCourseProjects();
 

+ 31 - 7
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/serviceImpl/ProjectServiceImpl.java

@@ -1,5 +1,8 @@
 package cn.seecoder.seecoderportalserver.serviceImpl;
 
+import cn.seecoder.seecoderportalcommon.vo.CourseVO;
+import cn.seecoder.seecoderportalserver.domain.CourseProject;
+import cn.seecoder.seecoderportalserver.mapper.CourseMapper;
 import cn.seecoder.seecoderportalserver.repository.CourseProjectRepository;
 import cn.seecoder.seecoderportalserver.service.ProjectService;
 import cn.seecoder.seecoderportalserver.service.subsystem.DevcloudService;
@@ -8,14 +11,18 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import org.springframework.stereotype.Service;
 
+import java.util.HashMap;
+
 @Service
 public class ProjectServiceImpl implements ProjectService {
     private final DevcloudService devcloudService;
     private final CourseProjectRepository courseProjectRepository;
+    private final CourseMapper courseMapper;
 
-    public ProjectServiceImpl(DevcloudService devcloudService, CourseProjectRepository courseProjectRepository) {
+    public ProjectServiceImpl(DevcloudService devcloudService, CourseProjectRepository courseProjectRepository, CourseMapper courseMapper) {
         this.devcloudService = devcloudService;
         this.courseProjectRepository = courseProjectRepository;
+        this.courseMapper = courseMapper;
     }
 
     @Override
@@ -29,18 +36,35 @@ public class ProjectServiceImpl implements ProjectService {
     }
 
     @Override
-    public JSONObject findCourseProjects() {
+    public HashMap<String, JSONArray> findCourseProjects() {
         JSONArray projectArray = findAllProjects();
-        JSONArray courseProjects = new JSONArray();
-        for (Object project : projectArray) {
-
+        HashMap<String, JSONArray> courseProjectsMap = new HashMap<>();
+        for (Object o : projectArray) {
+            JSONObject project = (JSONObject) o;
+            CourseProject courseProject = courseProjectRepository.findById((project.getInteger("id"))).orElse(null);
+            if (courseProject != null) {
+                String courseName = courseProject.getCourse().getName();
+                if(!courseProjectsMap.containsKey(courseName)){
+                    courseProjectsMap.put(courseName, new JSONArray());
+                }
+                courseProjectsMap.get(courseName).add(project);
+            }
         }
-        return null;
+        return courseProjectsMap;
     }
 
     @Override
     public JSONArray findNonCourseProjects() {
-        return null;
+        JSONArray projectArray = findAllProjects();
+        JSONArray nonCourseProjects = new JSONArray();
+        for (Object o : projectArray) {
+            JSONObject project = (JSONObject) o;
+            CourseProject courseProject = courseProjectRepository.findById((project.getInteger("id"))).orElse(null);
+            if (courseProject == null) {
+                nonCourseProjects.add(courseProject.getCourse());
+            }
+        }
+        return nonCourseProjects;
     }
 
     @Override

+ 5 - 2
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/web/rest/ProjectController.java

@@ -1,5 +1,6 @@
 package cn.seecoder.seecoderportalserver.web.rest;
 
+import cn.seecoder.seecoderportalcommon.vo.CourseVO;
 import cn.seecoder.seecoderportalserver.service.ProjectService;
 import cn.seecoder.seecoderportalserver.utility.OkResponse;
 import com.alibaba.fastjson.JSONArray;
@@ -7,6 +8,8 @@ import com.alibaba.fastjson.JSONObject;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.HashMap;
+
 @RestController
 @RequestMapping("/api/project")
 public class ProjectController {
@@ -22,14 +25,14 @@ public class ProjectController {
 
     @ApiOperation(value = "查找用户所有课程Devcloud项目", httpMethod = "GET")
     @GetMapping("/findCourse")
-    public OkResponse<JSONObject> findCourseProjects() {
+    public OkResponse<HashMap<String, JSONArray>> findCourseProjects() {
         return OkResponse.of(projectService.findCourseProjects());
     }
 
     @ApiOperation(value = "查找用户所有非课程Devcloud项目", httpMethod = "GET")
     @GetMapping("/findNonCourse")
     public OkResponse<JSONArray> findNonCourseProjects() {
-        return null;
+        return OkResponse.of(projectService.findNonCourseProjects());
     }
 
     @ApiOperation(value = "根据项目Id查找项目详情", httpMethod = "GET")