Skip to content

Commit

Permalink
✨Feat: 기본적인 UserService 메서드 구축 (#7)
Browse files Browse the repository at this point in the history
  • Loading branch information
win-luck committed Oct 2, 2023
1 parent e476c6b commit fb1005e
Show file tree
Hide file tree
Showing 2 changed files with 65 additions and 29 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,8 @@
import com.diareat.diareat.user.domain.User;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

public interface UserRepository extends JpaRepository<User, Long> {
List<User> findAllByNameContaining(String name); // 회원이 팔로우를 위해 검색한 유저 목록 조회
}
91 changes: 62 additions & 29 deletions src/main/java/com/diareat/diareat/user/service/UserService.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
package com.diareat.diareat.user.service;

import com.diareat.diareat.food.domain.Food;
import com.diareat.diareat.food.repository.FavoriteFoodRepository;
import com.diareat.diareat.food.repository.FoodRepository;
import com.diareat.diareat.user.domain.User;
import com.diareat.diareat.user.dto.CreateUserDto;
import com.diareat.diareat.user.dto.ResponseUserDto;
import com.diareat.diareat.user.dto.UpdateUserDto;
import com.diareat.diareat.user.repository.UserRepository;
import com.diareat.diareat.util.api.ResponseCode;
import com.diareat.diareat.util.exception.UserException;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
Expand All @@ -18,15 +23,24 @@ public class UserService {
private final FoodRepository foodRepository;
private final FavoriteFoodRepository favoriteFoodRepository;

// 회원정보 저장
@Transactional
public Long saveUser(CreateUserDto createUserDto) {

return null;
}

// 회원정보 조회
@Transactional(readOnly = true)
public void getUserInfo(Long userId) {

public ResponseUserDto getUserInfo(Long userId) {
return userRepository.findById(userId)
.map(ResponseUserDto::from)
.orElseThrow(() -> new UserException(ResponseCode.USER_NOT_FOUND));
}

// 회원정보 수정
@Transactional
public void updateUserInfo(Long userId) {
public void updateUserInfo(UpdateUserDto updateUserDto) {

}

Expand All @@ -36,48 +50,67 @@ public void deleteUser(Long userId) {

}

// 유저가 특정 날짜에 섭취한 음식 조회
// 회원이 팔로우를 위해 검색한 유저 목록 조회
@Transactional(readOnly = true)
public List<Food> getFoodByDate(Long userId, String date) { // 클라이언트가 넘길 날짜의 자료형 협의 필요
public List<User> searchUser(String name) {

return null;
}

// 유저가 특정 날짜에 섭취한 음식의 칼탄단지 총합 및 유저의 권장섭취량, 탄/단/지 구성 비율 조회
@Transactional(readOnly = true)
public void getFoodNutrientByDate(Long userId, String date) {
// 회원이 특정 회원 팔로우
@Transactional
public void followUser(Long userId, Long followId) {

}

// 유저의 주간 영양소 섭취량 및 탄/단/지 구성 비율 조회
@Transactional(readOnly = true)
public void getNutrientInfoByWeek(Long userId, String week) {
// 회원이 특정 회원 팔로우 취소
@Transactional
public void unfollowUser(Long userId, Long unfollowId) {

}

// 유저의 월간 영양소 섭취량 및 탄/단/지 구성 비율 조회
@Transactional(readOnly = true)
public void getNutrientInfoByMonth(Long userId, String month) {
/*
아래 메서드들은 원래 두 패키지 모두에 존재할 수 있는 혼합적인 의미를 가지고 있으며, 일단 FoodService에서 구현을 담당할 예정이다.
// 유저의 즐겨찾기 음식 목록 조회
public void getFavoriteFoodList(Long userId) {
}
}
// 최근 7일간 Best 3 음식 조회
@Transactional(readOnly = true)
public void getBestThreeFoodByDate(Long userId, String date) {
// 유저의 특정 날짜에 먹은 음식 목록 조회
public void getFoodListByDate(Long userId, LocalDate date) {
}
}
// 최근 7일간 Worst 3 음식 조회
@Transactional(readOnly = true)
public void getWorstThreeFoodByDate(Long userId, String date) {
// 유저의 특정 날짜에 먹은 음식들의 영양성분별 총합 조회 (섭취영양소/기준영양소 및 비율까지 계산해서 반환, dto 구체적 협의 필요)
public void getNutritionSumByDate(Long userId, LocalDate date) {
}
}
// 유저의 최근 7일간의 영양성분별 총합 조회 (섭취영양소/기준영양소 및 비율까지 계산해서 반환, dto 구체적 협의 필요)
public void getNutritionSumByWeek(Long userId) {
}
// 유저의 최근 1개월간의 영양성분별 총합 조회 (섭취영양소/기준영양소 및 비율까지 계산해서 반환, dto 구체적 협의 필요)
public void getNutritionSumByMonth(Long userId) {
}
// 유저의 최근 7일간의 Best 3 음식 조회 (dto 구체적 협의 필요)
public void getBestFoodByWeek(Long userId) {
}
// 유저의 최근 7일간의 Worst 3 음식 조회 (dto 구체적 협의 필요)
public void getWorstFoodByWeek(Long userId) {
}
*/

/**
* 위 메서드 외 누락된 메서드가 존재할 수 있으며, 아래와 같은 추가적인 부가 기능을 구현할 가능성 있음
* 1. 친구 추가 기능
* 2. 친구 목록에 나를 포함하여 각 사람의 칼탄단지 섭취량 기준으로 정렬하는 랭킹 기능
* 3. 주간 미션 기능
* void라고 적혀있어도 실제 구현시 반환값이 필요하면 Dto를 생성해야 한다.
* 위 메서드 외 누락된 메서드가 존재할 수 있으며, UserService에는 아래와 같은 추가적인 부가 기능을 구현할 가능성이 있다.
* 1. 친구 추가 기능 (팔로우 기능 구현 중)
* 2. 친구 목록에 나를 포함하여 각 사람의 칼탄단지 섭취량 기준으로 섭취 현황을 채점(?)하여 정렬하는 랭킹 기능
* 3. 주간 과제 기능? -> 2번과 연계 가능
*/
}

0 comments on commit fb1005e

Please sign in to comment.