From def2e5004500c9c6e3d58d5e4bd7a20a8f56c79a Mon Sep 17 00:00:00 2001 From: Umjiseung <127853946+Umjiseung@users.noreply.github.com> Date: Wed, 17 Apr 2024 09:22:46 +0900 Subject: [PATCH 1/9] =?UTF-8?q?add=20::=20Notice=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/entity/Notice.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/main/java/com/mindway/server/v2/domain/notice/entity/Notice.java diff --git a/src/main/java/com/mindway/server/v2/domain/notice/entity/Notice.java b/src/main/java/com/mindway/server/v2/domain/notice/entity/Notice.java new file mode 100644 index 0000000..babd836 --- /dev/null +++ b/src/main/java/com/mindway/server/v2/domain/notice/entity/Notice.java @@ -0,0 +1,28 @@ +package com.mindway.server.v2.domain.notice.entity; + +import com.mindway.server.v2.domain.user.entity.User; +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@NoArgsConstructor +@AllArgsConstructor +@Entity +@Builder +public class Notice { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String title; + + private String content; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "user_id") + private User user; +} From 332f8cfce0c32b1bca1f0e71504190371e2d5150 Mon Sep 17 00:00:00 2001 From: Umjiseung <127853946+Umjiseung@users.noreply.github.com> Date: Wed, 17 Apr 2024 09:23:56 +0900 Subject: [PATCH 2/9] =?UTF-8?q?add=20::=20NoticeAddRequestDto=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/request/NoticeAddRequestDto.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 src/main/java/com/mindway/server/v2/domain/notice/presentation/dto/request/NoticeAddRequestDto.java diff --git a/src/main/java/com/mindway/server/v2/domain/notice/presentation/dto/request/NoticeAddRequestDto.java b/src/main/java/com/mindway/server/v2/domain/notice/presentation/dto/request/NoticeAddRequestDto.java new file mode 100644 index 0000000..ef7b78f --- /dev/null +++ b/src/main/java/com/mindway/server/v2/domain/notice/presentation/dto/request/NoticeAddRequestDto.java @@ -0,0 +1,16 @@ +package com.mindway.server.v2.domain.notice.presentation.dto.request; + +import jakarta.validation.constraints.NotNull; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@NoArgsConstructor +public class NoticeAddRequestDto { + + @NotNull + private String title; + @NotNull + private String content; + +} From af7108260abc6d4beee72735faaa460aa459588a Mon Sep 17 00:00:00 2001 From: Umjiseung <127853946+Umjiseung@users.noreply.github.com> Date: Wed, 17 Apr 2024 09:24:07 +0900 Subject: [PATCH 3/9] =?UTF-8?q?add=20::=20NoticeAddService=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/NoticeAddService.java | 7 +++++ .../service/impl/NoticeAddServiceImpl.java | 28 +++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 src/main/java/com/mindway/server/v2/domain/notice/service/NoticeAddService.java create mode 100644 src/main/java/com/mindway/server/v2/domain/notice/service/impl/NoticeAddServiceImpl.java diff --git a/src/main/java/com/mindway/server/v2/domain/notice/service/NoticeAddService.java b/src/main/java/com/mindway/server/v2/domain/notice/service/NoticeAddService.java new file mode 100644 index 0000000..50fdcbb --- /dev/null +++ b/src/main/java/com/mindway/server/v2/domain/notice/service/NoticeAddService.java @@ -0,0 +1,7 @@ +package com.mindway.server.v2.domain.notice.service; + +import com.mindway.server.v2.domain.notice.presentation.dto.request.NoticeAddRequestDto; + +public interface NoticeAddService { + void execute(NoticeAddRequestDto noticeAddRequestDto); +} diff --git a/src/main/java/com/mindway/server/v2/domain/notice/service/impl/NoticeAddServiceImpl.java b/src/main/java/com/mindway/server/v2/domain/notice/service/impl/NoticeAddServiceImpl.java new file mode 100644 index 0000000..7a2f00f --- /dev/null +++ b/src/main/java/com/mindway/server/v2/domain/notice/service/impl/NoticeAddServiceImpl.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.presentation.dto.request.NoticeAddRequestDto; +import com.mindway.server.v2.domain.notice.repository.NoticeRepository; +import com.mindway.server.v2.domain.notice.service.NoticeAddService; +import com.mindway.server.v2.domain.user.entity.User; +import com.mindway.server.v2.domain.user.util.UserUtil; +import com.mindway.server.v2.global.annotation.ServiceWithTransaction; +import lombok.RequiredArgsConstructor; + +@ServiceWithTransaction +@RequiredArgsConstructor +public class NoticeAddServiceImpl implements NoticeAddService { + + private final NoticeConverter noticeConverter; + private final NoticeRepository noticeRepository; + private final UserUtil userUtil; + + public void execute(NoticeAddRequestDto noticeAddRequestDto) { + User user = userUtil.getCurrentUser(); + + Notice notice = noticeConverter.toEntity(noticeAddRequestDto, user); + + noticeRepository.save(notice); + } +} From 6337afc73524e6b737c7417f310278d4e162b2d5 Mon Sep 17 00:00:00 2001 From: Umjiseung <127853946+Umjiseung@users.noreply.github.com> Date: Wed, 17 Apr 2024 09:24:15 +0900 Subject: [PATCH 4/9] =?UTF-8?q?add=20::=20NoticeController=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/presentation/NoticeController.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/main/java/com/mindway/server/v2/domain/notice/presentation/NoticeController.java 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 new file mode 100644 index 0000000..334f690 --- /dev/null +++ b/src/main/java/com/mindway/server/v2/domain/notice/presentation/NoticeController.java @@ -0,0 +1,27 @@ +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.service.NoticeAddService; +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; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/v2/notice") +public class NoticeController { + + private final NoticeAddService noticeAddService; + + @PostMapping + public ResponseEntity addNotice(@Valid @RequestBody NoticeAddRequestDto noticeAddRequestDto) { + noticeAddService.execute(noticeAddRequestDto); + return ResponseEntity.status(HttpStatus.CREATED).build(); + } + +} From aa5dcfa59815637f0152ff435ae257951d93ac06 Mon Sep 17 00:00:00 2001 From: Umjiseung <127853946+Umjiseung@users.noreply.github.com> Date: Wed, 17 Apr 2024 09:24:22 +0900 Subject: [PATCH 5/9] =?UTF-8?q?add=20::=20NoticeConverter=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/converter/NoticeConverter.java | 10 ++++++++++ .../converter/impl/NoticeConverterImpl.java | 19 +++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 src/main/java/com/mindway/server/v2/domain/notice/converter/NoticeConverter.java create mode 100644 src/main/java/com/mindway/server/v2/domain/notice/converter/impl/NoticeConverterImpl.java 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 new file mode 100644 index 0000000..55c987a --- /dev/null +++ b/src/main/java/com/mindway/server/v2/domain/notice/converter/NoticeConverter.java @@ -0,0 +1,10 @@ +package com.mindway.server.v2.domain.notice.converter; + + +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.user.entity.User; + +public interface NoticeConverter { + Notice toEntity(NoticeAddRequestDto noticeAddRequestDto, User user); +} 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 new file mode 100644 index 0000000..ab83f34 --- /dev/null +++ b/src/main/java/com/mindway/server/v2/domain/notice/converter/impl/NoticeConverterImpl.java @@ -0,0 +1,19 @@ +package com.mindway.server.v2.domain.notice.converter.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.presentation.dto.request.NoticeAddRequestDto; +import com.mindway.server.v2.domain.user.entity.User; +import org.springframework.stereotype.Component; + +@Component +public class NoticeConverterImpl implements NoticeConverter { + + public Notice toEntity(NoticeAddRequestDto noticeAddRequestDto, User user) { + return Notice.builder() + .title(noticeAddRequestDto.getTitle()) + .content(noticeAddRequestDto.getContent()) + .user(user) + .build(); + } +} From 271b5f12a28aba9596a3499c7e338d1610daf108 Mon Sep 17 00:00:00 2001 From: Umjiseung <127853946+Umjiseung@users.noreply.github.com> Date: Wed, 17 Apr 2024 09:24:31 +0900 Subject: [PATCH 6/9] =?UTF-8?q?add=20::=20NoticeRepository=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 --- .../v2/domain/notice/repository/NoticeRepository.java | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 src/main/java/com/mindway/server/v2/domain/notice/repository/NoticeRepository.java 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 new file mode 100644 index 0000000..439093b --- /dev/null +++ b/src/main/java/com/mindway/server/v2/domain/notice/repository/NoticeRepository.java @@ -0,0 +1,8 @@ +package com.mindway.server.v2.domain.notice.repository; + + +import com.mindway.server.v2.domain.notice.entity.Notice; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface NoticeRepository extends JpaRepository { +} From efd9d77e5586f4cd4aea1985b414c79bf550db93 Mon Sep 17 00:00:00 2001 From: Umjiseung <127853946+Umjiseung@users.noreply.github.com> Date: Wed, 17 Apr 2024 09:24:40 +0900 Subject: [PATCH 7/9] =?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 --- .../server/v2/global/security/config/SecurityConfig.java | 4 ++++ 1 file changed, 4 insertions(+) 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 3b6f123..0493d35 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 @@ -1,5 +1,6 @@ package com.mindway.server.v2.global.security.config; +import com.mindway.server.v2.domain.user.entity.Authority; import com.mindway.server.v2.global.security.filter.JwtFilter; import com.mindway.server.v2.global.security.handler.JwtAccessDeniedHandler; import com.mindway.server.v2.global.security.handler.JwtAuthenticationEntryPoint; @@ -63,6 +64,9 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { .requestMatchers(HttpMethod.POST, "/api/v2/goal").authenticated() .requestMatchers(HttpMethod.GET, "/api/v2/goal").authenticated() + // notice + .requestMatchers(HttpMethod.POST, "/api/v2/notice").hasAnyAuthority(Authority.ROLE_TEACHER.name(), Authority.ROLE_HELPER.name()) + .anyRequest().authenticated() ) From 0464d2c5cbb78c8dd2ee3659090657231c60e789 Mon Sep 17 00:00:00 2001 From: Umjiseung <127853946+Umjiseung@users.noreply.github.com> Date: Wed, 17 Apr 2024 10:03:18 +0900 Subject: [PATCH 8/9] =?UTF-8?q?add=20::=20=EC=96=B4=EB=93=9C=EB=AF=BC=20?= =?UTF-8?q?=EA=B2=80=EC=A6=9D=20=EB=A1=9C=EC=A7=81=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/service/impl/NoticeAddServiceImpl.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/com/mindway/server/v2/domain/notice/service/impl/NoticeAddServiceImpl.java b/src/main/java/com/mindway/server/v2/domain/notice/service/impl/NoticeAddServiceImpl.java index 7a2f00f..f071925 100644 --- a/src/main/java/com/mindway/server/v2/domain/notice/service/impl/NoticeAddServiceImpl.java +++ b/src/main/java/com/mindway/server/v2/domain/notice/service/impl/NoticeAddServiceImpl.java @@ -2,9 +2,11 @@ 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.NotAccessStudentException; import com.mindway.server.v2.domain.notice.presentation.dto.request.NoticeAddRequestDto; import com.mindway.server.v2.domain.notice.repository.NoticeRepository; import com.mindway.server.v2.domain.notice.service.NoticeAddService; +import com.mindway.server.v2.domain.user.entity.Authority; import com.mindway.server.v2.domain.user.entity.User; import com.mindway.server.v2.domain.user.util.UserUtil; import com.mindway.server.v2.global.annotation.ServiceWithTransaction; @@ -21,6 +23,9 @@ public class NoticeAddServiceImpl implements NoticeAddService { public void execute(NoticeAddRequestDto noticeAddRequestDto) { User user = userUtil.getCurrentUser(); + if (user.getAuthority() == Authority.ROLE_STUDENT) + throw new NotAccessStudentException(); + Notice notice = noticeConverter.toEntity(noticeAddRequestDto, user); noticeRepository.save(notice); From e3193c3ac212cd4f8af5d590483396e214fc03b3 Mon Sep 17 00:00:00 2001 From: Umjiseung <127853946+Umjiseung@users.noreply.github.com> Date: Wed, 17 Apr 2024 10:03:26 +0900 Subject: [PATCH 9/9] =?UTF-8?q?add=20::=20NotAccessStudentException=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/NotAccessStudentException.java | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 src/main/java/com/mindway/server/v2/domain/notice/exception/NotAccessStudentException.java diff --git a/src/main/java/com/mindway/server/v2/domain/notice/exception/NotAccessStudentException.java b/src/main/java/com/mindway/server/v2/domain/notice/exception/NotAccessStudentException.java new file mode 100644 index 0000000..29b412d --- /dev/null +++ b/src/main/java/com/mindway/server/v2/domain/notice/exception/NotAccessStudentException.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 NotAccessStudentException extends MindWayException { + public NotAccessStudentException() { + super(ErrorCode.NOT_ACCESS_STUDENT); + } +}