From 56141082f08dafbeba3db19eab16fd2337b3ba90 Mon Sep 17 00:00:00 2001 From: Umjiseung <127853946+Umjiseung@users.noreply.github.com> Date: Wed, 17 Apr 2024 14:37:40 +0900 Subject: [PATCH 1/8] =?UTF-8?q?add=20::=20NotFoundNoticeException=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../notice/exception/NotFoundNoticeException.java | 10 ++++++++++ .../mindway/server/v2/global/exception/ErrorCode.java | 5 ++++- 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/mindway/server/v2/domain/notice/exception/NotFoundNoticeException.java diff --git a/src/main/java/com/mindway/server/v2/domain/notice/exception/NotFoundNoticeException.java b/src/main/java/com/mindway/server/v2/domain/notice/exception/NotFoundNoticeException.java new file mode 100644 index 0000000..7da9447 --- /dev/null +++ b/src/main/java/com/mindway/server/v2/domain/notice/exception/NotFoundNoticeException.java @@ -0,0 +1,10 @@ +package com.mindway.server.v2.domain.notice.exception; + +import com.mindway.server.v2.global.exception.ErrorCode; +import com.mindway.server.v2.global.exception.MindWayException; + +public class NotFoundNoticeException extends MindWayException { + public NotFoundNoticeException() { + super(ErrorCode.NOT_FOUND_NOTICE); + } +} diff --git a/src/main/java/com/mindway/server/v2/global/exception/ErrorCode.java b/src/main/java/com/mindway/server/v2/global/exception/ErrorCode.java index 2fb7ede..c2eee97 100644 --- a/src/main/java/com/mindway/server/v2/global/exception/ErrorCode.java +++ b/src/main/java/com/mindway/server/v2/global/exception/ErrorCode.java @@ -25,7 +25,10 @@ public enum ErrorCode { /* goal */ EXIST_ALREADY_GOAL(400, "이미 목표 설정이 되어있습니다."), - NOT_EXIST_GOAL(404, "유저가 설정한 목표가 존재하지 않습니다"); + NOT_EXIST_GOAL(404, "유저가 설정한 목표가 존재하지 않습니다"), + + /* notice */ + NOT_FOUND_NOTICE(404, "등록된 공지가 존재하지 않습니다."); private final int status; private final String message; From 94c24da17f2473a8ce7116e784ec7bbbf8001dd2 Mon Sep 17 00:00:00 2001 From: Umjiseung <127853946+Umjiseung@users.noreply.github.com> Date: Wed, 17 Apr 2024 14:37:57 +0900 Subject: [PATCH 2/8] =?UTF-8?q?add=20::=20getNotice=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../notice/presentation/NoticeController.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/mindway/server/v2/domain/notice/presentation/NoticeController.java b/src/main/java/com/mindway/server/v2/domain/notice/presentation/NoticeController.java index 334f690..0d88395 100644 --- a/src/main/java/com/mindway/server/v2/domain/notice/presentation/NoticeController.java +++ b/src/main/java/com/mindway/server/v2/domain/notice/presentation/NoticeController.java @@ -1,15 +1,14 @@ package com.mindway.server.v2.domain.notice.presentation; import com.mindway.server.v2.domain.notice.presentation.dto.request.NoticeAddRequestDto; +import com.mindway.server.v2.domain.notice.presentation.dto.response.NoticeGetResponseDto; import com.mindway.server.v2.domain.notice.service.NoticeAddService; +import com.mindway.server.v2.domain.notice.service.NoticeGetService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; @RestController @RequiredArgsConstructor @@ -17,6 +16,7 @@ public class NoticeController { private final NoticeAddService noticeAddService; + private final NoticeGetService noticeGetService; @PostMapping public ResponseEntity addNotice(@Valid @RequestBody NoticeAddRequestDto noticeAddRequestDto) { @@ -24,4 +24,10 @@ public ResponseEntity addNotice(@Valid @RequestBody NoticeAddRequestDto no return ResponseEntity.status(HttpStatus.CREATED).build(); } + @GetMapping + public ResponseEntity getNotice() { + NoticeGetResponseDto response = noticeGetService.execute(); + return ResponseEntity.ok(response); + } + } From 46c7d6b0ae59cca86c63eeb0ad50f6d9bd9b430f Mon Sep 17 00:00:00 2001 From: Umjiseung <127853946+Umjiseung@users.noreply.github.com> Date: Wed, 17 Apr 2024 14:38:06 +0900 Subject: [PATCH 3/8] =?UTF-8?q?add=20::=20toDto=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../v2/domain/notice/converter/NoticeConverter.java | 3 +++ .../domain/notice/converter/impl/NoticeConverterImpl.java | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/src/main/java/com/mindway/server/v2/domain/notice/converter/NoticeConverter.java b/src/main/java/com/mindway/server/v2/domain/notice/converter/NoticeConverter.java index 55c987a..4cfc558 100644 --- a/src/main/java/com/mindway/server/v2/domain/notice/converter/NoticeConverter.java +++ b/src/main/java/com/mindway/server/v2/domain/notice/converter/NoticeConverter.java @@ -3,8 +3,11 @@ import com.mindway.server.v2.domain.notice.entity.Notice; import com.mindway.server.v2.domain.notice.presentation.dto.request.NoticeAddRequestDto; +import com.mindway.server.v2.domain.notice.presentation.dto.response.NoticeGetResponseDto; import com.mindway.server.v2.domain.user.entity.User; public interface NoticeConverter { Notice toEntity(NoticeAddRequestDto noticeAddRequestDto, User user); + + NoticeGetResponseDto toDto(Notice notice); } diff --git a/src/main/java/com/mindway/server/v2/domain/notice/converter/impl/NoticeConverterImpl.java b/src/main/java/com/mindway/server/v2/domain/notice/converter/impl/NoticeConverterImpl.java index ab83f34..d61d184 100644 --- a/src/main/java/com/mindway/server/v2/domain/notice/converter/impl/NoticeConverterImpl.java +++ b/src/main/java/com/mindway/server/v2/domain/notice/converter/impl/NoticeConverterImpl.java @@ -3,6 +3,7 @@ import com.mindway.server.v2.domain.notice.converter.NoticeConverter; import com.mindway.server.v2.domain.notice.entity.Notice; import com.mindway.server.v2.domain.notice.presentation.dto.request.NoticeAddRequestDto; +import com.mindway.server.v2.domain.notice.presentation.dto.response.NoticeGetResponseDto; import com.mindway.server.v2.domain.user.entity.User; import org.springframework.stereotype.Component; @@ -16,4 +17,11 @@ public Notice toEntity(NoticeAddRequestDto noticeAddRequestDto, User user) { .user(user) .build(); } + + public NoticeGetResponseDto toDto(Notice notice) { + return NoticeGetResponseDto.builder() + .title(notice.getTitle()) + .content(notice.getContent()) + .build(); + } } From 3ed73d9c9a8af66501ff4bd994c2322184626bd4 Mon Sep 17 00:00:00 2001 From: Umjiseung <127853946+Umjiseung@users.noreply.github.com> Date: Wed, 17 Apr 2024 14:38:28 +0900 Subject: [PATCH 4/8] =?UTF-8?q?add=20::=20NoticeGetResponseDto=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/response/NoticeGetResponseDto.java | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 src/main/java/com/mindway/server/v2/domain/notice/presentation/dto/response/NoticeGetResponseDto.java diff --git a/src/main/java/com/mindway/server/v2/domain/notice/presentation/dto/response/NoticeGetResponseDto.java b/src/main/java/com/mindway/server/v2/domain/notice/presentation/dto/response/NoticeGetResponseDto.java new file mode 100644 index 0000000..94c85ec --- /dev/null +++ b/src/main/java/com/mindway/server/v2/domain/notice/presentation/dto/response/NoticeGetResponseDto.java @@ -0,0 +1,11 @@ +package com.mindway.server.v2.domain.notice.presentation.dto.response; + +import lombok.Builder; +import lombok.Getter; + +@Getter +@Builder +public class NoticeGetResponseDto { + private String title; + private String content; +} From 9a4b9bc2caff8f7c5277e66f95cfa5474a4c6474 Mon Sep 17 00:00:00 2001 From: Umjiseung <127853946+Umjiseung@users.noreply.github.com> Date: Wed, 17 Apr 2024 14:38:37 +0900 Subject: [PATCH 5/8] =?UTF-8?q?add=20::=20NoticeGetService=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../notice/service/NoticeGetService.java | 7 +++++ .../service/impl/NoticeGetServiceImpl.java | 28 +++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 src/main/java/com/mindway/server/v2/domain/notice/service/NoticeGetService.java create mode 100644 src/main/java/com/mindway/server/v2/domain/notice/service/impl/NoticeGetServiceImpl.java diff --git a/src/main/java/com/mindway/server/v2/domain/notice/service/NoticeGetService.java b/src/main/java/com/mindway/server/v2/domain/notice/service/NoticeGetService.java new file mode 100644 index 0000000..41b21a0 --- /dev/null +++ b/src/main/java/com/mindway/server/v2/domain/notice/service/NoticeGetService.java @@ -0,0 +1,7 @@ +package com.mindway.server.v2.domain.notice.service; + +import com.mindway.server.v2.domain.notice.presentation.dto.response.NoticeGetResponseDto; + +public interface NoticeGetService { + NoticeGetResponseDto execute(); +} diff --git a/src/main/java/com/mindway/server/v2/domain/notice/service/impl/NoticeGetServiceImpl.java b/src/main/java/com/mindway/server/v2/domain/notice/service/impl/NoticeGetServiceImpl.java new file mode 100644 index 0000000..33d2f43 --- /dev/null +++ b/src/main/java/com/mindway/server/v2/domain/notice/service/impl/NoticeGetServiceImpl.java @@ -0,0 +1,28 @@ +package com.mindway.server.v2.domain.notice.service.impl; + +import com.mindway.server.v2.domain.notice.converter.NoticeConverter; +import com.mindway.server.v2.domain.notice.entity.Notice; +import com.mindway.server.v2.domain.notice.exception.NotFoundNoticeException; +import com.mindway.server.v2.domain.notice.presentation.dto.response.NoticeGetResponseDto; +import com.mindway.server.v2.domain.notice.repository.NoticeRepository; +import com.mindway.server.v2.domain.notice.service.NoticeGetService; +import com.mindway.server.v2.global.annotation.ServiceWithReadOnlyTransaction; +import lombok.RequiredArgsConstructor; + +@ServiceWithReadOnlyTransaction +@RequiredArgsConstructor +public class NoticeGetServiceImpl implements NoticeGetService { + + private final NoticeRepository noticeRepository; + private final NoticeConverter noticeConverter; + + public NoticeGetResponseDto execute() { + Notice latestNotice = noticeRepository.findNoticeWithMaxN(); + + if (latestNotice == null) { + throw new NotFoundNoticeException(); + } + + return noticeConverter.toDto(latestNotice); + } +} From 63c5c434000bcccb2fe6cb3351392ea051067d12 Mon Sep 17 00:00:00 2001 From: Umjiseung <127853946+Umjiseung@users.noreply.github.com> Date: Wed, 17 Apr 2024 14:38:52 +0900 Subject: [PATCH 6/8] =?UTF-8?q?add=20::=20findNoticeWithMaxN=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/v2/domain/notice/repository/NoticeRepository.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/com/mindway/server/v2/domain/notice/repository/NoticeRepository.java b/src/main/java/com/mindway/server/v2/domain/notice/repository/NoticeRepository.java index 439093b..102134d 100644 --- a/src/main/java/com/mindway/server/v2/domain/notice/repository/NoticeRepository.java +++ b/src/main/java/com/mindway/server/v2/domain/notice/repository/NoticeRepository.java @@ -3,6 +3,11 @@ import com.mindway.server.v2.domain.notice.entity.Notice; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; public interface NoticeRepository extends JpaRepository { + + @Query("SELECT n FROM Notice n WHERE n.id = (SELECT MAX(n2.id) FROM Notice n2)") + Notice findNoticeWithMaxN(); + } From dcae7e1d992f2a9065226a220d6cfe8ae1b2ea35 Mon Sep 17 00:00:00 2001 From: Umjiseung <127853946+Umjiseung@users.noreply.github.com> Date: Wed, 17 Apr 2024 14:39:04 +0900 Subject: [PATCH 7/8] =?UTF-8?q?add=20::=20url=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mindway/server/v2/global/security/config/SecurityConfig.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/mindway/server/v2/global/security/config/SecurityConfig.java b/src/main/java/com/mindway/server/v2/global/security/config/SecurityConfig.java index 0493d35..be6f6e1 100644 --- a/src/main/java/com/mindway/server/v2/global/security/config/SecurityConfig.java +++ b/src/main/java/com/mindway/server/v2/global/security/config/SecurityConfig.java @@ -66,6 +66,7 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { // notice .requestMatchers(HttpMethod.POST, "/api/v2/notice").hasAnyAuthority(Authority.ROLE_TEACHER.name(), Authority.ROLE_HELPER.name()) + .requestMatchers(HttpMethod.GET, "/api/v2/notice").authenticated() .anyRequest().authenticated() ) From 837a122533b8d3ef77b00894c120c3ec2b10dee4 Mon Sep 17 00:00:00 2001 From: Umjiseung <127853946+Umjiseung@users.noreply.github.com> Date: Wed, 17 Apr 2024 17:06:50 +0900 Subject: [PATCH 8/8] =?UTF-8?q?add=20::=20=EA=B6=8C=ED=95=9C=20=EB=B6=88?= =?UTF-8?q?=EB=9F=AC=EC=98=A4=EB=8A=94=20=EB=A1=9C=EC=A7=81=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mindway/server/v2/global/auth/AuthDetails.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/mindway/server/v2/global/auth/AuthDetails.java b/src/main/java/com/mindway/server/v2/global/auth/AuthDetails.java index 13d67ab..2b56d21 100644 --- a/src/main/java/com/mindway/server/v2/global/auth/AuthDetails.java +++ b/src/main/java/com/mindway/server/v2/global/auth/AuthDetails.java @@ -3,8 +3,10 @@ import com.mindway.server.v2.domain.user.entity.User; import lombok.AllArgsConstructor; import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; +import java.util.ArrayList; import java.util.Collection; @AllArgsConstructor @@ -13,7 +15,11 @@ public class AuthDetails implements UserDetails { @Override public Collection getAuthorities() { - return null; + SimpleGrantedAuthority simpleGrantedAuthority = new SimpleGrantedAuthority(user.getAuthority().name()); + + Collection authorities = new ArrayList<>(); + authorities.add(simpleGrantedAuthority); + return authorities; } @Override