정리노트/팀프로젝트

[팀 프로젝트] 24.03.12. 노트

망고고래 2024. 3. 12. 17:58

코스 정보 출력

코스 도메인에는 contentSeq 배열이 있다.

①페이지 이동할 때 컨트롤러에 1일차/2일차/3일차 contentSeq 배열 전달(페이지에서 1일차/2일차/3일차 선택할 때마다 ajax 실행, body onload시 1일차 실행)

- ajax로 컨트롤러 요청하면 그 페이지에 있는 model 사용할 수 있나? ← x

- 일차별로 배열 전달하지 말고 전부 전달하고 다 가져와서 탭 방식으로 보여주는 것만 제한하자

- 여기서 막힘.....배열 값이 전달이 안 된다

- 배열 값을 전달하지 말고 DB에서 새로 가져올까

03.12. 

①페이지 이동할 때 파라미터인 courseNum으로 contentSeq 배열 취득

②Repository에서 contentSeq별 정보, 코스 정보 가져옴

③JSON 객체에 저장, JSON 객체 배열 만들기

④JSON 객체 배열 페이지에 전달

⑤배열에서 정보 꺼내서 출력

 

 

열심히 짠 코드...개선할 점이 있어서 많이 바꿨다.

	public List<List<CourseInfo>> getInterCourseInfo(String courseNum) {
		System.out.println("courseService.getCourseInfo() 도착");
		Course course = courseRepository.getCourseByCourseNum(courseNum);
		List<CourseInfo> course1InfoList = new ArrayList<CourseInfo>();
		List<CourseInfo> course2InfoList = new ArrayList<CourseInfo>();
		List<CourseInfo> course3InfoList = new ArrayList<CourseInfo>();
		List<LatLng> latLngArray1 = new ArrayList<LatLng>();
		List<LatLng> latLngArray2 = new ArrayList<LatLng>();
		List<LatLng> latLngArray3 = new ArrayList<LatLng>();
		
		CourseInfo courseInfo = new CourseInfo();
		LatLng latLng = new LatLng();
		String startLongitude;
		String startLatitude;
		String goalLongitude;
		String goalLatitude;
		
		List<List<CourseInfo>> allCourseInfoLists = new ArrayList<>();
		
		//코스에서 contentSeq로 경도 위도 획득, 배열에 저장
		String[] course1Array = course.getCourse1Array();
		for(int i = 0; i<course1Array.length; i++) {
			latLng = courseRepository.getAddrObjectByContentSeq(course1Array[i]);
			latLngArray1.add(latLng);
		}
		//latLng 안의 위도 경도로 api 연결
		for(int i = 1; i<latLngArray1.size(); i++) {
			startLongitude = latLngArray1.get(i - 1).getLng();
			startLatitude = latLngArray1.get(i - 1).getLat();
			goalLongitude = latLngArray1.get(i).getLng();
			goalLatitude = latLngArray1.get(i).getLat();
			courseInfo = getCourseInfoByLatLng(startLongitude, startLatitude, goalLongitude, goalLatitude);
			course1InfoList.add(courseInfo);	
		}
		
		String[] course2Array = course.getCourse2Array();
		for(int i = 0; i<course2Array.length; i++) {
			latLng = courseRepository.getAddrObjectByContentSeq(course2Array[i]);
			latLngArray2.add(latLng);
		}
		for(int i = 1; i<latLngArray2.size(); i++) {
			startLongitude = latLngArray2.get(i - 1).getLng();
			startLatitude = latLngArray2.get(i - 1).getLat();
			goalLongitude = latLngArray2.get(i).getLng();
			goalLatitude = latLngArray2.get(i).getLat();
			courseInfo = getCourseInfoByLatLng(startLongitude, startLatitude, goalLongitude, goalLatitude);
			course2InfoList.add(courseInfo);
		}
		
		String[] course3Array = course.getCourse2Array();
		for(int i = 0; i<course3Array.length; i++) {
			latLng = courseRepository.getAddrObjectByContentSeq(course3Array[i]);
			latLngArray3.add(latLng);
		}
		for(int i = 1; i<latLngArray3.size(); i++) {
			startLongitude = latLngArray3.get(i - 1).getLng();
			startLatitude = latLngArray3.get(i - 1).getLat();
			goalLongitude = latLngArray3.get(i).getLng();
			goalLatitude = latLngArray3.get(i).getLat();
			courseInfo = getCourseInfoByLatLng(startLongitude, startLatitude, goalLongitude, goalLatitude);
			course3InfoList.add(courseInfo);
		}
		
		allCourseInfoLists.add(course1InfoList);
		allCourseInfoLists.add(course2InfoList);
		allCourseInfoLists.add(course3InfoList);
		return allCourseInfoLists;
	}

 

일차별로 나눠서 호출하도록 바꾸고 기능별로 분리해서 기능 하나는 Repository로 보냈다.

 

 

 

테스트 중에 다음과 같은 오류가 나왔다.

org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0

테스트용으로 댕댕여지도의 코스별 여행에 있는 컨텐츠들을 넣어놨는데 코스 페이지에는 남아있지만 API에서는 컨텐츠가 삭제된 것 같다. 덕분에 2시간동안 헤맸다...

하지만 디버그 기술이 더 좋았더라면 금방 해결했을 것이다. 경험이라고 생각해야겠다.

 

 

코스 상세 페이지에 파라미터로 이동하는데 이러면 남의 코스도 볼 수 있는 거 아닌가...?

window.location.href = "myCourse?courseNum=" + courseNum;

 

 

 

+뷰 조정

+전체 코스 정보 출력: 중간 스케줄을 경유지로 포함, 총 이동 소요 시간 및 이동 거리, 예상 유류비 ✔

+코스 스케줄 클릭하면 해당 상세보기 페이지로 이동✔

 

왜.....

 

내일 할일

1. 뷰 조정↑

2. 코스 만들기