From 8104a6aa6740b76ec3210773aeacdaf2d00c8931 Mon Sep 17 00:00:00 2001 From: jwaminseok Date: Tue, 30 Apr 2024 16:52:19 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=EC=88=98=EC=A0=95=EC=A0=84=20commit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../diary/controller/DiaryController.java | 1 + .../kkoolbeeServer/domain/member/Member.java | 5 +++ .../member/controller/MemberController.java | 33 +++++++++++++++++++ .../domain/member/service/MemberService.java | 22 +++++++++++++ 4 files changed, 61 insertions(+) diff --git a/src/main/java/org/kau/kkoolbeeServer/domain/diary/controller/DiaryController.java b/src/main/java/org/kau/kkoolbeeServer/domain/diary/controller/DiaryController.java index 68d7c70..41229ba 100644 --- a/src/main/java/org/kau/kkoolbeeServer/domain/diary/controller/DiaryController.java +++ b/src/main/java/org/kau/kkoolbeeServer/domain/diary/controller/DiaryController.java @@ -147,4 +147,5 @@ public ResponseEntity> createSlowTypeDiary(@RequestPart("imageurl + } \ No newline at end of file diff --git a/src/main/java/org/kau/kkoolbeeServer/domain/member/Member.java b/src/main/java/org/kau/kkoolbeeServer/domain/member/Member.java index 60275ce..8164106 100644 --- a/src/main/java/org/kau/kkoolbeeServer/domain/member/Member.java +++ b/src/main/java/org/kau/kkoolbeeServer/domain/member/Member.java @@ -54,4 +54,9 @@ public Member(String kakaoId) { public static Member of(String kakaoId) { return new Member(kakaoId); } + + + public void setDiaryType(UserDiaryType userDiaryType) { + this.userDiaryType = userDiaryType; + } } diff --git a/src/main/java/org/kau/kkoolbeeServer/domain/member/controller/MemberController.java b/src/main/java/org/kau/kkoolbeeServer/domain/member/controller/MemberController.java index e3ffa37..6196dd2 100644 --- a/src/main/java/org/kau/kkoolbeeServer/domain/member/controller/MemberController.java +++ b/src/main/java/org/kau/kkoolbeeServer/domain/member/controller/MemberController.java @@ -1,6 +1,7 @@ package org.kau.kkoolbeeServer.domain.member.controller; import lombok.RequiredArgsConstructor; +import org.kau.kkoolbeeServer.domain.member.UserDiaryType; import org.kau.kkoolbeeServer.domain.member.dto.response.MemberLoginResponseDto; import org.kau.kkoolbeeServer.domain.member.service.MemberService; import org.kau.kkoolbeeServer.global.auth.fegin.kakao.KakaoLoginService; @@ -20,6 +21,7 @@ public class MemberController { private final MemberService memberService; private final KakaoLoginService kakaoLoginService; + private final JwtProvider jwtProvider; @PostMapping("/login") public ResponseEntity> login( @@ -47,4 +49,35 @@ public ResponseEntity> kakaoAccessToken( @RequestHeader("Authorization") String code) { return ResponseEntity.ok(ApiResponse.success(SuccessType.KAKAO_ACCESS_TOKEN_SUCCESS, kakaoLoginService.getKakaoAccessToken(code))); } + + /*@PostMapping("/member/character") + public ResponseEntity> diaryType( + @RequestHeader("Authorization")String token,@RequestBody String userDiaryType){ + + Long memberId=jwtProvider.getUserFromJwt(token); + UserDiaryType DiaryType=UserDiaryType.valueOf(userDiaryType); + memberService.setUserDiaryType(memberId,DiaryType); + + return ResponseEntity.ok(ApiResponse.success(SuccessType.PROCESS_SUCCESSED)); + + + } +*/ + /* @PostMapping("/member/character") + public ResponseEntity> diaryType( + @RequestHeader("Authorization")String token,@RequestBody String userDiaryType){ + + memberService.setUserDiaryType(token,userDiaryType); + + return ResponseEntity.ok(ApiResponse.success(SuccessType.PROCESS_SUCCESSED)); + + + } + + + @GetMapping("/member/member") + public ResponseEntity> diarry(Principal principal) +*/ + + } \ No newline at end of file diff --git a/src/main/java/org/kau/kkoolbeeServer/domain/member/service/MemberService.java b/src/main/java/org/kau/kkoolbeeServer/domain/member/service/MemberService.java index e5973e4..3351806 100644 --- a/src/main/java/org/kau/kkoolbeeServer/domain/member/service/MemberService.java +++ b/src/main/java/org/kau/kkoolbeeServer/domain/member/service/MemberService.java @@ -3,6 +3,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.kau.kkoolbeeServer.domain.member.Member; +import org.kau.kkoolbeeServer.domain.member.UserDiaryType; import org.kau.kkoolbeeServer.domain.member.dto.response.MemberLoginResponseDto; import org.kau.kkoolbeeServer.domain.member.repository.MemberRepository; import org.kau.kkoolbeeServer.global.auth.fegin.kakao.KakaoLoginService; @@ -90,4 +91,25 @@ private Member getUserBySocialAndSocialId(String kakaoId) { private boolean isUserByKakaoId(String kakaoId) { return memberRepository.existsByKakaoId(kakaoId); } + + /* @Transactional + public void setUserDiaryType(Long memberId, UserDiaryType userDiaryType){ + Member member=memberRepository.findByIdOrThrow(memberId); + member.setDiaryType(userDiaryType); + memberRepository.save(member); + + }*/ + + /* @Transactional + public void setUserDiaryType(String Token, String userDiaryType){ + + Token=parseTokenString(Token); + UserDiaryType DiaryType=UserDiaryType.valueOf(userDiaryType); + + jwtProvider.getUserFromJwt() + + + + + }*/ } \ No newline at end of file From d43493e18764b50c6fda3c4ed97b815a3922c65e Mon Sep 17 00:00:00 2001 From: jwaminseok Date: Thu, 2 May 2024 00:45:38 +0900 Subject: [PATCH 2/2] =?UTF-8?q?Principal=EA=B0=9D=EC=B2=B4=EC=82=AC?= =?UTF-8?q?=EC=9A=A9=ED=95=9C=20memberId=EA=B8=B0=EB=B0=98=20api=EC=A0=84?= =?UTF-8?q?=EC=B2=B4=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../diary/controller/DiaryController.java | 85 +++++++++++++++++-- .../diary/repository/DiaryRepository.java | 7 +- .../domain/diary/service/DiaryService.java | 19 ++++- .../member/controller/MemberController.java | 28 ++---- .../domain/member/service/MemberService.java | 12 ++- .../global/auth/jwt/JwtProvider.java | 2 +- 6 files changed, 115 insertions(+), 38 deletions(-) diff --git a/src/main/java/org/kau/kkoolbeeServer/domain/diary/controller/DiaryController.java b/src/main/java/org/kau/kkoolbeeServer/domain/diary/controller/DiaryController.java index 41229ba..cb9772c 100644 --- a/src/main/java/org/kau/kkoolbeeServer/domain/diary/controller/DiaryController.java +++ b/src/main/java/org/kau/kkoolbeeServer/domain/diary/controller/DiaryController.java @@ -12,6 +12,9 @@ import org.kau.kkoolbeeServer.domain.diary.dto.response.FeelingListResponseDto; import org.kau.kkoolbeeServer.domain.diary.dto.response.SlowTypeCreateResponseDto; import org.kau.kkoolbeeServer.domain.diary.service.DiaryService; +import org.kau.kkoolbeeServer.domain.member.Member; +import org.kau.kkoolbeeServer.domain.member.service.MemberService; +import org.kau.kkoolbeeServer.global.auth.jwt.JwtProvider; import org.kau.kkoolbeeServer.global.common.dto.ApiResponse; import org.kau.kkoolbeeServer.global.common.dto.enums.ErrorType; import org.kau.kkoolbeeServer.global.common.dto.enums.SuccessType; @@ -27,6 +30,7 @@ import org.springframework.web.multipart.MultipartFile; import java.io.IOException; +import java.security.Principal; import java.time.LocalDateTime; import java.util.List; import java.util.Map; @@ -39,10 +43,12 @@ public class DiaryController { private DiaryService diaryService; private final S3UploaderService s3UploaderService; + private MemberService memberService; @Autowired - public DiaryController(DiaryService diaryService,S3UploaderService s3UploaderService) { + public DiaryController(DiaryService diaryService,S3UploaderService s3UploaderService,MemberService memberService) { this.diaryService = diaryService; this.s3UploaderService=s3UploaderService; + this.memberService=memberService; } @@ -64,7 +70,6 @@ public ResponseEntity> getDiaryContents(@RequestBody DiaryContent ); - DiaryContentResponseDto responseDto = new DiaryContentResponseDto( diary.getContent(), adviceResponseDto, @@ -81,12 +86,32 @@ public ResponseEntity> getDiaryContents(@RequestBody DiaryContent } } - @PostMapping("/api/diary/list/calendar") + /* @PostMapping("/api/diary/list/calendar") public ResponseEntity> getDiariesByMonth(@RequestBody CurrentDateRequestDto requestDto){ LocalDateTime currentDate = requestDto.getCurrentDate(); - Listdiaries=diaryService.findDiariesByMonth(currentDate); - if(diaries.isEmpty()){ + + Listdiaries=diaryService.findDiariesByMonth(currentDate); + if(diaries.isEmpty()){ + return ResponseEntity.status(ErrorType.REQUEST_VALIDATION_ERROR.getHttpStatus()) + .body(ApiResponse.error(ErrorType.REQUEST_VALIDATION_ERROR, "해당 월에 대한 일기가 존재하지 않습니다.")); + } + + List diaryDtos=diaries.stream() + .map(diary -> new CalenderDiaryResponseDto(diary.getId(), diary.getTitle(), diary.getWritedAt())) + .collect(Collectors.toList()); + + Map> responseMap= Map.of("monthList",diaryDtos); + return ResponseEntity.ok().body(ApiResponse.success(SuccessType.PROCESS_SUCCESSED, responseMap));*/ + + @PostMapping("/api/diary/list/calendar") + public ResponseEntity> getDiariesByMonth(Principal principal,@RequestBody CurrentDateRequestDto requestDto){ + Long memberId= JwtProvider.getUserFromPrincipal(principal); + LocalDateTime currentDate = requestDto.getCurrentDate(); + + List diaries = diaryService.findDiariesByMonthAndMemberId(currentDate, memberId); + + if(diaries.isEmpty()){ return ResponseEntity.status(ErrorType.REQUEST_VALIDATION_ERROR.getHttpStatus()) .body(ApiResponse.error(ErrorType.REQUEST_VALIDATION_ERROR, "해당 월에 대한 일기가 존재하지 않습니다.")); } @@ -103,8 +128,8 @@ public ResponseEntity> getDiariesByMonth(@RequestBody CurrentDate } - @PostMapping("/api/diary/list/feeling") - public ResponseEntity> getDiariesByFeeling(@RequestBody FeelingListRequestDto requestDto) { + /*@PostMapping("/api/diary/list/feeling") + public ResponseEntity> getDiariesByFeeling( @RequestBody FeelingListRequestDto requestDto) { List diaries = diaryService.findDiariesByFeeling(requestDto.getFeeling()); @@ -121,9 +146,29 @@ public ResponseEntity> getDiariesByFeeling(@RequestBody FeelingLi Map> responseMap = Map.of("feelingList", feelingList); return ResponseEntity.ok().body(ApiResponse.success(SuccessType.PROCESS_SUCCESSED, responseMap)); + }*/ + + @PostMapping("/api/diary/list/feeling") + public ResponseEntity> getDiariesByFeeling( Principal principal,@RequestBody FeelingListRequestDto requestDto) { + + Long memberId=JwtProvider.getUserFromPrincipal(principal); + List diaries = diaryService.findDiariesByMemberIdAndFeeling(memberId,requestDto.getFeeling()); + + if (diaries.isEmpty()) { + return ResponseEntity.status(ErrorType.REQUEST_VALIDATION_ERROR.getHttpStatus()) + .body(ApiResponse.error(ErrorType.REQUEST_VALIDATION_ERROR, "해당 감정에 대한 일기가 존재하지 않습니다.")); + } + + List feelingList = diaries.stream() + .map(diary -> new FeelingListResponseDto(diary.getId(), diary.getWritedAt(), diary.getTitle())) + .collect(Collectors.toList()); + + Map> responseMap = Map.of("feelingList", feelingList); + return ResponseEntity.ok().body(ApiResponse.success(SuccessType.PROCESS_SUCCESSED, responseMap)); + } - @PostMapping("/api/diary/create/slow") + /* @PostMapping("/api/diary/create/slow") public ResponseEntity> createSlowTypeDiary(@RequestPart("imageurl")MultipartFile image, @RequestPart("diaryTitle") String diaryTitle, @RequestPart("diaryContent") String diaryContent){ @@ -143,6 +188,30 @@ public ResponseEntity> createSlowTypeDiary(@RequestPart("imageurl return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(ApiResponse.error(ErrorType.INTERNAL_SERVER_ERROR,"서버 내부 오류")); } } +*/ + @PostMapping("/api/diary/create/slow") + public ResponseEntity> createSlowTypeDiary(Principal principal,@RequestPart("imageurl")MultipartFile image, + @RequestPart("diaryTitle") String diaryTitle, + @RequestPart("diaryContent") String diaryContent){ + + try { + String imageUrl = s3UploaderService.upload(image); + Long memberId=JwtProvider.getUserFromPrincipal(principal); + Member member= memberService.findByIdOrThrow(memberId); + Diary diary = new Diary(); + diary.setTitle(diaryTitle); + diary.setMember(member); + diary.setContent(diaryContent); + diary.setImageurl(imageUrl); + + Diary savedDiary=diaryService.saveDiary(diary); + SlowTypeCreateResponseDto responseDto=new SlowTypeCreateResponseDto(diary.getId(),diary.getContent(),diary.getTitle(),diary.getImageurl()); + + return ResponseEntity.ok().body(ApiResponse.success(SuccessType.PROCESS_SUCCESSED,responseDto)); + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(ApiResponse.error(ErrorType.INTERNAL_SERVER_ERROR,"서버 내부 오류")); + } + } diff --git a/src/main/java/org/kau/kkoolbeeServer/domain/diary/repository/DiaryRepository.java b/src/main/java/org/kau/kkoolbeeServer/domain/diary/repository/DiaryRepository.java index 9ac3087..aa6a1cb 100644 --- a/src/main/java/org/kau/kkoolbeeServer/domain/diary/repository/DiaryRepository.java +++ b/src/main/java/org/kau/kkoolbeeServer/domain/diary/repository/DiaryRepository.java @@ -11,8 +11,11 @@ @Repository public interface DiaryRepository extends JpaRepository { - List findByWritedAtBetween(LocalDateTime startDateTime, LocalDateTime endDateTime); + /*List findByWritedAtBetween(LocalDateTime startDateTime, LocalDateTime endDateTime);*/ + List findByMemberIdAndWritedAtBetween(Long memberId, LocalDateTime startDate, LocalDateTime endDate); - List findByFeeling(Feeling feeling); + /*List findByFeeling(Feeling feeling);*/ + + List findByMemberIdAndFeeling(Long memberId,Feeling feeling); } diff --git a/src/main/java/org/kau/kkoolbeeServer/domain/diary/service/DiaryService.java b/src/main/java/org/kau/kkoolbeeServer/domain/diary/service/DiaryService.java index 9726645..ccd76da 100644 --- a/src/main/java/org/kau/kkoolbeeServer/domain/diary/service/DiaryService.java +++ b/src/main/java/org/kau/kkoolbeeServer/domain/diary/service/DiaryService.java @@ -5,6 +5,7 @@ import org.kau.kkoolbeeServer.domain.diary.repository.DiaryRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.swing.text.html.Option; import java.time.LocalDateTime; @@ -27,16 +28,28 @@ public Optional findDiaryById(Long diary_id){ } - public List findDiariesByMonth(LocalDateTime date) { + /* public List findDiariesByMonth(LocalDateTime date) { LocalDateTime startOfMonth = date.withDayOfMonth(1).toLocalDate().atStartOfDay(); LocalDateTime endOfMonth = startOfMonth.plusMonths(1).minusSeconds(1); return diaryRepository.findByWritedAtBetween(startOfMonth, endOfMonth); + }*/ + + public List findDiariesByMonthAndMemberId(LocalDateTime date, Long memberId) { + LocalDateTime startOfMonth = date.withDayOfMonth(1).toLocalDate().atStartOfDay(); + LocalDateTime endOfMonth = startOfMonth.plusMonths(1).minusSeconds(1); + return diaryRepository.findByMemberIdAndWritedAtBetween(memberId, startOfMonth, endOfMonth); } - public List findDiariesByFeeling(String feeling) { + + + /* public List findDiariesByFeeling(String feeling) { return diaryRepository.findByFeeling(Feeling.valueOf(feeling)); } - +*/ + public List findDiariesByMemberIdAndFeeling(Long memberId,String feeling) { + return diaryRepository.findByMemberIdAndFeeling(memberId,Feeling.valueOf(feeling)); + } + @Transactional public Diary saveDiary(Diary diary){ return diaryRepository.save(diary); } diff --git a/src/main/java/org/kau/kkoolbeeServer/domain/member/controller/MemberController.java b/src/main/java/org/kau/kkoolbeeServer/domain/member/controller/MemberController.java index 6196dd2..9062b84 100644 --- a/src/main/java/org/kau/kkoolbeeServer/domain/member/controller/MemberController.java +++ b/src/main/java/org/kau/kkoolbeeServer/domain/member/controller/MemberController.java @@ -40,7 +40,7 @@ public ResponseEntity> reissue( @PatchMapping("/log-out") // Spring Security 자체의 logout과 겹치지 않기 위해 이렇게 설정 public ResponseEntity> logout(Principal principal) { - memberService.logout(JwtProvider.getUserFromPrincial(principal)); + memberService.logout(JwtProvider.getUserFromPrincipal(principal)); return ResponseEntity.ok(ApiResponse.success(SuccessType.LOGOUT_SUCCESS)); } @@ -50,24 +50,13 @@ public ResponseEntity> kakaoAccessToken( return ResponseEntity.ok(ApiResponse.success(SuccessType.KAKAO_ACCESS_TOKEN_SUCCESS, kakaoLoginService.getKakaoAccessToken(code))); } - /*@PostMapping("/member/character") - public ResponseEntity> diaryType( - @RequestHeader("Authorization")String token,@RequestBody String userDiaryType){ + @PostMapping("/member/character") + public ResponseEntity> diaryType(Principal principal,@RequestBody String userDiaryType){ - Long memberId=jwtProvider.getUserFromJwt(token); - UserDiaryType DiaryType=UserDiaryType.valueOf(userDiaryType); - memberService.setUserDiaryType(memberId,DiaryType); + Long memberId=JwtProvider.getUserFromPrincipal(principal); - return ResponseEntity.ok(ApiResponse.success(SuccessType.PROCESS_SUCCESSED)); - - - } -*/ - /* @PostMapping("/member/character") - public ResponseEntity> diaryType( - @RequestHeader("Authorization")String token,@RequestBody String userDiaryType){ - - memberService.setUserDiaryType(token,userDiaryType); + UserDiaryType diaryType=UserDiaryType.valueOf(userDiaryType); + memberService.setUserDiaryType(memberId,diaryType); return ResponseEntity.ok(ApiResponse.success(SuccessType.PROCESS_SUCCESSED)); @@ -75,9 +64,4 @@ public ResponseEntity> diaryType( } - @GetMapping("/member/member") - public ResponseEntity> diarry(Principal principal) -*/ - - } \ No newline at end of file diff --git a/src/main/java/org/kau/kkoolbeeServer/domain/member/service/MemberService.java b/src/main/java/org/kau/kkoolbeeServer/domain/member/service/MemberService.java index 3351806..43422a1 100644 --- a/src/main/java/org/kau/kkoolbeeServer/domain/member/service/MemberService.java +++ b/src/main/java/org/kau/kkoolbeeServer/domain/member/service/MemberService.java @@ -92,13 +92,21 @@ private boolean isUserByKakaoId(String kakaoId) { return memberRepository.existsByKakaoId(kakaoId); } - /* @Transactional + @Transactional public void setUserDiaryType(Long memberId, UserDiaryType userDiaryType){ + Member member=memberRepository.findByIdOrThrow(memberId); member.setDiaryType(userDiaryType); memberRepository.save(member); - }*/ + } + + @Transactional(readOnly = true) + public Member findByIdOrThrow(Long memberId) { + return memberRepository.findById(memberId) + .orElseThrow(() -> new CustomException(NOT_FOUND_MEMBER_ERROR)); + } + /* @Transactional public void setUserDiaryType(String Token, String userDiaryType){ diff --git a/src/main/java/org/kau/kkoolbeeServer/global/auth/jwt/JwtProvider.java b/src/main/java/org/kau/kkoolbeeServer/global/auth/jwt/JwtProvider.java index 1cd503a..c658e55 100644 --- a/src/main/java/org/kau/kkoolbeeServer/global/auth/jwt/JwtProvider.java +++ b/src/main/java/org/kau/kkoolbeeServer/global/auth/jwt/JwtProvider.java @@ -155,7 +155,7 @@ private SecretKey getSigningKey() { return Keys.hmacShaKeyFor(encodedKey.getBytes()); } - public static Long getUserFromPrincial(Principal principal) { + public static Long getUserFromPrincipal(Principal principal) { if (isNull(principal)) { throw new CustomException(EMPTY_PRINCIPLE_ERROR); }