Skip to content

Domain Mypage

wjkim9 edited this page Jul 22, 2025 · 17 revisions

🟣 Mypage

개요

Mypage 도메인의 Setting 기능은 사용자가 원하는 뉴스 수신 조건을 설정하고 관리하는 기능입니다.
사용자는 키워드, 차단 키워드, 수신 시간, 요일 등을 지정할 수 있으며, 이 설정에 따라 개인화된 뉴스 알림이 전송됩니다.

핵심 키워드는 사용자 맞춤화, 데이터 연관 구조 관리, 예외 처리 및 무결성 보장입니다.


📂디렉토리구조

📁 Mypage
├── controller
│   └── SettingController.java
│
├── dto
│   └── SettingDTO.java
│
├── entity
│   ├── Days.java
│   ├── Setting.java
│   ├── SettingBlockKeyword.java
│   └── SettingKeyword.java
│
├── exception
│   └── SettingException.java
│
├── repository
│   ├── DaysRepository.java
│   ├── SettingBlockKeywordRepository.java
│   ├── SettingKeywordRepository.java
│   └── SettingRepository.java
│
└── service
    └── SettingService.java

계층 및 책임 설명

계층 책임 설명
controller 사용자의 설정 요청을 처리하고, 결과를 응답하는 역할을 수행합니다.
service 설정 저장, 수정, 삭제 및 서브 데이터(Days, 키워드 등) 처리 로직을 담당합니다.
repository 설정 및 관련 서브 데이터에 대한 JPA 기반 DB 접근을 수행합니다.
entity DB 테이블과 매핑되는 도메인 모델이며, 연관 관계 설정(설정-키워드 등)을 포함합니다.
dto 클라이언트와 데이터를 주고받기 위한 전용 데이터 구조를 정의합니다.
exception 설정 도메인에서 발생할 수 있는 예외 상황에 대해 커스텀 예외를 정의합니다.

기능 설명

1. 설정 등록

  • 사용자 맞춤 키워드, 수신 요일, 수신 시간 등을 포함한 설정을 등록합니다.
  • 연관된 Days / Keyword / BlockKeyword 정보도 함께 저장됩니다.
POST /api/setting

2. 설정 조회

  • 특정 사용자 ID에 해당하는 전체 설정 목록을 조회합니다.
  • 마이페이지에서 여러 개의 조건을 저장해두고 확인할 수 있습니다.
GET /api/setting

3. 설정 수정

  • 기존 설정을 수정하며, 관련된 서브 데이터는 모두 삭제 후 재삽입 방식으로 처리합니다.
  • 권한 체크를 통해 요청자가 해당 설정의 소유자인지 확인합니다.
PUT /api/setting

4. 설정 삭제

  • 설정 ID 기준으로 설정 및 연관된 Days / Keywords 정보를 모두 삭제합니다.
DELETE /api/setting/{id}

예외 처리 흐름

예외 코드 설명 HTTP 상태 코드
SETTING_ERROR_901 설정 ID에 해당하는 설정을 찾을 수 없습니다. 404 Not Found
SETTING_ERROR_902 다른 사용자의 설정에 접근을 시도한 경우. 403 Forbidden
SETTING_ERROR_903 설정 생성 중 서버 내부 오류 발생. 500 Internal Server Error
SETTING_ERROR_904 설정 수정 중 서버 내부 오류 발생. 500 Internal Server Error
SETTING_ERROR_905 설정 삭제 중 서버 내부 오류 발생. 500 Internal Server Error
SETTING_ERROR_906 사용자가 설정 가능한 최대 개수를 초과한 경우.

특징 요약

  • 단일 설정에 여러 키워드/요일 등을 포함하는 1:N 구조
  • 연관 엔티티(서브 데이터) 일괄 처리
  • 사용자의 알림 조건을 유연하게 확장 가능
  • 커스텀 예외 처리로 안정성 확보

Clone this wiki locally