Skip to content

Repository files navigation

기능 요구사항

  • 회원가입
    • 유저의 유니크 키(DB primary key), 유저 아이디/비밀번호, 이름(닉네임)으로 구성합니다.
  • 정산 (settlement)
    • 한 유저당 정산을 여러개 만들 수 있습니다.
    • 유저는 여러 정산에 참가할 수 있습니다.
    • 특정 정산에 참가(join)한 유저들만 정산 내역(=지출)들을 열람할 수 있습니다.
      • ex)
        • 강릉 여행 정산 - 유저1, 유저2 참가
        • 망년회 정산 - 유저1, 유저3 참가
          • 유저2는 망년회 정산을 보지 못하고, 유저3은 강릉 여행 정산 열람이 불가능 합니다.
          • 유저1의 정산 목록 : 강릉 여행 정산, 망년회 정산 두개가 노출
          • 유저2의 정산 목록 : 강릉 여행 정산 노출
          • 유저3의 정산 목록 : 망년회 정산 노출
  • 지출 (expense)
    • 지출에 필요한 것
      • 지출 id
      • 지출 이름
      • 지출한 사람 - 어떤 유저가 지출했는지 매핑 필요
      • 지출 금액
      • 지출 날짜
    • 정산은 여러개의 지출을 가지고 있음. (1:N)
      • ex) 강릉 여행 정산(settlement)은 다음의 지출(expense)을 가지고 있음.
        • 기차표 예매 (지출 이름)
          • 유저 1 (지출한 사람)
          • 80,000 원 (지출 금액)
          • 2023-08-01 (지출 날짜)
        • 숙소 값 (지출 이름)
          • 유저 2 (지출한 사람)
          • 200,000 원 (지출 금액)
          • 2023-08-02 (지출 날짜)
        • 첫날 저녁 (지출 이름)
          • 유저 1 (지출한 사람)
          • 50,000 원 (지출 금액)
    • 지출에서 지출 금액의 단위는 원화를 기준으로 한다.
  • 정산 결과 (balance)
    • 하나의 정산은 하나의 정산 결과를 가지고 있다. (1:1 대응)
    • 정산 결과에서는 정산에 참여(join)한 유저끼리 송금을 얼마큼 해줘야 하는지 보여준다.
      • ex) 강릉 여행 정산의 정산 결과 예시
        • 유저 2 > 유저 1 : 230,000 원 송금
      • ex) 두명 이상이 참여한 정산
        • 유저 1: 150,000 원 지출

        • 유저 2: 30,000 원 지출

        • 유저 3: 80,000 원 지출

        • 유저 4: 100,000 원 지출

        • 총 정산 금액 : 360,000 원

        • 360,000 원 / 4명 = 90,000 원

        • 유저 1 : 6만원 받아야 함

        • 유저 2 : 6만원 지불해야 함

        • 유저 3 : 1만원 지불해야 함

        • 유저 4 : 1만원 받아야 함

        • 유저 2 > 유저 1 : 60,000 원 송금

        • 유저 3 > 유저 4 : 10,000 원 송금

    • 정산 결과 (balance)에 대한 응답값은 한 유저가 다른 유저에게 얼만큼 전송하는지의 금액만 내려준다.
    • 모두 같은 금액을 지출하여 정산할 내역이 없을 경우 빈 결과를 내려준다.
          [
            {
              "senderUserNo": 2,
              "senderUserName": "유저2",
              "sendAmount": 60000,
              "receiverUserNo": 1,
              "receiverUserName": "유저1"
            },
            {
              "senderUserNo": 3,
              "senderUserName": "유저3",
              "sendAmount": 10000,
              "receiverUserNo": 4,
              "receiverUserName": "유저4"
            }
          ]

구현 요구사항

  • 스프링 부트 사용
    • AutoConfiguration 사용
    • 어플리케이션이 executable jar로 패키징 되어 java -jar로 실행이 가능해야함.
  • 회원가입 기능
    • 스프링 MVC 2편 [섹션 6. 로그인 처리1 - 쿠키, 세션], [섹션 7. 로그인 처리2 - 필터, 인터셉터] 코드 활용
  • 데이터 저장 기능
    • H2 데이터 베이스 이용
    • JdbcTemplate 이용
  • API만 구현하면 되며, 웹 화면 구성 등의 프론트 기능을 구현할 필요 없음.
  • JSON 통신
  • 금액을 다룰때는 BigDecimal 클래스로 하며, 1원 단위에서 반올림을 한다.
  • CRUD 중 Update에 대한 기능은 제외해도 됩니다. (Create, Read, Delete 만 구현 가능)

필수 API 목록

필수 API 목록

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages