Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand All @@ -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;

}

Expand All @@ -64,7 +70,6 @@ public ResponseEntity<ApiResponse<?>> getDiaryContents(@RequestBody DiaryContent
);



DiaryContentResponseDto responseDto = new DiaryContentResponseDto(
diary.getContent(),
adviceResponseDto,
Expand All @@ -81,12 +86,32 @@ public ResponseEntity<ApiResponse<?>> getDiaryContents(@RequestBody DiaryContent
}

}
@PostMapping("/api/diary/list/calendar")
/* @PostMapping("/api/diary/list/calendar")
public ResponseEntity<ApiResponse<?>> getDiariesByMonth(@RequestBody CurrentDateRequestDto requestDto){
LocalDateTime currentDate = requestDto.getCurrentDate();

List<Diary>diaries=diaryService.findDiariesByMonth(currentDate);
if(diaries.isEmpty()){

List<Diary>diaries=diaryService.findDiariesByMonth(currentDate);
if(diaries.isEmpty()){
return ResponseEntity.status(ErrorType.REQUEST_VALIDATION_ERROR.getHttpStatus())
.body(ApiResponse.error(ErrorType.REQUEST_VALIDATION_ERROR, "해당 월에 대한 일기가 존재하지 않습니다."));
}

List<CalenderDiaryResponseDto> diaryDtos=diaries.stream()
.map(diary -> new CalenderDiaryResponseDto(diary.getId(), diary.getTitle(), diary.getWritedAt()))
.collect(Collectors.toList());

Map<String,List<CalenderDiaryResponseDto>> responseMap= Map.of("monthList",diaryDtos);
return ResponseEntity.ok().body(ApiResponse.success(SuccessType.PROCESS_SUCCESSED, responseMap));*/

