Skip to content

ldgeao99/Billy-A-Dream

 
 

Repository files navigation

📌 Billy-A-Dream(개인간 렌탈 거래 플랫폼)


1. 제작 기간 & 참여 인원

  • 22.09.12 ~ 22.09.30 (3주)
  • 팀프로젝트(박찬호, 이대곤, 장정훈, 강전혁)

2. 사용 기술

  • Java
  • Spring, Spring Security
  • Gradle
  • AWS EC2, AWS RDS , Putty, FileZilla
  • Oracle
  • Tomcat
  • HTML, CSS, Javascript, Jsp, Bootstrap, jQuery

3. ERD 설계

DB 테이블 구조

3.1 시퀀스 다이어그램


4. 핵심 기능

이 서비스의 핵심 기능은 개인간 결제 및 채팅입니다.
사용자는 원하는 지역의 상품을 구매할 수 있고, 판매자와 채팅을 통해 원만한 거래를 할 수 있습니다.
또한 여러 카카오API를 통한 이용과 보안서비스를 통해 사용자의 편의 및 신뢰를 추구하였습니다.

핵심 기능 설명 펼치기

4.1. IP확인


  • 접속한 IP를 확인하여 회원가입 당시 등록된 IP와 다를 시 휴대폰 번호 인증을 통한 로그인을 하도록 하였습니다.

4.2. 비밀번호 암호화


  • Spring Security를 활용하여 BCryptPasswordEncoder 라는 암호화를 사용하여 비밀번호를 암호화 저장하였습니다.

4.3. 휴대폰 & 이메일 인증


  • Twilio API 와 Naver Mail API를 활용하여 인증 체계를 구성하였습니다.


4.4. 사용자 편의 지도 검색


  • 카카오맵 API를 통한 사용자 편의 검색 기능 제공을 하였습니다.

4.5. 채팅 기능


  • Json 과 Ajax를 통한 채팅을 제공하여 판매자와 구매자 사이의 편의성과 신뢰성을 주었습니다.

4.6. 카카오 결제 API


  • 카카오 결제 API 를 통한 사용자 편의 시스템을 사용하였습니다.

4.7. 카카오 결제 API


  • 카카오톡 API 를 활용해 상담사와 빠른 상담을 할 수 있는 사용자 편의 시스템을 사용하였습니다.

5. 시연 영상


[ Youtube ]

6. 핵심 트러블 슈팅

6.1. literal does not match format string [데이터 타입이 맞지 않다는 의미]

  • 모든 프로젝트를 마무리하고 로컬에서의 테스트를 문제없이 진행하고 AWS에 배포를 하여 테스트를 하는데
    배포할 때만 발생하는 문제를 발견하게 됐습니다.

  • AWS의 EC2의 Unbuntu Lang은 UTF-8 형식을 사용하여 프로젝트에서 사용하는 ko_KR 형식과 달라 날짜 형식을 읽지 못하여 발생하는 문제였습니다.

  • 이를 해결하기 위해 EC2에 맞는 형식으로 프로젝트의 sql문을 수정하였습니다.

기존 코드
 <select id="GetAllReservationOnlyDates" resultType="reservation.model.ReservationBean">
		select start_date,end_date
		from reservation 
		where product_no = #{pno}
 </select>
  
  <br>
  <insert id="InsertReservation">
	insert into reservation values(reservation_seq.nextval,#{product_no},#{buyer_no},#{start_date},#{end_date},0,sysdate,'1',#{amount},null)
  </insert>
개선된 코드
  <select id="GetAllReservationOnlyDates" resultType="reservation.model.ReservationBean">
		select TO_CHAR(start_date, 'YYYY-MM-DD') as start_date, TO_CHAR(end_date, 'YYYY-MM-DD') as end_date
		from reservation 
		where product_no = #{pno}
  </select>

  <insert id="InsertReservation">
	insert into reservation values(reservation_seq.nextval,#{product_no},#{buyer_no},to_date(#{start_date},'YY-MM-DD'),to_date(#{end_date},'YY-MM-DD'),0,sysdate,'1',#{amount},null)
  </insert>

7. 그 외 트러블 슈팅

git push/pull 시 한글 깨짐
  • Spring 설정에 UTF-8 설정이 안되어 있어서 한글이 깨지는 현상
  • [ 해결 방법 ]
AWS 재배포 시 이미지 삭제 문제
  • 이미 업로드한 이미지들이 배포를 다시 하게 되면은 사라지는 현상이 발생
  • [ 해결 방법 ]
MyBatis sql 부등호 인식 문제
  • XML 파일에 sql 문을 작성하게 되는데 < 부등호를 TAG로 인식하기 때문에
    "The content of elements must consist of well-formed character data or markup." 라는 에러가 발생
  • [ 해결 방법 ]
Controller에서 RequestParam 사용시 주의할 점
  • Controller에서 RequestParam을 사용하여 변수를 받을 때 받아오는 변수가 존재하지 않으면 에러 발생

  • 받아오는 변수가 없을 때도 Controller가 작동되게 해야하기 때문에 아래와 같은 코드를 입력해주면 됩니다.

	required = false  
Redirect 에 변수를 보낼 시 한글 깨짐 현상
  • Controller에서 다음 Controller로 변수를 담아 Redirect 를 하게 되면 한글이 깨지는 현상 발생

  • UTF-8 형식으로 Encoder 한 다음에 보내주면 됩니다.

	keyword = URLEncoder.encode(keyword, "UTF-8"); 

8. 회고 / 느낀점

프로젝트 개발 회고 :

  • 로컬에서는 잘 실행되던게 배포하려고 우분투 환경에 올려 실행하니 문제가 생겨 마지막날 분주하게 움직였던 기억이 있습니다. 다음번엔 마지막 테스트를 위한 일정을 조금 더 널널히 잡아야 하겠습니다.
  • 팀 프로젝트를 진행하면서 모든 이가 하나라도 더 얻어갈 수 있도록 서로 돕고 지원하였습니다.
  • 또한 팀프로젝트가 원할하게 진행될 수 있었던건 활기찬 분위기와 서로간의 의사소통이 중요하다고 생각합니다.

About

(Spring, 팀프로젝트) "개인간 렌탈 거래 플랫폼" AWS EC2, AWS RDS Oracle, Java, Spring, Jsp, Tomcat, Html, Css, Javascript, jQuery

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Java 63.8%
  • CSS 32.6%
  • JavaScript 3.5%
  • PHP 0.1%