From d21675e5334dd8900a029895ab57a4c9fade314e Mon Sep 17 00:00:00 2001 From: ParkKyoungMin Date: Thu, 13 Mar 2025 14:11:37 +0900 Subject: [PATCH 1/5] =?UTF-8?q?Level=201-1=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EA=B0=9C=EC=84=A0=20=ED=80=B4=EC=A6=88=20-=20@Transactional?= =?UTF-8?q?=EC=9D=98=20=EC=9D=B4=ED=95=B4=20readOnly=3Dtrue=EB=A5=BC=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=ED=95=98=EC=97=AC=20saveTodo=EC=9D=98=20?= =?UTF-8?q?=EC=93=B0=EA=B8=B0=20=EC=9E=91=EC=97=85=EC=9D=84=20=ED=97=88?= =?UTF-8?q?=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../expert/domain/todo/service/TodoService.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/example/expert/domain/todo/service/TodoService.java b/src/main/java/org/example/expert/domain/todo/service/TodoService.java index 922991ce7..28b883553 100644 --- a/src/main/java/org/example/expert/domain/todo/service/TodoService.java +++ b/src/main/java/org/example/expert/domain/todo/service/TodoService.java @@ -17,15 +17,18 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.time.LocalDateTime; + @Service @RequiredArgsConstructor -@Transactional(readOnly = true) public class TodoService { private final TodoRepository todoRepository; private final WeatherClient weatherClient; + @Transactional public TodoSaveResponse saveTodo(AuthUser authUser, TodoSaveRequest todoSaveRequest) { + User user = User.fromAuthUser(authUser); String weather = weatherClient.getTodayWeather(); @@ -43,10 +46,11 @@ public TodoSaveResponse saveTodo(AuthUser authUser, TodoSaveRequest todoSaveRequ savedTodo.getTitle(), savedTodo.getContents(), weather, - new UserResponse(user.getId(), user.getEmail()) + new UserResponse(user.getId(), user.getEmail(), user.getNickname()) ); } + @Transactional(readOnly = true) public Page getTodos(int page, int size) { Pageable pageable = PageRequest.of(page - 1, size); @@ -57,12 +61,13 @@ public Page getTodos(int page, int size) { todo.getTitle(), todo.getContents(), todo.getWeather(), - new UserResponse(todo.getUser().getId(), todo.getUser().getEmail()), + new UserResponse(todo.getUser().getId(), todo.getUser().getEmail(), todo.getUser()), todo.getCreatedAt(), todo.getModifiedAt() )); } + @Transactional(readOnly = true) public TodoResponse getTodo(long todoId) { Todo todo = todoRepository.findByIdWithUser(todoId) .orElseThrow(() -> new InvalidRequestException("Todo not found")); @@ -74,7 +79,7 @@ public TodoResponse getTodo(long todoId) { todo.getTitle(), todo.getContents(), todo.getWeather(), - new UserResponse(user.getId(), user.getEmail()), + new UserResponse(user.getId(), user.getEmail(), user.getNickname()), todo.getCreatedAt(), todo.getModifiedAt() ); From 886100d4a0b1828b527b9c094d462e3684acbb15 Mon Sep 17 00:00:00 2001 From: ParkKyoungMin Date: Thu, 13 Mar 2025 14:22:37 +0900 Subject: [PATCH 2/5] =?UTF-8?q?Level=201-2=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20=ED=80=B4=EC=A6=88=20-=20@JWT=EC=9D=98=20?= =?UTF-8?q?=EC=9D=B4=ED=95=B4=20User,=20UserResponse,=20UserService,=20Jwt?= =?UTF-8?q?Util,=20JwtFilter=20=EB=93=B1=20=EC=B4=9D=2011=EA=B0=9C?= =?UTF-8?q?=EC=9D=98=20java=EC=BD=94=EB=93=9C=EC=97=90=20nickname=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1=20=EC=A1=B0=ED=9A=8C=20=EA=B8=B0=EB=8A=A5?= =?UTF-8?q?=EC=9D=84=20=EC=B6=94=EA=B0=80=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/expert/config/AuthUserArgumentResolver.java | 3 ++- src/main/java/org/example/expert/config/JwtFilter.java | 1 + src/main/java/org/example/expert/config/JwtUtil.java | 5 ++++- .../expert/domain/auth/dto/request/SignupRequest.java | 3 +++ .../example/expert/domain/auth/service/AuthService.java | 5 +++-- .../expert/domain/comment/service/CommentService.java | 4 ++-- .../org/example/expert/domain/common/dto/AuthUser.java | 4 +++- .../expert/domain/manager/service/ManagerService.java | 4 ++-- .../expert/domain/user/dto/response/UserResponse.java | 4 +++- .../java/org/example/expert/domain/user/entity/User.java | 9 ++++++--- .../example/expert/domain/user/service/UserService.java | 2 +- 11 files changed, 30 insertions(+), 14 deletions(-) diff --git a/src/main/java/org/example/expert/config/AuthUserArgumentResolver.java b/src/main/java/org/example/expert/config/AuthUserArgumentResolver.java index db00211de..53a8c0991 100644 --- a/src/main/java/org/example/expert/config/AuthUserArgumentResolver.java +++ b/src/main/java/org/example/expert/config/AuthUserArgumentResolver.java @@ -39,8 +39,9 @@ public Object resolveArgument( // JwtFilter 에서 set 한 userId, email, userRole 값을 가져옴 Long userId = (Long) request.getAttribute("userId"); String email = (String) request.getAttribute("email"); + String nickname = (String) request.getAttribute("nickname"); UserRole userRole = UserRole.of((String) request.getAttribute("userRole")); - return new AuthUser(userId, email, userRole); + return new AuthUser(userId, email, nickname, userRole); } } diff --git a/src/main/java/org/example/expert/config/JwtFilter.java b/src/main/java/org/example/expert/config/JwtFilter.java index 03908abe1..803a0c7d6 100644 --- a/src/main/java/org/example/expert/config/JwtFilter.java +++ b/src/main/java/org/example/expert/config/JwtFilter.java @@ -59,6 +59,7 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterCha httpRequest.setAttribute("userId", Long.parseLong(claims.getSubject())); httpRequest.setAttribute("email", claims.get("email")); + httpRequest.setAttribute("nickname", claims.get("nickname", String.class)); httpRequest.setAttribute("userRole", claims.get("userRole")); if (url.startsWith("/admin")) { diff --git a/src/main/java/org/example/expert/config/JwtUtil.java b/src/main/java/org/example/expert/config/JwtUtil.java index 07e0a2c7c..70fd87f5b 100644 --- a/src/main/java/org/example/expert/config/JwtUtil.java +++ b/src/main/java/org/example/expert/config/JwtUtil.java @@ -5,6 +5,7 @@ import io.jsonwebtoken.SignatureAlgorithm; import io.jsonwebtoken.security.Keys; import jakarta.annotation.PostConstruct; +import lombok.Getter; import lombok.extern.slf4j.Slf4j; import org.example.expert.domain.common.exception.ServerException; import org.example.expert.domain.user.enums.UserRole; @@ -18,6 +19,7 @@ @Slf4j(topic = "JwtUtil") @Component +@Getter public class JwtUtil { private static final String BEARER_PREFIX = "Bearer "; @@ -34,13 +36,14 @@ public void init() { key = Keys.hmacShaKeyFor(bytes); } - public String createToken(Long userId, String email, UserRole userRole) { + public String createToken(Long userId, String email, String nickname, UserRole userRole) { Date date = new Date(); return BEARER_PREFIX + Jwts.builder() .setSubject(String.valueOf(userId)) .claim("email", email) + .claim("nickname", nickname) .claim("userRole", userRole) .setExpiration(new Date(date.getTime() + TOKEN_TIME)) .setIssuedAt(date) // 발급일 diff --git a/src/main/java/org/example/expert/domain/auth/dto/request/SignupRequest.java b/src/main/java/org/example/expert/domain/auth/dto/request/SignupRequest.java index cdb103690..36a12a407 100644 --- a/src/main/java/org/example/expert/domain/auth/dto/request/SignupRequest.java +++ b/src/main/java/org/example/expert/domain/auth/dto/request/SignupRequest.java @@ -16,5 +16,8 @@ public class SignupRequest { @NotBlank private String password; @NotBlank + private String nickname; + @NotBlank private String userRole; + } diff --git a/src/main/java/org/example/expert/domain/auth/service/AuthService.java b/src/main/java/org/example/expert/domain/auth/service/AuthService.java index a662239dc..ba0bd9796 100644 --- a/src/main/java/org/example/expert/domain/auth/service/AuthService.java +++ b/src/main/java/org/example/expert/domain/auth/service/AuthService.java @@ -38,11 +38,12 @@ public SignupResponse signup(SignupRequest signupRequest) { User newUser = new User( signupRequest.getEmail(), encodedPassword, + signupRequest.getNickname(), userRole ); User savedUser = userRepository.save(newUser); - String bearerToken = jwtUtil.createToken(savedUser.getId(), savedUser.getEmail(), userRole); + String bearerToken = jwtUtil.createToken(savedUser.getId(), savedUser.getEmail(), savedUser.getNickname(), userRole); return new SignupResponse(bearerToken); } @@ -56,7 +57,7 @@ public SigninResponse signin(SigninRequest signinRequest) { throw new AuthException("잘못된 비밀번호입니다."); } - String bearerToken = jwtUtil.createToken(user.getId(), user.getEmail(), user.getUserRole()); + String bearerToken = jwtUtil.createToken(user.getId(), user.getEmail(), user.getNickname(), user.getUserRole()); return new SigninResponse(bearerToken); } diff --git a/src/main/java/org/example/expert/domain/comment/service/CommentService.java b/src/main/java/org/example/expert/domain/comment/service/CommentService.java index 37f857491..3da98ba15 100644 --- a/src/main/java/org/example/expert/domain/comment/service/CommentService.java +++ b/src/main/java/org/example/expert/domain/comment/service/CommentService.java @@ -43,7 +43,7 @@ public CommentSaveResponse saveComment(AuthUser authUser, long todoId, CommentSa return new CommentSaveResponse( savedComment.getId(), savedComment.getContents(), - new UserResponse(user.getId(), user.getEmail()) + new UserResponse(user.getId(), user.getEmail(), user.getNickname()) ); } @@ -56,7 +56,7 @@ public List getComments(long todoId) { CommentResponse dto = new CommentResponse( comment.getId(), comment.getContents(), - new UserResponse(user.getId(), user.getEmail()) + new UserResponse(user.getId(), user.getEmail(), user.getNickname()) ); dtoList.add(dto); } diff --git a/src/main/java/org/example/expert/domain/common/dto/AuthUser.java b/src/main/java/org/example/expert/domain/common/dto/AuthUser.java index 7f4bc52e1..436ce262c 100644 --- a/src/main/java/org/example/expert/domain/common/dto/AuthUser.java +++ b/src/main/java/org/example/expert/domain/common/dto/AuthUser.java @@ -8,11 +8,13 @@ public class AuthUser { private final Long id; private final String email; + private final String nickname; private final UserRole userRole; - public AuthUser(Long id, String email, UserRole userRole) { + public AuthUser(Long id, String email, String nickname, UserRole userRole) { this.id = id; this.email = email; + this.nickname = nickname; this.userRole = userRole; } } diff --git a/src/main/java/org/example/expert/domain/manager/service/ManagerService.java b/src/main/java/org/example/expert/domain/manager/service/ManagerService.java index 9e14df0f1..6f3fdbb3b 100644 --- a/src/main/java/org/example/expert/domain/manager/service/ManagerService.java +++ b/src/main/java/org/example/expert/domain/manager/service/ManagerService.java @@ -52,7 +52,7 @@ public ManagerSaveResponse saveManager(AuthUser authUser, long todoId, ManagerSa return new ManagerSaveResponse( savedManagerUser.getId(), - new UserResponse(managerUser.getId(), managerUser.getEmail()) + new UserResponse(managerUser.getId(), managerUser.getEmail(), managerUser.getNickname()) ); } @@ -67,7 +67,7 @@ public List getManagers(long todoId) { User user = manager.getUser(); dtoList.add(new ManagerResponse( manager.getId(), - new UserResponse(user.getId(), user.getEmail()) + new UserResponse(user.getId(), user.getEmail(), user.getNickname()) )); } return dtoList; diff --git a/src/main/java/org/example/expert/domain/user/dto/response/UserResponse.java b/src/main/java/org/example/expert/domain/user/dto/response/UserResponse.java index 23794a3ca..91f3240aa 100644 --- a/src/main/java/org/example/expert/domain/user/dto/response/UserResponse.java +++ b/src/main/java/org/example/expert/domain/user/dto/response/UserResponse.java @@ -7,9 +7,11 @@ public class UserResponse { private final Long id; private final String email; + private final String nickname; - public UserResponse(Long id, String email) { + public UserResponse(Long id, String email, String nickname) { this.id = id; this.email = email; + this.nickname = nickname; } } diff --git a/src/main/java/org/example/expert/domain/user/entity/User.java b/src/main/java/org/example/expert/domain/user/entity/User.java index 30a0cc54f..5fa4f011a 100644 --- a/src/main/java/org/example/expert/domain/user/entity/User.java +++ b/src/main/java/org/example/expert/domain/user/entity/User.java @@ -18,23 +18,26 @@ public class User extends Timestamped { @Column(unique = true) private String email; private String password; + private String nickname; @Enumerated(EnumType.STRING) private UserRole userRole; - public User(String email, String password, UserRole userRole) { + public User(String email, String password, String nickname, UserRole userRole) { this.email = email; this.password = password; + this.nickname = nickname; this.userRole = userRole; } - private User(Long id, String email, UserRole userRole) { + private User(Long id, String email, String nickname,UserRole userRole) { this.id = id; this.email = email; + this.nickname = nickname; this.userRole = userRole; } public static User fromAuthUser(AuthUser authUser) { - return new User(authUser.getId(), authUser.getEmail(), authUser.getUserRole()); + return new User(authUser.getId(), authUser.getEmail(), authUser.getNickname(), authUser.getUserRole()); } public void changePassword(String password) { diff --git a/src/main/java/org/example/expert/domain/user/service/UserService.java b/src/main/java/org/example/expert/domain/user/service/UserService.java index 15baec417..15bdfa48b 100644 --- a/src/main/java/org/example/expert/domain/user/service/UserService.java +++ b/src/main/java/org/example/expert/domain/user/service/UserService.java @@ -20,7 +20,7 @@ public class UserService { public UserResponse getUser(long userId) { User user = userRepository.findById(userId).orElseThrow(() -> new InvalidRequestException("User not found")); - return new UserResponse(user.getId(), user.getEmail()); + return new UserResponse(user.getId(), user.getEmail(), user.getNickname()); } @Transactional From 084b2ba0efd07472d3c7ea45efdaf9f79b551c86 Mon Sep 17 00:00:00 2001 From: ParkKyoungMin Date: Thu, 13 Mar 2025 14:25:04 +0900 Subject: [PATCH 3/5] =?UTF-8?q?Level=201-3=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EA=B0=9C=EC=84=A0=20=ED=80=B4=EC=A6=88=20-=20JPA=EC=9D=98=20?= =?UTF-8?q?=EC=9D=B4=ED=95=B4=20Todo=20Controller=EC=97=90=20searchTodo=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=EC=9D=84=20=EC=B6=94=EA=B0=80=ED=95=98?= =?UTF-8?q?=EA=B3=A0=20=EC=9D=B4=EB=A5=BC=20weather=EC=A1=B0=EA=B1=B4?= =?UTF-8?q?=EA=B3=BC=20=EC=88=98=EC=A0=95=EC=9D=BC=20=EA=B8=B0=EC=A4=80?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EC=A1=B0=ED=9A=8C=EA=B0=80=20=EA=B0=80?= =?UTF-8?q?=EB=8A=A5=ED=95=98=EA=B2=8C=20=EB=81=94=20=20=ED=95=A8.=20?= =?UTF-8?q?=EA=B8=B0=EA=B0=84=EC=9D=98=20=EC=8B=9C=EC=9E=91=EA=B3=BC=20?= =?UTF-8?q?=EB=81=9D=20=EC=A1=B0=EA=B1=B4=EC=9D=B4=20=EC=97=86=EC=9D=84=20?= =?UTF-8?q?=EC=8B=9C=EC=97=90=EB=8F=84=20JPQL=EC=9D=B4=20=EB=8F=99?= =?UTF-8?q?=EC=9E=91=ED=95=A0=20=EC=88=98=20=EC=9E=88=EA=B2=8C=EB=81=94=20?= =?UTF-8?q?=EA=B8=B0=EB=B3=B8=20=EC=84=A4=EC=A0=95=20=EA=B0=92=EC=9D=84=20?= =?UTF-8?q?=EC=A7=80=EC=A0=95=ED=95=B4=EB=91=90=EC=97=88=EC=9D=8C.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../todo/controller/TodoController.java | 16 ++++++++++++ .../todo/repository/TodoRepository.java | 17 ++++++++++++ .../domain/todo/service/TodoService.java | 26 ++++++++++++++++++- 3 files changed, 58 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/example/expert/domain/todo/controller/TodoController.java b/src/main/java/org/example/expert/domain/todo/controller/TodoController.java index eed1a1b46..b238541bf 100644 --- a/src/main/java/org/example/expert/domain/todo/controller/TodoController.java +++ b/src/main/java/org/example/expert/domain/todo/controller/TodoController.java @@ -9,9 +9,13 @@ import org.example.expert.domain.todo.dto.response.TodoSaveResponse; import org.example.expert.domain.todo.service.TodoService; import org.springframework.data.domain.Page; +import org.springframework.format.annotation.DateTimeFormat; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.time.LocalDateTime; +import java.util.Date; + @RestController @RequiredArgsConstructor public class TodoController { @@ -38,4 +42,16 @@ public ResponseEntity> getTodos( public ResponseEntity getTodo(@PathVariable long todoId) { return ResponseEntity.ok(todoService.getTodo(todoId)); } + + @GetMapping("/todos/search") + public Page searchTodos( + @RequestParam(required = false) String weather, + @RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)LocalDateTime startDate, + @RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)LocalDateTime endDate, + @RequestParam(defaultValue = "1") int page, + @RequestParam(defaultValue = "10") int size + ) { + return todoService.searchTodos(weather, startDate, endDate, page, size); + } + } diff --git a/src/main/java/org/example/expert/domain/todo/repository/TodoRepository.java b/src/main/java/org/example/expert/domain/todo/repository/TodoRepository.java index a3e4e0749..586216fdc 100644 --- a/src/main/java/org/example/expert/domain/todo/repository/TodoRepository.java +++ b/src/main/java/org/example/expert/domain/todo/repository/TodoRepository.java @@ -7,6 +7,7 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; +import java.time.LocalDateTime; import java.util.Optional; public interface TodoRepository extends JpaRepository { @@ -18,4 +19,20 @@ public interface TodoRepository extends JpaRepository { "LEFT JOIN t.user " + "WHERE t.id = :todoId") Optional findByIdWithUser(@Param("todoId") Long todoId); + + @Query(" SELECT t FROM Todo t " + + " LEFT JOIN FETCH t.user " + + " WHERE (:weather IS NULL OR t.weather = :weather) " + + " AND (:startDate IS NULL OR t.modifiedAt >= :startDate) " + + " AND (:endDate IS NULL OR t.modifiedAt <= :endDate) " + + " ORDER BY t.modifiedAt DESC") + + Page findAllByWeatherAndDateRange( + @Param("weather") String weather, + @Param("startDate")LocalDateTime startDate, + @Param("endDate") LocalDateTime endDate, + Pageable pageable + ); + + } diff --git a/src/main/java/org/example/expert/domain/todo/service/TodoService.java b/src/main/java/org/example/expert/domain/todo/service/TodoService.java index 28b883553..5af762383 100644 --- a/src/main/java/org/example/expert/domain/todo/service/TodoService.java +++ b/src/main/java/org/example/expert/domain/todo/service/TodoService.java @@ -61,7 +61,31 @@ public Page getTodos(int page, int size) { todo.getTitle(), todo.getContents(), todo.getWeather(), - new UserResponse(todo.getUser().getId(), todo.getUser().getEmail(), todo.getUser()), + new UserResponse(todo.getUser().getId(), todo.getUser().getEmail(), todo.getUser().getNickname()), + todo.getCreatedAt(), + todo.getModifiedAt() + )); + } + + @Transactional(readOnly = true) + public Page searchTodos(String weather, LocalDateTime startDate, LocalDateTime endDate, int page, int size) { + Pageable pageable = PageRequest.of(page - 1, size); + + if (startDate == null) { + startDate = LocalDateTime.of(1000, 1, 1, 0, 0); + } + if (endDate == null) { + endDate = LocalDateTime.of(9999, 12, 31, 23, 59); + } + + Page todos = todoRepository.findAllByWeatherAndDateRange(weather, startDate, endDate, pageable); + + return todos.map(todo -> new TodoResponse( + todo.getId(), + todo.getTitle(), + todo.getContents(), + todo.getWeather(), + new UserResponse(todo.getUser().getId(), todo.getUser().getEmail(), todo.getUser().getNickname()), todo.getCreatedAt(), todo.getModifiedAt() )); From abbbb9168dbda082eb3059bbedffec977b5ac80d Mon Sep 17 00:00:00 2001 From: ParkKyoungMin Date: Thu, 13 Mar 2025 14:26:00 +0900 Subject: [PATCH 4/5] =?UTF-8?q?Level=201-4=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=20=EC=BD=94=EB=93=9C=20=ED=80=B4=EC=A6=88=20=EC=BB=A8=ED=8A=B8?= =?UTF-8?q?=EB=A1=A4=EB=9F=AC=20=ED=85=8C=EC=8A=A4=ED=8A=B8=EC=9D=98=20?= =?UTF-8?q?=EC=9D=B4=ED=95=B4=20todo=20=EB=8B=A8=EA=B1=B4=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=EC=8B=9C=20todo=EA=B0=80=20=EC=A1=B4=EC=9E=AC?= =?UTF-8?q?=ED=95=98=EC=A7=80=20=EC=95=8A=EC=9D=84=20=EB=95=8C=20=EC=98=88?= =?UTF-8?q?=EC=99=B8=EA=B0=80=20=EB=B0=9C=EC=83=9D=ED=95=B4=EC=95=BC?= =?UTF-8?q?=ED=95=98=EB=8A=94=EB=8D=B0=20=EC=A0=95=EC=83=81=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=20=EC=B2=98=EB=9F=BC=20=EC=B6=9C=EB=A0=A5=EB=90=98?= =?UTF-8?q?=EB=8A=94=20=EA=B2=83=EC=9D=84=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/todo/controller/TodoControllerTest.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/test/java/org/example/expert/domain/todo/controller/TodoControllerTest.java b/src/test/java/org/example/expert/domain/todo/controller/TodoControllerTest.java index 737193874..af90cd690 100644 --- a/src/test/java/org/example/expert/domain/todo/controller/TodoControllerTest.java +++ b/src/test/java/org/example/expert/domain/todo/controller/TodoControllerTest.java @@ -35,9 +35,9 @@ class TodoControllerTest { // given long todoId = 1L; String title = "title"; - AuthUser authUser = new AuthUser(1L, "email", UserRole.USER); + AuthUser authUser = new AuthUser(1L, "email", "nickname",UserRole.USER); User user = User.fromAuthUser(authUser); - UserResponse userResponse = new UserResponse(user.getId(), user.getEmail()); + UserResponse userResponse = new UserResponse(user.getId(), user.getEmail(), user.getNickname()); TodoResponse response = new TodoResponse( todoId, title, @@ -69,9 +69,9 @@ class TodoControllerTest { // then mockMvc.perform(get("/todos/{todoId}", todoId)) - .andExpect(status().isOk()) - .andExpect(jsonPath("$.status").value(HttpStatus.OK.name())) - .andExpect(jsonPath("$.code").value(HttpStatus.OK.value())) + .andExpect(status().isBadRequest()) + .andExpect(jsonPath("$.status").value(HttpStatus.BAD_REQUEST.name())) + .andExpect(jsonPath("$.code").value(HttpStatus.BAD_REQUEST.value())) .andExpect(jsonPath("$.message").value("Todo not found")); } } From 2139313a71af3b39ed94ceec71405c87c1b10a63 Mon Sep 17 00:00:00 2001 From: ParkKyoungMin Date: Thu, 13 Mar 2025 14:56:41 +0900 Subject: [PATCH 5/5] =?UTF-8?q?Level=201-5=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EA=B0=9C=EC=84=A0=20=ED=80=B4=EC=A6=88=20-=20AOP=EC=9D=98=20?= =?UTF-8?q?=EC=9D=B4=ED=95=B4=20UserAdminController=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=EC=9D=98=20changeUserRole=20=EB=A9=94=EC=86=8C?= =?UTF-8?q?=EB=93=9C=EA=B0=80=20=EC=8B=A4=ED=96=89=20=ED=9B=84=20=EB=8F=99?= =?UTF-8?q?=EC=9E=91=ED=95=98=EA=B3=A0=20=EC=9E=88=EC=9D=8C=20@After=20->?= =?UTF-8?q?=20@Before=20=EB=A1=9C=20=EC=A0=84=ED=99=98=20=ED=83=80?= =?UTF-8?q?=EA=B2=9F=20UserAdminController.changeUserRole?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/example/expert/aop/AdminAccessLoggingAspect.java | 3 ++- .../example/expert/domain/todo/controller/TodoController.java | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/example/expert/aop/AdminAccessLoggingAspect.java b/src/main/java/org/example/expert/aop/AdminAccessLoggingAspect.java index c90e8c792..3286b27fd 100644 --- a/src/main/java/org/example/expert/aop/AdminAccessLoggingAspect.java +++ b/src/main/java/org/example/expert/aop/AdminAccessLoggingAspect.java @@ -6,6 +6,7 @@ import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; import org.springframework.stereotype.Component; import java.time.LocalDateTime; @@ -18,7 +19,7 @@ public class AdminAccessLoggingAspect { private final HttpServletRequest request; - @After("execution(* org.example.expert.domain.user.controller.UserController.getUser(..))") + @Before("execution(* org.example.expert.domain.user.controller.UserAdminController.changeUserRole(..))") public void logAfterChangeUserRole(JoinPoint joinPoint) { String userId = String.valueOf(request.getAttribute("userId")); String requestUrl = request.getRequestURI(); diff --git a/src/main/java/org/example/expert/domain/todo/controller/TodoController.java b/src/main/java/org/example/expert/domain/todo/controller/TodoController.java index b238541bf..ed25354b0 100644 --- a/src/main/java/org/example/expert/domain/todo/controller/TodoController.java +++ b/src/main/java/org/example/expert/domain/todo/controller/TodoController.java @@ -14,7 +14,6 @@ import org.springframework.web.bind.annotation.*; import java.time.LocalDateTime; -import java.util.Date; @RestController @RequiredArgsConstructor