diff --git a/src/main/java/com/jiyunio/todolist/domain/member/MemberController.java b/src/main/java/com/jiyunio/todolist/domain/member/MemberController.java index 6cbfc20..eb44cd8 100644 --- a/src/main/java/com/jiyunio/todolist/domain/member/MemberController.java +++ b/src/main/java/com/jiyunio/todolist/domain/member/MemberController.java @@ -4,6 +4,7 @@ import com.jiyunio.todolist.domain.member.dto.req.SignInReq; import com.jiyunio.todolist.domain.member.dto.req.SignUpReq; import com.jiyunio.todolist.domain.member.dto.res.MemberRes; +import com.jiyunio.todolist.domain.member.dto.res.SignInRes; import com.jiyunio.todolist.global.customError.ErrorDTO; import com.jiyunio.todolist.global.jwt.CustomUserDetails; import com.jiyunio.todolist.global.jwt.JwtDTO; @@ -43,7 +44,7 @@ public ResponseEntity signUp(@Valid @RequestBody SignUpReq signUpReq) @ApiResponse(responseCode = "200", description = "로그인 성공", content = @Content(schema = @Schema(implementation = MemberRes.class))) @ApiResponse(responseCode = "400", description = "빈칸", content = @Content(schema = @Schema(implementation = ErrorDTO.class))) @ApiResponse(responseCode = "401", description = "회원 및 비밀번호 불일치", content = @Content(schema = @Schema(implementation = ErrorDTO.class))) - public ResponseEntity signIn(@Valid @RequestBody SignInReq signInReq) { + public ResponseEntity signIn(@Valid @RequestBody SignInReq signInReq) { return ResponseEntity.ok(memberService.signIn(signInReq)); } diff --git a/src/main/java/com/jiyunio/todolist/domain/member/MemberService.java b/src/main/java/com/jiyunio/todolist/domain/member/MemberService.java index bf49127..5f26c5b 100644 --- a/src/main/java/com/jiyunio/todolist/domain/member/MemberService.java +++ b/src/main/java/com/jiyunio/todolist/domain/member/MemberService.java @@ -6,11 +6,11 @@ import com.jiyunio.todolist.domain.member.dto.req.SignInReq; import com.jiyunio.todolist.domain.member.dto.req.SignUpReq; import com.jiyunio.todolist.domain.member.dto.res.MemberRes; +import com.jiyunio.todolist.domain.member.dto.res.SignInRes; import com.jiyunio.todolist.domain.todo.TodoService; import com.jiyunio.todolist.global.customError.CustomException; import com.jiyunio.todolist.global.customError.ErrorCode; import com.jiyunio.todolist.global.jwt.CustomAuthenticationProvider; -import com.jiyunio.todolist.global.jwt.JwtDTO; import com.jiyunio.todolist.global.jwt.JwtProvider; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; @@ -65,10 +65,15 @@ public MemberRes signUp(@Valid SignUpReq signUpReq) { throw new CustomException(HttpStatus.BAD_REQUEST, ErrorCode.NOT_SAME_CONFIRM_PASSWORD); } - public JwtDTO signIn(@Valid SignInReq signInReq) { + public SignInRes signIn(@Valid SignInReq signInReq) { UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(signInReq.getUserId(), signInReq.getUserPw()); Authentication authentication = authenticationProvider.authenticate(authenticationToken); - return jwtProvider.createToken(authentication); + String token = jwtProvider.createToken(authentication); + + return SignInRes.builder() + .userId(memberRepository.findByUserId(signInReq.getUserId()).get().getNickname()) + .token(token) + .build(); } public MemberRes getMember(String userId) { diff --git a/src/main/java/com/jiyunio/todolist/domain/member/dto/res/SignInRes.java b/src/main/java/com/jiyunio/todolist/domain/member/dto/res/SignInRes.java index 1e2b78f..c75f887 100644 --- a/src/main/java/com/jiyunio/todolist/domain/member/dto/res/SignInRes.java +++ b/src/main/java/com/jiyunio/todolist/domain/member/dto/res/SignInRes.java @@ -2,29 +2,18 @@ import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import lombok.Builder; -import lombok.Getter; -import lombok.Setter; +import lombok.*; @Getter @Setter +@Builder +@AllArgsConstructor(access = AccessLevel.PRIVATE) public class SignInRes { - @NotNull - @Schema(description = "회원의 id", example = "1") - private Long memberId; - @NotBlank @Schema(description = "회원의 userId", example = "qwe123") private String userId; @NotBlank + @Schema(description = "회원의 token") private String token; - - @Builder - protected SignInRes(Long memberId, String userId, String token) { - this.memberId = memberId; - this.userId = userId; - this.token = token; - } } diff --git a/src/main/java/com/jiyunio/todolist/domain/todo/TodoController.java b/src/main/java/com/jiyunio/todolist/domain/todo/TodoController.java index 33d448f..c3cdf00 100644 --- a/src/main/java/com/jiyunio/todolist/domain/todo/TodoController.java +++ b/src/main/java/com/jiyunio/todolist/domain/todo/TodoController.java @@ -72,4 +72,14 @@ public ResponseEntity deleteTodo(@Parameter(description = "todo의 .msg("todo 삭제 성공") .build()); } + + @DeleteMapping("/{todoListId}") + @Operation(summary = "todo list 삭제") + @ApiResponse(responseCode = "200", description = "todo list 삭제 성공", content = @Content(schema = @Schema(implementation = ResponseDTO.class))) + public ResponseEntity deleteTodoList(@Parameter(description = "todo의 id") @PathVariable Long todoListId) { + todoService.deleteTodoList(todoListId); + return ResponseEntity.ok(ResponseDTO.builder() + .msg("todolist 삭제 성공") + .build()); + } } diff --git a/src/main/java/com/jiyunio/todolist/domain/todo/TodoService.java b/src/main/java/com/jiyunio/todolist/domain/todo/TodoService.java index 90f446f..bf4587c 100644 --- a/src/main/java/com/jiyunio/todolist/domain/todo/TodoService.java +++ b/src/main/java/com/jiyunio/todolist/domain/todo/TodoService.java @@ -14,6 +14,7 @@ import com.jiyunio.todolist.global.customError.CustomException; import com.jiyunio.todolist.global.customError.ErrorCode; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; @@ -22,6 +23,7 @@ import java.util.List; import java.util.Objects; +@Slf4j @Service @RequiredArgsConstructor public class TodoService { @@ -48,6 +50,7 @@ public TodoRes createTodo(String userId, CreateTodoReq createTodo) { .categoryColor(category.getColor()) .build(); + todoRepository.save(todo); TodoList todoList = todoListRepository.findByUserIdAndTodoListDate(member.getUserId(), createTodo.getSetDate()).orElseThrow( () -> new CustomException(HttpStatus.NOT_FOUND, ErrorCode.NOT_EXIST_TODOLIST) @@ -67,7 +70,6 @@ public TodoListRes createTodoList(String userId, LocalDate todoListDate) { TodoList todoList = TodoList.builder() .userId(member.getUserId()) .todoListDate(todoListDate) - .isToday(checkToday(todoListDate)) .todos(new ArrayList<>()) .build(); @@ -125,8 +127,4 @@ public void deleteAllTodo(String userId) { todoListRepository.deleteAllByUserId(userId); } - public boolean checkToday(LocalDate localDate) { - LocalDate today = LocalDate.now(); - return Objects.equals(today, localDate); - } } diff --git a/src/main/java/com/jiyunio/todolist/domain/todo/domain/TodoList.java b/src/main/java/com/jiyunio/todolist/domain/todo/domain/TodoList.java index 2695eec..406750e 100644 --- a/src/main/java/com/jiyunio/todolist/domain/todo/domain/TodoList.java +++ b/src/main/java/com/jiyunio/todolist/domain/todo/domain/TodoList.java @@ -21,16 +21,13 @@ public class TodoList { private LocalDate todoListDate; - private boolean isToday; - @OneToMany(cascade = CascadeType.ALL) private List todos = new ArrayList<>(); @Builder - private TodoList(LocalDate todoListDate, String userId, boolean isToday, List todos) { + private TodoList(LocalDate todoListDate, String userId, List todos) { this.todoListDate = todoListDate; this.userId = userId; - this.isToday = isToday; this.todos = todos; } } diff --git a/src/main/java/com/jiyunio/todolist/domain/todo/dto/TodoListRes.java b/src/main/java/com/jiyunio/todolist/domain/todo/dto/TodoListRes.java index aafc75e..1f330bc 100644 --- a/src/main/java/com/jiyunio/todolist/domain/todo/dto/TodoListRes.java +++ b/src/main/java/com/jiyunio/todolist/domain/todo/dto/TodoListRes.java @@ -23,7 +23,6 @@ public static TodoListRes from(TodoList todoList) { return TodoListRes.builder() .todoListId(todoList.getId()) .todoListDate(todoList.getTodoListDate()) - .isToday(todoList.isToday()) .todoRes(todoList.getTodos().stream().map(TodoRes::from).toList()) .build(); } diff --git a/src/main/java/com/jiyunio/todolist/global/jwt/JwtProvider.java b/src/main/java/com/jiyunio/todolist/global/jwt/JwtProvider.java index d84db0b..d247278 100644 --- a/src/main/java/com/jiyunio/todolist/global/jwt/JwtProvider.java +++ b/src/main/java/com/jiyunio/todolist/global/jwt/JwtProvider.java @@ -32,7 +32,7 @@ public SecretKey getSecretKey() { return Keys.hmacShaKeyFor(Decoders.BASE64.decode(secretKey)); } - public JwtDTO createToken(Authentication authentication) { + public String createToken(Authentication authentication) { Date now = new Date(); String authority = authentication.getAuthorities().stream() .map(GrantedAuthority::getAuthority) @@ -48,7 +48,7 @@ public JwtDTO createToken(Authentication authentication) { .signWith(getSecretKey()) .compact(); - return new JwtDTO(accessToken); + return accessToken; } //SecurityContext에 인증된 클라이언트의 Authentication를 저장하기 위해 사용됨