Code Monkey home page Code Monkey logo

quing's Introduction

🔁 Quing

큐잉(Queue+ing)은 음식점 대기순서를 관리 해주는 서비스입니다.

Swagger : http://quing.shop/swagger-ui/index.html

프로젝트 목표

  • SpringBoot에 대해 공부한것들을 응용해보기
  • API Call을 하는것 만으로 동작이 충분히 예상 되도록 개발하기
  • 좋은 코드를 만들기 위해 많은 고민을 함께하기

설계

서비스 구성 다이어그램

image

API Server 구성 다이어그램

component

테이블 구조 다이어그램(ERD)

(설계하면서 작성한 다이어그램) erd

(DB Tool로 생성한 다이어그램) image

기능 정의

주요 기능, 시나리오

손님

  • 로그인 : 별도의 회원가입 없이 전화번호를 통해 유저를 식별한다.
  • 대기 등록 : 손님은 매장에 줄서기를 등록한다.
  • 대기 등록(메뉴) : 손님은 메뉴를 지정하여 줄서기를 등록한다.
  • 대기 현황 : 내 앞에 몇 팀이 남았는지 확인한다.
  • 대기 취소 : 대기 의사가 없어졌을 때 취소를 할 수 있다.
  • 리뷰 기능 : 손님은 매장에 리뷰를 등록/수정/삭제 할 수 있다.

매장

  • 로그인 : 손님과 달리 매장은 id + pw를 통한 인증을 진행한다.
  • 메뉴 기능 : 매장의 메뉴를 추가/삭제 할 수 있다.
  • 대기줄 확인 : 매장의 대기줄의 상태를 확인한다.
  • 손님 입장 : 매장은 대기중인 손님을 입장시킨다. (상태 : 대기→완료)
  • 손님 대기 취소 : 대기열에 있는 손님을 취소한다.
  • 가게 영업시작/영업종료 설정을 할수있다. (영업중이 아닐땐 대기 불가)

줄서기

  • 입장 대기 메시지 발송 : 입장순서가 가까워진 손님에게 입장 준비 메시지를 보낸다.

리뷰

  • 기간별 별점 : 매장의 (전체/한달/1주)간의 별점을 하루 한번 갱신하여 제공한다.

메뉴

  • 매장에 손님들이 주문했던 메뉴별 별점을 제공(전체/한달/1주)

시퀀스 다이어그램

  • 사용자가 매장에 대기 등록 seq1

  • 매장 : 현재 대기열 확인, 순서가 되었을 때 손님 호출 seq2

브랜치, 커밋 규칙

Branch

  • feature-#{issue_number}
  • develop
  • master

Commit Message

  • #{issue_number}-{작업내용}

사용된 기술

  • Java11
  • SpringBoot 2.7.2
  • Spring MVC
  • Spring Security
  • Spring DataJPA
  • Junit5, AssertJ, Mockito
  • Gradle
  • Jenkins

quing's People

Contributors

chanwooo avatar reasonsun avatar

Stargazers

 avatar Park Chanho avatar  avatar roopre avatar TaekJun Kim avatar  avatar MaetDol avatar

Watchers

James Cloos avatar  avatar

quing's Issues

user - userServiceImpl 문제해결

  • 의존성 몇개가 날아간게 있어서(인텔리제이 설정으로 뭔가 자동으로 지워진채로 커밋된듯해요) 이를 해결

Review - reviewService test 작성

Review - reviewService test 작성

작업 내용

[v] create()
[ ] update()
//이전 기록이 deleted가 잘 되는지(안나오는지)
//수정한 내역이 새로 잘 만들어지는지

[ ] hide()
//delete필드가 잘 바뀌는지?

[ ] get()
//review id로 review를 잘 가져오는지..

[ ] find()
//waiting_id로 (deleted 필드가 false인) 가장 최근 review를 가져오는지
//deleted필드를 검사하진 않지만 false여야한다.

[ ] getList()
//상점 id로 deleted 필드가 false인 리뷰 리스트를 가져온다.

도메인 정의하기

  • 사용자

    • Long id
    • enum registed/nonregisted 회원/비회원
    • String username 로그인아이디
    • String password
    • String phoneNumber
    • String name 본명
    • String nickname 별명
    • String email
  • 매장

    • 매장이름
    • 전화번호
    • 영업시간
    • 주소
    • 홈페이지/블로그/인스타.. 링크
    • 별점
    • List<매장사진/음식사진>
    • List 가게메뉴
    • List<리뷰>
  • 메뉴

    • 이름
    • 가격
  • 리뷰

    • 사용자id
    • 가게id
    • 별점
    • 내용
    • 추천수
  • 매장대기줄(방문한 고객의 로그)

    • 고객
    • 매장

스프링 엑추에이터 추가

스프링 엑추에이터 추가

작업내용

[ ] 스프링 엑추에이터 의존성 추가
[ ] 스프링 부트 어드민 설정

ncloud db 구축

  • ncloud에 디비 서버 구성
  • db connect 수정
  • ddl파일 추가

user - userServiceImpl 테스트 수정

user - userServiceImpl 테스트 수정

작업내용

  • #37 에서 StoreManager에 store가 설정되어있어야하게 추가함 이와 관련 테스트가 실패하고있어서 수정함.

readme update

  • 다이어그램 추가
  • 변동된것들 반영
  • api call example 추가

waiting - crud 구현

waiting - crud 구현

작업내용

[ ] QuingServiceImpl 구현파일 생성
[ ] WaitingResponse append(WaitingRequest waitingRequest);
[ ] List getList(long storeId);
[ ] Integer countForward(long waitingId);
[ ] done, cancel

review - reviewRepositorytest 실패

review - reviewRepositorytest 실패

작업내용

  • test findAllByWaitingStoreIdAndDeletedIsFalse 에서
  • reviewRepository.findAllByWaitingStoreIdAndDeletedIsFalse(store.getId())의 결과가 예상한대로 나오지 않음.

CI/CD-jenkins 세팅

jenkins 세팅

작업내용

PR을 올렸을 때 테스트를 돌리고 테스트가 실패하면 PR을 merge 할 수 없도록 구현

cicd - 스크립트 작성

cicd - 스크립트 작성

작업내용

  • start, stop, restart, status 기능 만들기
  • start에 git pull 추가
  • status에 동작상태 ps

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.