Skip to content

Commit

Permalink
Merge pull request #29 from NewMillenniumWorkout/dev/home
Browse files Browse the repository at this point in the history
[DEV] Home 랜덤 일기 api 구현
  • Loading branch information
pius338 authored Dec 2, 2024
2 parents 8384477 + c056d78 commit 0f50b34
Show file tree
Hide file tree
Showing 2 changed files with 86 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
package com.example.aneukbeserver.controller;


import com.example.aneukbeserver.auth.dto.StatusResponseDto;
import com.example.aneukbeserver.auth.jwt.JwtUtil;
import com.example.aneukbeserver.domain.chatMessages.InitMessageDTO;
import com.example.aneukbeserver.domain.diary.Diary;
import com.example.aneukbeserver.domain.diary.DiaryDTO;
import com.example.aneukbeserver.domain.member.Member;
import com.example.aneukbeserver.service.*;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import javax.swing.text.html.Option;
import java.util.Optional;

import static com.example.aneukbeserver.auth.dto.StatusResponseDto.addStatus;

@Slf4j
@RestController
@RequiredArgsConstructor
@RequestMapping("/home")
@Tag(name = "Home Controller", description = "홈에 필요한 api")
public class HomeController {
@Autowired
private JwtUtil jwtUtil;

@Autowired
private MemberService memberService;

@Autowired
private ChatService chatService;

@Autowired
private ChatMessagesService chatMessagesService;

@Autowired
private DiaryService diaryService;
@Operation(summary = "랜덤 일기", description = "랜덤 일기를 response 합니다")
@ApiResponses(value = {
@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "200", description = "성공"),
@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "500", description = "서버 에러, 관리자에게 문의 바랍니다."),
@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "400", description = "사용자가 존재하지 않습니다."),
@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "401", description = "일기가 존재하지 않습니다.")

})
@GetMapping("/random")
public ResponseEntity<StatusResponseDto> randomDiary(@Parameter(hidden = true) @RequestHeader("Authorization") final String accessToken) {
String userEmail = jwtUtil.getEmail(accessToken.substring(7));
Optional<Member> member = memberService.findByEmail(userEmail);

if (member.isEmpty())
return ResponseEntity.badRequest().body(addStatus(400, "사용자가 존재하지 않습니다."));

Optional<Diary> diary = diaryService.getRandomDiary(member.get());

if (diary.isEmpty())
return ResponseEntity.badRequest().body(addStatus(401, "일기가 존재하지 않습니다."));

DiaryDTO diaryDTO = new DiaryDTO();
diaryDTO.setDiary_id(diary.get().getId());
diaryDTO.setDate(diary.get().getCreatedDate());
diaryDTO.setContent(diaryService.mergeParagraph(diary.get().getParagraphs()));
return ResponseEntity.ok(addStatus(200, diaryDTO));

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import com.example.aneukbeserver.domain.chat.Chat;
import com.example.aneukbeserver.domain.chat.ChatRepository;
import com.example.aneukbeserver.domain.diary.Diary;
import com.example.aneukbeserver.domain.diary.DiaryAiResponseDTO;
import com.example.aneukbeserver.domain.diary.DiaryRepository;
import com.example.aneukbeserver.domain.diary.*;
import com.example.aneukbeserver.domain.diaryParagraph.DiaryParagraph;
Expand All @@ -12,11 +11,11 @@
import org.springframework.stereotype.Service;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.Random;
import java.util.stream.Collectors;

@Service
Expand Down Expand Up @@ -107,4 +106,11 @@ public DiaryDTO getDateDiary(Member member, String date) {

return diaryDTO;
}

public Optional<Diary> getRandomDiary(Member member) {
List<Diary> diaries = diaryRepository.findAllByMember(member);
if(diaries.isEmpty()) return Optional.empty();

return Optional.of(diaries.get(new Random().nextInt(diaries.size())));
}
}

0 comments on commit 0f50b34

Please sign in to comment.