Giter Site home page Giter Site logo

billy-a-dream's Introduction

📌 Billy-A-Dream

개인간 렌탈 거래 플랫폼

프로젝트 자료


1. 제작 기간 & 참여 인원

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

2. 사용 기술

  • Java 11
  • Spring, Spring Security
  • Gradle
  • AWS EC2, AWS RDS , Putty, FileZilla
  • Oracle
  • Jsp
  • Tomcat
  • Html, Css, Javascript, 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 설정이 안되어 있어서 한글이 깨지는 현상
  • [ 해결 방법 ]
Github 사용 시 문제
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. 회고 / 느낀점

프로젝트 개발 회고 :

  • 이 프로젝트를 진행하면서 배포를 하게 됐었는데 배포를 마지막 구현을 다 한 뒤에 하루를 남긴 상태에서 진행하게 되느라 급하게 진행되어 여러 방법을 사용하지 못했던 게 아쉽습니다.
  • Spring 버전이 낮아 WebSoket을 활용한 채팅을 활용하지 못한 점이 아쉬워 다음 프로젝트에서는 WebSoket 을 활용하여 채팅을 진행하게 되었습니다.
  • 구현 전에 모든 방법과 상황을 파악하고 할 수 있는 기능, 기술 등을 계획을 정확하게 짠 후 진행하는 것이 프로젝트 진행하기에 문제가 없을 것 같다고 깨달았습니다.

  • 팀 프로젝트를 진행하면서 모든 이가 하나라도 더 얻어갈 수 있도록 서로 돕고 지원하였습니다.
  • 또한 팀프로젝트가 원할하게 진행될 수 있었던건 활기찬 분위기와 서로간의 의사소통이 중요하다고 생각합니다.

billy-a-dream's People

Contributors

chanhopark-s avatar ldgeao99 avatar postface avatar

Stargazers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.