정리노트/팀프로젝트

[팀 프로젝트] 24.02.28. 노트

망고고래 2024. 2. 28. 17:59

앞으로 할 일

1. 지도 API 사용해서 여행코스 만들기

- 코스간 이동 거리

- 필요 비용

- 예상 유류비

- 여행지 비용 발생시 계산해서 총액

 

네이버 길찾기 API

driving (ncloud-docs.com)

 

driving

 

api.ncloud-docs.com

 

2. 고속도로 휴게소 표시

 

 

오늘 할일

여행코스 만들기

- 1단계: 상세정보 없이 코스 목록 제작

- 2단계: 상세정보 삽입


- 1단계: 지도 없이 상세정보에서 코스 작성

- 2단계: 지도에서 마커 클릭해서 코스 작성

- 3단계: 상세정보 삽입

 

 

댕댕여지도에 없는 기능

- 숙소/관광지/편의시설 상세페이지에서 여행코스에 등록

- 여행코스 거리, 유류비 등 상세정보

- 여행코스 수정

 

 

코스 목록: 로그인 필요

숙소/여행지 목록의 상세정보에서 코스에 추가하기를 넣을 수 있으면 좋겠다

→1일차/2일차 이런 식으로 하면 어디에 넣을지 정할 수 있어야 함

코스 만들기 코너에서는 지도에 카테고리별로 마크가 뜨고 거기서 상세정보로 이동하거나 코스에 추가할 수 있음

 

댕댕여지도: 3일차까지만 만들 수 있음

국내여행이라면 1박2일이나 2박3일이 많을 테니까 3일차까지만 할 수 있으면 될 것 같다.

 

 

여행 코스 목록에 여행 코스를 여러 개 만들어서 관리할 수 있다.(10개까지?)

ArrayList<Course> myCourses 여행 코스 목록

ArrayList<Schedule> myCourse 여행 코스(스케줄 목록)

Schedule: 이름, 사진, 소개, 링크

→이름, 사진, 소개, 카테고리, contentSeq

이미 있는 도메인이랑 카테고리 빼고 겹치니까 도메인을 따로 만들 필요는 없겠다

아닌가 숙소 관광지 편의시설을 다 한꺼번에 관리해야 되니까 통합 도메인이 새로 필요한가

카테고리 구별: API에서 카테고리별 contentSeq 배열 가져와서 검사

 

 

상세정보의 스케줄 추가 버튼

- 클릭했을 때 코스에 추가하는 코드 실행

- 실행 후 원래 있던 페이지로 돌아가야 함(카테고리, contentSeq 필요)

→카테고리가 파라미터로 주어지면 카테고리별로 컨트롤러를 따로 작성하지 않아도 됨

→Course 컨트롤러를 하나 만들자

→코스 스케줄 순서 조정도 가능해야 함

href="<c:url value="/course/add?category=spot&contentSeq=${spot.contentSeq}" />"

 

스케줄 추가 컨트롤러

- DB에 코스 있는지 확인해서 없으면 새로 만들기, 있으면 있는 코스 목록과 새로 만들기 중에 선택

코스 있으면 ArrayList<Course> myCourses 필요, 코스 없으면 새로 생성 버튼→리턴값이 다름

 

 

 

코스 DB

- 코스 ID(번호?) PK

- 회원 id FK

- 코스 1~10: int(contentSeq 저장)

→코스 정보 조회할 때 JOIN 필요

→숙소/관광지/편의시설 테이블이 다 나눠져있어서 JOIN하기 힘들 것 같은데...

→contentSeq 배열로 검사해서 카테고리 얻고 JOIN 테이블에 카테고리명 넣기?

→코드가 너무 길어지면 통합 테이블을 만들까

 

 

숙소/관광지/편의시설 테이블을 나누냐 마냐가 계속 고민된다

1)테이블 통합

테이블 구성이 같아서 상관없음

전체 데이터가 그렇게 많지 않음

출력시 카테고리별 contentSeq 배열로 검사해서 출력(<c:if>)

리뷰/코스 관리가 편함

 

2)테이블 분리

출력시 나눠진 테이블에서 바로 출력

 

 

버튼 클릭→confirm('여행 코스에 추가할까요?')→div(position: relative)여행 코스 목록/새로 만들기→1일차/2일차/3일차 선택→추가

이후 마이페이지-내 코스 보기에서 수정 가능

그러면 form인가

 

 

지금 course 테이블 구성은 다음과 같다.

create table course(
courseNum int auto_increment primary key,
courseName varchar(10),
mem_id varchar(15),
course1_1  int,
course1_2  int,
course1_3  int,
course1_4  int,
course1_5  int,
course1_6  int,
course1_7  int,
course1_8  int,
course1_9  int,
course1_10  int,
course2_1  int,
course2_2  int,
course2_3  int,
course2_4  int,
course2_5  int,
course2_6  int,
course2_7  int,
course2_8  int,
course2_9  int,
course2_10  int,
course3_1  int,
course3_2  int,
course3_3  int,
course3_4  int,
course3_5  int,
course3_6  int,
course3_7  int,
course3_8  int,
course3_9  int,
course3_10  int
)default charset=utf8;

코스 10개x3일차라서 코스의 contentSeq를 넣는 컬럼만 30개가 됐다.

그런데 이때 새로 넣는 데이터를 10개 중에 어디에 넣을지 일일히 지정하기가 어렵다.

추가뿐만 아니라 삭제했을 때도 알아서 정렬되게 하고 싶다.

컬럼을 varchar로 하고 ArrayList를 String으로 만들어서 컬럼 세 개에 저장할까?

출력할 때 문자열 라이브러리를 사용해서 다듬어야 하니까 라이브러리 다루는 연습도 되겠다.

 

테이블 변경

create table course(
courseNum int auto_increment primary key,
courseName varchar(10),
mem_id varchar(15),
course1 varchar(60),
course2 varchar(60),
course3 varchar(60)
)default charset=utf8;

 

 

데이터베이스의 course1, course2 컬럼에 다음과 같은 배열이 저장돼있다고 할 때

course1 {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

course2 {11, 12, 13, 14, 15, 16, 17, 18, 19, 20}

String으로 받아와서 나눈 후 도메인에 저장

course1_1 course1_2 ... course1_10

course2_1 course2_2 ... course2_10

 

1)중괄호 제거

String course1 = course1.substring(0, course.length());

 

2), 기준으로 나눔

String[] course1Array = course1.split(",");

 

3)도메인 변수에 저장

for(int i = 1; i<=course1Array.length(); i++){
    course1_+i = course1Array[i-1]
}

변수 이름에 'course1_i' 같은 게 될지 모르겠다...

 

 

sql 파일 정리함

 

 

 

지금까지 한 일

- 회원가입

- 회원관리

- 숙소/관광지/편의시설 API 연결

- 뷰 페이지 제작

- 리뷰

 

해야 할 일

- 여행 코스 짜기

- 뷰 정돈

 

 

내일 할일

경로안내 먼저 구현→목적지 배열로 만들어서 목적지간 경로 구하기