From ea4aa96f2064477412428530391f5d4b4e3073de Mon Sep 17 00:00:00 2001 From: Kwak Seong Joon Date: Mon, 15 Jul 2024 21:50:02 +0900 Subject: [PATCH 1/3] =?UTF-8?q?[chore]=20=EC=BD=94=EB=93=9C=20=EC=A0=95?= =?UTF-8?q?=EB=A6=AC=20-=20#102?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dateroad/auth/jwt/JwtProvider.java | 5 - .../org/dateroad/auth/jwt/JwtValidator.java | 13 -- .../java/org/dateroad/auth/jwt/TokenType.java | 6 - .../course/service/CourseService.java | 6 +- .../dateroad/user/service/AuthService.java | 19 +-- .../feign/apple/AppleFeignProvider.java | 1 - .../kakao/KakaoPlatformUserIdProvider.java | 117 ++++++++---------- 7 files changed, 69 insertions(+), 98 deletions(-) delete mode 100644 dateroad-api/src/main/java/org/dateroad/auth/jwt/JwtValidator.java delete mode 100644 dateroad-api/src/main/java/org/dateroad/auth/jwt/TokenType.java diff --git a/dateroad-api/src/main/java/org/dateroad/auth/jwt/JwtProvider.java b/dateroad-api/src/main/java/org/dateroad/auth/jwt/JwtProvider.java index 8855abed..99b8f7db 100644 --- a/dateroad-api/src/main/java/org/dateroad/auth/jwt/JwtProvider.java +++ b/dateroad-api/src/main/java/org/dateroad/auth/jwt/JwtProvider.java @@ -34,11 +34,6 @@ public void validateRefreshToken(LocalDateTime expireDate) { } } - //Base64 인코딩된 리프레시 토큰 문자열을 바이트 배열 - private byte[] toBinary(String refreshToken) { - return Base64.getDecoder().decode(refreshToken); - } - public long getUserIdFromSubject(String token) { Jws jws = jwtGenerator.parseToken(token); String subject = jws.getBody().getSubject(); diff --git a/dateroad-api/src/main/java/org/dateroad/auth/jwt/JwtValidator.java b/dateroad-api/src/main/java/org/dateroad/auth/jwt/JwtValidator.java deleted file mode 100644 index e6b885ca..00000000 --- a/dateroad-api/src/main/java/org/dateroad/auth/jwt/JwtValidator.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.dateroad.auth.jwt; - -import org.dateroad.code.FailureCode; -import org.dateroad.exception.UnauthorizedException; -import org.springframework.stereotype.Component; - -public class JwtValidator { - public void equalRefreshToken(String refreshToken, String storedRefreshToken) { - if (!refreshToken.equals(storedRefreshToken)) { - throw new UnauthorizedException(FailureCode.UNAUTHORIZED); - } - } -} diff --git a/dateroad-api/src/main/java/org/dateroad/auth/jwt/TokenType.java b/dateroad-api/src/main/java/org/dateroad/auth/jwt/TokenType.java deleted file mode 100644 index acfe7971..00000000 --- a/dateroad-api/src/main/java/org/dateroad/auth/jwt/TokenType.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.dateroad.auth.jwt; - -public enum TokenType { - ACCESS_TOKEN, - REFRESH_TOKEN -} diff --git a/dateroad-api/src/main/java/org/dateroad/course/service/CourseService.java b/dateroad-api/src/main/java/org/dateroad/course/service/CourseService.java index 5b244cae..3ae3ef79 100644 --- a/dateroad-api/src/main/java/org/dateroad/course/service/CourseService.java +++ b/dateroad-api/src/main/java/org/dateroad/course/service/CourseService.java @@ -264,10 +264,10 @@ public CourseGetDetailRes getCourseDetail(final Long userId, final Long courseId boolean isCourseMine = courseRepository.existsByUserId(foundUser.getId()); - boolean isUserLiked = likeRepository.existsByUserIdAndCourseId(foundUser.getId(), foundCourse.getId()); + boolean isUserLiked = false; - if (isCourseMine) { - isUserLiked = false; + if (!isCourseMine) { + isUserLiked = likeRepository.existsByUserIdAndCourseId(foundUser.getId(), foundCourse.getId()); } return CourseGetDetailRes.of( diff --git a/dateroad-api/src/main/java/org/dateroad/user/service/AuthService.java b/dateroad-api/src/main/java/org/dateroad/user/service/AuthService.java index f0b49e67..12b31377 100644 --- a/dateroad-api/src/main/java/org/dateroad/user/service/AuthService.java +++ b/dateroad-api/src/main/java/org/dateroad/user/service/AuthService.java @@ -59,7 +59,7 @@ public UserJwtInfoRes signUp(final String token, final UserSignUpReq userSignUpR User newUser = saveUser(userSignUpReq.name(), cachePath + s3Service.uploadImage(path, image), userSignUpReq.platform(), platformUserId); saveUserTag(newUser, tag); - Token issuedToken = jwtProvider.issueToken(newUser.getId()); + Token issuedToken = issueToken(newUser.getId()); return UserJwtInfoRes.of(newUser.getId(), issuedToken.accessToken(), issuedToken.refreshToken()); } @@ -68,7 +68,7 @@ public UserJwtInfoRes signIn(final String token, final UserSignInReq userSignInR String platformUserId = getUserPlatformId(userSignInReq.platform(), token); User foundUser = getUserByPlatformAndPlatformUserId(userSignInReq.platform(), platformUserId); deleteRefreshToken(foundUser.getId()); - Token issuedToken = jwtProvider.issueToken(foundUser.getId()); + Token issuedToken = issueToken(foundUser.getId()); return UserJwtInfoRes.of(foundUser.getId(), issuedToken.accessToken(), issuedToken.refreshToken()); } @@ -77,16 +77,15 @@ public UserJwtInfoRes reissue(final String refreshToken) { RefreshToken foundRefreshToken = getRefreshTokenByToken(refreshToken); jwtProvider.validateRefreshToken(foundRefreshToken.getExpiredAt()); Long userId = foundRefreshToken.getUserId(); - Token newToken = jwtProvider.issueToken(userId); + deleteRefreshToken(userId); + Token newToken = issueToken(userId); return UserJwtInfoRes.of(userId, newToken.accessToken(), newToken.refreshToken()); } @Transactional public void withdraw(final Long userId, final AppleWithdrawAuthCodeReq AppleWithdrawAuthCodeReq) { - //todo: #45브랜치 머지후, 메서드 이용 User foundUser = userRepository.findById(userId).orElseThrow(EntityNotFoundException::new); - if (foundUser.getPlatForm() == Platform.KAKAO) { //카카오 유저면 카카오와 연결 끊기 kakaoFeignProvider.unLinkWithKakao(foundUser.getPlatformUserId()); } else if (foundUser.getPlatForm() == Platform.APPLE) { //애플 유저면 애플이랑 연결 끊기 @@ -95,8 +94,7 @@ public void withdraw(final Long userId, final AppleWithdrawAuthCodeReq AppleWith throw new BadRequestException(FailureCode.INVALID_PLATFORM_TYPE); } - //todo: #45브랜치 머지후, 메서드 이용 - refreshTokenRepository.deleteByUserId(foundUser.getId()); + deleteRefreshToken(foundUser.getId()); userRepository.deleteById(foundUser.getId()); } @@ -166,7 +164,7 @@ private void validateUserTagSize(final List userTags) { } } - public RefreshToken getRefreshTokenByToken(final String refreshToken) { + private RefreshToken getRefreshTokenByToken(final String refreshToken) { try { return refreshTokenRepository.findByToken(refreshToken) .orElseThrow(() -> new UnauthorizedException(FailureCode.UNAUTHORIZED)); @@ -183,4 +181,9 @@ public RefreshToken getRefreshTokenByToken(final String refreshToken) { private void deleteRefreshToken(final long userId) { refreshTokenRepository.deleteByUserId(userId); } + + //토큰 발급 + Token issueToken(final Long userId) { + return jwtProvider.issueToken(userId); + } } diff --git a/dateroad-external/src/main/java/org/dateroad/feign/apple/AppleFeignProvider.java b/dateroad-external/src/main/java/org/dateroad/feign/apple/AppleFeignProvider.java index 3e772f2e..34a10791 100644 --- a/dateroad-external/src/main/java/org/dateroad/feign/apple/AppleFeignProvider.java +++ b/dateroad-external/src/main/java/org/dateroad/feign/apple/AppleFeignProvider.java @@ -37,7 +37,6 @@ public void revokeUser(final String authCode) { String appleAccessToken = getAppleAccess(secretKey, authCode); appleFeignApi.revokeUser(secretKey, appleAccessToken, appleProperties.getClientId(), "access_token"); } catch (IOException e) { - System.out.println(e); throw new UnauthorizedException(FailureCode.INVALID_APPLE_TOKEN_ACCESS); } } diff --git a/dateroad-external/src/main/java/org/dateroad/feign/kakao/KakaoPlatformUserIdProvider.java b/dateroad-external/src/main/java/org/dateroad/feign/kakao/KakaoPlatformUserIdProvider.java index 6753486d..5b3798f6 100644 --- a/dateroad-external/src/main/java/org/dateroad/feign/kakao/KakaoPlatformUserIdProvider.java +++ b/dateroad-external/src/main/java/org/dateroad/feign/kakao/KakaoPlatformUserIdProvider.java @@ -1,62 +1,55 @@ -package org.dateroad.feign.kakao; - -import com.fasterxml.jackson.databind.ObjectMapper; -import feign.FeignException; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.dateroad.code.FailureCode; -import org.dateroad.exception.UnauthorizedException; -import org.dateroad.feign.kakao.dto.response.KakaoErrorRes; -import org.dateroad.feign.kakao.dto.response.KakaoAccessTokenInfoRes; -import org.springframework.stereotype.Component; - -import java.io.IOException; - -@Slf4j -@RequiredArgsConstructor -@Component -public class KakaoPlatformUserIdProvider { - private final KakaoFeignApi kakaoFeignApi; - private final ObjectMapper objectMapper; - private static final String TOKEN_TYPE = "Bearer "; - - //AuthService에서 호출 : 카카오에서 주는 userId 받아오기 - public String getKakaoPlatformUserId(final String accessToken) { - String kakaoAccessTokenWithTokenType = getAccessTokenWithTokenType(accessToken); - KakaoAccessTokenInfoRes kakaoAccessTokenInfoRes = getKakaoAccessTokenInfo(kakaoAccessTokenWithTokenType); - return String.valueOf(kakaoAccessTokenInfoRes.id()); - } - - private KakaoAccessTokenInfoRes getKakaoAccessTokenInfo(final String token) { - try { - return kakaoFeignApi.getKakaoPlatformUserId(token); - } catch (FeignException e) { - log.error("Kakao feign exception : ", e); - - //kakaoResponseDTO로 변경 - KakaoErrorRes errorResponse = convertToKakaoErrorResponse(e.contentUTF8()); - - //카카오에서 주는 에러 코드가 -1이면 카카오 내부 에러, 나머지는 카카오 액세스 토큰 에러 - if (errorResponse.code() == -1) { - log.error("Kakao feign exception : ", e); - throw new UnauthorizedException(FailureCode.KAKAO_INTERNER_ERROR); - } else { - log.error("feign exception : ", e); - throw new UnauthorizedException(FailureCode.INVALID_KAKAO_TOKEN); - } - } - } - - private String getAccessTokenWithTokenType(String accessToken) { - return TOKEN_TYPE + accessToken; - } - - private KakaoErrorRes convertToKakaoErrorResponse(String responseBody) { - try { - return objectMapper.readValue(responseBody, KakaoErrorRes.class); - } catch (IOException e) { - log.error("Convert To KakaoErrorResponse Error : ", e); - throw new UnauthorizedException(FailureCode.UNAUTHORIZED); - } - } -} +//package org.dateroad.feign.kakao; +// +//import com.fasterxml.jackson.databind.ObjectMapper; +//import feign.FeignException; +//import lombok.RequiredArgsConstructor; +//import lombok.extern.slf4j.Slf4j; +//import org.dateroad.code.FailureCode; +//import org.dateroad.exception.UnauthorizedException; +//import org.dateroad.feign.kakao.dto.response.KakaoErrorRes; +//import org.dateroad.feign.kakao.dto.response.KakaoAccessTokenInfoRes; +//import org.springframework.stereotype.Component; +// +//import java.io.IOException; +// +//@Slf4j +//@RequiredArgsConstructor +//@Component +//public class KakaoPlatformUserIdProvider { +// private final KakaoFeignApi kakaoFeignApi; +// private final ObjectMapper objectMapper; +// private static final String TOKEN_TYPE = "Bearer "; +// +// private KakaoAccessTokenInfoRes getKakaoAccessTokenInfo(final String token) { +// try { +// return kakaoFeignApi.getKakaoPlatformUserId(token); +// } catch (FeignException e) { +// log.error("Kakao feign exception : ", e); +// +// //kakaoResponseDTO로 변경 +// KakaoErrorRes errorResponse = convertToKakaoErrorResponse(e.contentUTF8()); +// +// //카카오에서 주는 에러 코드가 -1이면 카카오 내부 에러, 나머지는 카카오 액세스 토큰 에러 +// if (errorResponse.code() == -1) { +// log.error("Kakao feign exception : ", e); +// throw new UnauthorizedException(FailureCode.KAKAO_INTERNER_ERROR); +// } else { +// log.error("feign exception : ", e); +// throw new UnauthorizedException(FailureCode.INVALID_KAKAO_TOKEN); +// } +// } +// } +// +// private String getAccessTokenWithTokenType(String accessToken) { +// return TOKEN_TYPE + accessToken; +// } +// +// private KakaoErrorRes convertToKakaoErrorResponse(String responseBody) { +// try { +// return objectMapper.readValue(responseBody, KakaoErrorRes.class); +// } catch (IOException e) { +// log.error("Convert To KakaoErrorResponse Error : ", e); +// throw new UnauthorizedException(FailureCode.UNAUTHORIZED); +// } +// } +//} From e3e1b54e67f2c89d7528802bf861e5a9f28da3b1 Mon Sep 17 00:00:00 2001 From: Kwak Seong Joon Date: Tue, 16 Jul 2024 00:36:15 +0900 Subject: [PATCH 2/3] =?UTF-8?q?[chore]=20refreshTokenRepository=20?= =?UTF-8?q?=EB=A9=94=EC=84=9C=EB=93=9C=EB=AA=85=20=EB=B3=80=EA=B2=BD=20-?= =?UTF-8?q?=20#102?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/jwt/refreshtoken/RefreshTokenGenerator.java | 8 -------- .../main/java/org/dateroad/user/api/UserController.java | 2 +- .../main/java/org/dateroad/user/service/AuthService.java | 2 +- .../refreshtoken/repository/RefreshTokenRepository.java | 2 +- 4 files changed, 3 insertions(+), 11 deletions(-) diff --git a/dateroad-api/src/main/java/org/dateroad/auth/jwt/refreshtoken/RefreshTokenGenerator.java b/dateroad-api/src/main/java/org/dateroad/auth/jwt/refreshtoken/RefreshTokenGenerator.java index be00347f..06995140 100644 --- a/dateroad-api/src/main/java/org/dateroad/auth/jwt/refreshtoken/RefreshTokenGenerator.java +++ b/dateroad-api/src/main/java/org/dateroad/auth/jwt/refreshtoken/RefreshTokenGenerator.java @@ -1,8 +1,6 @@ package org.dateroad.auth.jwt.refreshtoken; import lombok.RequiredArgsConstructor; -import org.dateroad.code.FailureCode; -import org.dateroad.exception.UnauthorizedException; import org.dateroad.refreshtoken.domain.RefreshToken; import org.dateroad.refreshtoken.repository.RefreshTokenRepository; import org.springframework.stereotype.Component; @@ -10,9 +8,7 @@ import java.nio.ByteBuffer; import java.security.SecureRandom; import java.time.LocalDateTime; -import java.util.Arrays; import java.util.Base64; -import java.util.Optional; @RequiredArgsConstructor @Component @@ -38,10 +34,6 @@ public String generateRefreshToken(final long userId) { return token; } - public void deleteRefreshToken(final Long userId) { - refreshTokenRepository.deleteByUserId(userId); - } - private SecureRandom createSecureRandom() { ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES); diff --git a/dateroad-api/src/main/java/org/dateroad/user/api/UserController.java b/dateroad-api/src/main/java/org/dateroad/user/api/UserController.java index 1d8e6c55..f2a46ec2 100644 --- a/dateroad-api/src/main/java/org/dateroad/user/api/UserController.java +++ b/dateroad-api/src/main/java/org/dateroad/user/api/UserController.java @@ -33,7 +33,7 @@ public class UserController { public ResponseEntity signUp(@RequestHeader(AUTHORIZATION) final String token, @RequestPart("userSignUpReq") final UserSignUpReq userSignUPReq, @RequestPart("image") MultipartFile image, - @RequestPart("tag") List tag //todo: 열람 데이트 코스 전체 조회 API 머지 후, TagEnum으로 변경해야됨 + @RequestPart("tag") List tag ) throws IOException { UserJwtInfoRes userSignUpRes = authService.signUp(token, userSignUPReq, image, tag); return ResponseEntity diff --git a/dateroad-api/src/main/java/org/dateroad/user/service/AuthService.java b/dateroad-api/src/main/java/org/dateroad/user/service/AuthService.java index 12b31377..d2317af4 100644 --- a/dateroad-api/src/main/java/org/dateroad/user/service/AuthService.java +++ b/dateroad-api/src/main/java/org/dateroad/user/service/AuthService.java @@ -179,7 +179,7 @@ private RefreshToken getRefreshTokenByToken(final String refreshToken) { //refreshToken 삭제 private void deleteRefreshToken(final long userId) { - refreshTokenRepository.deleteByUserId(userId); + refreshTokenRepository.deleteRefreshTokenByUserId(userId); } //토큰 발급 diff --git a/dateroad-domain/src/main/java/org/dateroad/refreshtoken/repository/RefreshTokenRepository.java b/dateroad-domain/src/main/java/org/dateroad/refreshtoken/repository/RefreshTokenRepository.java index 63f2781c..dc9d76a3 100644 --- a/dateroad-domain/src/main/java/org/dateroad/refreshtoken/repository/RefreshTokenRepository.java +++ b/dateroad-domain/src/main/java/org/dateroad/refreshtoken/repository/RefreshTokenRepository.java @@ -9,5 +9,5 @@ public interface RefreshTokenRepository extends JpaRepository findByToken(String token); - void deleteByUserId(final Long userId); + void deleteRefreshTokenByUserId(final Long userId); } From 728cbfe4c11dfd1ff5523b8688bdc0b5c5b490f2 Mon Sep 17 00:00:00 2001 From: Kwak Seong Joon Date: Tue, 16 Jul 2024 00:42:05 +0900 Subject: [PATCH 3/3] =?UTF-8?q?[chore]=20advertisement=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=20-=20#102?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/AdvertisementController.java | 30 ++++++++++++++++ .../dto/response/AdvGetAllRes.java | 14 ++++---- .../dto/response/AdvGetDetailRes.java | 3 +- .../service/AdvertisementService.java} | 35 +++++++++---------- .../api/AdvertismentController.java | 32 ----------------- .../java/org/dateroad/code/FailureCode.java | 2 +- .../org/dateroad/adImage/domain/AdImage.java | 8 ++--- .../adImage/repository/AdImageRepository.java | 1 - .../{Advertisment.java => Advertisement.java} | 10 +++--- ...tory.java => AdvertisementRepository.java} | 8 ++--- 10 files changed, 69 insertions(+), 74 deletions(-) create mode 100644 dateroad-api/src/main/java/org/dateroad/advertisement/api/AdvertisementController.java rename dateroad-api/src/main/java/org/dateroad/{advertisment => advertisement}/dto/response/AdvGetAllRes.java (65%) rename dateroad-api/src/main/java/org/dateroad/{advertisment => advertisement}/dto/response/AdvGetDetailRes.java (93%) rename dateroad-api/src/main/java/org/dateroad/{advertisment/service/AdvertismentService.java => advertisement/service/AdvertisementService.java} (54%) delete mode 100644 dateroad-api/src/main/java/org/dateroad/advertisment/api/AdvertismentController.java rename dateroad-domain/src/main/java/org/dateroad/advertisement/domain/{Advertisment.java => Advertisement.java} (87%) rename dateroad-domain/src/main/java/org/dateroad/advertisement/repository/{AdvertismentRepository.java => AdvertisementRepository.java} (51%) diff --git a/dateroad-api/src/main/java/org/dateroad/advertisement/api/AdvertisementController.java b/dateroad-api/src/main/java/org/dateroad/advertisement/api/AdvertisementController.java new file mode 100644 index 00000000..a7f9055f --- /dev/null +++ b/dateroad-api/src/main/java/org/dateroad/advertisement/api/AdvertisementController.java @@ -0,0 +1,30 @@ +package org.dateroad.advertisement.api; + +import lombok.RequiredArgsConstructor; +import org.dateroad.advertisement.dto.response.AdvGetAllRes; +import org.dateroad.advertisement.dto.response.AdvGetDetailRes; +import org.dateroad.advertisement.service.AdvertisementService; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/v1/advertisments") +public class AdvertisementController { + private final AdvertisementService advertisementService; + + @GetMapping + public ResponseEntity getAllAdvertisements(){ + return ResponseEntity.ok(advertisementService.getAllAdvertisments()); + } + + @GetMapping("{advId}") + public ResponseEntity getAllAdvertisements( + final @PathVariable Long advId + ){ + return ResponseEntity.ok(advertisementService.getAdvertisementsDetail(advId)); + } +} diff --git a/dateroad-api/src/main/java/org/dateroad/advertisment/dto/response/AdvGetAllRes.java b/dateroad-api/src/main/java/org/dateroad/advertisement/dto/response/AdvGetAllRes.java similarity index 65% rename from dateroad-api/src/main/java/org/dateroad/advertisment/dto/response/AdvGetAllRes.java rename to dateroad-api/src/main/java/org/dateroad/advertisement/dto/response/AdvGetAllRes.java index 7565ab40..4f5806f1 100644 --- a/dateroad-api/src/main/java/org/dateroad/advertisment/dto/response/AdvGetAllRes.java +++ b/dateroad-api/src/main/java/org/dateroad/advertisement/dto/response/AdvGetAllRes.java @@ -1,10 +1,10 @@ -package org.dateroad.advertisment.dto.response; +package org.dateroad.advertisement.dto.response; import java.util.List; import lombok.AccessLevel; import lombok.Builder; import org.dateroad.advertisement.domain.AdTagType; -import org.dateroad.advertisement.domain.Advertisment; +import org.dateroad.advertisement.domain.Advertisement; @Builder(access = AccessLevel.PRIVATE) public record AdvGetAllRes( @@ -23,12 +23,12 @@ public record AdvertismentDtoRes( String title, AdTagType tag ) { - public static AdvertismentDtoRes of(Advertisment advertisment) { + public static AdvertismentDtoRes of(Advertisement advertisement) { return AdvertismentDtoRes.builder() - .advertismentId(advertisment.getId()) - .thumbnail(advertisment.getThumbnail()) - .title(advertisment.getTitle()) - .tag(advertisment.getTag()) + .advertismentId(advertisement.getId()) + .thumbnail(advertisement.getThumbnail()) + .title(advertisement.getTitle()) + .tag(advertisement.getTag()) .build(); } } diff --git a/dateroad-api/src/main/java/org/dateroad/advertisment/dto/response/AdvGetDetailRes.java b/dateroad-api/src/main/java/org/dateroad/advertisement/dto/response/AdvGetDetailRes.java similarity index 93% rename from dateroad-api/src/main/java/org/dateroad/advertisment/dto/response/AdvGetDetailRes.java rename to dateroad-api/src/main/java/org/dateroad/advertisement/dto/response/AdvGetDetailRes.java index c86bf000..74932102 100644 --- a/dateroad-api/src/main/java/org/dateroad/advertisment/dto/response/AdvGetDetailRes.java +++ b/dateroad-api/src/main/java/org/dateroad/advertisement/dto/response/AdvGetDetailRes.java @@ -1,8 +1,7 @@ -package org.dateroad.advertisment.dto.response; +package org.dateroad.advertisement.dto.response; import com.fasterxml.jackson.annotation.JsonFormat; import java.time.LocalDate; -import java.time.LocalDateTime; import java.util.List; import lombok.AccessLevel; import lombok.Builder; diff --git a/dateroad-api/src/main/java/org/dateroad/advertisment/service/AdvertismentService.java b/dateroad-api/src/main/java/org/dateroad/advertisement/service/AdvertisementService.java similarity index 54% rename from dateroad-api/src/main/java/org/dateroad/advertisment/service/AdvertismentService.java rename to dateroad-api/src/main/java/org/dateroad/advertisement/service/AdvertisementService.java index b32f6476..5fa83fa5 100644 --- a/dateroad-api/src/main/java/org/dateroad/advertisment/service/AdvertismentService.java +++ b/dateroad-api/src/main/java/org/dateroad/advertisement/service/AdvertisementService.java @@ -1,17 +1,16 @@ -package org.dateroad.advertisment.service; +package org.dateroad.advertisement.service; import java.util.List; -import java.util.Optional; import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import org.dateroad.adImage.domain.AdImage; import org.dateroad.adImage.repository.AdImageRepository; -import org.dateroad.advertisement.domain.Advertisment; -import org.dateroad.advertisement.repository.AdvertismentRepository; -import org.dateroad.advertisment.dto.response.AdvGetAllRes; -import org.dateroad.advertisment.dto.response.AdvGetAllRes.AdvertismentDtoRes; -import org.dateroad.advertisment.dto.response.AdvGetDetailRes; -import org.dateroad.advertisment.dto.response.AdvGetDetailRes.AdvImagesRes; +import org.dateroad.advertisement.domain.Advertisement; +import org.dateroad.advertisement.repository.AdvertisementRepository; +import org.dateroad.advertisement.dto.response.AdvGetAllRes; +import org.dateroad.advertisement.dto.response.AdvGetAllRes.AdvertismentDtoRes; +import org.dateroad.advertisement.dto.response.AdvGetDetailRes; +import org.dateroad.advertisement.dto.response.AdvGetDetailRes.AdvImagesRes; import org.dateroad.code.FailureCode; import org.dateroad.exception.EntityNotFoundException; import org.springframework.data.domain.PageRequest; @@ -22,8 +21,8 @@ @Service @RequiredArgsConstructor @Transactional(readOnly = true) -public class AdvertismentService { - private final AdvertismentRepository advertismentRepository; +public class AdvertisementService { + private final AdvertisementRepository advertisementRepository; private final AdImageRepository adImageRepository; private static List getImages(final List adImages) { @@ -34,24 +33,24 @@ private static List getImages(final List adImages) { public AdvGetAllRes getAllAdvertisments() { Pageable topFive = PageRequest.of(0, 5); - return AdvGetAllRes.of(advertismentRepository.findTop5ByOrderByCreatedDateDesc(topFive). + return AdvGetAllRes.of(advertisementRepository.findTop5ByOrderByCreatedDateDesc(topFive). stream() .map(AdvertismentDtoRes::of) .collect(Collectors.toList())); } - public AdvGetDetailRes getAdvertismentsDetail(final Long advId) { - Advertisment advertisment = getAdvertisment(advId); + public AdvGetDetailRes getAdvertisementsDetail(final Long advId) { + Advertisement advertisement = getAdvertisement(advId); List adImages = adImageRepository.findAllById(advId); return AdvGetDetailRes.of( - getImages(adImages), advertisment.getTitle(), advertisment.getCreatedAt().toLocalDate(), - advertisment.getTitle() + getImages(adImages), advertisement.getTitle(), advertisement.getCreatedAt().toLocalDate(), + advertisement.getTitle() ); } - private Advertisment getAdvertisment(final Long advId) { - return advertismentRepository.findById(advId).orElseThrow( - () -> new EntityNotFoundException(FailureCode.ADVERTISMENT_NOT_FOUND) + private Advertisement getAdvertisement(final Long advId) { + return advertisementRepository.findById(advId).orElseThrow( + () -> new EntityNotFoundException(FailureCode.ADVERTISEMENT_NOT_FOUND) ); } } diff --git a/dateroad-api/src/main/java/org/dateroad/advertisment/api/AdvertismentController.java b/dateroad-api/src/main/java/org/dateroad/advertisment/api/AdvertismentController.java deleted file mode 100644 index 1cd47c94..00000000 --- a/dateroad-api/src/main/java/org/dateroad/advertisment/api/AdvertismentController.java +++ /dev/null @@ -1,32 +0,0 @@ -package org.dateroad.advertisment.api; - -import lombok.RequiredArgsConstructor; -import org.dateroad.advertisment.dto.response.AdvGetAllRes; -import org.dateroad.advertisment.dto.response.AdvGetDetailRes; -import org.dateroad.advertisment.service.AdvertismentService; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestHeader; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -@RestController -@RequiredArgsConstructor -@RequestMapping("/api/v1/advertisments") -public class AdvertismentController { - private final AdvertismentService advertismentService; - - @GetMapping - public ResponseEntity getAllAdvertisments(){ - return ResponseEntity.ok(advertismentService.getAllAdvertisments()); - } - - @GetMapping("{advId}") - public ResponseEntity getAllAdvertisments( - final @PathVariable Long advId - ){ - return ResponseEntity.ok(advertismentService.getAdvertismentsDetail(advId)); - } -} diff --git a/dateroad-common/src/main/java/org/dateroad/code/FailureCode.java b/dateroad-common/src/main/java/org/dateroad/code/FailureCode.java index 3d460e14..a5b22254 100644 --- a/dateroad-common/src/main/java/org/dateroad/code/FailureCode.java +++ b/dateroad-common/src/main/java/org/dateroad/code/FailureCode.java @@ -70,7 +70,7 @@ public enum FailureCode { INSUFFICIENT_USER_POINTS(HttpStatus.NOT_FOUND, "e40413", "유저의 포인트가 부족합니다."), SORT_TYPE_NOT_FOUND(HttpStatus.UNAUTHORIZED, "e40414", "해당 순서 타입을 찾을 수 없습니다."), - ADVERTISMENT_NOT_FOUND(HttpStatus.NOT_FOUND, "e40415", "해당 광고를 찾을 수 없습니다."), + ADVERTISEMENT_NOT_FOUND(HttpStatus.NOT_FOUND, "e40415", "해당 광고를 찾을 수 없습니다."), /** * 405 Method Not Allowed diff --git a/dateroad-domain/src/main/java/org/dateroad/adImage/domain/AdImage.java b/dateroad-domain/src/main/java/org/dateroad/adImage/domain/AdImage.java index 9f1a62b9..d8eaa45c 100644 --- a/dateroad-domain/src/main/java/org/dateroad/adImage/domain/AdImage.java +++ b/dateroad-domain/src/main/java/org/dateroad/adImage/domain/AdImage.java @@ -15,7 +15,7 @@ import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; -import org.dateroad.advertisement.domain.Advertisment; +import org.dateroad.advertisement.domain.Advertisement; import org.dateroad.common.BaseTimeEntity; @Entity @@ -33,7 +33,7 @@ public class AdImage extends BaseTimeEntity { @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "advertisment_id") @NotNull - private Advertisment advertisment; + private Advertisement advertisement; @Column(name = "image_url") @NotNull @@ -44,12 +44,12 @@ public class AdImage extends BaseTimeEntity { private int sequence; public static AdImage create( - final Advertisment advertisment, + final Advertisement advertisement, final String imageUrl, final int sequence ) { return AdImage.builder() - .advertisment(advertisment) + .advertisement(advertisement) .imageUrl(imageUrl) .sequence(sequence) .build(); diff --git a/dateroad-domain/src/main/java/org/dateroad/adImage/repository/AdImageRepository.java b/dateroad-domain/src/main/java/org/dateroad/adImage/repository/AdImageRepository.java index 1e4b3a11..f0b5f091 100644 --- a/dateroad-domain/src/main/java/org/dateroad/adImage/repository/AdImageRepository.java +++ b/dateroad-domain/src/main/java/org/dateroad/adImage/repository/AdImageRepository.java @@ -2,7 +2,6 @@ import java.util.List; import org.dateroad.adImage.domain.AdImage; -import org.dateroad.advertisement.domain.Advertisment; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/dateroad-domain/src/main/java/org/dateroad/advertisement/domain/Advertisment.java b/dateroad-domain/src/main/java/org/dateroad/advertisement/domain/Advertisement.java similarity index 87% rename from dateroad-domain/src/main/java/org/dateroad/advertisement/domain/Advertisment.java rename to dateroad-domain/src/main/java/org/dateroad/advertisement/domain/Advertisement.java index 554b525e..d3b280cc 100644 --- a/dateroad-domain/src/main/java/org/dateroad/advertisement/domain/Advertisment.java +++ b/dateroad-domain/src/main/java/org/dateroad/advertisement/domain/Advertisement.java @@ -18,14 +18,14 @@ @Entity @Getter -@Table(name = "advertisments") +@Table(name = "advertisements") @NoArgsConstructor(access = AccessLevel.PROTECTED) @AllArgsConstructor(access = AccessLevel.PRIVATE) @Builder(access = AccessLevel.PRIVATE) -public class Advertisment extends BaseTimeEntity { +public class Advertisement extends BaseTimeEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "advertisment_id") + @Column(name = "advertisement_id") private Long id; @Column(name = "title") @@ -45,12 +45,12 @@ public class Advertisment extends BaseTimeEntity { @Enumerated(EnumType.STRING) private AdTagType tag; - public static Advertisment create( + public static Advertisement create( final String title, final String description, final String thumbnail, final AdTagType tag) { - return Advertisment.builder() + return Advertisement.builder() .title(title) .description(description) .thumbnail(thumbnail) diff --git a/dateroad-domain/src/main/java/org/dateroad/advertisement/repository/AdvertismentRepository.java b/dateroad-domain/src/main/java/org/dateroad/advertisement/repository/AdvertisementRepository.java similarity index 51% rename from dateroad-domain/src/main/java/org/dateroad/advertisement/repository/AdvertismentRepository.java rename to dateroad-domain/src/main/java/org/dateroad/advertisement/repository/AdvertisementRepository.java index 17a688ed..8267ee94 100644 --- a/dateroad-domain/src/main/java/org/dateroad/advertisement/repository/AdvertismentRepository.java +++ b/dateroad-domain/src/main/java/org/dateroad/advertisement/repository/AdvertisementRepository.java @@ -1,14 +1,14 @@ package org.dateroad.advertisement.repository; import java.util.List; -import org.dateroad.advertisement.domain.Advertisment; +import org.dateroad.advertisement.domain.Advertisement; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; @Repository -public interface AdvertismentRepository extends JpaRepository { - @Query("SELECT a FROM Advertisment a ORDER BY a.createdAt DESC") - List findTop5ByOrderByCreatedDateDesc(Pageable pageable); +public interface AdvertisementRepository extends JpaRepository { + @Query("SELECT a FROM Advertisement a ORDER BY a.createdAt DESC") + List findTop5ByOrderByCreatedDateDesc(Pageable pageable); }