diff --git a/src/main/java/com/seoultech/sanEseo/global/config/jwt/JwtAuthenticationFilter.java b/src/main/java/com/seoultech/sanEseo/global/config/jwt/JwtAuthenticationFilter.java index f64e682..a5ba43d 100644 --- a/src/main/java/com/seoultech/sanEseo/global/config/jwt/JwtAuthenticationFilter.java +++ b/src/main/java/com/seoultech/sanEseo/global/config/jwt/JwtAuthenticationFilter.java @@ -51,7 +51,12 @@ protected boolean shouldNotFilter(HttpServletRequest request) { skipPathList.add(new AntPathRequestMatcher("/api/auth/token/refresh", HttpMethod.POST.name())); skipPathList.add(new AntPathRequestMatcher("/api/oauth/kakao", HttpMethod.GET.name())); skipPathList.add(new AntPathRequestMatcher("/api/weather", HttpMethod.GET.name())); - skipPathList.add(new AntPathRequestMatcher("/api/posts/**", HttpMethod.GET.name())); + skipPathList.add(new AntPathRequestMatcher("/api/posts", HttpMethod.POST.name())); + skipPathList.add(new AntPathRequestMatcher("/api/posts", HttpMethod.PUT.name())); + skipPathList.add(new AntPathRequestMatcher("/api/posts", HttpMethod.DELETE.name())); + skipPathList.add(new AntPathRequestMatcher("/api/posts/*/likes", HttpMethod.GET.name())); + skipPathList.add(new AntPathRequestMatcher("/api/posts/*/reviews", HttpMethod.GET.name())); + skipPathList.add(new AntPathRequestMatcher("/api/districts/**", HttpMethod.GET.name())); skipPathList.add(new AntPathRequestMatcher("/h2-console/**")); diff --git a/src/main/java/com/seoultech/sanEseo/global/config/jwt/JwtExceptionFilter.java b/src/main/java/com/seoultech/sanEseo/global/config/jwt/JwtExceptionFilter.java index 8dd1aa5..6924614 100644 --- a/src/main/java/com/seoultech/sanEseo/global/config/jwt/JwtExceptionFilter.java +++ b/src/main/java/com/seoultech/sanEseo/global/config/jwt/JwtExceptionFilter.java @@ -36,9 +36,11 @@ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse filterChain.doFilter(request, response); } catch (BusinessException e) { errorLoggerHelper.log(wrapper, e.getErrorType(), e.getMessage()); + e.printStackTrace(); setErrorResponse(e.getErrorType(), e.getMessage(), response); } catch (Exception e) { errorLoggerHelper.log(wrapper, ErrorType.INTERNAL_ERROR, e.getMessage()); + e.printStackTrace(); setErrorResponse(ErrorType.INTERNAL_ERROR, "서버 에러 ", response); } } diff --git a/src/main/java/com/seoultech/sanEseo/global/config/jwt/TokenProvider.java b/src/main/java/com/seoultech/sanEseo/global/config/jwt/TokenProvider.java index 7a5f005..2f38815 100644 --- a/src/main/java/com/seoultech/sanEseo/global/config/jwt/TokenProvider.java +++ b/src/main/java/com/seoultech/sanEseo/global/config/jwt/TokenProvider.java @@ -84,7 +84,7 @@ public Authentication getAuthentication(String token) { Collections.singleton(new SimpleGrantedAuthority("ROLE_MEMBER")); return new UsernamePasswordAuthenticationToken( - new User(claims.getSubject(), "", authorities), token, authorities + new User(claims.get("id").toString(), "", authorities), token, authorities ); } diff --git a/src/main/java/com/seoultech/sanEseo/global/config/web/AuthMember.java b/src/main/java/com/seoultech/sanEseo/global/config/web/AuthMember.java index b8ea1b5..1e827a4 100644 --- a/src/main/java/com/seoultech/sanEseo/global/config/web/AuthMember.java +++ b/src/main/java/com/seoultech/sanEseo/global/config/web/AuthMember.java @@ -7,6 +7,5 @@ @Getter @AllArgsConstructor public class AuthMember { - - private String email; + private Long id; } diff --git a/src/main/java/com/seoultech/sanEseo/global/config/web/LoginMemberArgumentResolver.java b/src/main/java/com/seoultech/sanEseo/global/config/web/LoginMemberArgumentResolver.java index 9c4a83c..6821af1 100644 --- a/src/main/java/com/seoultech/sanEseo/global/config/web/LoginMemberArgumentResolver.java +++ b/src/main/java/com/seoultech/sanEseo/global/config/web/LoginMemberArgumentResolver.java @@ -24,8 +24,10 @@ public boolean supportsParameter(MethodParameter parameter) { @Override public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); User user = (User) authentication.getPrincipal(); - return new AuthMember(user.getUsername()); + + return new AuthMember(Long.parseLong(user.getUsername())); } } diff --git a/src/main/java/com/seoultech/sanEseo/global/exception/GlobalExceptionHandler.java b/src/main/java/com/seoultech/sanEseo/global/exception/GlobalExceptionHandler.java index 6401f91..2b5e017 100644 --- a/src/main/java/com/seoultech/sanEseo/global/exception/GlobalExceptionHandler.java +++ b/src/main/java/com/seoultech/sanEseo/global/exception/GlobalExceptionHandler.java @@ -29,24 +29,28 @@ public class GlobalExceptionHandler { @ExceptionHandler(BusinessException.class) public ResponseEntity<?> handleBusinessException(BusinessException e, RequestWrapper request) throws IOException { errorLoggerHelper.log(request, e.getErrorType(), e.getMessage()); + e.printStackTrace(); return ApiResponse.fail(e.getErrorType(), e.getMessage()); } @ExceptionHandler(ConstraintViolationException.class) public ResponseEntity<?> handleConstraintViolationException(ConstraintViolationException e, RequestWrapper request) throws IOException { errorLoggerHelper.log(request, ErrorType.INVALID_INPUT_VALUE, e.getMessage()); + e.printStackTrace(); return ApiResponse.fail(ErrorType.INVALID_INPUT_VALUE, "잘못된 값입니다."); } @ExceptionHandler(EntityNotFoundException.class) public ResponseEntity<?> handleEntityNotFoundException(EntityNotFoundException e, RequestWrapper request) throws IOException { errorLoggerHelper.log(request, ErrorType.ENTITY_NOT_FOUND, e.getMessage()); + e.printStackTrace(); return ApiResponse.fail(ErrorType.ENTITY_NOT_FOUND, e.getMessage()); } @ExceptionHandler(MethodArgumentNotValidException.class) public ResponseEntity<?> handleIllegalArgumentException(MethodArgumentNotValidException e, RequestWrapper request) throws IOException { errorLoggerHelper.log(request, ErrorType.INVALID_INPUT_VALUE, e.getBindingResult().getAllErrors().get(0).getDefaultMessage()); + e.printStackTrace(); return ApiResponse.fail(ErrorType.INVALID_INPUT_VALUE, e.getBindingResult().getAllErrors().get(0).getDefaultMessage()); } @@ -54,6 +58,7 @@ public ResponseEntity<?> handleIllegalArgumentException(MethodArgumentNotValidEx @ExceptionHandler(Exception.class) public ResponseEntity<?> handleException(Exception e, RequestWrapper request) throws IOException { errorLoggerHelper.log(request, ErrorType.INTERNAL_ERROR, e.getMessage()); + e.printStackTrace(); return ApiResponse.fail(ErrorType.INTERNAL_ERROR, "내부 서버 오류가 발생했습니다."); } } diff --git a/src/main/java/com/seoultech/sanEseo/global/response/ApiResponse.java b/src/main/java/com/seoultech/sanEseo/global/response/ApiResponse.java index 936ef47..d572315 100644 --- a/src/main/java/com/seoultech/sanEseo/global/response/ApiResponse.java +++ b/src/main/java/com/seoultech/sanEseo/global/response/ApiResponse.java @@ -13,18 +13,10 @@ public static ResponseEntity<?> ok(String message){ } public static ResponseEntity<?> ok(String message, Object data){ - if (data instanceof Collection && ((Collection<?>) data).isEmpty()) { - return noContent(message); // 데이터가 없을 때 적절한 응답 반환 - } SuccessResponse response = new SuccessResponse(message, data); return ResponseEntity.ok(response); } - public static ResponseEntity<?> noContent(String message) { - // HTTP 204 No Content 상태와 함께 메시지 반환 - return ResponseEntity.noContent().header("X-Message", message).build(); - } - public static ResponseEntity<?> fail(ErrorType errorType, String message){ FailResponse response = new FailResponse(message, errorType.getErrorCode()); return ResponseEntity.status(errorType.getStatusCode()).body(response); diff --git a/src/main/java/com/seoultech/sanEseo/like/adapter/LikeAdapter.java b/src/main/java/com/seoultech/sanEseo/like/adapter/LikeAdapter.java index e8dcf49..cbf9410 100644 --- a/src/main/java/com/seoultech/sanEseo/like/adapter/LikeAdapter.java +++ b/src/main/java/com/seoultech/sanEseo/like/adapter/LikeAdapter.java @@ -34,5 +34,10 @@ public int countByPostId(Long postId) { return likeRepository.countByPostId(postId); } + @Override + public boolean existsByPostIdAndMemberId(Long postId, Long memberId) { + return likeRepository.existsByPostIdAndMemberId(postId, memberId); + } + } diff --git a/src/main/java/com/seoultech/sanEseo/like/adapter/LikeController.java b/src/main/java/com/seoultech/sanEseo/like/adapter/LikeController.java index 590418b..b9b6622 100644 --- a/src/main/java/com/seoultech/sanEseo/like/adapter/LikeController.java +++ b/src/main/java/com/seoultech/sanEseo/like/adapter/LikeController.java @@ -1,5 +1,7 @@ package com.seoultech.sanEseo.like.adapter; +import com.seoultech.sanEseo.global.config.web.AuthMember; +import com.seoultech.sanEseo.global.config.web.LoginMember; import com.seoultech.sanEseo.global.response.ApiResponse; import com.seoultech.sanEseo.like.application.service.AddLikeRequest; import com.seoultech.sanEseo.like.application.service.GetLikeResponse; @@ -18,14 +20,14 @@ public LikeController(LikeService likeService) { } @PostMapping("/likes") - public ResponseEntity<?> addLike(@RequestBody AddLikeRequest request) { - likeService.addLike(request); + public ResponseEntity<?> addLike(@LoginMember AuthMember member, @RequestBody AddLikeRequest request) { + likeService.addLike(member.getId(), request); return ApiResponse.ok("좋아요가 추가되었습니다."); } - @DeleteMapping("/posts/{postId}/members/{memberId}/likes") - public ResponseEntity<?> deleteLike(@PathVariable Long postId, @PathVariable Long memberId) { - likeService.deleteLike(postId, memberId); + @DeleteMapping("/posts/{postId}/members/likes") + public ResponseEntity<?> deleteLike(@LoginMember AuthMember member, @PathVariable Long postId) { + likeService.deleteLike(postId, member.getId()); return ApiResponse.ok("좋아요가 삭제되었습니다."); } @@ -35,4 +37,10 @@ public ResponseEntity<?> getLikeCount(@PathVariable Long postId) { return ApiResponse.ok("좋아요 수 조회 성공", new GetLikeResponse(postId, likeCount)); } + @GetMapping("/posts/{postId}/members/likes") + public ResponseEntity<?> hasMemberLikedPost(@LoginMember AuthMember authMember, @PathVariable Long postId) { + boolean hasLiked = likeService.hasMemberLikedPost(authMember.getId(), postId); + return ApiResponse.ok("좋아요 여부 조회 성공", hasLiked); + } + } diff --git a/src/main/java/com/seoultech/sanEseo/like/adapter/LikeRepository.java b/src/main/java/com/seoultech/sanEseo/like/adapter/LikeRepository.java index 9b032ad..16a38d8 100644 --- a/src/main/java/com/seoultech/sanEseo/like/adapter/LikeRepository.java +++ b/src/main/java/com/seoultech/sanEseo/like/adapter/LikeRepository.java @@ -14,4 +14,5 @@ public interface LikeRepository extends JpaRepository<Likes, Long> { int countByPostId(Long postId); void deleteByPostAndMember(Post post, Member member); + boolean existsByPostIdAndMemberId(Long postId, Long memberId); } diff --git a/src/main/java/com/seoultech/sanEseo/like/application/port/LikePort.java b/src/main/java/com/seoultech/sanEseo/like/application/port/LikePort.java index 07b90ad..e117bab 100644 --- a/src/main/java/com/seoultech/sanEseo/like/application/port/LikePort.java +++ b/src/main/java/com/seoultech/sanEseo/like/application/port/LikePort.java @@ -14,4 +14,5 @@ public interface LikePort { int countByPostId(Long postId); + boolean existsByPostIdAndMemberId(Long postId, Long memberId); } diff --git a/src/main/java/com/seoultech/sanEseo/like/application/service/AddLikeRequest.java b/src/main/java/com/seoultech/sanEseo/like/application/service/AddLikeRequest.java index ec170a5..0e99d69 100644 --- a/src/main/java/com/seoultech/sanEseo/like/application/service/AddLikeRequest.java +++ b/src/main/java/com/seoultech/sanEseo/like/application/service/AddLikeRequest.java @@ -2,20 +2,14 @@ import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; import lombok.Getter; +import lombok.NoArgsConstructor; @Getter +@NoArgsConstructor +@AllArgsConstructor public class AddLikeRequest { @NotNull(message = "포스트 ID는 필수입니다.") private Long postId; - - @NotNull(message = "멤버 ID는 필수입니다.") - private Long memberId; - - // 모든 매개변수를 가진 생성자 - public AddLikeRequest(Long postId, Long memberId) { - this.postId = postId; - this.memberId = memberId; - } - } \ No newline at end of file diff --git a/src/main/java/com/seoultech/sanEseo/like/application/service/LikeService.java b/src/main/java/com/seoultech/sanEseo/like/application/service/LikeService.java index 1481e6b..e37681e 100644 --- a/src/main/java/com/seoultech/sanEseo/like/application/service/LikeService.java +++ b/src/main/java/com/seoultech/sanEseo/like/application/service/LikeService.java @@ -24,11 +24,10 @@ public class LikeService { - public void addLike(AddLikeRequest request) { + public void addLike(Long memberId, AddLikeRequest request) { // request를 Like 객체로 변환 Long postId = request.getPostId(); - Long memberId = request.getMemberId(); Member member = memberPort.loadById(memberId); Post post = postPort.getPost(postId); @@ -54,4 +53,8 @@ public int getLikeCount(Long postId) { return likePort.countByPostId(postId); } + public boolean hasMemberLikedPost(Long memberId, Long postId) { + return likePort.existsByPostIdAndMemberId(memberId, postId); + } + } diff --git a/src/main/java/com/seoultech/sanEseo/member/adapter/in/web/AuthController.java b/src/main/java/com/seoultech/sanEseo/member/adapter/in/web/AuthController.java index 9f9730b..c2b8d61 100644 --- a/src/main/java/com/seoultech/sanEseo/member/adapter/in/web/AuthController.java +++ b/src/main/java/com/seoultech/sanEseo/member/adapter/in/web/AuthController.java @@ -30,7 +30,7 @@ public ResponseEntity<?> login(@RequestBody LoginRequest request) { @PostMapping("/logout") public ResponseEntity<?> logout(@LoginMember AuthMember authMember) { - authService.logout(authMember.getEmail()); + authService.logout(authMember.getId()); return ApiResponse.ok("로그아웃 성공"); } // TODO : 로그아웃 구현 diff --git a/src/main/java/com/seoultech/sanEseo/member/adapter/in/web/MemberController.java b/src/main/java/com/seoultech/sanEseo/member/adapter/in/web/MemberController.java index 81f371d..8ba366b 100644 --- a/src/main/java/com/seoultech/sanEseo/member/adapter/in/web/MemberController.java +++ b/src/main/java/com/seoultech/sanEseo/member/adapter/in/web/MemberController.java @@ -31,12 +31,12 @@ public ResponseEntity<?> register(@RequestBody RegisterRequest request) { @PatchMapping public ResponseEntity<?> updateMember(@LoginMember AuthMember authMember, @ModelAttribute UpdateMemberRequest request) { - return ApiResponse.ok("회원정보 수정 성공", memberService.updateMember(request.toCommand(authMember.getEmail()))); + return ApiResponse.ok("회원정보 수정 성공", memberService.updateMember(request.toCommand(authMember.getId()))); } @GetMapping public ResponseEntity<?> findMember(@LoginMember AuthMember authMember) { - return ApiResponse.ok("사용자 정보 조회 성공", MemberResponse.fromEntity(memberService.loadMemberByEmail(authMember.getEmail()))); + return ApiResponse.ok("사용자 정보 조회 성공", MemberResponse.fromEntity(memberService.loadMember(authMember.getId()))); } @GetMapping("/duplicate") diff --git a/src/main/java/com/seoultech/sanEseo/member/adapter/in/web/dto/UpdateMemberRequest.java b/src/main/java/com/seoultech/sanEseo/member/adapter/in/web/dto/UpdateMemberRequest.java index b9c94ca..de7e452 100644 --- a/src/main/java/com/seoultech/sanEseo/member/adapter/in/web/dto/UpdateMemberRequest.java +++ b/src/main/java/com/seoultech/sanEseo/member/adapter/in/web/dto/UpdateMemberRequest.java @@ -6,9 +6,9 @@ public record UpdateMemberRequest(String name, MultipartFile profile) { - public UpdateMemberCommand toCommand(String email) { + public UpdateMemberCommand toCommand(Long id) { return UpdateMemberCommand.builder() - .email(email) + .memberId(id) .name(name) .profile(profile) .build(); diff --git a/src/main/java/com/seoultech/sanEseo/member/application/port/in/command/UpdateMemberCommand.java b/src/main/java/com/seoultech/sanEseo/member/application/port/in/command/UpdateMemberCommand.java index d2e706d..42be1d7 100644 --- a/src/main/java/com/seoultech/sanEseo/member/application/port/in/command/UpdateMemberCommand.java +++ b/src/main/java/com/seoultech/sanEseo/member/application/port/in/command/UpdateMemberCommand.java @@ -9,13 +9,13 @@ @EqualsAndHashCode(callSuper = false) public class UpdateMemberCommand{ - private final String email; + private final Long memberId; private final String name; private final MultipartFile profile; @Builder - public UpdateMemberCommand(String email, String name, MultipartFile profile) { - this.email = email; + public UpdateMemberCommand(Long memberId, String name, MultipartFile profile) { + this.memberId = memberId; this.name = name; this.profile = profile; } diff --git a/src/main/java/com/seoultech/sanEseo/member/application/service/AuthService.java b/src/main/java/com/seoultech/sanEseo/member/application/service/AuthService.java index 2d93b28..270e1bf 100644 --- a/src/main/java/com/seoultech/sanEseo/member/application/service/AuthService.java +++ b/src/main/java/com/seoultech/sanEseo/member/application/service/AuthService.java @@ -67,8 +67,8 @@ public void register(OAuthRegisterCommand command) { } @Transactional - public void logout(String email) { - Member member = memberPort.loadByEmail(email); + public void logout(Long memberId) { + Member member = memberPort.loadById(memberId); RefreshToken refreshToken = refreshTokenPort.loadByUserId(member.getId()); if(refreshToken == null) { throw new NotLoginedMemberException("로그인이 되어있지 않습니다."); diff --git a/src/main/java/com/seoultech/sanEseo/member/application/service/MemberService.java b/src/main/java/com/seoultech/sanEseo/member/application/service/MemberService.java index 27c9998..7b80839 100644 --- a/src/main/java/com/seoultech/sanEseo/member/application/service/MemberService.java +++ b/src/main/java/com/seoultech/sanEseo/member/application/service/MemberService.java @@ -54,7 +54,7 @@ public String generateName() { @Transactional public MemberResponse updateMember(UpdateMemberCommand command) { - Member member = memberPort.loadByEmail(command.getEmail()); + Member member = memberPort.loadById(command.getMemberId()); if(command.getName() != null) { checkDuplicateName(command.getName()); diff --git a/src/main/java/com/seoultech/sanEseo/post/application/service/AddPostRequest.java b/src/main/java/com/seoultech/sanEseo/post/application/service/AddPostRequest.java index 526469c..c9e1fa2 100644 --- a/src/main/java/com/seoultech/sanEseo/post/application/service/AddPostRequest.java +++ b/src/main/java/com/seoultech/sanEseo/post/application/service/AddPostRequest.java @@ -2,6 +2,8 @@ import com.seoultech.sanEseo.post.domain.Category; import com.seoultech.sanEseo.image.PostImage; +import com.seoultech.sanEseo.public_api.GetCoordinateResponse; +import com.seoultech.sanEseo.public_api.GetGeometryResponse; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.Getter; @@ -40,9 +42,12 @@ public class AddPostRequest { @NotNull(message = "자치구 ID는 필수입니다.") private Long districtId; + @NotNull(message = "좌표 정보는 필수입니다.") + private GetGeometryResponse geometry; + // 생성자, 게터, 세터 등 추가 필요 - public AddPostRequest(Category category, String title, String subTitle, String description, String level, String time, String distance, String courseDetail, String transportation, Long districtId) { + public AddPostRequest(Category category, String title, String subTitle, String description, String level, String time, String distance, String courseDetail, String transportation, Long districtId, GetGeometryResponse geometry) { this.category = category; this.title = title; this.subTitle = subTitle; @@ -53,5 +58,6 @@ public AddPostRequest(Category category, String title, String subTitle, String d this.courseDetail = courseDetail; this.transportation = transportation; this.districtId = districtId; + this.geometry = geometry; } } \ No newline at end of file diff --git a/src/main/java/com/seoultech/sanEseo/post/application/service/GetPostResponse.java b/src/main/java/com/seoultech/sanEseo/post/application/service/GetPostResponse.java index 0dfd947..0f1927e 100644 --- a/src/main/java/com/seoultech/sanEseo/post/application/service/GetPostResponse.java +++ b/src/main/java/com/seoultech/sanEseo/post/application/service/GetPostResponse.java @@ -5,7 +5,7 @@ import org.springframework.util.Assert; public record GetPostResponse(Long id, Category category, String title, String subTitle, String description, String level, String time, - String distance, String courseDetail, String transportation, String districtName, GetCoordinateResponse coordinate) { + String distance, String courseDetail, String transportation, String districtName, GetCoordinateResponse geometry) { public GetPostResponse { Assert.hasText(title, "제목은 필수입니다."); diff --git a/src/main/java/com/seoultech/sanEseo/post/application/service/PostService.java b/src/main/java/com/seoultech/sanEseo/post/application/service/PostService.java index 4dafb96..9ac640e 100644 --- a/src/main/java/com/seoultech/sanEseo/post/application/service/PostService.java +++ b/src/main/java/com/seoultech/sanEseo/post/application/service/PostService.java @@ -6,8 +6,10 @@ import com.seoultech.sanEseo.post.domain.Post; import com.seoultech.sanEseo.post_district.domain.PostDistrict; import com.seoultech.sanEseo.post_district.application.port.PostDistrictPort; +import com.seoultech.sanEseo.public_api.Coordinate; import com.seoultech.sanEseo.public_api.CoordinateService; import com.seoultech.sanEseo.public_api.GetCoordinateResponse; +import com.seoultech.sanEseo.public_api.GetGeometryResponse; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -22,6 +24,7 @@ public class PostService { private final PostDistrictPort postDistrictPort; private final CoordinateService coordinateService; + public PostService(PostPort postPort, DistrictPort districtPort, PostDistrictPort postDistrictPort, CoordinateService coordinateService) { this.postPort = postPort; this.districtPort = districtPort; @@ -43,6 +46,9 @@ public Post addPost(AddPostRequest request) { request.getLevel(), request.getTime(), request.getDistance(), request.getCourseDetail(), request.getTransportation()); + GetGeometryResponse geometry = request.getGeometry(); + coordinateService.saveCoordinate(geometry, post); + postPort.save(post); // Post 저장 // 관련 District와 PostDistrict 관계 설정 @@ -60,19 +66,25 @@ public GetPostResponse getPost(Long postId) { Post post = postPort.getPost(postId); List<PostDistrict> postDistrictList = postDistrictPort.findByPostId(postId); String postDistrictName = postDistrictList.get(0).getDistrict().getName(); - GetCoordinateResponse coordinate = coordinateService.getCoordinateResponse(post); + GetCoordinateResponse geometry = coordinateService.getCoordinateResponse(post); return new GetPostResponse( post.getId(), post.getCategory(), post.getTitle(), post.getSubTitle(), post.getDescription(), post.getLevel(), post.getTime(), post.getDistance(),post.getCourseDetail(), post.getTransportation(), postDistrictName - ,coordinate + , geometry ); } @Transactional public void updatePost(Long postId, UpdatePostRequest request) { Post post = postPort.getPost(postId); + + // 좌표 정보 업데이트 + Coordinate coordinate = coordinateService.findCoordinate(post); + coordinate.update(request.getGeometry().getName(), request.getGeometry().getType(), request.getGeometry()); + + // 게시글 정보 업데이트 post.update( request.getCategory(), request.getTitle(), request.getSubTitle(), request.getDescription(), request.getLevel(), request.getTime(), @@ -96,7 +108,7 @@ public void deletePost(Long postId) { postDistrictPort.deleteAll(relations); postPort.deletePost(postId); - } + } diff --git a/src/main/java/com/seoultech/sanEseo/post/application/service/UpdatePostRequest.java b/src/main/java/com/seoultech/sanEseo/post/application/service/UpdatePostRequest.java index d432ea3..3dad015 100644 --- a/src/main/java/com/seoultech/sanEseo/post/application/service/UpdatePostRequest.java +++ b/src/main/java/com/seoultech/sanEseo/post/application/service/UpdatePostRequest.java @@ -2,14 +2,14 @@ import com.seoultech.sanEseo.post.domain.Category; import com.seoultech.sanEseo.image.PostImage; +import com.seoultech.sanEseo.public_api.GetGeometryResponse; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.Getter; import java.util.List; @Getter -public class UpdatePostRequest { // 자료형과 변수명 변경 - +public class UpdatePostRequest { @NotNull(message = "카테고리는 필수입니다.") private Category category; @@ -37,14 +37,16 @@ public class UpdatePostRequest { // 자료형과 변수명 변경 @NotBlank(message = "교통수단은 필수입니다.") private String transportation; - @NotNull(message = "이미지는 필수입니다.") private List<PostImage> images; @NotNull(message = "자치구 ID는 필수입니다.") private Long districtId; - public UpdatePostRequest(Category category, String title, String subTitle, String description, String level, String time, String distance, String courseDetail, String transportation, List<PostImage> images, Long districtId) { + @NotNull(message = "좌표 정보는 필수입니다.") + private GetGeometryResponse geometry; + + public UpdatePostRequest(Category category, String title, String subTitle, String description, String level, String time, String distance, String courseDetail, String transportation, List<PostImage> images, Long districtId, GetGeometryResponse geometry) { this.category = category; this.title = title; this.subTitle = subTitle; @@ -56,5 +58,6 @@ public UpdatePostRequest(Category category, String title, String subTitle, Strin this.transportation = transportation; this.images = images; this.districtId = districtId; + this.geometry = geometry; } } diff --git a/src/main/java/com/seoultech/sanEseo/post/domain/Category.java b/src/main/java/com/seoultech/sanEseo/post/domain/Category.java index 1d14e6f..1c768b3 100644 --- a/src/main/java/com/seoultech/sanEseo/post/domain/Category.java +++ b/src/main/java/com/seoultech/sanEseo/post/domain/Category.java @@ -1,17 +1,27 @@ package com.seoultech.sanEseo.post.domain; +import com.fasterxml.jackson.annotation.JsonValue; + public enum Category { - DODREAM, CUSTOM; + DODREAM(0), CUSTOM(1); - public static Category from(int category) { - if (category == 1) { - return DODREAM; - } else if (category == 2) { - return CUSTOM; - } else { - throw new IllegalArgumentException("Unknown category: " + category); - } + private final int value; + + Category(int value) { + this.value = value; } + @JsonValue + public int getValue() { + return value; + } -} + public static Category from(int value) { + for (Category category : values()) { + if (category.getValue() == value) { + return category; + } + } + throw new IllegalArgumentException("Unknown category value: " + value); + } +} \ No newline at end of file diff --git a/src/main/java/com/seoultech/sanEseo/post_district/adapter/PostDistrictAdapter.java b/src/main/java/com/seoultech/sanEseo/post_district/adapter/PostDistrictAdapter.java index 986885f..226baaa 100644 --- a/src/main/java/com/seoultech/sanEseo/post_district/adapter/PostDistrictAdapter.java +++ b/src/main/java/com/seoultech/sanEseo/post_district/adapter/PostDistrictAdapter.java @@ -4,6 +4,9 @@ import com.seoultech.sanEseo.post.domain.Category; import com.seoultech.sanEseo.post_district.application.port.PostDistrictPort; import com.seoultech.sanEseo.post_district.domain.PostDistrict; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Slice; import org.springframework.stereotype.Component; import java.util.List; @@ -47,4 +50,10 @@ public List<PostDistrict> findAll() { public List<PostDistrict> findByPostCategory(Category category) { return postDistrictRepository.findByPostCategory(category); } + + @Override + public Slice<PostDistrict> findByPostCategory(Category category, Pageable pageable) { + return postDistrictRepository.findByPostCategory(category, pageable); + } + } diff --git a/src/main/java/com/seoultech/sanEseo/post_district/adapter/PostDistrictController.java b/src/main/java/com/seoultech/sanEseo/post_district/adapter/PostDistrictController.java index edc13a1..6a7baaf 100644 --- a/src/main/java/com/seoultech/sanEseo/post_district/adapter/PostDistrictController.java +++ b/src/main/java/com/seoultech/sanEseo/post_district/adapter/PostDistrictController.java @@ -6,6 +6,9 @@ import com.seoultech.sanEseo.post_district.application.service.GetPostDistrictResponse; import com.seoultech.sanEseo.post_district.application.port.PostDistrictPort; import com.seoultech.sanEseo.post_district.application.service.PostDistrictService; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Slice; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -29,9 +32,12 @@ public ResponseEntity<?> getPostDistrict(@PathVariable Long districtId) { } //전체 게시글 조회 - @GetMapping("/posts/{category}") - public ResponseEntity<?> getAllPostDistrictByCategory(@PathVariable int category) { - List<GetPostDistrictResponse> responses = postDistrictService.getAllPostDistrict(category); + @GetMapping("/posts") + public ResponseEntity<?> getAllPostDistrictByCategory(@RequestParam(value = "page", defaultValue = "0") int page, + @RequestParam(value = "size", defaultValue = "12") int size, + @RequestParam(value = "category", defaultValue = "1") int category) { + Pageable pageable = PageRequest.of(page, size); + List<GetPostDistrictResponse> responses = postDistrictService.getAllPostDistrict(pageable, category); return ApiResponse.ok("전체 게시글 목록 조회 성공", responses); } diff --git a/src/main/java/com/seoultech/sanEseo/post_district/adapter/PostDistrictRepository.java b/src/main/java/com/seoultech/sanEseo/post_district/adapter/PostDistrictRepository.java index c0a4bed..175d4dd 100644 --- a/src/main/java/com/seoultech/sanEseo/post_district/adapter/PostDistrictRepository.java +++ b/src/main/java/com/seoultech/sanEseo/post_district/adapter/PostDistrictRepository.java @@ -1,7 +1,10 @@ package com.seoultech.sanEseo.post_district.adapter; import com.seoultech.sanEseo.post.domain.Category; +import com.seoultech.sanEseo.post.domain.Post; import com.seoultech.sanEseo.post_district.domain.PostDistrict; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Slice; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; @@ -13,4 +16,7 @@ public interface PostDistrictRepository extends JpaRepository<PostDistrict, Long List<PostDistrict> findByPostCategory(Category category); + Slice<PostDistrict> findByPostCategory(Category category, Pageable pageable); + + } diff --git a/src/main/java/com/seoultech/sanEseo/post_district/application/port/PostDistrictPort.java b/src/main/java/com/seoultech/sanEseo/post_district/application/port/PostDistrictPort.java index f24cdd2..a06bdf3 100644 --- a/src/main/java/com/seoultech/sanEseo/post_district/application/port/PostDistrictPort.java +++ b/src/main/java/com/seoultech/sanEseo/post_district/application/port/PostDistrictPort.java @@ -2,6 +2,8 @@ import com.seoultech.sanEseo.post.domain.Category; import com.seoultech.sanEseo.post_district.domain.PostDistrict; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Slice; import java.util.List; @@ -19,4 +21,6 @@ public interface PostDistrictPort { List<PostDistrict> findAll(); List<PostDistrict> findByPostCategory(Category category); + + Slice<PostDistrict> findByPostCategory(Category category, Pageable pageable); } diff --git a/src/main/java/com/seoultech/sanEseo/post_district/application/service/PostDistrictService.java b/src/main/java/com/seoultech/sanEseo/post_district/application/service/PostDistrictService.java index 1cae8fd..d89e8d1 100644 --- a/src/main/java/com/seoultech/sanEseo/post_district/application/service/PostDistrictService.java +++ b/src/main/java/com/seoultech/sanEseo/post_district/application/service/PostDistrictService.java @@ -10,6 +10,8 @@ import com.seoultech.sanEseo.post.domain.Post; import com.seoultech.sanEseo.post_district.application.port.PostDistrictPort; import com.seoultech.sanEseo.post_district.domain.PostDistrict; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Slice; import org.springframework.stereotype.Service; import java.util.List; @@ -45,12 +47,18 @@ public List<GetPostDistrictResponse> getPostDistrict(Long districtId) { return getPostDistrictResponses(postDistricts); } - public List<GetPostDistrictResponse> getAllPostDistrict(int category) { + public List<GetPostDistrictResponse> getAllPostDistrict(Pageable pageable, int category) { Category categoryEnum = Category.from(category); - List<PostDistrict> postDistricts = postDistrictPort.findByPostCategory(categoryEnum); + System.out.println("categoryEnum = " + categoryEnum); + Slice<PostDistrict> postDistrictsSlice = postDistrictPort.findByPostCategory(categoryEnum, pageable); + System.out.println("postDistrictsSlice = " + postDistrictsSlice.getContent()); + + // Slice의 실제 내용을 리스트로 변환하고, 응답 DTO 생성 + List<PostDistrict> postDistricts = postDistrictsSlice.getContent(); return getPostDistrictResponses(postDistricts); } + public List<GetPostDistrictResponse> getPostByLikesSortedDesc(int category) { Category categoryEnum = Category.from(category); List<PostDistrict> postDistricts = postDistrictPort.findByPostCategory(categoryEnum); @@ -88,4 +96,6 @@ private List<GetPostDistrictResponse> getPostDistrictResponses(List<PostDistrict }).collect(Collectors.toList()); return responses; } + + } diff --git a/src/main/java/com/seoultech/sanEseo/public_api/Coordinate.java b/src/main/java/com/seoultech/sanEseo/public_api/Coordinate.java index d25a1fd..6b29cff 100644 --- a/src/main/java/com/seoultech/sanEseo/public_api/Coordinate.java +++ b/src/main/java/com/seoultech/sanEseo/public_api/Coordinate.java @@ -7,6 +7,7 @@ import lombok.Getter; import lombok.NoArgsConstructor; +import java.util.ArrayList; import java.util.List; @Entity @@ -19,24 +20,34 @@ public class Coordinate { private Long id; private String name; - private String lat; - private String lng; private String type; - @Convert(converter = CoordinatesConverter.class) - @Column(columnDefinition = "TEXT") - private List<List<Double>> coordinates; + @ElementCollection + @CollectionTable(name = "coordinate_points", joinColumns = @JoinColumn(name = "coordinate_id")) + private List<LatLng> coordinates; @OneToOne @JoinColumn(name = "post_id") private Post post; - public Coordinate(String name, String lat, String lng, String type, List<List<Double>> coordinates, Post post) { + public Coordinate(String name, String type, List<LatLng> coordinates, Post post) { this.name = name; - this.lat = lat; - this.lng = lng; this.type = type; this.coordinates = coordinates; this.post = post; } + public void update(String name, String type, GetGeometryResponse geometry) { + this.name = name; + this.type = type; + this.coordinates = convertGeometryToLatLngList(geometry); + } + + private List<LatLng> convertGeometryToLatLngList(GetGeometryResponse geometry) { + // geometry의 coordinates를 List<LatLng>로 변환하는 로직 + List<LatLng> newCoordinates = new ArrayList<>(); + for (LatLng coordinatePair : geometry.getCoordinates()) { + newCoordinates.add(new LatLng(coordinatePair.getLat(), coordinatePair.getLng())); + } + return newCoordinates; + } } \ No newline at end of file diff --git a/src/main/java/com/seoultech/sanEseo/public_api/CoordinateService.java b/src/main/java/com/seoultech/sanEseo/public_api/CoordinateService.java index a6b26ed..4ae1878 100644 --- a/src/main/java/com/seoultech/sanEseo/public_api/CoordinateService.java +++ b/src/main/java/com/seoultech/sanEseo/public_api/CoordinateService.java @@ -12,11 +12,9 @@ public class CoordinateService { private CoordinateRepository coordinateRepository; @Transactional - public void saveCoordinate(GetLinearResponse linearResponse, GetGeometryResponse geometryResponse, Post post) { + public void saveCoordinate(GetGeometryResponse geometryResponse, Post post) { Coordinate coordinate = new Coordinate( geometryResponse.getName(), - linearResponse.getLat(), // 예시로 첫번째 좌표의 위도를 저장 - linearResponse.getLng(), // 예시로 첫번째 좌표의 경도를 저장 geometryResponse.getType(), geometryResponse.getCoordinates(), post); @@ -25,6 +23,11 @@ public void saveCoordinate(GetLinearResponse linearResponse, GetGeometryResponse public GetCoordinateResponse getCoordinateResponse(Post post) { Coordinate byPost = coordinateRepository.findByPost(post); - return new GetCoordinateResponse(byPost.getLat(), byPost.getLng(), byPost.getType(), byPost.getCoordinates()); + return new GetCoordinateResponse(byPost.getType(), byPost.getCoordinates()); + } + + // coordinate찾기 + public Coordinate findCoordinate(Post post) { + return coordinateRepository.findByPost(post); } } \ No newline at end of file diff --git a/src/main/java/com/seoultech/sanEseo/public_api/CoordinatesConverter.java b/src/main/java/com/seoultech/sanEseo/public_api/CoordinatesConverter.java index dfd51b6..004620e 100644 --- a/src/main/java/com/seoultech/sanEseo/public_api/CoordinatesConverter.java +++ b/src/main/java/com/seoultech/sanEseo/public_api/CoordinatesConverter.java @@ -9,11 +9,11 @@ import java.util.List; @Converter -public class CoordinatesConverter implements AttributeConverter<List<List<Double>>, String> { +public class CoordinatesConverter implements AttributeConverter<List<LatLng>, String> { private final static ObjectMapper objectMapper = new ObjectMapper(); @Override - public String convertToDatabaseColumn(List<List<Double>> attribute) { + public String convertToDatabaseColumn(List<LatLng> attribute) { try { return objectMapper.writeValueAsString(attribute); } catch (IOException e) { @@ -22,9 +22,9 @@ public String convertToDatabaseColumn(List<List<Double>> attribute) { } @Override - public List<List<Double>> convertToEntityAttribute(String dbData) { + public List<LatLng> convertToEntityAttribute(String dbData) { try { - return objectMapper.readValue(dbData, new TypeReference<List<List<Double>>>() {}); + return objectMapper.readValue(dbData, new TypeReference<List<LatLng>>() {}); } catch (IOException e) { throw new RuntimeException("Conversion error", e); } diff --git a/src/main/java/com/seoultech/sanEseo/public_api/GetCoordinateResponse.java b/src/main/java/com/seoultech/sanEseo/public_api/GetCoordinateResponse.java index 8e4932d..e9a435c 100644 --- a/src/main/java/com/seoultech/sanEseo/public_api/GetCoordinateResponse.java +++ b/src/main/java/com/seoultech/sanEseo/public_api/GetCoordinateResponse.java @@ -10,8 +10,6 @@ @AllArgsConstructor public class GetCoordinateResponse { - String lat; - String lng; String type; - List<List<Double>> coordinates; + List<LatLng> coordinates; } diff --git a/src/main/java/com/seoultech/sanEseo/public_api/GetGeometryResponse.java b/src/main/java/com/seoultech/sanEseo/public_api/GetGeometryResponse.java index b1e19a4..2e8e709 100644 --- a/src/main/java/com/seoultech/sanEseo/public_api/GetGeometryResponse.java +++ b/src/main/java/com/seoultech/sanEseo/public_api/GetGeometryResponse.java @@ -12,5 +12,5 @@ public class GetGeometryResponse { private String type; private String name; - private List<List<Double>> coordinates; + private List<LatLng> coordinates; } diff --git a/src/main/java/com/seoultech/sanEseo/public_api/LatLng.java b/src/main/java/com/seoultech/sanEseo/public_api/LatLng.java new file mode 100644 index 0000000..917d4d2 --- /dev/null +++ b/src/main/java/com/seoultech/sanEseo/public_api/LatLng.java @@ -0,0 +1,33 @@ +package com.seoultech.sanEseo.public_api; + +import jakarta.persistence.Embeddable; + +@Embeddable +public class LatLng { + private double lat; + private double lng; + + public LatLng() {} + + public LatLng(double lat, double lng) { + this.lat = lat; + this.lng = lng; + } + + // Getter and Setter + public double getLat() { + return lat; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public double getLng() { + return lng; + } + + public void setLng(double lng) { + this.lng = lng; + } +} \ No newline at end of file diff --git a/src/main/java/com/seoultech/sanEseo/public_api/PublicDataService.java b/src/main/java/com/seoultech/sanEseo/public_api/PublicDataService.java index 2788023..2cfab7f 100644 --- a/src/main/java/com/seoultech/sanEseo/public_api/PublicDataService.java +++ b/src/main/java/com/seoultech/sanEseo/public_api/PublicDataService.java @@ -117,16 +117,14 @@ public List<GetGeometryResponse> parsingCoordinate(int dataIndex) { for (Feature feature : featureCollection.getFeatures()) { MultiLineString multiLineString = (MultiLineString) feature.getGeometry(); String name = feature.getProperty("NAME"); - List<List<Double>> coordinate_list = new ArrayList<>(); for (List<LngLatAlt> coordinates : multiLineString.getCoordinates()) { + List<LatLng> latLngList = new ArrayList<>(); for (LngLatAlt lngLatAlt : coordinates) { - double latitude = lngLatAlt.getLatitude(); double longitude = lngLatAlt.getLongitude(); - coordinate_list.add(List.of(latitude, longitude)); - + latLngList.add(new LatLng(latitude, longitude)); } - responses.add(new GetGeometryResponse("polyline", name, coordinate_list)); + responses.add(new GetGeometryResponse("polyline", name, latLngList)); } } } catch (IOException e) { @@ -171,11 +169,11 @@ public void addPublicData(int dataIndex){ safeSubstring(getCourseResponse.getDescription(), 0, 255), getCourseResponse.getLevel(), getCourseResponse.getTime(), getCourseResponse.getDistance(), safeSubstring(getCourseResponse.getCourseDetail(), 0 ,255), - getCourseResponse.getTransportation(), id)); + getCourseResponse.getTransportation(), id, getGeometryResponse)); - if (post != null){ - coordinateService.saveCoordinate(getLinearResponse, getGeometryResponse, post); - } +// if (post != null){ +// coordinateService.saveCoordinate(getGeometryResponse, post); +// } } } } diff --git a/src/main/java/com/seoultech/sanEseo/review/adapter/ReviewController.java b/src/main/java/com/seoultech/sanEseo/review/adapter/ReviewController.java index a7cd959..669b1c9 100644 --- a/src/main/java/com/seoultech/sanEseo/review/adapter/ReviewController.java +++ b/src/main/java/com/seoultech/sanEseo/review/adapter/ReviewController.java @@ -1,6 +1,8 @@ package com.seoultech.sanEseo.review.adapter; +import com.seoultech.sanEseo.global.config.web.AuthMember; +import com.seoultech.sanEseo.global.config.web.LoginMember; import com.seoultech.sanEseo.global.response.ApiResponse; import com.seoultech.sanEseo.review.application.service.CreateReviewRequest; import com.seoultech.sanEseo.review.application.service.GetReviewResponse; @@ -23,20 +25,20 @@ public ReviewController(ReviewService reviewService) { } @PostMapping("/reviews") - public ResponseEntity<?> createReview(@RequestBody @Valid CreateReviewRequest request) { - reviewService.createReview(request); + public ResponseEntity<?> createReview(@LoginMember AuthMember authMember, @RequestBody @Valid CreateReviewRequest request) { + reviewService.createReview(authMember.getId(), request); return ApiResponse.ok("리뷰가 성공적으로 생성되었습니다."); } - @DeleteMapping("/posts/{postId}/members/{memberId}/reviews") - public ResponseEntity<?> deleteReview(@PathVariable Long postId, @PathVariable Long memberId) { - reviewService.deleteReview(postId, memberId); + @DeleteMapping("/posts/{postId}/members/reviews") + public ResponseEntity<?> deleteReview(@LoginMember AuthMember authMember, @PathVariable Long postId) { + reviewService.deleteReview(postId, authMember.getId()); return ApiResponse.ok("리뷰가 성공적으로 삭제되었습니다."); } - @PutMapping("/posts/{postId}/members/{memberId}/reviews") - public ResponseEntity<?> updateReview(@PathVariable Long postId, @PathVariable Long memberId, @RequestBody UpdateReviewRequest request) { - reviewService.updateReview(postId, memberId, request); + @PutMapping("/posts/{postId}/members/reviews") + public ResponseEntity<?> updateReview(@LoginMember AuthMember authMember, @PathVariable Long postId, @RequestBody UpdateReviewRequest request) { + reviewService.updateReview(postId, authMember.getId(), request); return ApiResponse.ok("리뷰가 성공적으로 업데이트되었습니다."); } diff --git a/src/main/java/com/seoultech/sanEseo/review/application/service/CreateReviewRequest.java b/src/main/java/com/seoultech/sanEseo/review/application/service/CreateReviewRequest.java index 8446310..90b7570 100644 --- a/src/main/java/com/seoultech/sanEseo/review/application/service/CreateReviewRequest.java +++ b/src/main/java/com/seoultech/sanEseo/review/application/service/CreateReviewRequest.java @@ -10,9 +10,6 @@ @Getter public class CreateReviewRequest { - - @NotNull(message = "사용자 ID는 필수입니다.") - Long memberId; @NotNull(message = "게시글 ID는 필수입니다.") Long postId; @NotBlank(message = "리뷰 내용은 필수입니다.") @@ -20,8 +17,7 @@ public class CreateReviewRequest { @NotNull(message = "리뷰 작성일은 필수입니다.") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime createDate; - public CreateReviewRequest(Long memberId, Long postId, String content, LocalDateTime createDate) { - this.memberId = memberId; + public CreateReviewRequest(Long postId, String content, LocalDateTime createDate) { this.postId = postId; this.content = content; this.createDate = createDate; diff --git a/src/main/java/com/seoultech/sanEseo/review/application/service/ReviewService.java b/src/main/java/com/seoultech/sanEseo/review/application/service/ReviewService.java index d498ae4..b878959 100644 --- a/src/main/java/com/seoultech/sanEseo/review/application/service/ReviewService.java +++ b/src/main/java/com/seoultech/sanEseo/review/application/service/ReviewService.java @@ -25,9 +25,9 @@ class ReviewService { } @Transactional - public void createReview(CreateReviewRequest request) { + public void createReview(Long memberId, CreateReviewRequest request) { - Member member = memberPort.loadById(request.getMemberId()); + Member member = memberPort.loadById(memberId); Post post = postPort.getPost(request.getPostId()); Review review = Review.builder() diff --git a/src/test/java/com/seoultech/sanEseo/like/LikeSteps.java b/src/test/java/com/seoultech/sanEseo/like/LikeSteps.java index d847968..54a7188 100644 --- a/src/test/java/com/seoultech/sanEseo/like/LikeSteps.java +++ b/src/test/java/com/seoultech/sanEseo/like/LikeSteps.java @@ -17,7 +17,7 @@ public class LikeSteps { public static AddLikeRequest 좋아요등록요청_생성() { - return new AddLikeRequest(1L, 1L); + return new AddLikeRequest(1L); } public static ExtractableResponse<Response> 좋아요삭제요청(Long likeId) {