[Project] NNgame - 게임 판매 사이트

MandarinePunch·2022년 7월 4일
0

팀 프로젝트

목록 보기
1/1
post-thumbnail

그동안 프로젝트 때문에 정신이 없어서 블로그에 소홀했지만,
프로젝트가 끝났기에! 그 기록을 남겨두려 한다.


✍ 만들게된 계기

국비지원 학원 첫 팀 프로젝트..!이다 ㅎㅎ.
어떤 것을 만들어볼까? 하다 여러 의견이 나왔었다.

조원1 - 공기업 페이지 => 중요 정보를 잘 간추렸으면 좋겠다
조원2 - 커스텀 검색 페이지 => 구글의 장점(방대한 정보량)과 네이버의 장점(블로그)을 취합
조원3 - 박물관 전시 예약사이트 => 입장권을 사고팔 수 있음
조원4 - 국비지원 학원 홈페이지를 업그레이드
조원5 - 로켓펀치 같은 it관련 취업페이지
조원6 - 정보 전달 커뮤니티
조장 겸 본인 - 게임 판매 사이트 (당첨!) => 타 사이트들의 불편한 접근성을 보완

각자 왜 이런 페이지를 만들고 싶었는지에 대한 어필 시간을 가진 후, 최종적으로 나의 의견이 채택됐다. (코로나 가불기와 게임에 대한 애정이 느껴져서였을까..? ㅋㅋ)


📆 프로젝트 기간


🔨 개발 도구 및 환경

Front - HTML, CSS, JS, jQuery, JSP(Model2)
Back - Java(1.8v)
DB - ORACLE 11g
Server - Apache Tomcat(8.5v)
IDE - eclipse
DB 관리 툴 - DBeaver
프레임워크 - MyBatis(DB), Bootstrap(CSS)
형상 관리 - Github


📝 User Flow & ERD

- 비로그인시 User Flow

- 로그인시 User Flow

- ERD


🎈 주요 기능 소개

- 메인 화면

  • 슬라이더를 이용해 메인 게임을 보여줬으며, 할인, 인기, 추천 게임으로 이동이 가능하다.

- 회원 가입

  • JS로 값에 대한 validation check를 해줬다.
  • DB에 이미 존재하는 유저일 경우, 중복 가입이 불가하고 그렇지 않을 경우는 정상적으로 회원 가입이 된다.
  • DB에 저장되는 모든 비밀번호는 SHA-256 해시 알고리즘과 임의의 데이터(salt) 를 추가하여, 암호화해 넣어줬다.

DB에 저장된 유저 정보

- 로그인

  • 카카오 및 네이버 연동 로그인을 구현했다.
  • 유저가 로그인에 성공하면 session에 유저 정보를 넣어 로그인 상태를 유지했다.

- 비밀번호 찾기

  • DB를 순회하여 해당 유저의 정보가 존재하면, 비밀번호를 임의의 난수로 바꾸고,
    바꾼 비밀번호를 네이버 SMTP를 이용해 메일로 보내줬다.

- 마이 페이지(연동 로그인)

  • kakaonaver일 때를 구분해줬으며, 닉네임은 언제든지 수정 가능하다.
  • 단, 연동 로그인은 원클릭 로그인이므로 비밀번호가 따로 필요하지 않아, 비밀번호를 수정할 수 없게 구현했다.

- 마이 페이지(일반 로그인)

  • 연동 로그인과 달리 비밀번호를 변경할 수 있다.

- 회원 탈퇴

  • 현재 로그인된 유저의 비밀번호를 한 번 더 입력하면 탈퇴할 수 있게 구현했다.
  • 연동 로그인시는 연동 로그인할 때의 고정 비밀번호를 부여해줬으며, 회원탈퇴를 누르면 정상적으로 탈퇴된다.

- 스토어

  • 장르 별로 분류가 가능하다.
  • 원하는 정렬 순서(사전순, 할인 게임, 가격(오름차순, 내림차순))로 정렬도 가능하다

- 스토어(검색)

  • like문법을 써서 DB에서 해당 키워드를 불러왔다.
  • 검색한 게임 내에서도 원하는 정렬 순서 선택이 가능하다.