@PostMapping("/api/diary/list/calendar")
public ResponseEntity<ApiResponse<?>> getDiariesByMonth(Principal principal,@RequestBody CurrentDateRequestDto requestDto){
Long memberId= JwtProvider.getUserFromPrincipal(principal);
LocalDateTime currentDate = requestDto.getCurrentDate();

List<Diary> diaries = diaryService.findDiariesByMonthAndMemberId(currentDate, memberId);

if(diaries.isEmpty()){
return ResponseEntity.status(ErrorType.REQUEST_VALIDATION_ERROR.getHttpStatus())
.body(ApiResponse.error(ErrorType.REQUEST_VALIDATION_ERROR, "해당 월에 대한 일기가 존재하지 않습니다."));
}
Expand All @@ -103,8 +128,8 @@ public ResponseEntity<ApiResponse<?>> getDiariesByMonth(@RequestBody CurrentDate

}

@PostMapping("/api/diary/list/feeling")
public ResponseEntity<ApiResponse<?>> getDiariesByFeeling(@RequestBody FeelingListRequestDto requestDto) {
/*@PostMapping("/api/diary/list/feeling")
public ResponseEntity<ApiResponse<?>> getDiariesByFeeling( @RequestBody FeelingListRequestDto requestDto) {


List<Diary> diaries = diaryService.findDiariesByFeeling(requestDto.getFeeling());
Expand All @@ -121,9 +146,29 @@ public ResponseEntity<ApiResponse<?>> getDiariesByFeeling(@RequestBody FeelingLi
Map<String, List<FeelingListResponseDto>> responseMap = Map.of("feelingList", feelingList);
return ResponseEntity.ok().body(ApiResponse.success(SuccessType.PROCESS_SUCCESSED, responseMap));

}*/

@PostMapping("/api/diary/list/feeling")
public ResponseEntity<ApiResponse<?>> getDiariesByFeeling( Principal principal,@RequestBody FeelingListRequestDto requestDto) {

Long memberId=JwtProvider.getUserFromPrincipal(principal);
List<Diary> 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<FeelingListResponseDto> feelingList = diaries.stream()
.map(diary -> new FeelingListResponseDto(diary.getId(), diary.getWritedAt(), diary.getTitle()))
.collect(Collectors.toList());

Map<String, List<FeelingListResponseDto>> 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<ApiResponse<?>> createSlowTypeDiary(@RequestPart("imageurl")MultipartFile image,
@RequestPart("diaryTitle") String diaryTitle,
@RequestPart("diaryContent") String diaryContent){
Expand All @@ -143,6 +188,31 @@ public ResponseEntity<ApiResponse<?>> createSlowTypeDiary(@RequestPart("imageurl
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(ApiResponse.error(ErrorType.INTERNAL_SERVER_ERROR,"서버 내부 오류"));
}
}
*/
@PostMapping("/api/diary/create/slow")
public ResponseEntity<ApiResponse<?>> 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,"서버 내부 오류"));
}
}




Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,11 @@
@Repository
public interface DiaryRepository extends JpaRepository<Diary,Long> {

List<Diary> findByWritedAtBetween(LocalDateTime startDateTime, LocalDateTime endDateTime);
/*List<Diary> findByWritedAtBetween(LocalDateTime startDateTime, LocalDateTime endDateTime);*/
List<Diary> findByMemberIdAndWritedAtBetween(Long memberId, LocalDateTime startDate, LocalDateTime endDate);

List<Diary> findByFeeling(Feeling feeling);
/*List<Diary> findByFeeling(Feeling feeling);*/

List<Diary> findByMemberIdAndFeeling(Long memberId,Feeling feeling);

}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -27,16 +28,28 @@ public Optional<Diary> findDiaryById(Long diary_id){


}
public List<Diary> findDiariesByMonth(LocalDateTime date) {
/* public List<Diary> findDiariesByMonth(LocalDateTime date) {
LocalDateTime startOfMonth = date.withDayOfMonth(1).toLocalDate().atStartOfDay();
LocalDateTime endOfMonth = startOfMonth.plusMonths(1).minusSeconds(1);
return diaryRepository.findByWritedAtBetween(startOfMonth, endOfMonth);
}*/

public List<Diary> 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<Diary> findDiariesByFeeling(String feeling) {


/* public List<Diary> findDiariesByFeeling(String feeling) {
return diaryRepository.findByFeeling(Feeling.valueOf(feeling));
}

*/
public List<Diary> findDiariesByMemberIdAndFeeling(Long memberId,String feeling) {
return diaryRepository.findByMemberIdAndFeeling(memberId,Feeling.valueOf(feeling));
}
@Transactional
public Diary saveDiary(Diary diary){
return diaryRepository.save(diary);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
}
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -20,6 +21,7 @@ public class MemberController {

private final MemberService memberService;
private final KakaoLoginService kakaoLoginService;
private final JwtProvider jwtProvider;

@PostMapping("/login")
public ResponseEntity<ApiResponse<MemberLoginResponseDto>> login(
Expand All @@ -38,7 +40,7 @@ public ResponseEntity<ApiResponse<TokenDto>> reissue(
@PatchMapping("/log-out") // Spring Security 자체의 logout과 겹치지 않기 위해 이렇게 설정
public ResponseEntity<ApiResponse<?>> logout(Principal principal) {

memberService.logout(JwtProvider.getUserFromPrincial(principal));
memberService.logout(JwtProvider.getUserFromPrincipal(principal));
return ResponseEntity.ok(ApiResponse.success(SuccessType.LOGOUT_SUCCESS));
}

Expand All @@ -47,4 +49,19 @@ public ResponseEntity<ApiResponse<?>> kakaoAccessToken(
@RequestHeader("Authorization") String code) {
return ResponseEntity.ok(ApiResponse.success(SuccessType.KAKAO_ACCESS_TOKEN_SUCCESS, kakaoLoginService.getKakaoAccessToken(code)));
}

@PostMapping("/member/character")
public ResponseEntity<ApiResponse<?>> diaryType(Principal principal,@RequestBody String userDiaryType){

Long memberId=JwtProvider.getUserFromPrincipal(principal);

UserDiaryType diaryType=UserDiaryType.valueOf(userDiaryType);
memberService.setUserDiaryType(memberId,diaryType);

return ResponseEntity.ok(ApiResponse.success(SuccessType.PROCESS_SUCCESSED));


}


}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -90,4 +91,33 @@ 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(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){

Token=parseTokenString(Token);
UserDiaryType DiaryType=UserDiaryType.valueOf(userDiaryType);

jwtProvider.getUserFromJwt()




}*/
}
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand Down