-
Notifications
You must be signed in to change notification settings - Fork 3
Domain Mypage
wjkim9 edited this page Jul 22, 2025
·
17 revisions
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 | 설정 도메인에서 발생할 수 있는 예외 상황에 대해 커스텀 예외를 정의합니다. |
- 사용자 맞춤 키워드, 수신 요일, 수신 시간 등을 포함한 설정을 등록합니다.
- 연관된 Days / Keyword / BlockKeyword 정보도 함께 저장됩니다.
POST /api/setting- 특정 사용자 ID에 해당하는 전체 설정 목록을 조회합니다.
- 마이페이지에서 여러 개의 조건을 저장해두고 확인할 수 있습니다.
GET /api/setting- 기존 설정을 수정하며, 관련된 서브 데이터는 모두 삭제 후 재삽입 방식으로 처리합니다.
- 권한 체크를 통해 요청자가 해당 설정의 소유자인지 확인합니다.
PUT /api/setting- 설정 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 구조
- 연관 엔티티(서브 데이터) 일괄 처리
- 사용자의 알림 조건을 유연하게 확장 가능
- 커스텀 예외 처리로 안정성 확보