Git Product home page Git Product logo

miracle-library's Introduction

miracle-library

나의 개발 놀이터 중 하나입니다. 감각 유지를 위해서 주기적으로 연습하는 공간이에요.

miracle-library's People

Contributors

kenux196 avatar skyun-a2tec avatar

Watchers

James Cloos avatar  avatar

miracle-library's Issues

도서 등록 수정 기능 구현

도서 등록. 수정.

  • 새로이 등록되는 도서는, 제목, 작가, ISBN, 출간일, 카테고리를 입력한다.
  • 새로이 등록되는 도서는 상태가 자동으로 보유 상태가 된다.
  • 등록된 도서는 내용 수정이 가능하다.
    • 제목, 작가, ISBN, 소개 글, 표지 이미지, 카테고리, 출간일, 상태
  • 등록된 도서는 파기 및 유실 상태를 가질 수 있다.
  • 도서 삭제 기능은 필요 없다. 모든 도서는 등록 이후에는 상태로 관리한다.

도서 대여 연체 기록 처리 로직 개발

회원 연체 기록 처리

회원이 대여한 도서가 반납 기간이 지나면, 연체 기록이 등록되어야 한다.

  • 연체 기록은 다음의 정보를 포함한다.
    • 회원 정보
    • 대여 정보
    • 연체 발생일
    • 최종 반납일
    • 최종 상태 : 연체 중, 반납 완료
  • 반납 일자가 지나면 회원은 연체 기록이 발생한다.
  • 최종 반납일 이후 30일간 대출 불가능하다.
  • 연체 기록을 통해 회원의 대출 가능 여부를 판단한다.
    • 연체 발생 일이 있고, 한 달이 지났는가?
    • 최종 반납일 이후 30일이 지났는가?
    • [ ]

도서 대여 정책 비즈니스 로직 개발

도서 대여 정책

회원의 도서 대출은 아래와 같은 요구 사항으로 처리한다.

  • 대여 정보는 아래와 같은 속성을 가진다.
    • 멤버 정보
    • 책 정보
    • 도서 대여 시작일
    • 도서 대여 종료일
    • 최종 반납일
    • 대출 번호 : MLBR-memberId-날짜.(millisecond) 조합
    • 대여 상태 : 대여, 반납, 분실
  • 여러 권의 책을 동시에 대여하면, 하나의 대출 번호로 묶는다.
  • 도서 대여 기간은 15일이다.
  • 대여 가능한 책 수 5권이다.
  • 연체 기록이 있으면, 1달 간 대여 불가능하다.
  • 매일 1회 정해진 시간(09시)에 반납 예정일이 지난 회원에게
    • 연체 사실을 알림을 보낸다. (이메일 혹은 문자 정해지지 않음)
    • 회원의 연체 기록을 남긴다.
  • 매일 1회 정해진 시간(17시)에 반납 예정일 하루 전인 도서를 대여한 회원에게
    • 문자로 알림을 준다.

사용자 비밀번호 관리 기능 개발

회원 비밀번호

  • 회원의 비밀번호는 아래의 속성으로 관리한다.
    • 회원 정보
    • 비밀 번호
    • 최근 변경일
    • 비밀번호 틀린 횟수
    • 잠긴 계정 풀기 코드 값
  • 비밀 번호 변경이 90일이 지난 회원은 비밀 번호 변경을 권고한다.

ModelMapper 적용

오브젝트간의 변환을 하기 위한 라이브러리 적용

  • ModelMapper
  • MapStruct -> 리플렉션 안 써서 빠르다는 이점은 있는데, 사용법에 대한 런닝 커브가 좀 있다.

따라서, ModelMapper 적용해 보자.

도서 대여 신청 바구니 도메인 개발

도서 대여 신청 바구니

  • 도서 대여 신청 바구니는 책 리스트에서 대여 신청을 누르면 생성된다. (장바구니 개념)
  • 도서 대여 신청 목록에서 대여하기 선택하면, 대여가 실행된다.
  • 대여가 실행되면 바구니는 비워 진다.

사용자 로그인 기능 처리

사용자 로그인

  • 사용자는 이메일과 비밀번호를 입력하여 로그인한다.
  • 비밀번호가 5회 틀린 경우, 계정을 잠근다.
    • 계정이 잠기는 경우, 특정 코드 값이 생긴다.
  • 잠긴 계정을 풀기 위해서는 아래와 같은 과정을 거친다.
    • 잠긴 계정 풀기 요청
    • 전화번호로 특정 코드 값 발급.
    • 코드 값과 함께 비밀번호 초기화 및 재설정

공지사항 기능 개발

