Skip to content
Merged
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
38 changes: 38 additions & 0 deletions src/main/java/Spring/MindStone/service/DummyService.java
Original file line number Diff line number Diff line change
@@ -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);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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);
Expand All @@ -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;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,8 @@ public List<HabitResponseDto.HabitHistoryWithExecutionDTO> 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(
Expand Down
Original file line number Diff line number Diff line change
@@ -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<Long> makeDummyEmotionStatistic(
@Valid @RequestBody DummyEmotionStatistic dummyEmotionStatistic,
@RequestHeader("Authorization") String authorization) {
Long memberId = JwtTokenUtil.extractMemberId(authorization);
dummyService.dummyStatistic(memberId,dummyEmotionStatistic);
return ApiResponse.onSuccess(1L);
}
}
Original file line number Diff line number Diff line change
@@ -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;
}