- 게임 상세(리뷰 작성 및 삭제)

  • 접속한 아이디로 리뷰 작성이 가능하다.
  • 또한, 본인이 작성한 글일 경우에만 삭제가 가능하게 구현했다.

- 장바구니

장바구니 게임 추가

장바구니 게임 중복 체크

  • 로그인시에만 접근 가능하다.
  • 원하는 게임을 개수 제한 없이 담을 수 있고, 담은 게임을 삭제할 수도 있다.
  • DB를 체크하여 이미 담겨 있는 게임일 경우, 다시 담지 못하게 구현했다.

- 결제 관리

  • 로그인시에만 접근 가능하다.
  • 2가지 방법(바로 구매, 장바구니)으로 들어올 수 있다.
  • 바로 구매시 해당 게임이 라이브러리로 들어간다.
  • 장바구니에서 구매시 장바구니에 있는 게임 개수만큼 라이브러리에 들어가며, 장바구니는 비워진다.

- 라이브러리

  • 로그인시에만 활성화되고 결제가 정상적으로 완료된 게임이 담겨있다.
  • 스토어와 마찬가지로 라이브러리 내에서도 검색 기능을 구현하여, 원하는 게임을 키워드로 찾을 수 있다.

  • 위는 라이브러리에 이미 존재하는 게임일 경우의 값 체크이다.

- 장바구니 -> 결제 -> 라이브러리

  • 위에서 설명한 게임 구매의 흐름이다.

- 고객 지원(페이징)

  • 문의형 게시판이다.
  • 한 페이지에 10개의 글을 보여주고 한 화면에 5개의 페이지만 보이게 제한했다.
  • 다음 버튼을 누르면 다음 페이지의 첫 번째 넘버(1~5p -> 6p)
  • 이전 버튼을 누르면 이전 페이지의 마지막 넘버로 오게 구현했다.(5p <- 6~10p)

- 고객 지원(로그인 여부 & 글 상세)

  • 로그인시에 글 작성이 가능하다.
  • 본인 글이 아닐 때는 글 수정 및 삭제가 불가하다.

- 고객 지원(글 작성 & 글 수정)

글 작성

  • 문의, 제목, 내용 중 한 곳이라도 공란일 경우 작성할 수 없게 구현했다.

글 수정 & 삭제

닉네임 업데이트

  • 유저가 닉네임을 변경하면 그에 맞춰 고객지원의 작성자도 update문을 날려 닉네임이 바뀌게 구현해줬다.

😭 후기

어찌어찌 끝이 났다!

학원에서 JSP와 웹에 대해 들어가지 않은 채 프로젝트를 줘서…. 처음에는 정말 막막했다. (심지어 조장..!)
그래도 하고자 하는 의지가 컸기에, 처음에 느꼈던 막막함은 금세 사라지고 어느새 '조원들과 얼른 구현하고 싶다' 라는 마음만 남아 들떴었다.

그리고 첫 회의..!

조원들과 매일 회의를 하자는 규칙을 정하고, 회의 끝에는 다음 회의 목표를 정하면서 마무리했다.
이런 방식 덕분에 매 회의 때마다 도돌이표 되는 내용이 없었고 항상 한 걸음 더 나아갔다.

열심히는 하지만 이해를 잘 못 하는 조원들도 있었는데,
그 조원들에 있어서는 마감 기한 전까지 최대한 이해시키며 홀로 구현할 수 있게 도와줬고
기한이 임박했지만 완벽하게 구현이 안된 영역은 내가 따로 구현한 뒤,
해당 파트를 맡은 조원이 가능한 시간대에 구현한 파트별로 세세히 설명해줬다.

조원들에게 설명을 해주면서 나도 배우는 점이 많았고, 서로 발전해 나간다는 게 너무 좋았다.

이렇듯 다들 열심히 해준 덕분에, 정말 만족스럽게 프로젝트를 끝낼 수 있었다.

한 프로젝트의 조장이 처음이라 많이 부족했지만 그럼에도 잘 따라와준 조원분들에게 정말 정말 감사한 마음뿐이다.

Github - NNgame 프로젝트

profile
개발을 좋아하는 귤나라 사람입니다.

0개의 댓글