Skip to content

Commit 8f26180

Browse files
authored
Merge pull request #9 from enjoy-hack/jiwoo
feat: ---
2 parents de703eb + 528d969 commit 8f26180

File tree

11 files changed

+127
-46
lines changed

11 files changed

+127
-46
lines changed
Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11
package com.example.enjoy.controller;
22

3-
4-
import ch.qos.logback.core.model.Model;
53
import com.example.enjoy.dto.TrackProgressDto;
64
import com.example.enjoy.service.TrackService;
75
import lombok.RequiredArgsConstructor;
8-
import org.springframework.stereotype.Controller;
96
import org.springframework.web.bind.annotation.GetMapping;
107
import org.springframework.web.bind.annotation.RestController;
118

@@ -18,17 +15,10 @@ public class HomeController {
1815
private final TrackService trackService;
1916

2017
@GetMapping("/home")
21-
public String showMyProgress(Model model) { // 1. Model 객체를 파라미터로 추가
22-
// TODO: 추후 Spring Security 등과 연동하여 실제 로그인한 사용자 ID를 가져와야 함
23-
Long currentStudentId = 1L; // 2. 테스트용 임시 학생 ID 사용
24-
25-
// 3. 학생의 이수 현황을 계산하는 새로운 서비스 메서드 호출
26-
List<TrackProgressDto> progressData = trackService.calculateTrackProgress(currentStudentId);
27-
28-
// 4. 조회된 데이터를 "progressData"라는 이름으로 모델에 추가
29-
//model.addAttribute("progressData", progressData);
30-
31-
// 5. 데이터를 표시할 뷰(html)의 이름을 반환
32-
return "home";
18+
public List<TrackProgressDto> getProgress() {
19+
// 1. 반환 타입을 List<TrackProgressDto>로 변경
20+
Long currentStudentId = 1L;
21+
// 2. 서비스 호출 후 데이터를 바로 반환
22+
return trackService.calculateTrackProgress(currentStudentId);
3323
}
3424
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,32 @@
11
package com.example.enjoy.controller;
22

3+
import com.example.enjoy.dto.TrackDetailDto;
4+
import com.example.enjoy.service.TrackService;
5+
import lombok.RequiredArgsConstructor;
6+
import org.springframework.web.bind.annotation.GetMapping;
7+
import org.springframework.web.bind.annotation.PathVariable;
8+
import org.springframework.web.bind.annotation.RequestMapping;
9+
import org.springframework.web.bind.annotation.RestController;
10+
11+
@RestController
12+
@RequiredArgsConstructor
13+
@RequestMapping("/api/tracks")
314
public class TrackController {
15+
16+
private final TrackService trackService;
17+
18+
/**
19+
* 특정 트랙의 상세 정보를 조회하는 API
20+
* @param trackId 조회할 트랙의 ID
21+
* @return TrackDetailDto - 트랙의 상세 정보
22+
*/
23+
@GetMapping("/{trackId}")
24+
public TrackDetailDto getTrackDetailsById(@PathVariable Long trackId) {
25+
26+
// TODO: 추후 Spring Security 연동 후 실제 로그인한 학생 ID를 가져와야 함
27+
Long currentStudentId = 1L;
28+
29+
// 5. 서비스의 메서드를 호출하여 결과를 받아온 후, 그대로 반환
30+
return trackService.getTrackDetails(currentStudentId, trackId);
31+
}
432
}

src/main/java/com/example/enjoy/dto/CourseStatusDto.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
package com.example.enjoy.dto;
22

3+
import lombok.Data;
34
import lombok.Getter;
45
import lombok.Setter;
56

67
/**
78
* 과목 정보 DTO
89
* (title, year, semester, code, status)
910
*/
10-
@Getter
11-
@Setter
11+
12+
@Data
1213
public class CourseStatusDto {
1314

1415
private String title; // 과목명 (기존 courseName)
Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,19 @@
11
package com.example.enjoy.dto;
22

3+
import lombok.Data;
34
import lombok.Getter;
45
import lombok.Setter;
56
import java.util.List;
67

78
/**
89
* 상세 UI 화면의 트랙 탭 하나의 전체 정보를 담는 DTO
9-
* 새로 정의된 CourseStatusDto를 사용
1010
*/
11-
@Getter
12-
@Setter
13-
public class TrackDetailDto {
14-
15-
private String trackName; // 트랙 이름
16-
private int completedCount; // 이수한 과목 수
17-
private int requiredCount = 6; // 이수 필요 과목 수
1811

19-
// 리스트의 타입이 새로운 CourseStatusDto로 변경
20-
private List<CourseStatusDto> courses;
12+
@Data // 또는 @Getter, @Setter 등
13+
public class TrackDetailDto {
14+
private Long trackId;
15+
private String trackName;
16+
private String department;
17+
private String description; // 트랙에 대한 설명 추가
18+
private List<CourseStatusDto> courses; // 트랙에 포함된 과목 목록
2119
}

src/main/java/com/example/enjoy/entity/StudentCourse.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
@Entity
1010
@Getter
11-
public class StudentCourse {
11+
public class StudentCourse { // 학생이 실제로 이수한 과목
1212
@Id
1313
@GeneratedValue(strategy = GenerationType.IDENTITY)
1414
private Long id;

src/main/java/com/example/enjoy/entity/TrackCourse.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
package com.example.enjoy.entity;
22

33
import jakarta.persistence.*;
4+
import lombok.Data;
45
import lombok.Getter;
56

67
@Entity
7-
@Getter
8+
@Data
89
public class TrackCourse {
910
@Id
1011
@GeneratedValue(strategy = GenerationType.IDENTITY)

src/main/java/com/example/enjoy/repository/ScheduledCourseRepository.java

Lines changed: 0 additions & 4 deletions
This file was deleted.

src/main/java/com/example/enjoy/repository/TrackCourseRepository.java

Lines changed: 0 additions & 7 deletions
This file was deleted.

src/main/java/com/example/enjoy/repository/TrackRepository.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,21 @@
33
import com.example.enjoy.entity.Track;
44
import org.springframework.data.jpa.repository.JpaRepository;
55
import org.springframework.data.jpa.repository.Query;
6+
import org.springframework.data.repository.query.Param;
7+
68
import java.util.List;
9+
import java.util.Optional;
710

811
public interface TrackRepository extends JpaRepository<Track, Long> {
912

1013
@Query("SELECT DISTINCT t FROM Track t LEFT JOIN FETCH t.courses")
1114
List<Track> findAllWithCourses();
15+
16+
/**
17+
* 특정 ID의 트랙을 과목 정보와 함께 조회합니다 (N+1 문제 해결).
18+
* @param trackId 트랙 ID
19+
* @return 트랙 정보 (Optional)
20+
*/
21+
@Query("SELECT t FROM Track t JOIN FETCH t.courses WHERE t.id = :trackId")
22+
Optional<Track> findByIdWithCourses(@Param("trackId") Long trackId);
1223
}

src/main/java/com/example/enjoy/repository/UserRepository.java

Lines changed: 0 additions & 4 deletions
This file was deleted.

0 commit comments

Comments
 (0)