[ 작업한 내용 ]
1. 공지사항 등록
1-1) 공지사항 엔티티
- id, title, content, createdDate, updatedDate, wirter 필드를 가짐.
- writer는 User의 id와 join.
- @PrePersist를 사용하여 공지사항 작성시 createdDate 자동으로 시간 저장.
1-2) AdminNoticeController
- POST 방식으로 @RequestBody로 AdminNoticeCreateDTO와 로그인한 사용자의 인증객체를 요청받기.
- 요청받은 데이터를 서비스로직으로 전달.
- 서비스로직으로부터 반환 받은 데이터를 클라이언트에게 반환.
1-3) AdminNoticeService
- controller 계층에서 전달받은 인증객체의 id를 기반으로 repository.findById()를 사용하여 유효한 사용자인지 확인을 하기.
- title, content가 비어있는지 체크하고 비어있으면 예외발생.
- 사용자의 권한이 ROLE_MANAGER, ROLE_ADMIN이 아니면 예외발생.
- 전달받은 AdminNoticeCreateDTO에 있는 데이터를 가지고 Notice 객체를 생성.
- 생성한 Notice 객체를 repository.save()를 통해 DB에 저장.
- 응답 DTO인 AdminNoticeCreateResDTO를 생성해 controller로 반환.
1-4) NoticeReository
- JpaRepository를 상속받는 interface로 생성.
1-5) messages.properties
- 공지사항 생성시 에러, 성공 메시지 추가.
error.notice.title.blank=공지사항 제목은 필수입니다.
error.notice.content.blank=공지사항 내용은 필수입니다.
error.notice.create.writer=공지사항은 매니저 또는 관리자만 작성이 가능합니다.
success.notice.created=공지사항이 성공적으로 등록되었습니다.
1-6) NoticeSuccessCode
- 공지사항 생성시 성공코드 추가.
NOTICE_CREATED(HttpStatus.CREATED, "NOTICE_201", "success.notice.created");
1-7) NoticeErrorCode
- 공지사항 생성시 발생하는 에러코드 추가.
NOTICE_TITLE_BLANK(HttpStatus.BAD_REQUEST, "NOTICE_001", "error.notice.title.blank"),
NOTICE_CONTENT_BLANK(HttpStatus.BAD_REQUEST, "NOTICE_002", "error.notice.content.blank");
NOTICE_CREATE_WRITER(HttpStatus.BAD_REQUEST, "NOTICE_003", "error.notice.create.writer");
1-8) SecurityConfig
- 공지사항 관련 엔드포인트 접근 허가.
[ 메모 ]
- JPA방식을 사용하는 경우 FK인 컬럼을 엔티티에서 표현할때 n대 1의 경우 @ManyToOne. 그 외에 @ManyToMany, @ManyToAny 등이 있다는 걸 알게되었다. 지금 당장은 개발하는데에 집중해야해서 자세히 찾아보지는 않았지만 나중에 필수로 알아두어야하는 부분.
- 지금까지 개발하면서 수정해야하는 부분, 개선해야하는 부분이 문득 떠오른다. 처음에는 헤매고 이해가 잘 안되는 부분이 있어서 우선 개발을 하는 것을 목표로했다면 지금은 처음보다는 이해력이 올라가서 '아, 여기서 이렇게 해야지 깔끔할 거 같은데..'라는 생각이 자주 든다.
'개발 기록 > 도서관 관리 시스템' 카테고리의 다른 글
[Library Management System] 25.09.03 (36일) (0) | 2025.09.03 |
---|---|
[Library Management System] 25.09.02 (35일) (0) | 2025.09.02 |
[Library Management System] 25.08.31 (33일) (0) | 2025.08.31 |
[Library Management System] 25.08.30 (32일) (0) | 2025.08.31 |
[Library Management System] 25.08.29 (31일) (0) | 2025.08.29 |