11package hackathon .soa .domain .course ;
22
3+ import hackathon .soa .common .apiPayload .code .status .ErrorStatus ;
4+ import hackathon .soa .common .apiPayload .exception .CourseHandler ;
35import hackathon .soa .domain .course .dto .CourseRequestDTO ;
46import hackathon .soa .domain .course .repository .*;
57import hackathon .soa .domain .member .MemberRepository ;
1012import lombok .RequiredArgsConstructor ;
1113import org .springframework .stereotype .Service ;
1214import org .springframework .transaction .annotation .Transactional ;
13-
1415import java .util .List ;
1516
1617@ Service
@@ -26,22 +27,12 @@ public class CourseService {
2627 private final MemberRepository memberRepository ;
2728
2829 @ Transactional
29- public Long createCourse (CourseRequestDTO .CreateCourseRequest request ,Long userId ) {
30+ public Long createCourse (CourseRequestDTO .CreateCourseRequest request , Long userId ) {
3031 Member member = memberRepository .findById (userId )
31- .orElseThrow (() -> new IllegalArgumentException ( "존재하지 않는 회원입니다: " + userId ));
32+ .orElseThrow (() -> new CourseHandler ( ErrorStatus . MEMBER_NOT_FOUND ));
3233
3334 // 1. Course 생성
34- Course course = Course .builder ()
35- .title (request .getTitle ())
36- .region (request .getRegion ())
37- .startTime (request .getStartTime ())
38- .endTime (request .getEndTime ())
39- .interests (request .getInterests ())
40- .specialNote (request .getSpecialNote ())
41- .preferredGender (request .getPreferredGender ())
42- .status (CourseStatus .IN_PROGRESS )
43- .member (member )
44- .build ();
35+ Course course = CourseConverter .toCourseEntity (request , member );
4536 courseRepository .save (course );
4637
4738 // 2. 여행 테마 저장
@@ -51,39 +42,25 @@ public Long createCourse(CourseRequestDTO.CreateCourseRequest request,Long userI
5142 TravelStyle .builder ().name (themeName ).build ()
5243 ));
5344
54- CourseTravelStyle courseTravelStyle = CourseTravelStyle .builder ()
55- .course (course )
56- .travelStyle (travelStyle )
57- .build ();
58-
59- courseTravelStyleRepository .save (courseTravelStyle );
45+ courseTravelStyleRepository .save (
46+ CourseConverter .toCourseTravelStyle (course , travelStyle )
47+ );
6048 }
6149
6250 // 3. Segment 저장
6351 int order = 0 ;
6452 for (CourseRequestDTO .SegmentDTO dto : request .getSegments ()) {
65- CourseSegment segment = CourseSegment .builder ()
66- .course (course )
67- .segmentOrder (order ++)
68- .startTime (dto .getStartTime ())
69- .endTime (dto .getEndTime ())
70- .build ();
53+ CourseSegment segment = CourseConverter .toCourseSegment (course , dto , order ++);
7154 courseSegmentRepository .save (segment );
7255
7356 if (dto .isMoving ()) {
74- MoveSegment move = MoveSegment .builder ()
75- .courseSegment (segment )
76- .movementType (MovementType .valueOf (dto .getMovementType ()))
77- .movementDistanceKm (dto .getMovementDistanceKm ())
78- .build ();
79- moveSegmentRepository .save (move );
57+ moveSegmentRepository .save (
58+ CourseConverter .toMoveSegment (segment , dto .getMovementType (), dto .getMovementDistanceKm ())
59+ );
8060 } else {
81- StaySegment stay = StaySegment .builder ()
82- .courseSegment (segment )
83- .locationName (dto .getLocationName ())
84- .locationAddress (dto .getLocationAddress ())
85- .build ();
86- staySegmentRepository .save (stay );
61+ staySegmentRepository .save (
62+ CourseConverter .toStaySegment (segment , dto .getLocationName (), dto .getLocationAddress ())
63+ );
8764 }
8865 }
8966
0 commit comments