공지사항

  • 관리자 혹은 매니저에 의해서 글을 작성한다.
  • 메인 화면의 공지 사항은 최근 한 달 내의 게시물이 보여진다.
  • 메인 화면에서 공지 사항을 선택하면 상세 보기로 전환된다.
  • 메인 화면의 공지 사항에서 전체 보기를 하면 공지 사항 게시판으로 이동한다.

사용자 기능 역할 및 권한 기능 개발

사용자

  • 시스템 사용자는 관리자, 매니저, 일반 회원으로 구분한다.
  • 관리자는 모든 권한을 가진다.
  • 매니저는 도서 관리, 대여 관리, 공지 사항, 문의 사항, 연체 관리를 담당한다.
  • 일반 회원은 도서 검색, 도서 대여, 자신의 정보 관리, 문의 사항을 사용할 수 있다.

관리자 및 매니저 기능 개발

관리자 & 매니저

  • 매니저는 관리자에 의해 추가된다.
  • 매니저 추가는 이메일, 이름, 전화번호, 초기 비밀 번호를 통해 추가한다.
  • 매니저는 최초 접속 시, 초기 비밀 번호를 꼭 수정해야 한다.
  • 관리자와 매니저는 회원의 연체 정보를 조회한다.
    • 연체 회원 조회
  • 관리자와 매니저는 회원 정보를 조회할 수 있다.
    • 조회 항목은 대여 정보, 연체 정보, 회원 이름, 회원 이메일, 회원 등급이다.
  • 관리자와 매니저는 책을 등록, 수정, 파기, 조회, 상태 변경을 한다.

관리자 기능 정의 및 구현

관리자

역할

  • 관리자는 도서관 사서이다.
  • 관리자는 책을 추가할 수 있다.
  • 관리자는 회윈들의 대출 정보를 조회할 수 있다.
  • 관리자는 연체된 대출 정보를 조회할 수 있다.

구현할 사항

  • 관리자 전용 API
    • 책 등록 : /librarian/book/register
    • 연체 정보 조회 : /librarian/overdue
    • 회원 대출 정보 조회 : /rent/user_id
  • 관리자

회원의 도서 대여 과정 처리

  • 회원은 제목, 작가로 책을 검색한다.
  • 회원은 대출할 책을 선택해서 대출 목록에 담는다. => 화면 상에서 이루어지는 동작
  • 이 때, 대출 불가능한 책은 목록에 담을 수 없어야 한다. => 화면 상에서 처리
  • 회원이 대출 목록을 전달하여 대출 신청을 한다.
  • 회원이 신청한 목록의 책이 대출 가능한지 확인한다.
  • 대출 가능한 책은 대출 날짜를 넣어서 대출 기록 저장소에 저장한다.
  • 대출 신청 처리 결과를 회원에게 알려준다. (대출 시작일, 종료일 등 정보 전달)
  • 회원은 자신의 대출 정보를 확인할 수 있다.

도서 검색 기능 개발

도서 조회

  • 책 제목 혹은 작가 이름으로 검색한다. (관리자, 매니저, 회원)
    • 제목 혹은 작가 이름의 일부만 포함해도 검색이 가능해야 한다.
  • 책의 상태를 통한 검색을 할 수 있다.
  • 책의 ISBN 값을 통한 검색을 한다. (관리자, 매니저, 회원)
  • 책의 카테고리 별로 검색이 가능하다.(관리자, 매니저, 회원)
  • #30

회원 문의 사항 기능 개발

문의 사항

  • 회원은 문의 사항 게시판을 통해서 문의를 남길 수 있다.
  • 문의 사항 게시판은 문의 번호, 제목, 날짜를 보여 준다.
  • 게시판에 보여지는 글 수는 10개, 20개, 30개 중 선택할 수 있다.
  • 게시판은 페이징이 되어야 한다.
  • 문의 사항 글은 상세 보기를 해서 내용을 확인할 수 있다.
  • 문의 사항은 댓글 기능을 가진다.
  • 문의에 대한 댓글은 최초 작성 회원, 다른 회원, 관리자가 달 수 있다.
  • 문의 글은 비공개로 할 수 있다.
  • 비공개 문의 글은 관리자, 매니저만 확인하고 댓글을 달 수 있다.

일반 회원 정보 도메인 개발

일반 회원 정보

  • 회원은 아래와 같은 속성을 가진다.
    • 이름 - 실명 혹은 별명 가능 (필수)
    • 이메일 - 로그인 및 알림에 사용된다. (필수)
    • 전화번호 - 문자 알림에 사용된다. (필수)
    • 비밀번호 - (필수)
    • 주소 - 필수 입력 사항 아님.
    • 회원 가입일
    • 회원 정보 수정일
    • #31
    • 회원 상태 - DORMANCY(휴면), NORMAL

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.