diff --git a/src/main/java/com/tobe/healthy/common/CustomPaging.java b/src/main/java/com/tobe/healthy/common/CustomPaging.java index b3118a49..bd346c39 100644 --- a/src/main/java/com/tobe/healthy/common/CustomPaging.java +++ b/src/main/java/com/tobe/healthy/common/CustomPaging.java @@ -1,10 +1,12 @@ package com.tobe.healthy.common; import lombok.Data; +import lombok.ToString; import java.util.List; @Data +@ToString public class CustomPaging { private List content; diff --git a/src/main/java/com/tobe/healthy/config/OAuthProperties.java b/src/main/java/com/tobe/healthy/config/OAuthProperties.java index 003f2a51..df2ccd47 100644 --- a/src/main/java/com/tobe/healthy/config/OAuthProperties.java +++ b/src/main/java/com/tobe/healthy/config/OAuthProperties.java @@ -1,18 +1,21 @@ package com.tobe.healthy.config; import lombok.Data; +import lombok.ToString; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Component @ConfigurationProperties("oauth") @Data +@ToString public class OAuthProperties { private OAuthServiceProperties kakao; private OAuthServiceProperties naver; private OAuthServiceProperties google; @Data + @ToString public static class OAuthServiceProperties { private String grantType; private String clientId; diff --git a/src/main/java/com/tobe/healthy/config/error/OAuthError.java b/src/main/java/com/tobe/healthy/config/error/OAuthError.java index 9483da5c..687a5d33 100644 --- a/src/main/java/com/tobe/healthy/config/error/OAuthError.java +++ b/src/main/java/com/tobe/healthy/config/error/OAuthError.java @@ -2,11 +2,14 @@ import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; +import lombok.ToString; @Data +@ToString public class OAuthError { @Data + @ToString public static class KakaoError { @JsonProperty("error") private String error; @@ -19,12 +22,14 @@ public static class KakaoError { } @Data + @ToString public static class NaverError { private String resultcode; private String message; } @Data + @ToString public static class GoogleError { @JsonProperty("error") private String error; diff --git a/src/main/java/com/tobe/healthy/config/security/CustomMemberDetails.java b/src/main/java/com/tobe/healthy/config/security/CustomMemberDetails.java index 8428caef..304ef8cd 100644 --- a/src/main/java/com/tobe/healthy/config/security/CustomMemberDetails.java +++ b/src/main/java/com/tobe/healthy/config/security/CustomMemberDetails.java @@ -3,6 +3,7 @@ import com.tobe.healthy.member.domain.entity.Member; import com.tobe.healthy.member.domain.entity.MemberType; import lombok.Data; +import lombok.ToString; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; @@ -15,6 +16,7 @@ import static com.tobe.healthy.member.domain.entity.MemberType.TRAINER; @Data +@ToString public class CustomMemberDetails implements UserDetails { private Member member; diff --git a/src/main/java/com/tobe/healthy/course/domain/dto/CourseDto.java b/src/main/java/com/tobe/healthy/course/domain/dto/CourseDto.java index 2774f29f..ccbb816b 100644 --- a/src/main/java/com/tobe/healthy/course/domain/dto/CourseDto.java +++ b/src/main/java/com/tobe/healthy/course/domain/dto/CourseDto.java @@ -1,15 +1,13 @@ package com.tobe.healthy.course.domain.dto; import com.tobe.healthy.course.domain.entity.Course; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.*; import java.time.LocalDateTime; @Data +@ToString @Builder @NoArgsConstructor @AllArgsConstructor diff --git a/src/main/java/com/tobe/healthy/course/domain/dto/CourseHistoryDto.java b/src/main/java/com/tobe/healthy/course/domain/dto/CourseHistoryDto.java index 17903b7c..68edb44a 100644 --- a/src/main/java/com/tobe/healthy/course/domain/dto/CourseHistoryDto.java +++ b/src/main/java/com/tobe/healthy/course/domain/dto/CourseHistoryDto.java @@ -5,11 +5,13 @@ import com.tobe.healthy.point.domain.entity.Calculation; import lombok.Builder; import lombok.Data; +import lombok.ToString; import java.time.LocalDateTime; @Data +@ToString @Builder public class CourseHistoryDto { diff --git a/src/main/java/com/tobe/healthy/course/domain/dto/in/CourseAddCommand.java b/src/main/java/com/tobe/healthy/course/domain/dto/in/CourseAddCommand.java index 5092af69..dbd603d1 100644 --- a/src/main/java/com/tobe/healthy/course/domain/dto/in/CourseAddCommand.java +++ b/src/main/java/com/tobe/healthy/course/domain/dto/in/CourseAddCommand.java @@ -5,8 +5,10 @@ import jakarta.validation.constraints.Positive; import lombok.Builder; import lombok.Data; +import lombok.ToString; @Data +@ToString @Builder public class CourseAddCommand { diff --git a/src/main/java/com/tobe/healthy/course/domain/dto/in/CourseUpdateCommand.java b/src/main/java/com/tobe/healthy/course/domain/dto/in/CourseUpdateCommand.java index dcc523ad..1ab4d584 100644 --- a/src/main/java/com/tobe/healthy/course/domain/dto/in/CourseUpdateCommand.java +++ b/src/main/java/com/tobe/healthy/course/domain/dto/in/CourseUpdateCommand.java @@ -8,8 +8,10 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; +import lombok.ToString; @Data +@ToString @Builder @AllArgsConstructor public class CourseUpdateCommand { diff --git a/src/main/java/com/tobe/healthy/course/domain/dto/out/CourseGetResult.java b/src/main/java/com/tobe/healthy/course/domain/dto/out/CourseGetResult.java index d8afd78f..1cc141db 100644 --- a/src/main/java/com/tobe/healthy/course/domain/dto/out/CourseGetResult.java +++ b/src/main/java/com/tobe/healthy/course/domain/dto/out/CourseGetResult.java @@ -4,10 +4,12 @@ import com.tobe.healthy.course.domain.dto.CourseHistoryDto; import lombok.Builder; import lombok.Data; +import lombok.ToString; import java.util.List; @Data +@ToString @Builder public class CourseGetResult { diff --git a/src/main/java/com/tobe/healthy/diet/application/DietService.java b/src/main/java/com/tobe/healthy/diet/application/DietService.java index 86787f67..8f2963e0 100644 --- a/src/main/java/com/tobe/healthy/diet/application/DietService.java +++ b/src/main/java/com/tobe/healthy/diet/application/DietService.java @@ -3,9 +3,10 @@ import com.tobe.healthy.common.CustomPaging; import com.tobe.healthy.common.redis.RedisService; import com.tobe.healthy.config.error.CustomException; +import com.tobe.healthy.diet.domain.dto.DietDetailDto; import com.tobe.healthy.diet.domain.dto.DietDto; import com.tobe.healthy.diet.domain.dto.DietFileDto; -import com.tobe.healthy.diet.domain.dto.in.DietAddCommand; +import com.tobe.healthy.diet.domain.dto.in.DietAddCommandAtHome; import com.tobe.healthy.diet.domain.dto.in.DietUpdateCommand; import com.tobe.healthy.diet.domain.entity.*; import com.tobe.healthy.diet.repository.DietFileRepository; @@ -23,7 +24,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; -import org.springframework.web.multipart.MultipartFile; import java.util.List; import java.util.Set; @@ -49,8 +49,8 @@ public class DietService { private final MemberRepository memberRepository; private final RedisService redisService; - public DietDto getDietCreatedAtToday(Long memberId) { - Diet diet = dietRepository.getDietCreatedAtToday(memberId); + public DietDto getTodayDiet(Long memberId) { + Diet diet = dietRepository.getTodayDiet(memberId); if (diet == null) return new DietDto(); List ids = List.of(diet.getDietId()); return setDietFile(DietDto.from(diet), ids); @@ -83,12 +83,12 @@ public void deleteLikeDiet(Member member, Long dietId) { diet.updateLikeCnt(dietLikeRepository.getLikeCnt(diet.getDietId())); } - public DietDto addDiet(Member member, DietAddCommand command) { + public DietDto addDietAtHome(Member member, DietAddCommandAtHome command) { Long memberId = member.getId(); DietType requestType = command.getType(); String requestFileUrl = command.getFile(); - Diet diet = dietRepository.findTop1ByCreateAtToday(memberId); + Diet diet = dietRepository.getTodayDiet(memberId); TrainerMemberMapping mapping = mappingRepository.findTop1ByMemberIdOrderByCreatedAtDesc(memberId).orElse(null); Member trainer = mapping == null ? null : mapping.getTrainer(); @@ -106,8 +106,20 @@ public DietDto addDiet(Member member, DietAddCommand command) { redisService.deleteValues(TEMP_FILE_URI.getDescription() + requestFileUrl); } + diet.changeEatDate(command.getEatDate()); diet.changeFast(command.getType(), command.isFast()); - return setDietFile(DietDto.from(diet), List.of(diet.getDietId())); + DietDto dietDto = setDietFile(DietDto.from(diet), List.of(diet.getDietId())); + if(isClean(dietDto)) diet.deleteDiet(); + return dietDto; + } + + private boolean isClean(DietDto dietDto) { + DietDetailDto breakfast = dietDto.getBreakfast(); + DietDetailDto lunch = dietDto.getLunch(); + DietDetailDto dinner = dietDto.getDinner(); + return (!breakfast.getFast() && breakfast.getDietFile()==null) + && (!lunch.getFast() && lunch.getDietFile()==null) + && (!dinner.getFast() && dinner.getDietFile()==null); } public DietDto getDietDetail(Long dietId) { @@ -141,13 +153,27 @@ public void deleteDiet(Member member, Long dietId) { diet.getDietFiles().forEach(file -> fileService.deleteDietFile(getFileName(file.getFileUrl()))); } + public DietDto addDiet(Member member, DietUpdateCommand command) { + TrainerMemberMapping mapping = mappingRepository.findTop1ByMemberIdOrderByCreatedAtDesc(member.getId()).orElse(null); + Member trainer = mapping == null ? null : mapping.getTrainer(); + Diet diet = dietRepository.save(Diet.create(member, trainer, command)); + uploadDietFiles(diet, command); + return setDietFile(DietDto.from(diet), List.of(diet.getDietId())); + } + public DietDto updateDiet(Member member, Long dietId, DietUpdateCommand command) { Diet diet = dietRepository.findByDietIdAndMemberIdAndDelYnFalse(dietId, member.getId()) .orElseThrow(() -> new CustomException(DIET_NOT_FOUND)); + diet.changeEatDate(command.getEatDate()); diet.changeFast(command); deleteOldFiles(diet, command); + uploadDietFiles(diet, command); + return setDietFile(DietDto.from(diet), List.of(diet.getDietId())); + } + + private void uploadDietFiles(Diet diet, DietUpdateCommand command) { //아침 파일 if (!command.isBreakfastFast() && !ObjectUtils.isEmpty(command.getBreakfastFile())){ dietFileRepository.save(DietFiles.create(diet, command.getBreakfastFile(), BREAKFAST)); @@ -174,8 +200,6 @@ public DietDto updateDiet(Member member, Long dietId, DietUpdateCommand command) List files = diet.getDietFiles().stream().filter(f -> DINNER.equals(f.getType())).toList(); if(!ObjectUtils.isEmpty(files)) fileService.deleteDietFile(getFileName(files.get(0).getFileUrl())); } - - return setDietFile(DietDto.from(diet), List.of(diet.getDietId())); } private void deleteOldFiles(Diet diet, DietUpdateCommand command) { @@ -218,4 +242,9 @@ private String getFileName(String url) { return arr[arr.length - 1]; } + public List getDietUploadDays(Long memberId, String searchDate) { + List days = dietRepository.getDietUploadDays(memberId, searchDate); + return ObjectUtils.isEmpty(days) ? null : days; + } + } diff --git a/src/main/java/com/tobe/healthy/diet/domain/dto/DietCommentDto.java b/src/main/java/com/tobe/healthy/diet/domain/dto/DietCommentDto.java index 7a4bc03c..7a7344e4 100644 --- a/src/main/java/com/tobe/healthy/diet/domain/dto/DietCommentDto.java +++ b/src/main/java/com/tobe/healthy/diet/domain/dto/DietCommentDto.java @@ -3,16 +3,14 @@ import com.tobe.healthy.diet.domain.entity.DietComment; import com.tobe.healthy.member.domain.entity.MemberProfile; import com.tobe.healthy.workout.domain.dto.CommentMemberDto; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.*; import java.time.LocalDateTime; import java.util.List; @Data +@ToString @Builder @NoArgsConstructor @AllArgsConstructor diff --git a/src/main/java/com/tobe/healthy/diet/domain/dto/DietDetailDto.java b/src/main/java/com/tobe/healthy/diet/domain/dto/DietDetailDto.java index 8a8ea43a..d8123e32 100644 --- a/src/main/java/com/tobe/healthy/diet/domain/dto/DietDetailDto.java +++ b/src/main/java/com/tobe/healthy/diet/domain/dto/DietDetailDto.java @@ -1,11 +1,9 @@ package com.tobe.healthy.diet.domain.dto; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.*; @Data +@ToString @Builder @NoArgsConstructor @AllArgsConstructor diff --git a/src/main/java/com/tobe/healthy/diet/domain/dto/DietDto.java b/src/main/java/com/tobe/healthy/diet/domain/dto/DietDto.java index 0f96eb61..6f92bcb4 100644 --- a/src/main/java/com/tobe/healthy/diet/domain/dto/DietDto.java +++ b/src/main/java/com/tobe/healthy/diet/domain/dto/DietDto.java @@ -2,17 +2,15 @@ import com.tobe.healthy.diet.domain.entity.Diet; import com.tobe.healthy.member.domain.dto.MemberDto; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.*; +import java.time.LocalDate; import java.time.LocalDateTime; import java.util.List; -import static com.tobe.healthy.diet.domain.entity.DietType.BREAKFAST; @Data +@ToString @Builder @NoArgsConstructor @AllArgsConstructor @@ -24,6 +22,7 @@ public class DietDto { private Long commentCnt; private LocalDateTime createdAt; private LocalDateTime updatedAt; + private LocalDate eatDate; @Builder.Default private DietDetailDto breakfast = new DietDetailDto(); @@ -41,6 +40,7 @@ public static DietDto from(Diet diet) { .commentCnt(diet.getCommentCnt()) .createdAt(diet.getCreatedAt()) .updatedAt(diet.getUpdatedAt()) + .eatDate(diet.getEatDate()) .build(); dto.breakfast.setFast(diet.getFastBreakfast()); dto.lunch.setFast(diet.getFastLunch()); diff --git a/src/main/java/com/tobe/healthy/diet/domain/dto/DietFileDto.java b/src/main/java/com/tobe/healthy/diet/domain/dto/DietFileDto.java index 85375329..8b9f89f4 100644 --- a/src/main/java/com/tobe/healthy/diet/domain/dto/DietFileDto.java +++ b/src/main/java/com/tobe/healthy/diet/domain/dto/DietFileDto.java @@ -4,8 +4,10 @@ import com.tobe.healthy.diet.domain.entity.DietType; import lombok.Builder; import lombok.Data; +import lombok.ToString; @Data +@ToString @Builder public class DietFileDto { diff --git a/src/main/java/com/tobe/healthy/diet/domain/dto/in/DietAddCommand.java b/src/main/java/com/tobe/healthy/diet/domain/dto/in/DietAddCommandAtHome.java similarity index 68% rename from src/main/java/com/tobe/healthy/diet/domain/dto/in/DietAddCommand.java rename to src/main/java/com/tobe/healthy/diet/domain/dto/in/DietAddCommandAtHome.java index 9f24acac..168d3bf5 100644 --- a/src/main/java/com/tobe/healthy/diet/domain/dto/in/DietAddCommand.java +++ b/src/main/java/com/tobe/healthy/diet/domain/dto/in/DietAddCommandAtHome.java @@ -2,14 +2,16 @@ import com.tobe.healthy.diet.domain.entity.DietType; import lombok.Data; -import org.springframework.web.multipart.MultipartFile; +import lombok.ToString; @Data -public class DietAddCommand { +@ToString +public class DietAddCommandAtHome { private DietType type; private String file; private boolean fast; + private String eatDate; } diff --git a/src/main/java/com/tobe/healthy/diet/domain/dto/in/DietCommentAddCommand.java b/src/main/java/com/tobe/healthy/diet/domain/dto/in/DietCommentAddCommand.java index 9e08016d..4c9e57fc 100644 --- a/src/main/java/com/tobe/healthy/diet/domain/dto/in/DietCommentAddCommand.java +++ b/src/main/java/com/tobe/healthy/diet/domain/dto/in/DietCommentAddCommand.java @@ -5,8 +5,10 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import lombok.ToString; @Data +@ToString @AllArgsConstructor @NoArgsConstructor public class DietCommentAddCommand { diff --git a/src/main/java/com/tobe/healthy/diet/domain/dto/in/DietUpdateCommand.java b/src/main/java/com/tobe/healthy/diet/domain/dto/in/DietUpdateCommand.java index 2fac67ff..5a827072 100644 --- a/src/main/java/com/tobe/healthy/diet/domain/dto/in/DietUpdateCommand.java +++ b/src/main/java/com/tobe/healthy/diet/domain/dto/in/DietUpdateCommand.java @@ -1,18 +1,35 @@ package com.tobe.healthy.diet.domain.dto.in; -import com.tobe.healthy.workout.domain.dto.in.RegisterFile; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; import lombok.Data; -import org.springframework.web.multipart.MultipartFile; +import lombok.ToString; @Data +@ToString public class DietUpdateCommand { + @Schema(description = "아침 파일") private String breakfastFile; + + @Schema(description = "점심 파일") private String lunchFile; + + @Schema(description = "저녁 파일") private String dinnerFile; + + @Schema(description = "아침 단식 여부" , example = "false") private boolean breakfastFast; + + @Schema(description = "점심 단식 여부" , example = "false") private boolean lunchFast; + + @Schema(description = "저녁 단식 여부" , example = "false") private boolean dinnerFast; + @Schema(description = "먹은 날짜" , example = "2024-05-28") + @NotEmpty(message = "날짜를 입력해 주세요.") + private String eatDate; + } diff --git a/src/main/java/com/tobe/healthy/diet/domain/entity/Diet.java b/src/main/java/com/tobe/healthy/diet/domain/entity/Diet.java index de84a1f3..631f1255 100644 --- a/src/main/java/com/tobe/healthy/diet/domain/entity/Diet.java +++ b/src/main/java/com/tobe/healthy/diet/domain/entity/Diet.java @@ -8,6 +8,8 @@ import org.hibernate.annotations.ColumnDefault; import org.hibernate.annotations.DynamicUpdate; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; @@ -57,6 +59,8 @@ public class Diet extends BaseTimeEntity { @Builder.Default private Boolean fastDinner = false; + private LocalDate eatDate; + @OneToMany(mappedBy = "diet", cascade = CascadeType.ALL) @Builder.Default private List dietFiles = new ArrayList<>(); @@ -73,6 +77,17 @@ public static Diet create(Member member, Member trainer){ .build(); } + public static Diet create(Member member, Member trainer, DietUpdateCommand command) { + return Diet.builder() + .member(member) + .trainer(trainer) + .fastBreakfast(command.isBreakfastFast()) + .fastLunch(command.isLunchFast()) + .fastDinner(command.isDinnerFast()) + .eatDate(LocalDate.parse(command.getEatDate(), DateTimeFormatter.ISO_DATE)) + .build(); + } + public void updateLikeCnt(Long likeCnt){ this.likeCnt = likeCnt; } @@ -128,4 +143,7 @@ public void updateCommentCnt(Long commentCnt) { this.commentCnt = commentCnt; } + public void changeEatDate(String eatDate) { + this.eatDate = LocalDate.parse(eatDate, DateTimeFormatter.ISO_DATE); + } } diff --git a/src/main/java/com/tobe/healthy/diet/presentation/DietController.java b/src/main/java/com/tobe/healthy/diet/presentation/DietController.java index cd74983d..0c629215 100644 --- a/src/main/java/com/tobe/healthy/diet/presentation/DietController.java +++ b/src/main/java/com/tobe/healthy/diet/presentation/DietController.java @@ -4,7 +4,7 @@ import com.tobe.healthy.config.security.CustomMemberDetails; import com.tobe.healthy.diet.application.DietService; import com.tobe.healthy.diet.domain.dto.DietDto; -import com.tobe.healthy.diet.domain.dto.in.DietAddCommand; +import com.tobe.healthy.diet.domain.dto.in.DietAddCommandAtHome; import com.tobe.healthy.diet.domain.dto.in.DietUpdateCommand; import com.tobe.healthy.workout.application.FileService; import com.tobe.healthy.workout.domain.dto.in.RegisterFile; @@ -15,6 +15,7 @@ import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.data.repository.query.Param; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -44,19 +45,44 @@ public ResponseHandler> addDietFile(@AuthenticationPrincipal .build(); } + @Operation(summary = "홈에서 식단기록 등록", responses = { + @ApiResponse(responseCode = "400", description = "잘못된 요청 입력"), + @ApiResponse(responseCode = "200", description = "식단기록 내용을 반환한다.") + }) + @PostMapping("/home-upload") + public ResponseHandler addDietAtHome(@AuthenticationPrincipal CustomMemberDetails customMemberDetails, + @Valid @RequestBody DietAddCommandAtHome command) { + return ResponseHandler.builder() + .data(dietService.addDietAtHome(customMemberDetails.getMember(), command)) + .message("식단기록이 등록되었습니다.") + .build(); + } + @Operation(summary = "식단기록 등록", responses = { @ApiResponse(responseCode = "400", description = "잘못된 요청 입력"), @ApiResponse(responseCode = "200", description = "식단기록 내용을 반환한다.") }) @PostMapping public ResponseHandler addDiet(@AuthenticationPrincipal CustomMemberDetails customMemberDetails, - @Valid @RequestBody DietAddCommand command) { + @RequestBody @Valid DietUpdateCommand command) { return ResponseHandler.builder() .data(dietService.addDiet(customMemberDetails.getMember(), command)) .message("식단기록이 등록되었습니다.") .build(); } + @Operation(summary = "식단기록 상세 조회", responses = { + @ApiResponse(responseCode = "400", description = "잘못된 요청 입력"), + @ApiResponse(responseCode = "200", description = "식단기록 내용을 반환한다.") + }) + @GetMapping("/today") + public ResponseHandler getTodayDiet(@AuthenticationPrincipal CustomMemberDetails customMemberDetails) { + return ResponseHandler.builder() + .data(dietService.getTodayDiet(customMemberDetails.getMember().getId())) + .message("식단기록이 조회되었습니다.") + .build(); + } + @Operation(summary = "식단기록 상세 조회", responses = { @ApiResponse(responseCode = "400", description = "잘못된 요청 입력"), @ApiResponse(responseCode = "200", description = "식단기록 내용을 반환한다.") @@ -121,4 +147,17 @@ public ResponseHandler updateDiet(@AuthenticationPrincipal CustomMember .build(); } + @Operation(summary = "이번달 식단 등록한 날짜 조회", responses = { + @ApiResponse(responseCode = "400", description = "잘못된 요청 입력"), + @ApiResponse(responseCode = "200", description = "업로드 날짜를 반환한다.") + }) + @GetMapping("/upload-date") + public ResponseHandler> getDietUploadDays(@AuthenticationPrincipal CustomMemberDetails customMemberDetails, + @Parameter(description = "조회할 날짜", example = "2024-05") @Param("searchDate") String searchDate) { + return ResponseHandler.>builder() + .data(dietService.getDietUploadDays(customMemberDetails.getMember().getId(), searchDate)) + .message("업로드 날짜가 조회되었습니다.") + .build(); + } + } diff --git a/src/main/java/com/tobe/healthy/diet/repository/DietRepositoryCustom.java b/src/main/java/com/tobe/healthy/diet/repository/DietRepositoryCustom.java index 04dd8313..850db75b 100644 --- a/src/main/java/com/tobe/healthy/diet/repository/DietRepositoryCustom.java +++ b/src/main/java/com/tobe/healthy/diet/repository/DietRepositoryCustom.java @@ -14,10 +14,9 @@ public interface DietRepositoryCustom { List getDietFile(List ids); - Diet findTop1ByCreateAtToday(Long memberId); - Page getDietByTrainer(Member trainer, Pageable pageable, String searchDate); - Diet getDietCreatedAtToday(Long memberId); + Diet getTodayDiet(Long memberId); + List getDietUploadDays(Long memberId, String searchDate); } diff --git a/src/main/java/com/tobe/healthy/diet/repository/DietRepositoryCustomImpl.java b/src/main/java/com/tobe/healthy/diet/repository/DietRepositoryCustomImpl.java index ff26a583..edae8909 100644 --- a/src/main/java/com/tobe/healthy/diet/repository/DietRepositoryCustomImpl.java +++ b/src/main/java/com/tobe/healthy/diet/repository/DietRepositoryCustomImpl.java @@ -32,30 +32,42 @@ public class DietRepositoryCustomImpl implements DietRepositoryCustom { @Override - public Diet getDietCreatedAtToday(Long memberId) { - LocalDateTime start = LocalDateTime.of(LocalDate.now(), LocalTime.of(0, 0, 0)); - LocalDateTime end = LocalDateTime.of(LocalDate.now(), LocalTime.of(23, 59, 59)); - + public Diet getTodayDiet(Long memberId) { return queryFactory.select(diet) .from(diet) - .where(createdAtBetween(start, end), delYnEq(false), memberIdEq(memberId)) + .where(convertEatDate_YYYY_MM_DD(LocalDate.now().toString()) + , delYnEq(false) + , memberIdEq(memberId)) .orderBy(diet.createdAt.desc()) .limit(1) .fetchOne(); } + @Override + public List getDietUploadDays(Long memberId, String searchDate) { + return queryFactory + .select(Expressions.stringTemplate( + "DATE_FORMAT({0}, {1})" + , diet.eatDate + , ConstantImpl.create("%Y-%m-%d"))).distinct() + .from(diet) + .where(memberIdEq(memberId), delYnEq(false), convertEatDate_YYYY_MM(searchDate)) + .orderBy(diet.eatDate.asc()) + .fetch(); + } + @Override public Page getDietOfMonth(Long memberId, Pageable pageable, String searchDate) { Long totalCnt = queryFactory .select(diet.count()) .from(diet) - .where(memberIdEq(memberId), delYnEq(false), convertDateFormat_YYYY_MM(searchDate)) + .where(memberIdEq(memberId), delYnEq(false), convertEatDate_YYYY_MM(searchDate)) .fetchOne(); List diets = queryFactory .select(diet) .from(diet) - .where(memberIdEq(memberId), delYnEq(false), convertDateFormat_YYYY_MM(searchDate)) - .orderBy(diet.createdAt.desc()) + .where(memberIdEq(memberId), delYnEq(false), convertEatDate_YYYY_MM(searchDate)) + .orderBy(diet.eatDate.desc()) .offset(pageable.getOffset()) .limit(pageable.getPageSize()) .fetch(); @@ -71,21 +83,6 @@ public List getDietFile(List ids) { .fetch(); } - @Override - public Diet findTop1ByCreateAtToday(Long memberId) { - LocalDateTime start = LocalDateTime.of(LocalDate.now(), LocalTime.of(0, 0, 0)); - LocalDateTime end = LocalDateTime.of(LocalDate.now(), LocalTime.of(23, 59, 59)); - - return queryFactory.select(diet) - .from(diet) - .where(createdAtBetween(start, end) - , delYnEq(false) - , memberIdEq(memberId)) - .orderBy(diet.createdAt.desc()) - .limit(1) - .fetchOne(); - } - @Override public Page getDietByTrainer(Member trainer, Pageable pageable, String searchDate) { Long totalCnt = queryFactory @@ -116,15 +113,24 @@ private BooleanExpression dietFileDeYnEq(boolean bool) { return dietFiles.delYn.eq(bool); } - private BooleanExpression convertDateFormat_YYYY_MM(String searchDate) { + private BooleanExpression convertEatDate_YYYY_MM(String searchDate) { if (ObjectUtils.isEmpty(searchDate)) return null; StringTemplate stringTemplate = Expressions.stringTemplate( "DATE_FORMAT({0}, {1})" - , diet.createdAt + , diet.eatDate , ConstantImpl.create("%Y-%m")); return stringTemplate.eq(searchDate); } + private BooleanExpression convertEatDate_YYYY_MM_DD(String searchDate) { + if (ObjectUtils.isEmpty(searchDate)) return null; + StringTemplate stringTemplate = Expressions.stringTemplate( + "DATE_FORMAT({0}, {1})" + , diet.eatDate + , ConstantImpl.create("%Y-%m-%d")); + return stringTemplate.eq(searchDate); + } + private BooleanExpression convertDateFormat_YYYY_MM_DD(String searchDate) { if (ObjectUtils.isEmpty(searchDate)) return null; StringTemplate stringTemplate = Expressions.stringTemplate( @@ -138,13 +144,6 @@ private BooleanExpression delYnEq(boolean bool) { return diet.delYn.eq(bool); } - private BooleanExpression createdAtBetween(LocalDateTime start, LocalDateTime end) { - if (!ObjectUtils.isEmpty(start) && !ObjectUtils.isEmpty(end)) { - return diet.createdAt.between(start, end); - } - return null; - } - private BooleanExpression memberIdEq(Long memberId) { return diet.member.id.eq(memberId); } diff --git a/src/main/java/com/tobe/healthy/home/application/HomeService.java b/src/main/java/com/tobe/healthy/home/application/HomeService.java index a2b8626e..59c3836a 100644 --- a/src/main/java/com/tobe/healthy/home/application/HomeService.java +++ b/src/main/java/com/tobe/healthy/home/application/HomeService.java @@ -85,7 +85,7 @@ public StudentHomeResult getStudentHome(Long memberId) { RetrieveLessonHistoryByDateCondResult lessonHistory = lessonHistoryRepository.findTop1LessonHistoryByMemberId(memberId); //식단 - DietDto diet = dietService.getDietCreatedAtToday(memberId); + DietDto diet = dietService.getTodayDiet(memberId); return StudentHomeResult.create(usingCourse, point, rank, myReservation, lessonHistory, diet, gym); } diff --git a/src/main/java/com/tobe/healthy/member/domain/dto/MemberDto.java b/src/main/java/com/tobe/healthy/member/domain/dto/MemberDto.java index fde35499..feb02d36 100644 --- a/src/main/java/com/tobe/healthy/member/domain/dto/MemberDto.java +++ b/src/main/java/com/tobe/healthy/member/domain/dto/MemberDto.java @@ -5,9 +5,11 @@ import com.tobe.healthy.member.domain.entity.*; import lombok.Builder; import lombok.Data; +import lombok.ToString; @Data +@ToString @Builder public class MemberDto { diff --git a/src/main/java/com/tobe/healthy/member/domain/dto/ProfileDto.java b/src/main/java/com/tobe/healthy/member/domain/dto/ProfileDto.java index e91d6f9a..a2ee8e88 100644 --- a/src/main/java/com/tobe/healthy/member/domain/dto/ProfileDto.java +++ b/src/main/java/com/tobe/healthy/member/domain/dto/ProfileDto.java @@ -4,9 +4,11 @@ import com.tobe.healthy.member.domain.entity.MemberProfile; import lombok.Builder; import lombok.Data; +import lombok.ToString; @Data +@ToString @Builder public class ProfileDto { diff --git a/src/main/java/com/tobe/healthy/member/domain/dto/in/CommandChangeEmail.java b/src/main/java/com/tobe/healthy/member/domain/dto/in/CommandChangeEmail.java index 9e95286f..65be3692 100644 --- a/src/main/java/com/tobe/healthy/member/domain/dto/in/CommandChangeEmail.java +++ b/src/main/java/com/tobe/healthy/member/domain/dto/in/CommandChangeEmail.java @@ -3,8 +3,10 @@ import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.Pattern; import lombok.Data; +import lombok.ToString; @Data +@ToString public class CommandChangeEmail { @NotEmpty(message = "이메일을 입력해 주세요.") @Pattern(regexp = "^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,6}$", message = "올바른 이메일 형식을 입력해 주세요.") diff --git a/src/main/java/com/tobe/healthy/member/domain/dto/in/CommandChangeMemberPassword.java b/src/main/java/com/tobe/healthy/member/domain/dto/in/CommandChangeMemberPassword.java index 8ce19b28..d9c96cfe 100644 --- a/src/main/java/com/tobe/healthy/member/domain/dto/in/CommandChangeMemberPassword.java +++ b/src/main/java/com/tobe/healthy/member/domain/dto/in/CommandChangeMemberPassword.java @@ -5,8 +5,10 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import lombok.ToString; @Data +@ToString @AllArgsConstructor @NoArgsConstructor @Schema(description = "비밀번호 변경 DTO") diff --git a/src/main/java/com/tobe/healthy/member/domain/dto/in/CommandFindMemberPassword.java b/src/main/java/com/tobe/healthy/member/domain/dto/in/CommandFindMemberPassword.java index 347178b8..8fe3ab33 100644 --- a/src/main/java/com/tobe/healthy/member/domain/dto/in/CommandFindMemberPassword.java +++ b/src/main/java/com/tobe/healthy/member/domain/dto/in/CommandFindMemberPassword.java @@ -7,8 +7,10 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import lombok.ToString; @Data +@ToString @AllArgsConstructor @NoArgsConstructor @Schema(description = "비밀번호 찾기 DTO") diff --git a/src/main/java/com/tobe/healthy/member/domain/dto/in/CommandSocialLogin.java b/src/main/java/com/tobe/healthy/member/domain/dto/in/CommandSocialLogin.java index a4621ba5..2aaffc75 100644 --- a/src/main/java/com/tobe/healthy/member/domain/dto/in/CommandSocialLogin.java +++ b/src/main/java/com/tobe/healthy/member/domain/dto/in/CommandSocialLogin.java @@ -5,8 +5,10 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import lombok.ToString; @Data +@ToString @AllArgsConstructor @NoArgsConstructor @Schema(description = "소셜 로그인 DTO") diff --git a/src/main/java/com/tobe/healthy/member/domain/dto/in/CommandUpdateMemo.java b/src/main/java/com/tobe/healthy/member/domain/dto/in/CommandUpdateMemo.java index feb73d3b..ea26c84a 100644 --- a/src/main/java/com/tobe/healthy/member/domain/dto/in/CommandUpdateMemo.java +++ b/src/main/java/com/tobe/healthy/member/domain/dto/in/CommandUpdateMemo.java @@ -2,8 +2,10 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import lombok.ToString; @Data +@ToString public class CommandUpdateMemo { @Schema(description = "메모내용", example = "메모메모") diff --git a/src/main/java/com/tobe/healthy/member/domain/dto/in/IdToken.java b/src/main/java/com/tobe/healthy/member/domain/dto/in/IdToken.java index f79c1d11..301f5579 100644 --- a/src/main/java/com/tobe/healthy/member/domain/dto/in/IdToken.java +++ b/src/main/java/com/tobe/healthy/member/domain/dto/in/IdToken.java @@ -2,8 +2,10 @@ import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; +import lombok.ToString; @Data +@ToString public class IdToken { private String aud; diff --git a/src/main/java/com/tobe/healthy/member/domain/dto/in/OAuthInfo.java b/src/main/java/com/tobe/healthy/member/domain/dto/in/OAuthInfo.java index c8050516..d5e35160 100644 --- a/src/main/java/com/tobe/healthy/member/domain/dto/in/OAuthInfo.java +++ b/src/main/java/com/tobe/healthy/member/domain/dto/in/OAuthInfo.java @@ -2,8 +2,10 @@ import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; +import lombok.ToString; @Data +@ToString public class OAuthInfo { @JsonProperty("access_token") @@ -27,6 +29,7 @@ public class OAuthInfo { private int refreshTokenExpiresIn; @Data + @ToString public static class NaverUserInfo { @JsonProperty("resultcode") @@ -37,6 +40,7 @@ public static class NaverUserInfo { private NaverUserInfoDetail response; @Data + @ToString public static class NaverUserInfoDetail { private String id; @@ -51,6 +55,7 @@ public static class NaverUserInfoDetail { } @Data + @ToString public static class KakaoUserInfo { private Long id; @@ -64,6 +69,7 @@ public static class KakaoUserInfo { private KakaoAccount kakaoAccount; @Data + @ToString public static class Properties { private String nickname; @@ -76,6 +82,7 @@ public static class Properties { } @Data + @ToString public static class KakaoAccount { @JsonProperty("profile_nickname_needs_agreement") @@ -102,6 +109,7 @@ public static class KakaoAccount { } @Data + @ToString public static class Profile { private String nickname; @@ -122,6 +130,7 @@ public static class Profile { // 카카오 끝 @Data + @ToString public static class GoogleUserInfo { private String id; diff --git a/src/main/java/com/tobe/healthy/member/domain/dto/in/RetrieveMemberId.java b/src/main/java/com/tobe/healthy/member/domain/dto/in/RetrieveMemberId.java index 0e3f855a..37b6b7ce 100644 --- a/src/main/java/com/tobe/healthy/member/domain/dto/in/RetrieveMemberId.java +++ b/src/main/java/com/tobe/healthy/member/domain/dto/in/RetrieveMemberId.java @@ -8,10 +8,12 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import lombok.ToString; import java.time.LocalDateTime; @Data +@ToString @AllArgsConstructor @NoArgsConstructor @Schema(description = "아이디 찾기 DTO") @@ -30,6 +32,7 @@ public class RetrieveMemberId { private MemberType memberType; @Data + @ToString @AllArgsConstructor public static class FindMemberIdResult { private String userId; diff --git a/src/main/java/com/tobe/healthy/member/domain/dto/out/CommandJoinMemberResult.java b/src/main/java/com/tobe/healthy/member/domain/dto/out/CommandJoinMemberResult.java index 43b7d9c9..885a754a 100644 --- a/src/main/java/com/tobe/healthy/member/domain/dto/out/CommandJoinMemberResult.java +++ b/src/main/java/com/tobe/healthy/member/domain/dto/out/CommandJoinMemberResult.java @@ -6,8 +6,10 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; +import lombok.ToString; @Data +@ToString @AllArgsConstructor @Builder @Schema(description = "회원가입 성공 응답") diff --git a/src/main/java/com/tobe/healthy/member/domain/dto/out/DeleteMemberProfileResult.java b/src/main/java/com/tobe/healthy/member/domain/dto/out/DeleteMemberProfileResult.java index c1828ba4..c1e664b7 100644 --- a/src/main/java/com/tobe/healthy/member/domain/dto/out/DeleteMemberProfileResult.java +++ b/src/main/java/com/tobe/healthy/member/domain/dto/out/DeleteMemberProfileResult.java @@ -2,8 +2,10 @@ import lombok.Builder; import lombok.Data; +import lombok.ToString; @Data +@ToString @Builder public class DeleteMemberProfileResult { private String fileUrl; diff --git a/src/main/java/com/tobe/healthy/member/domain/dto/out/InvitationMappingResult.java b/src/main/java/com/tobe/healthy/member/domain/dto/out/InvitationMappingResult.java index 4dd584d4..f46ba44e 100644 --- a/src/main/java/com/tobe/healthy/member/domain/dto/out/InvitationMappingResult.java +++ b/src/main/java/com/tobe/healthy/member/domain/dto/out/InvitationMappingResult.java @@ -5,9 +5,11 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; +import lombok.ToString; @Data +@ToString @AllArgsConstructor @Builder public class InvitationMappingResult { diff --git a/src/main/java/com/tobe/healthy/member/domain/dto/out/MemberChangeAlarmResult.java b/src/main/java/com/tobe/healthy/member/domain/dto/out/MemberChangeAlarmResult.java index 1e315a04..4ab07e59 100644 --- a/src/main/java/com/tobe/healthy/member/domain/dto/out/MemberChangeAlarmResult.java +++ b/src/main/java/com/tobe/healthy/member/domain/dto/out/MemberChangeAlarmResult.java @@ -4,8 +4,10 @@ import com.tobe.healthy.member.domain.entity.AlarmType; import lombok.Builder; import lombok.Data; +import lombok.ToString; @Data +@ToString @Builder public class MemberChangeAlarmResult { private String type; diff --git a/src/main/java/com/tobe/healthy/member/domain/dto/out/MemberDetailResult.java b/src/main/java/com/tobe/healthy/member/domain/dto/out/MemberDetailResult.java index 0b624bf6..7f6b92b9 100644 --- a/src/main/java/com/tobe/healthy/member/domain/dto/out/MemberDetailResult.java +++ b/src/main/java/com/tobe/healthy/member/domain/dto/out/MemberDetailResult.java @@ -7,11 +7,13 @@ import com.tobe.healthy.point.domain.dto.out.PointDto; import com.tobe.healthy.point.domain.dto.out.RankDto; import lombok.Data; +import lombok.ToString; import java.time.LocalDate; import java.time.LocalTime; @Data +@ToString public class MemberDetailResult { private Long memberId; private String name; diff --git a/src/main/java/com/tobe/healthy/member/domain/dto/out/MemberInTeamResult.java b/src/main/java/com/tobe/healthy/member/domain/dto/out/MemberInTeamResult.java index 9a305141..d64ab0b5 100644 --- a/src/main/java/com/tobe/healthy/member/domain/dto/out/MemberInTeamResult.java +++ b/src/main/java/com/tobe/healthy/member/domain/dto/out/MemberInTeamResult.java @@ -2,9 +2,11 @@ import com.querydsl.core.annotations.QueryProjection; import lombok.Data; +import lombok.ToString; @Data +@ToString public class MemberInTeamResult { private Long memberId; private String name; diff --git a/src/main/java/com/tobe/healthy/member/domain/dto/out/MemberInfoResult.java b/src/main/java/com/tobe/healthy/member/domain/dto/out/MemberInfoResult.java index 78813c93..e697e23d 100644 --- a/src/main/java/com/tobe/healthy/member/domain/dto/out/MemberInfoResult.java +++ b/src/main/java/com/tobe/healthy/member/domain/dto/out/MemberInfoResult.java @@ -8,9 +8,11 @@ import com.tobe.healthy.member.domain.entity.SocialType; import lombok.Builder; import lombok.Data; +import lombok.ToString; @Data +@ToString @Builder public class MemberInfoResult { diff --git a/src/main/java/com/tobe/healthy/member/domain/dto/out/RegisterMemberProfileResult.java b/src/main/java/com/tobe/healthy/member/domain/dto/out/RegisterMemberProfileResult.java index f28fd8f7..145ced0d 100644 --- a/src/main/java/com/tobe/healthy/member/domain/dto/out/RegisterMemberProfileResult.java +++ b/src/main/java/com/tobe/healthy/member/domain/dto/out/RegisterMemberProfileResult.java @@ -2,8 +2,10 @@ import lombok.Builder; import lombok.Data; +import lombok.ToString; @Data +@ToString @Builder public class RegisterMemberProfileResult { private String fileUrl; diff --git a/src/main/java/com/tobe/healthy/member/domain/dto/out/StudentHomeResult.java b/src/main/java/com/tobe/healthy/member/domain/dto/out/StudentHomeResult.java index 40aff50f..d0f8bff8 100644 --- a/src/main/java/com/tobe/healthy/member/domain/dto/out/StudentHomeResult.java +++ b/src/main/java/com/tobe/healthy/member/domain/dto/out/StudentHomeResult.java @@ -9,8 +9,10 @@ import com.tobe.healthy.schedule.domain.dto.out.MyReservation; import lombok.Builder; import lombok.Data; +import lombok.ToString; @Data +@ToString @Builder public class StudentHomeResult { diff --git a/src/main/java/com/tobe/healthy/member/domain/dto/out/TrainerHomeResult.java b/src/main/java/com/tobe/healthy/member/domain/dto/out/TrainerHomeResult.java index fe1f66ef..8014485a 100644 --- a/src/main/java/com/tobe/healthy/member/domain/dto/out/TrainerHomeResult.java +++ b/src/main/java/com/tobe/healthy/member/domain/dto/out/TrainerHomeResult.java @@ -3,10 +3,12 @@ import com.tobe.healthy.schedule.domain.dto.out.RetrieveTrainerScheduleByLessonDtResult; import lombok.Builder; import lombok.Data; +import lombok.ToString; import java.util.List; @Data +@ToString @Builder public class TrainerHomeResult { private Long studentCount; diff --git a/src/main/java/com/tobe/healthy/member/domain/dto/out/TrainerMappingResult.java b/src/main/java/com/tobe/healthy/member/domain/dto/out/TrainerMappingResult.java index 5f0cdf51..57bf08cb 100644 --- a/src/main/java/com/tobe/healthy/member/domain/dto/out/TrainerMappingResult.java +++ b/src/main/java/com/tobe/healthy/member/domain/dto/out/TrainerMappingResult.java @@ -2,8 +2,10 @@ import lombok.AllArgsConstructor; import lombok.Data; +import lombok.ToString; @Data +@ToString @AllArgsConstructor public class TrainerMappingResult { private Boolean mapped; diff --git a/src/main/java/com/tobe/healthy/point/domain/dto/PointHistoryDto.java b/src/main/java/com/tobe/healthy/point/domain/dto/PointHistoryDto.java index 33989607..413b2b54 100644 --- a/src/main/java/com/tobe/healthy/point/domain/dto/PointHistoryDto.java +++ b/src/main/java/com/tobe/healthy/point/domain/dto/PointHistoryDto.java @@ -3,14 +3,12 @@ import com.tobe.healthy.point.domain.entity.Calculation; import com.tobe.healthy.point.domain.entity.Point; import com.tobe.healthy.point.domain.entity.PointType; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.*; import java.time.LocalDateTime; @Data +@ToString @Builder @NoArgsConstructor @AllArgsConstructor diff --git a/src/main/java/com/tobe/healthy/point/domain/dto/TempRankDto.java b/src/main/java/com/tobe/healthy/point/domain/dto/TempRankDto.java index 311cf245..05622892 100644 --- a/src/main/java/com/tobe/healthy/point/domain/dto/TempRankDto.java +++ b/src/main/java/com/tobe/healthy/point/domain/dto/TempRankDto.java @@ -3,8 +3,10 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import lombok.ToString; @Data +@ToString @NoArgsConstructor @AllArgsConstructor public class TempRankDto { diff --git a/src/main/java/com/tobe/healthy/point/domain/dto/out/PointDto.java b/src/main/java/com/tobe/healthy/point/domain/dto/out/PointDto.java index e596a874..808d46b2 100644 --- a/src/main/java/com/tobe/healthy/point/domain/dto/out/PointDto.java +++ b/src/main/java/com/tobe/healthy/point/domain/dto/out/PointDto.java @@ -3,11 +3,12 @@ import com.tobe.healthy.point.domain.dto.PointHistoryDto; import lombok.Builder; import lombok.Data; +import lombok.ToString; -import java.time.LocalDate; import java.util.List; @Data +@ToString @Builder public class PointDto { diff --git a/src/main/java/com/tobe/healthy/point/domain/dto/out/RankDto.java b/src/main/java/com/tobe/healthy/point/domain/dto/out/RankDto.java index 67c44bd7..288ead37 100644 --- a/src/main/java/com/tobe/healthy/point/domain/dto/out/RankDto.java +++ b/src/main/java/com/tobe/healthy/point/domain/dto/out/RankDto.java @@ -1,11 +1,9 @@ package com.tobe.healthy.point.domain.dto.out; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.*; @Data +@ToString @Builder @NoArgsConstructor @AllArgsConstructor diff --git a/src/main/java/com/tobe/healthy/schedule/domain/dto/in/StudentScheduleCond.java b/src/main/java/com/tobe/healthy/schedule/domain/dto/in/StudentScheduleCond.java index a426c53a..57e67f18 100644 --- a/src/main/java/com/tobe/healthy/schedule/domain/dto/in/StudentScheduleCond.java +++ b/src/main/java/com/tobe/healthy/schedule/domain/dto/in/StudentScheduleCond.java @@ -4,10 +4,12 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import lombok.ToString; import java.time.LocalDate; @Data +@ToString @NoArgsConstructor @AllArgsConstructor public class StudentScheduleCond { diff --git a/src/main/java/com/tobe/healthy/schedule/domain/dto/out/FindMyScheduleWaitingResult.java b/src/main/java/com/tobe/healthy/schedule/domain/dto/out/FindMyScheduleWaitingResult.java index c96f7e43..cf5e62b9 100644 --- a/src/main/java/com/tobe/healthy/schedule/domain/dto/out/FindMyScheduleWaitingResult.java +++ b/src/main/java/com/tobe/healthy/schedule/domain/dto/out/FindMyScheduleWaitingResult.java @@ -3,11 +3,13 @@ import com.tobe.healthy.course.domain.dto.CourseDto; import lombok.Builder; import lombok.Data; +import lombok.ToString; import org.springframework.util.ObjectUtils; import java.util.List; @Data +@ToString @Builder public class FindMyScheduleWaitingResult { diff --git a/src/main/java/com/tobe/healthy/schedule/domain/dto/out/MyReservation.java b/src/main/java/com/tobe/healthy/schedule/domain/dto/out/MyReservation.java index c6f93f4b..4bd50a13 100644 --- a/src/main/java/com/tobe/healthy/schedule/domain/dto/out/MyReservation.java +++ b/src/main/java/com/tobe/healthy/schedule/domain/dto/out/MyReservation.java @@ -3,11 +3,13 @@ import com.tobe.healthy.schedule.domain.entity.Schedule; import lombok.Builder; import lombok.Data; +import lombok.ToString; import java.time.LocalDate; import java.time.LocalTime; @Data +@ToString @Builder public class MyReservation { private Long scheduleId; diff --git a/src/main/java/com/tobe/healthy/schedule/domain/dto/out/MyReservationResponse.java b/src/main/java/com/tobe/healthy/schedule/domain/dto/out/MyReservationResponse.java index 867dcd3a..dd1f4f8b 100644 --- a/src/main/java/com/tobe/healthy/schedule/domain/dto/out/MyReservationResponse.java +++ b/src/main/java/com/tobe/healthy/schedule/domain/dto/out/MyReservationResponse.java @@ -3,11 +3,13 @@ import com.tobe.healthy.course.domain.dto.CourseDto; import lombok.Builder; import lombok.Data; +import lombok.ToString; import org.springframework.util.ObjectUtils; import java.util.List; @Data +@ToString @Builder public class MyReservationResponse { diff --git a/src/main/java/com/tobe/healthy/schedule/domain/dto/out/MyScheduleWaiting.java b/src/main/java/com/tobe/healthy/schedule/domain/dto/out/MyScheduleWaiting.java index cb86340c..053c7e34 100644 --- a/src/main/java/com/tobe/healthy/schedule/domain/dto/out/MyScheduleWaiting.java +++ b/src/main/java/com/tobe/healthy/schedule/domain/dto/out/MyScheduleWaiting.java @@ -3,11 +3,13 @@ import com.tobe.healthy.schedule.domain.entity.ScheduleWaiting; import lombok.Builder; import lombok.Data; +import lombok.ToString; import java.time.LocalDate; import java.time.LocalTime; @Data +@ToString @Builder public class MyScheduleWaiting { private Long scheduleId; diff --git a/src/main/java/com/tobe/healthy/schedule/domain/dto/out/ScheduleCommandResponse.java b/src/main/java/com/tobe/healthy/schedule/domain/dto/out/ScheduleCommandResponse.java index 762e78e2..69967764 100644 --- a/src/main/java/com/tobe/healthy/schedule/domain/dto/out/ScheduleCommandResponse.java +++ b/src/main/java/com/tobe/healthy/schedule/domain/dto/out/ScheduleCommandResponse.java @@ -1,16 +1,13 @@ package com.tobe.healthy.schedule.domain.dto.out; import com.tobe.healthy.member.domain.entity.AlarmStatus; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.*; import java.util.List; -import static com.tobe.healthy.member.domain.entity.AlarmStatus.ENABLED; @Data +@ToString @NoArgsConstructor @Builder @AllArgsConstructor diff --git a/src/main/java/com/tobe/healthy/schedule/domain/dto/out/ScheduleCommandResult.java b/src/main/java/com/tobe/healthy/schedule/domain/dto/out/ScheduleCommandResult.java index 5165ce4d..17b87536 100644 --- a/src/main/java/com/tobe/healthy/schedule/domain/dto/out/ScheduleCommandResult.java +++ b/src/main/java/com/tobe/healthy/schedule/domain/dto/out/ScheduleCommandResult.java @@ -3,10 +3,7 @@ import com.tobe.healthy.member.domain.entity.Member; import com.tobe.healthy.schedule.domain.entity.ReservationStatus; import com.tobe.healthy.schedule.domain.entity.Schedule; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.*; import org.springframework.util.ObjectUtils; import java.time.LocalDate; @@ -16,6 +13,7 @@ import static com.tobe.healthy.schedule.domain.entity.ReservationStatus.SOLD_OUT; @Data +@ToString @NoArgsConstructor @Builder @AllArgsConstructor diff --git a/src/main/java/com/tobe/healthy/schedule/domain/dto/out/ScheduleIdInfo.java b/src/main/java/com/tobe/healthy/schedule/domain/dto/out/ScheduleIdInfo.java index afce98ad..151d393d 100644 --- a/src/main/java/com/tobe/healthy/schedule/domain/dto/out/ScheduleIdInfo.java +++ b/src/main/java/com/tobe/healthy/schedule/domain/dto/out/ScheduleIdInfo.java @@ -3,8 +3,10 @@ import com.tobe.healthy.schedule.domain.entity.Schedule; import lombok.Builder; import lombok.Data; +import lombok.ToString; @Data +@ToString @Builder public class ScheduleIdInfo { private Long studentId; diff --git a/src/main/java/com/tobe/healthy/trainer/application/TrainerService.java b/src/main/java/com/tobe/healthy/trainer/application/TrainerService.java index 6201b327..ad056328 100644 --- a/src/main/java/com/tobe/healthy/trainer/application/TrainerService.java +++ b/src/main/java/com/tobe/healthy/trainer/application/TrainerService.java @@ -6,7 +6,6 @@ import com.tobe.healthy.course.application.CourseService; import com.tobe.healthy.course.domain.dto.CourseDto; import com.tobe.healthy.course.domain.dto.in.CourseAddCommand; -import com.tobe.healthy.course.domain.entity.Course; import com.tobe.healthy.course.repository.CourseRepository; import com.tobe.healthy.diet.application.DietService; import com.tobe.healthy.diet.domain.dto.DietDto; @@ -33,14 +32,12 @@ import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.ObjectUtils; import java.time.LocalDate; import java.util.*; import java.util.stream.Collectors; import static com.tobe.healthy.config.error.ErrorCode.*; -import static com.tobe.healthy.member.domain.entity.MemberType.STUDENT; @Service @@ -120,7 +117,7 @@ public MemberDetailResult getMemberOfTrainer(Member trainer, Long memberId) { .orElseThrow(() -> new CustomException(MEMBER_NOT_FOUND)); //식단 - DietDto diet = dietService.getDietCreatedAtToday(memberId); + DietDto diet = dietService.getTodayDiet(memberId); MemberDetailResult result = memberRepository.getMemberOfTrainer(memberId); result.setDiet(diet); diff --git a/src/main/java/com/tobe/healthy/trainer/domain/dto/TrainerMemberMappingDto.java b/src/main/java/com/tobe/healthy/trainer/domain/dto/TrainerMemberMappingDto.java index 81fb73c0..407c2823 100644 --- a/src/main/java/com/tobe/healthy/trainer/domain/dto/TrainerMemberMappingDto.java +++ b/src/main/java/com/tobe/healthy/trainer/domain/dto/TrainerMemberMappingDto.java @@ -4,8 +4,10 @@ import com.tobe.healthy.trainer.domain.entity.TrainerMemberMapping; import lombok.Builder; import lombok.Data; +import lombok.ToString; @Data +@ToString @Builder public class TrainerMemberMappingDto { diff --git a/src/main/java/com/tobe/healthy/trainer/domain/dto/in/MemberInviteCommand.java b/src/main/java/com/tobe/healthy/trainer/domain/dto/in/MemberInviteCommand.java index 2b5ea052..6c49f5ef 100644 --- a/src/main/java/com/tobe/healthy/trainer/domain/dto/in/MemberInviteCommand.java +++ b/src/main/java/com/tobe/healthy/trainer/domain/dto/in/MemberInviteCommand.java @@ -4,8 +4,10 @@ import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.Positive; import lombok.Data; +import lombok.ToString; @Data +@ToString public class MemberInviteCommand { @Schema(description = "이름" , example = "임채린") diff --git a/src/main/java/com/tobe/healthy/trainer/domain/dto/in/MemberLessonCommand.java b/src/main/java/com/tobe/healthy/trainer/domain/dto/in/MemberLessonCommand.java index 56fff47f..4d0b582f 100644 --- a/src/main/java/com/tobe/healthy/trainer/domain/dto/in/MemberLessonCommand.java +++ b/src/main/java/com/tobe/healthy/trainer/domain/dto/in/MemberLessonCommand.java @@ -5,9 +5,11 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import lombok.ToString; @Data +@ToString @NoArgsConstructor @AllArgsConstructor public class MemberLessonCommand { diff --git a/src/main/java/com/tobe/healthy/trainer/domain/dto/out/MemberInviteResultCommand.java b/src/main/java/com/tobe/healthy/trainer/domain/dto/out/MemberInviteResultCommand.java index d2796069..3e961f06 100644 --- a/src/main/java/com/tobe/healthy/trainer/domain/dto/out/MemberInviteResultCommand.java +++ b/src/main/java/com/tobe/healthy/trainer/domain/dto/out/MemberInviteResultCommand.java @@ -2,8 +2,10 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import lombok.ToString; @Data +@ToString public class MemberInviteResultCommand { @Schema(description = "트레이너/회원정보 매핑 uuid") diff --git a/src/main/java/com/tobe/healthy/workout/application/ExerciseService.java b/src/main/java/com/tobe/healthy/workout/application/ExerciseService.java index 82f31f57..d0b9c77e 100644 --- a/src/main/java/com/tobe/healthy/workout/application/ExerciseService.java +++ b/src/main/java/com/tobe/healthy/workout/application/ExerciseService.java @@ -7,8 +7,6 @@ import com.tobe.healthy.workout.domain.dto.in.CustomExerciseAddCommand; import com.tobe.healthy.workout.domain.entity.exercise.Exercise; import com.tobe.healthy.workout.domain.entity.exercise.ExerciseCategory; -import com.tobe.healthy.workout.domain.entity.exercise.ExerciseCustom; -import com.tobe.healthy.workout.repository.exercise.ExerciseCustomRepository; import com.tobe.healthy.workout.repository.exercise.ExerciseRepository; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -17,7 +15,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; import java.util.List; import static com.tobe.healthy.config.error.ErrorCode.EXERCISE_NOT_FOUND; @@ -30,14 +27,9 @@ public class ExerciseService { private final ExerciseRepository exerciseRepository; - private final ExerciseCustomRepository exerciseCustomRepository; public CustomPaging getExercise(Member member, ExerciseCategory exerciseCategory, Pageable pageable) { - List customExercises = exerciseCustomRepository.findByMemberIdAndCategory(member.getId(), exerciseCategory); - List customExercisesDtos = customExercises.stream().map(ExerciseDto::from).toList(); - //TODO: 커스텀 운동 어떻게 내려줄지 response 의논 후 수정하기 - - Page exercises = exerciseRepository.getExercise(exerciseCategory, pageable); + Page exercises = exerciseRepository.getExercise(member.getId(), exerciseCategory, pageable); List exerciseDtos = exercises.map(ExerciseDto::from).stream().toList(); return new CustomPaging(exerciseDtos, exercises.getPageable().getPageNumber(), @@ -45,12 +37,12 @@ public CustomPaging getExercise(Member member, ExerciseCategory exe } public void addExerciseCustom(Member member, CustomExerciseAddCommand command) { - exerciseCustomRepository.save(ExerciseCustom.create(member, command)); + exerciseRepository.save(Exercise.create(member, command)); } - public void deleteExerciseCustom(Member member, Long exerciseCustomId) { - ExerciseCustom exerciseCustom = exerciseCustomRepository.findByExerciseCustomIdAndMemberId(exerciseCustomId, member.getId()) + public void deleteExerciseCustom(Member member, Long exerciseId) { + Exercise exercise = exerciseRepository.findByExerciseIdAndMemberId(exerciseId, member.getId()) .orElseThrow(() -> new CustomException(EXERCISE_NOT_FOUND)); - exerciseCustomRepository.delete(exerciseCustom); + exerciseRepository.delete(exercise); } } diff --git a/src/main/java/com/tobe/healthy/workout/domain/dto/CommentMemberDto.java b/src/main/java/com/tobe/healthy/workout/domain/dto/CommentMemberDto.java index e6966bae..a93ae212 100644 --- a/src/main/java/com/tobe/healthy/workout/domain/dto/CommentMemberDto.java +++ b/src/main/java/com/tobe/healthy/workout/domain/dto/CommentMemberDto.java @@ -4,8 +4,10 @@ import com.tobe.healthy.member.domain.entity.MemberProfile; import lombok.Builder; import lombok.Data; +import lombok.ToString; @Data +@ToString @Builder public class CommentMemberDto { diff --git a/src/main/java/com/tobe/healthy/workout/domain/dto/CompletedExerciseDto.java b/src/main/java/com/tobe/healthy/workout/domain/dto/CompletedExerciseDto.java index 7c3dee90..ec9d2f85 100644 --- a/src/main/java/com/tobe/healthy/workout/domain/dto/CompletedExerciseDto.java +++ b/src/main/java/com/tobe/healthy/workout/domain/dto/CompletedExerciseDto.java @@ -3,13 +3,11 @@ import com.tobe.healthy.workout.domain.entity.workoutHistory.CompletedExercise; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.Positive; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.*; @Data +@ToString @Builder @NoArgsConstructor @AllArgsConstructor diff --git a/src/main/java/com/tobe/healthy/workout/domain/dto/ExerciseDto.java b/src/main/java/com/tobe/healthy/workout/domain/dto/ExerciseDto.java index 7d7c651e..2c09328b 100644 --- a/src/main/java/com/tobe/healthy/workout/domain/dto/ExerciseDto.java +++ b/src/main/java/com/tobe/healthy/workout/domain/dto/ExerciseDto.java @@ -2,41 +2,33 @@ import com.tobe.healthy.workout.domain.entity.exercise.Exercise; import com.tobe.healthy.workout.domain.entity.exercise.ExerciseCategory; -import com.tobe.healthy.workout.domain.entity.exercise.ExerciseCustom; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.*; +import org.apache.commons.lang3.StringUtils; @Data +@ToString @Builder @NoArgsConstructor @AllArgsConstructor public class ExerciseDto { private Long exerciseId; - private Long exerciseCustomId; private String names; private ExerciseCategory category; private String muscles; + private boolean custom; public static ExerciseDto from(Exercise exercise) { - String secondaryMuscles = exercise.getSecondaryMuscle() == null ? "" : ", " + exercise.getSecondaryMuscle(); + String muscles = ""; + if(exercise.getPrimaryMuscle() != null) muscles = exercise.getPrimaryMuscle() + ", "; + if(exercise.getSecondaryMuscle() != null) muscles += exercise.getSecondaryMuscle() + ", "; return ExerciseDto.builder() .exerciseId(exercise.getExerciseId()) .names(exercise.getNames()) .category(exercise.getCategory()) - .muscles(exercise.getPrimaryMuscle() + secondaryMuscles) - .build(); - } - - public static ExerciseDto from(ExerciseCustom custom) { - return ExerciseDto.builder() - .exerciseCustomId(custom.getExerciseCustomId()) - .names(custom.getNames()) - .category(custom.getCategory()) - .muscles(custom.getMuscles()) + .muscles(StringUtils.removeEnd(muscles, ", ")) + .custom(exercise.getMember() != null) .build(); } diff --git a/src/main/java/com/tobe/healthy/workout/domain/dto/WorkoutHistoryCommentDto.java b/src/main/java/com/tobe/healthy/workout/domain/dto/WorkoutHistoryCommentDto.java index 1fbf1377..df05841e 100644 --- a/src/main/java/com/tobe/healthy/workout/domain/dto/WorkoutHistoryCommentDto.java +++ b/src/main/java/com/tobe/healthy/workout/domain/dto/WorkoutHistoryCommentDto.java @@ -2,16 +2,14 @@ import com.tobe.healthy.member.domain.entity.MemberProfile; import com.tobe.healthy.workout.domain.entity.workoutHistory.WorkoutHistoryComment; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.*; import java.time.LocalDateTime; import java.util.List; @Data +@ToString @Builder @NoArgsConstructor @AllArgsConstructor diff --git a/src/main/java/com/tobe/healthy/workout/domain/dto/WorkoutHistoryFileDto.java b/src/main/java/com/tobe/healthy/workout/domain/dto/WorkoutHistoryFileDto.java index 1bdba4c6..2952e2a4 100644 --- a/src/main/java/com/tobe/healthy/workout/domain/dto/WorkoutHistoryFileDto.java +++ b/src/main/java/com/tobe/healthy/workout/domain/dto/WorkoutHistoryFileDto.java @@ -1,12 +1,10 @@ package com.tobe.healthy.workout.domain.dto; import com.tobe.healthy.workout.domain.entity.workoutHistory.WorkoutHistoryFiles; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.*; @Data +@ToString @Builder @NoArgsConstructor @AllArgsConstructor diff --git a/src/main/java/com/tobe/healthy/workout/domain/dto/in/CustomExerciseAddCommand.java b/src/main/java/com/tobe/healthy/workout/domain/dto/in/CustomExerciseAddCommand.java index dfbee020..72167591 100644 --- a/src/main/java/com/tobe/healthy/workout/domain/dto/in/CustomExerciseAddCommand.java +++ b/src/main/java/com/tobe/healthy/workout/domain/dto/in/CustomExerciseAddCommand.java @@ -5,8 +5,10 @@ import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.Data; +import lombok.ToString; @Data +@ToString public class CustomExerciseAddCommand { @Schema(description = "카테고리" , example = "CORE") diff --git a/src/main/java/com/tobe/healthy/workout/domain/dto/in/HistoryAddCommand.java b/src/main/java/com/tobe/healthy/workout/domain/dto/in/HistoryAddCommand.java index 0d7b208e..20e5e647 100644 --- a/src/main/java/com/tobe/healthy/workout/domain/dto/in/HistoryAddCommand.java +++ b/src/main/java/com/tobe/healthy/workout/domain/dto/in/HistoryAddCommand.java @@ -6,11 +6,13 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import lombok.ToString; import java.util.ArrayList; import java.util.List; @Data +@ToString @AllArgsConstructor @NoArgsConstructor public class HistoryAddCommand { diff --git a/src/main/java/com/tobe/healthy/workout/domain/dto/in/HistoryCommentAddCommand.java b/src/main/java/com/tobe/healthy/workout/domain/dto/in/HistoryCommentAddCommand.java index 0dabba45..e31bb796 100644 --- a/src/main/java/com/tobe/healthy/workout/domain/dto/in/HistoryCommentAddCommand.java +++ b/src/main/java/com/tobe/healthy/workout/domain/dto/in/HistoryCommentAddCommand.java @@ -5,9 +5,11 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import lombok.ToString; @Data +@ToString @AllArgsConstructor @NoArgsConstructor public class HistoryCommentAddCommand { diff --git a/src/main/java/com/tobe/healthy/workout/domain/dto/in/RegisterFile.java b/src/main/java/com/tobe/healthy/workout/domain/dto/in/RegisterFile.java index 625fd0c5..84825f42 100644 --- a/src/main/java/com/tobe/healthy/workout/domain/dto/in/RegisterFile.java +++ b/src/main/java/com/tobe/healthy/workout/domain/dto/in/RegisterFile.java @@ -2,8 +2,10 @@ import lombok.AllArgsConstructor; import lombok.Data; +import lombok.ToString; @Data +@ToString @AllArgsConstructor public class RegisterFile { private String fileUrl; diff --git a/src/main/java/com/tobe/healthy/workout/domain/dto/out/ExerciseCategoryDto.java b/src/main/java/com/tobe/healthy/workout/domain/dto/out/ExerciseCategoryDto.java index d7b4c01d..172598a0 100644 --- a/src/main/java/com/tobe/healthy/workout/domain/dto/out/ExerciseCategoryDto.java +++ b/src/main/java/com/tobe/healthy/workout/domain/dto/out/ExerciseCategoryDto.java @@ -3,8 +3,10 @@ import com.tobe.healthy.workout.domain.entity.exercise.ExerciseCategory; import lombok.Builder; import lombok.Data; +import lombok.ToString; @Data +@ToString @Builder public class ExerciseCategoryDto { diff --git a/src/main/java/com/tobe/healthy/workout/domain/dto/out/ExerciseCustomDto.java b/src/main/java/com/tobe/healthy/workout/domain/dto/out/ExerciseCustomDto.java deleted file mode 100644 index 5c362b08..00000000 --- a/src/main/java/com/tobe/healthy/workout/domain/dto/out/ExerciseCustomDto.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.tobe.healthy.workout.domain.dto.out; - -import com.tobe.healthy.workout.domain.entity.exercise.ExerciseCategory; -import com.tobe.healthy.workout.domain.entity.exercise.ExerciseCustom; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - - -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ExerciseCustomDto { - - private Long exerciseCustomId; - private String names; - private ExerciseCategory category; - private String muscles; - - public static ExerciseCustomDto from(ExerciseCustom custom) { - return ExerciseCustomDto.builder() - .exerciseCustomId(custom.getExerciseCustomId()) - .names(custom.getNames()) - .category(custom.getCategory()) - .muscles(custom.getMuscles()) - .build(); - } - -} diff --git a/src/main/java/com/tobe/healthy/workout/domain/dto/out/WorkoutHistoryDto.java b/src/main/java/com/tobe/healthy/workout/domain/dto/out/WorkoutHistoryDto.java index c08b75b5..ec345ca5 100644 --- a/src/main/java/com/tobe/healthy/workout/domain/dto/out/WorkoutHistoryDto.java +++ b/src/main/java/com/tobe/healthy/workout/domain/dto/out/WorkoutHistoryDto.java @@ -8,16 +8,14 @@ import com.tobe.healthy.workout.domain.dto.WorkoutHistoryFileDto; import com.tobe.healthy.workout.domain.dto.in.HistoryAddCommand; import com.tobe.healthy.workout.domain.entity.workoutHistory.WorkoutHistory; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.*; import org.springframework.web.multipart.MultipartFile; import java.util.ArrayList; import java.util.List; @Data +@ToString @Builder @NoArgsConstructor @AllArgsConstructor diff --git a/src/main/java/com/tobe/healthy/workout/domain/entity/exercise/Exercise.java b/src/main/java/com/tobe/healthy/workout/domain/entity/exercise/Exercise.java index ccde8d92..00d182f2 100644 --- a/src/main/java/com/tobe/healthy/workout/domain/entity/exercise/Exercise.java +++ b/src/main/java/com/tobe/healthy/workout/domain/entity/exercise/Exercise.java @@ -1,9 +1,12 @@ package com.tobe.healthy.workout.domain.entity.exercise; +import com.tobe.healthy.member.domain.entity.Member; +import com.tobe.healthy.workout.domain.dto.in.CustomExerciseAddCommand; import jakarta.persistence.*; import lombok.*; import static jakarta.persistence.EnumType.STRING; +import static jakarta.persistence.FetchType.LAZY; @Entity @Table(name = "exercise") @@ -18,6 +21,10 @@ public class Exercise { @Column(name = "exercise_id") private Long exerciseId; + @ManyToOne(fetch = LAZY) + @JoinColumn(name = "member_id") + private Member member; + private String names; @Enumerated(STRING) @@ -26,4 +33,12 @@ public class Exercise { private String primaryMuscle; private String secondaryMuscle; + public static Exercise create(Member member, CustomExerciseAddCommand command) { + return Exercise.builder() + .member(member) + .names(command.getNames()) + .category(command.getCategory()) + .secondaryMuscle(command.getMuscles()) + .build(); + } } diff --git a/src/main/java/com/tobe/healthy/workout/domain/entity/exercise/ExerciseCustom.java b/src/main/java/com/tobe/healthy/workout/domain/entity/exercise/ExerciseCustom.java deleted file mode 100644 index 08584b3b..00000000 --- a/src/main/java/com/tobe/healthy/workout/domain/entity/exercise/ExerciseCustom.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.tobe.healthy.workout.domain.entity.exercise; - -import com.tobe.healthy.member.domain.entity.Member; -import com.tobe.healthy.workout.domain.dto.in.CustomExerciseAddCommand; -import jakarta.persistence.*; -import lombok.*; - -import static jakarta.persistence.EnumType.STRING; - -@Entity -@Table(name = "exercise_custom") -@NoArgsConstructor(access = AccessLevel.PROTECTED) -@AllArgsConstructor -@Builder -@Getter -public class ExerciseCustom { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "exercise_custom_id") - private Long exerciseCustomId; - - @ManyToOne - @JoinColumn(name = "member_id") - private Member member; - - @Enumerated(STRING) - private ExerciseCategory category; - - private String names; - - private String muscles; - - public static ExerciseCustom create(Member member, CustomExerciseAddCommand command){ - return ExerciseCustom.builder() - .member(member) - .category(command.getCategory()) - .names(command.getNames()) - .muscles(command.getMuscles()) - .build(); - } - -} diff --git a/src/main/java/com/tobe/healthy/workout/presentation/ExerciseController.java b/src/main/java/com/tobe/healthy/workout/presentation/ExerciseController.java index 06bb6854..4889c854 100644 --- a/src/main/java/com/tobe/healthy/workout/presentation/ExerciseController.java +++ b/src/main/java/com/tobe/healthy/workout/presentation/ExerciseController.java @@ -73,10 +73,10 @@ public ResponseHandler addExerciseCustom(@AuthenticationPrincipal CustomMe @ApiResponse(responseCode = "400", description = "잘못된 요청 입력"), @ApiResponse(responseCode = "200", description = "운동 종류를 삭제한다.") }) - @DeleteMapping("{exerciseCustomId}") + @DeleteMapping("/{exerciseId}") public ResponseHandler deleteExerciseCustom(@AuthenticationPrincipal CustomMemberDetails customMemberDetails, - @Parameter(description = "커스텀 운동종류 ID") @PathVariable("exerciseCustomId") Long exerciseCustomId) { - exerciseService.deleteExerciseCustom(customMemberDetails.getMember(), exerciseCustomId); + @Parameter(description = "운동종류 ID") @PathVariable("exerciseId") Long exerciseId) { + exerciseService.deleteExerciseCustom(customMemberDetails.getMember(), exerciseId); return ResponseHandler.builder() .message("운동 종류가 삭제되었습니다.") .build(); diff --git a/src/main/java/com/tobe/healthy/workout/repository/exercise/ExerciseCustomRepository.java b/src/main/java/com/tobe/healthy/workout/repository/exercise/ExerciseCustomRepository.java deleted file mode 100644 index 2f06cf92..00000000 --- a/src/main/java/com/tobe/healthy/workout/repository/exercise/ExerciseCustomRepository.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.tobe.healthy.workout.repository.exercise; - -import com.tobe.healthy.workout.domain.entity.exercise.ExerciseCategory; -import com.tobe.healthy.workout.domain.entity.exercise.ExerciseCustom; -import org.springframework.data.jpa.repository.JpaRepository; - -import java.util.List; -import java.util.Optional; - -public interface ExerciseCustomRepository extends JpaRepository { - Optional findByExerciseCustomIdAndMemberId(Long exerciseCustomId, Long memberId); - List findByMemberIdAndCategory(Long memberId, ExerciseCategory category); - -} diff --git a/src/main/java/com/tobe/healthy/workout/repository/exercise/ExerciseRepository.java b/src/main/java/com/tobe/healthy/workout/repository/exercise/ExerciseRepository.java index 90368086..bebb158d 100644 --- a/src/main/java/com/tobe/healthy/workout/repository/exercise/ExerciseRepository.java +++ b/src/main/java/com/tobe/healthy/workout/repository/exercise/ExerciseRepository.java @@ -3,5 +3,8 @@ import com.tobe.healthy.workout.domain.entity.exercise.Exercise; import org.springframework.data.jpa.repository.JpaRepository; +import java.util.Optional; + public interface ExerciseRepository extends JpaRepository, ExerciseRepositoryCustom { + Optional findByExerciseIdAndMemberId(Long exerciseId, Long memberId); } diff --git a/src/main/java/com/tobe/healthy/workout/repository/exercise/ExerciseRepositoryCustom.java b/src/main/java/com/tobe/healthy/workout/repository/exercise/ExerciseRepositoryCustom.java index a4f4ade2..22aad24a 100644 --- a/src/main/java/com/tobe/healthy/workout/repository/exercise/ExerciseRepositoryCustom.java +++ b/src/main/java/com/tobe/healthy/workout/repository/exercise/ExerciseRepositoryCustom.java @@ -7,6 +7,6 @@ public interface ExerciseRepositoryCustom { - Page getExercise(ExerciseCategory exerciseCategory, Pageable pageable); + Page getExercise(Long memberId, ExerciseCategory exerciseCategory, Pageable pageable); } diff --git a/src/main/java/com/tobe/healthy/workout/repository/exercise/ExerciseRepositoryCustomImpl.java b/src/main/java/com/tobe/healthy/workout/repository/exercise/ExerciseRepositoryCustomImpl.java index b962017a..53f32fec 100644 --- a/src/main/java/com/tobe/healthy/workout/repository/exercise/ExerciseRepositoryCustomImpl.java +++ b/src/main/java/com/tobe/healthy/workout/repository/exercise/ExerciseRepositoryCustomImpl.java @@ -23,7 +23,7 @@ public class ExerciseRepositoryCustomImpl implements ExerciseRepositoryCustom { private final JPAQueryFactory queryFactory; @Override - public Page getExercise(ExerciseCategory exerciseCategory, Pageable pageable) { + public Page getExercise(Long memberId, ExerciseCategory exerciseCategory, Pageable pageable) { Long totalCnt = queryFactory .select(exercise.count()) .from(exercise) @@ -32,11 +32,11 @@ public Page getExercise(ExerciseCategory exerciseCategory, Pageable pa List exercises = queryFactory .select(exercise) .from(exercise) - .where(exerciseCategoryEq(exerciseCategory)) - .groupBy(exercise.exerciseId) - .orderBy(exercise.exerciseId.asc()) + .where(exerciseCategoryEq(exerciseCategory) + , exercise.member.id.eq(memberId).or(exercise.member.id.isNull())) .offset(pageable.getOffset()) .limit(pageable.getPageSize()) + .orderBy(exercise.member.id.desc(), exercise.exerciseId.asc()) .fetch(); return PageableExecutionUtils.getPage(exercises, pageable, ()-> totalCnt ); }