diff --git a/src/main/java/Spring/MindStone/service/DummyService.java b/src/main/java/Spring/MindStone/service/DummyService.java new file mode 100644 index 0000000..f0f9532 --- /dev/null +++ b/src/main/java/Spring/MindStone/service/DummyService.java @@ -0,0 +1,38 @@ +package Spring.MindStone.service; + +import Spring.MindStone.domain.diary.DailyEmotionStatistic; +import Spring.MindStone.domain.member.MemberInfo; +import Spring.MindStone.repository.diaryRepository.DailyEmotionStatisticRepository; +import Spring.MindStone.service.memberInfoService.MemberInfoService; +import Spring.MindStone.web.dto.dummyDto.DummyEmotionStatistic; +import jakarta.transaction.Transactional; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; + +@Service +@RequiredArgsConstructor +public class DummyService { + + private final MemberInfoService memberInfoService; + private final DailyEmotionStatisticRepository dailyEmotionStatisticRepository; + + @Transactional + public void dummyStatistic(Long memberId, DummyEmotionStatistic request) { + MemberInfo memberInfo = memberInfoService.findMemberById(memberId); + DailyEmotionStatistic dailyEmotionStatistic = DailyEmotionStatistic + .builder().date(request.getDate()) + .memberInfo(memberInfo) + .angerFigure(request.getAngerFigure()) + .depressionFigure(request.getDepressionFigure()) + .calmFigure(request.getCalmFigure()) + .joyFigure(request.getJoyFigure()) + .sadFigure(request.getSadFigure()) + .thrillFigure(request.getThrillFigure()) + .happinessFigure(request.getHappinessFigure()) + .build(); + + dailyEmotionStatisticRepository.save(dailyEmotionStatistic); + } +} diff --git a/src/main/java/Spring/MindStone/service/diaryService/DailyEmotionStatisticService.java b/src/main/java/Spring/MindStone/service/diaryService/DailyEmotionStatisticService.java index d8da561..8d93031 100644 --- a/src/main/java/Spring/MindStone/service/diaryService/DailyEmotionStatisticService.java +++ b/src/main/java/Spring/MindStone/service/diaryService/DailyEmotionStatisticService.java @@ -8,8 +8,10 @@ import Spring.MindStone.web.dto.emotionDto.SimpleEmotionStatisticDto; import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; +import org.springframework.data.auditing.CurrentDateTimeProvider; import org.springframework.stereotype.Service; +import java.time.Instant; import java.time.LocalDate; import java.time.ZoneId; import java.util.NoSuchElementException; @@ -21,9 +23,11 @@ public class DailyEmotionStatisticService { private final MemberInfoService memberInfoService; - public DailyEmotionStatistic saveStatistics(MemberInfo memberInfo, LocalDate date, EmotionList emotion, int figure) { - DailyEmotionStatistic statistics = dailyEmotionStatisticRepository.findFirstByDateAndMemberInfo(LocalDate.now(ZoneId.of("Asia/Seoul")),memberInfo) - .orElseGet(() -> new DailyEmotionStatistic(memberInfo, LocalDate.now(ZoneId.of("Asia/Seoul")))); // 없으면 생성 + public DailyEmotionStatistic saveStatistics(MemberInfo memberInfo, EmotionList emotion, int figure) { + LocalDate today = Instant.now().atZone(ZoneId.of("Asia/Seoul")).toLocalDate(); + DailyEmotionStatistic statistics = dailyEmotionStatisticRepository.findFirstByDateAndMemberInfo(today,memberInfo) + .orElseGet(() -> new DailyEmotionStatistic(memberInfo, today)); // 없으면 생성 + //여기서 감정들에 추가되는 수치만큼 더해줌. statistics.updateEmotion(emotion, figure); @@ -32,17 +36,19 @@ public DailyEmotionStatistic saveStatistics(MemberInfo memberInfo, LocalDate dat } public SimpleEmotionStatisticDto getStatistic(Long memberId) { + LocalDate today = Instant.now().atZone(ZoneId.of("Asia/Seoul")).toLocalDate(); MemberInfo memberInfo = memberInfoService.findMemberById(memberId); - DailyEmotionStatistic statistics = dailyEmotionStatisticRepository.findFirstByDateAndMemberInfo(LocalDate.now(ZoneId.of("Asia/Seoul")),memberInfo) - .orElseGet(() ->dailyEmotionStatisticRepository.save(new DailyEmotionStatistic(memberInfo, LocalDate.now(ZoneId.of("Asia/Seoul")))) ); + DailyEmotionStatistic statistics = dailyEmotionStatisticRepository.findFirstByDateAndMemberInfo(today,memberInfo) + .orElseGet(() ->dailyEmotionStatisticRepository.save(new DailyEmotionStatistic(memberInfo, today)) ); return new SimpleEmotionStatisticDto(statistics); } public DailyEmotionStatistic getStatisticEntity(Long memberId) { + LocalDate today = Instant.now().atZone(ZoneId.of("Asia/Seoul")).toLocalDate(); MemberInfo memberInfo = memberInfoService.findMemberById(memberId); - DailyEmotionStatistic statistics = dailyEmotionStatisticRepository.findFirstByDateAndMemberInfo(LocalDate.now(ZoneId.of("Asia/Seoul")),memberInfo) - .orElseGet(() ->dailyEmotionStatisticRepository.save(new DailyEmotionStatistic(memberInfo, LocalDate.now(ZoneId.of("Asia/Seoul")))) ); + DailyEmotionStatistic statistics = dailyEmotionStatisticRepository.findFirstByDateAndMemberInfo(today,memberInfo) + .orElseGet(() ->dailyEmotionStatisticRepository.save(new DailyEmotionStatistic(memberInfo, today)) ); return statistics; } diff --git a/src/main/java/Spring/MindStone/service/emotionNoteService/EmotionNoteService.java b/src/main/java/Spring/MindStone/service/emotionNoteService/EmotionNoteService.java index 33d91b1..fc09ad9 100644 --- a/src/main/java/Spring/MindStone/service/emotionNoteService/EmotionNoteService.java +++ b/src/main/java/Spring/MindStone/service/emotionNoteService/EmotionNoteService.java @@ -45,7 +45,7 @@ public SimpleEmotionNoteDTO saveEmotionNote(EmotionNoteSaveDTO note, Long member .content(note.getContent()).build(); //호출해서 감정이 저장될때마다 감정통계 엔티티를 추가로 업데이트 시킴. - dailyEmotionStatisticService.saveStatistics(memberInfo, LocalDate.now() + dailyEmotionStatisticService.saveStatistics(memberInfo ,EmotionList.fromString(note.getEmotion()),note.getEmotionFigure()); emotionNoteRepository.save(emotionNote); @@ -64,7 +64,7 @@ public SimpleEmotionNoteDTO saveStressEmotionNote(EmotionNoteStressSaveDTO reque .stressNote(emotionNote) .build(); - dailyEmotionStatisticService.saveStatistics(memberInfo, LocalDate.now() + dailyEmotionStatisticService.saveStatistics(memberInfo ,EmotionList.fromString(request.getEmotion()),request.getEmotionFigure()); stressEmotionNoteRepository.save(stressEmotionNote); diff --git a/src/main/java/Spring/MindStone/service/habitService/HabitHistoryService.java b/src/main/java/Spring/MindStone/service/habitService/HabitHistoryService.java index 62262c0..a9f0c38 100644 --- a/src/main/java/Spring/MindStone/service/habitService/HabitHistoryService.java +++ b/src/main/java/Spring/MindStone/service/habitService/HabitHistoryService.java @@ -56,8 +56,8 @@ public List getHabitsForDate(Long return habitHistories.stream() .map(habitHistory -> new HabitResponseDto.HabitHistoryWithExecutionDTO( - habitHistory.getId(), habitHistory.getHabit().getId(), + habitHistory.getId(), habitHistory.getComment(), habitHistory.getHabitHistoryColor(), habitHistory.getExecutions().stream().map(execution -> new HabitResponseDto.HabitExecutionDTO( diff --git a/src/main/java/Spring/MindStone/web/controller/DummyDataController.java b/src/main/java/Spring/MindStone/web/controller/DummyDataController.java new file mode 100644 index 0000000..2ab2d5d --- /dev/null +++ b/src/main/java/Spring/MindStone/web/controller/DummyDataController.java @@ -0,0 +1,33 @@ +package Spring.MindStone.web.controller; + +import Spring.MindStone.apiPayload.ApiResponse; +import Spring.MindStone.config.jwt.JwtTokenUtil; +import Spring.MindStone.service.DummyService; +import Spring.MindStone.web.dto.dummyDto.DummyEmotionStatistic; +import Spring.MindStone.web.dto.emotionNoteDto.EmotionNoteSaveDTO; +import Spring.MindStone.web.dto.emotionNoteDto.SimpleEmotionNoteDTO; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("/api/dummy") +@RequiredArgsConstructor +@Tag(name = "DummyData", description = "날짜기준으로 더미데이터 넣기") +public class DummyDataController { + + + private final DummyService dummyService; + + @PostMapping("/api/emotionStatistic") + @Operation(summary = "감정 통계 날짜로 만들기") + ApiResponse makeDummyEmotionStatistic( + @Valid @RequestBody DummyEmotionStatistic dummyEmotionStatistic, + @RequestHeader("Authorization") String authorization) { + Long memberId = JwtTokenUtil.extractMemberId(authorization); + dummyService.dummyStatistic(memberId,dummyEmotionStatistic); + return ApiResponse.onSuccess(1L); + } +} diff --git a/src/main/java/Spring/MindStone/web/dto/dummyDto/DummyEmotionStatistic.java b/src/main/java/Spring/MindStone/web/dto/dummyDto/DummyEmotionStatistic.java new file mode 100644 index 0000000..a4dc066 --- /dev/null +++ b/src/main/java/Spring/MindStone/web/dto/dummyDto/DummyEmotionStatistic.java @@ -0,0 +1,35 @@ +package Spring.MindStone.web.dto.dummyDto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDate; + +@Getter +@Setter +public class DummyEmotionStatistic { + @Schema(description = "통계가 저장된 날짜", example = "2024-02-01") + private LocalDate date; + + @Schema(description = "분노 수치", example = "5") + private Integer angerFigure; + + @Schema(description = "우울 수치", example = "3") + private Integer depressionFigure; + + @Schema(description = "슬픔 수치", example = "4") + private Integer sadFigure; + + @Schema(description = "평온 수치", example = "7") + private Integer calmFigure; + + @Schema(description = "기쁨 수치", example = "6") + private Integer joyFigure; + + @Schema(description = "전율 수치", example = "2") + private Integer thrillFigure; + + @Schema(description = "행복 수치", example = "8") + private Integer happinessFigure; +}