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
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ public enum SuccessStatus implements BaseCode {
//캘린더
ADD_CALENDAR_OK(HttpStatus.OK, "COMMON200", "달력에 기록이 되었습니다."),
INQUERY_MONTH_CALENDAR_OK(HttpStatus.OK, "COMMON200", "달력을 불러왔습니다."),
MONTH_CATEGORY_COUNT_OK(HttpStatus.OK, "COMMON200", "한달 동안의 야식 카테고리 결산입니다."),

//기록
INQUERY_DATE_CALENDAR_OK(HttpStatus.OK,"COMMON200", "기록을 불러왔습니다."),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,31 +2,37 @@

import com.example.Midnight.Snacker.domain.Calendar;
import com.example.Midnight.Snacker.domain.Member;
import com.example.Midnight.Snacker.domain.enums.Category;
import com.example.Midnight.Snacker.domain.enums.CategoryE;
import com.example.Midnight.Snacker.domain.enums.Color;
import com.example.Midnight.Snacker.web.dto.CalendarDTO.RegisterRequestDTO;
import com.example.Midnight.Snacker.web.dto.calenderCountDTO.calenderCountResponseDTO;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

import java.time.LocalDateTime;
import java.util.List;

@Component
@RequiredArgsConstructor
public class CalendarConverter {
public class CalenderConverter {
public Calendar toCalendar(Member member,
LocalDateTime date,
String detailFood,
String imageUrl,
Category category,
CategoryE categoryE,
Color color) {
return Calendar.builder()
.date(date)
.detailFood(detailFood)
.color(color)
.category(category)
.categoryE(categoryE)
.imageUrl(imageUrl)
.member(member)
.build();
}

public calenderCountResponseDTO.MissionPreviewListDTO toCCList (List<calenderCountResponseDTO.monthCountPreviewDTO> countPreviewDTOList){
return calenderCountResponseDTO.MissionPreviewListDTO.builder()
.monthCountPreviewDTOList(countPreviewDTOList)
.build();
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.example.Midnight.Snacker.domain;

import com.example.Midnight.Snacker.domain.common.BaseEntity;
import com.example.Midnight.Snacker.domain.enums.Category;
import com.example.Midnight.Snacker.domain.enums.CategoryE;
import com.example.Midnight.Snacker.domain.enums.Color;
import jakarta.persistence.*;
import lombok.*;
Expand Down Expand Up @@ -35,7 +35,7 @@ public class Calendar extends BaseEntity {

@Enumerated(EnumType.STRING)
@Column(nullable = false)
private Category category;
private CategoryE categoryE;

@Column(nullable = false)
private String detailFood; //상세 음식
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
package com.example.Midnight.Snacker.domain.enums;

public enum Category {
public enum CategoryE {
한식, 중식, 일식, 양식, 아시안, 패스트푸드, 카페, 고기
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,23 @@

import com.example.Midnight.Snacker.domain.Calendar;
import com.example.Midnight.Snacker.domain.Member;

import com.example.Midnight.Snacker.domain.enums.Color;

import com.example.Midnight.Snacker.web.dto.CalendarDTO.CalendarInfoDTO;
import org.springframework.data.jpa.repository.JpaRepository;

import java.awt.print.Pageable;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;


public interface CalendarRepository extends JpaRepository<Calendar, Long> {
List<Calendar> findAllByDateBetweenOrderByDateAsc(LocalDateTime startDate, LocalDateTime endDate);

List<Calendar> findAllByMember(Member member);

// 특정 멤버와 색상, 날짜 범위로 필터링하여 개수 가져오기
int countByMemberAndColorAndDateBetween(Member member, Color color, LocalDateTime startDate, LocalDateTime endDate);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,21 @@
package com.example.Midnight.Snacker.service.CalendarService;

import com.example.Midnight.Snacker.converter.CalendarConverter;
import com.example.Midnight.Snacker.domain.Member;
import com.example.Midnight.Snacker.domain.enums.Category;
import com.example.Midnight.Snacker.domain.enums.CategoryE;
import com.example.Midnight.Snacker.domain.enums.Color;
import com.example.Midnight.Snacker.web.dto.CalendarDTO.CalendarInfoDTO;
import com.example.Midnight.Snacker.web.dto.CalendarDTO.CalendarResponseDTO;
import com.example.Midnight.Snacker.web.dto.CalendarDTO.RegisterRequestDTO;
import org.springframework.web.multipart.MultipartFile;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

public interface CalendarService {
Long addRecord(Member member, Category category, Color color, MultipartFile image, LocalDateTime date, String detailFood);

//Long addRecord(Member member, Category category, Color color, MultipartFile image, RegisterRequestDTO request);
Long addRecord(Member member, CategoryE categoryE, Color color, MultipartFile image, LocalDateTime date, String detailFood);

List<CalendarInfoDTO> getCalendarInfo(LocalDate localDate);
CalendarResponseDTO getRecord(LocalDate date, Member member);
void deleteRecord(Member member, Long calendarId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,17 @@

import com.example.Midnight.Snacker.apiPayload.code.status.ErrorStatus;
import com.example.Midnight.Snacker.apiPayload.exception.CustomException;
import com.example.Midnight.Snacker.converter.CalendarConverter;
import com.example.Midnight.Snacker.converter.CalenderConverter;
import com.example.Midnight.Snacker.domain.Calendar;
import com.example.Midnight.Snacker.domain.Member;
import com.example.Midnight.Snacker.domain.enums.Category;
import com.example.Midnight.Snacker.domain.enums.CategoryE;
import com.example.Midnight.Snacker.domain.enums.Color;
import com.example.Midnight.Snacker.repository.CalendarRepository;
import com.example.Midnight.Snacker.repository.MemberRepository;
import com.example.Midnight.Snacker.service.S3Service.S3ImageService;
import com.example.Midnight.Snacker.web.dto.CalendarDTO.CalendarInfoDTO;
import com.example.Midnight.Snacker.web.dto.CalendarDTO.CalendarResponseDTO;
import com.example.Midnight.Snacker.web.dto.CalendarDTO.RegisterRequestDTO;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
Expand All @@ -28,17 +26,20 @@
public class CalendarServiceImpl implements CalendarService {
private final CalendarRepository calendarRepository;
private final S3ImageService s3ImageService;
private final CalendarConverter calendarConverter;
private final CalenderConverter calenderConverter;
private final MemberRepository memberRepository;

//야식 기록 추가 method
@Override
@Transactional
public Long addRecord(Member member, Category category, Color color, MultipartFile image, LocalDateTime date, String detailFood){
public Long addRecord(Member member, CategoryE categoryE, Color color, MultipartFile image, LocalDateTime date, String detailFood){
//upload file 하기
String imageUrl = s3ImageService.upload(image);
//Calendar 엔티티 생성
Calendar calendar = calendarConverter.toCalendar(member, date, detailFood, imageUrl, category, color);

//Calendar calendar = calendarConverter.toCalendar(member,request, imageUrl, category, color);
Calendar calendar = calenderConverter.toCalendar(member, date, detailFood, imageUrl, categoryE, color);

Calendar savedCalendar = calendarRepository.save(calendar);

//member count 반영하기
Expand Down Expand Up @@ -69,7 +70,7 @@ public List<CalendarInfoDTO> getCalendarInfo(LocalDate localDate){
return calendars.stream()
.map(calendar -> new CalendarInfoDTO(
calendar.getId(),
calendar.getCategory(),
calendar.getCategoryE(),
calendar.getColor(),
calendar.getDetailFood(),
calendar.getImageUrl()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.example.Midnight.Snacker.service.RecommendService;

import com.example.Midnight.Snacker.domain.enums.Category;
import com.example.Midnight.Snacker.domain.enums.CategoryE;
import com.example.Midnight.Snacker.domain.enums.Color;
import com.example.Midnight.Snacker.web.dto.recommendDTO.RecommendResponseDTO;
import com.fasterxml.jackson.databind.ObjectMapper;
Expand Down Expand Up @@ -104,7 +104,7 @@ private RecommendResponseDTO.RecommendationResultDTO parseResponse(String respon
RecommendResponseDTO.RecommendationDTO dto = RecommendResponseDTO.RecommendationDTO.builder()
.type(convertToColor(type))
.menu(menu)
.category(Category.valueOf(category))
.categoryE(CategoryE.valueOf(category))
.description(descriptions)
.build();

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.example.Midnight.Snacker.service.calenderCountService;

import com.example.Midnight.Snacker.domain.Calendar;
import com.example.Midnight.Snacker.domain.Member;
import com.example.Midnight.Snacker.web.dto.calenderCountDTO.calenderCountResponseDTO;

import java.util.List;

public interface CalenderCountService {
public List<Calendar> getCalenderList(Member member);
public List<calenderCountResponseDTO.monthCountPreviewDTO> getMonthCountPreviewDTOList();
public void categoryCount(List<calenderCountResponseDTO.monthCountPreviewDTO> countPreviewDTOList,List<Calendar> member30CalenderList);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
package com.example.Midnight.Snacker.service.calenderCountService;

import com.example.Midnight.Snacker.domain.Calendar;
import com.example.Midnight.Snacker.domain.Category;
import com.example.Midnight.Snacker.domain.Member;
import com.example.Midnight.Snacker.domain.enums.CategoryE;
import com.example.Midnight.Snacker.repository.CalendarRepository;
import com.example.Midnight.Snacker.web.dto.calenderCountDTO.calenderCountResponseDTO;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

@Service
@AllArgsConstructor
public class CalenderCountServiceImpl implements CalenderCountService {

private final CalendarRepository calendarRepository;

@Override
public List<Calendar> getCalenderList (Member member){
List<Calendar> CalList = calendarRepository.findAllByMember(member);

// 오늘 날짜
LocalDateTime thirtyDaysAgo = LocalDateTime.now().minusDays(30);

// 30일 이내 데이터 필터링
List<Calendar> filteredList = CalList.stream()
.filter(calendar -> calendar.getCreatedAt().isAfter(thirtyDaysAgo)) // 생성일이 30일 이전인 데이터 제외
.collect(Collectors.toList());

return filteredList;
}

@Override
public List<calenderCountResponseDTO.monthCountPreviewDTO> getMonthCountPreviewDTOList() {
List<calenderCountResponseDTO.monthCountPreviewDTO> countList = new ArrayList<>();

List<CategoryE> menuList = Arrays.asList(CategoryE.한식, CategoryE.중식, CategoryE.일식, CategoryE.양식, CategoryE.아시안, CategoryE.패스트푸드, CategoryE.카페, CategoryE.고기);
for (int i = 0; i < menuList.size(); i++) {
calenderCountResponseDTO.monthCountPreviewDTO cm = new calenderCountResponseDTO.monthCountPreviewDTO();
cm.setCategory(menuList.get(i));
cm.setCount(0);
countList.add(cm);
}
return countList;
}

@Override
public void categoryCount(List<calenderCountResponseDTO.monthCountPreviewDTO> countPreviewDTOList,List<Calendar> member30CalenderList ){
member30CalenderList.stream()
.forEach(calendar -> {
CategoryE category = calendar.getCategoryE();

countPreviewDTOList.stream()
.filter(cm -> cm.getCategory().equals(category))
.forEach(cm -> cm.setCount(cm.getCount() + 1));
});
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,49 +2,55 @@

import com.example.Midnight.Snacker.apiPayload.ApiResponse;
import com.example.Midnight.Snacker.apiPayload.code.status.SuccessStatus;
import com.example.Midnight.Snacker.converter.CalenderConverter;
import com.example.Midnight.Snacker.domain.Calendar;
import com.example.Midnight.Snacker.domain.Member;
import com.example.Midnight.Snacker.domain.enums.Category;
import com.example.Midnight.Snacker.domain.enums.CategoryE;
import com.example.Midnight.Snacker.domain.enums.Color;
import com.example.Midnight.Snacker.security.handler.annotation.AuthUser;
import com.example.Midnight.Snacker.service.CalendarService.CalendarService;
import com.example.Midnight.Snacker.service.calenderCountService.CalenderCountService;
import com.example.Midnight.Snacker.web.dto.CalendarDTO.CalendarResponseDTO;
import com.example.Midnight.Snacker.web.dto.CalendarDTO.RegisterRequestDTO;
import com.example.Midnight.Snacker.web.dto.calenderCountDTO.calenderCountResponseDTO;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import lombok.*;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.awt.*;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

@RestController
@RequiredArgsConstructor
@RequestMapping("/api/calendar")
public class CalendarController {
private final CalendarService calendarService;
private final CalenderCountService calenderCountService;
private final CalenderConverter calenderConverter;

@PostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
@Operation(summary = "캘린더 등록")
public ApiResponse<Long> registerCalendar(
@Parameter(name = "user", hidden = true) @AuthUser Member member,
@RequestParam(value = "category")Category category,
@RequestParam(value = "categoryE") CategoryE categoryE,
@RequestParam(value = "colorType")Color color,
@RequestParam(value = "date")LocalDateTime date,
@RequestParam(value = "detailFood") String detailFood,
@RequestPart(value = "image") MultipartFile image){
//Long calendarId = calendarService.addRecord(member, category, color, image, request);

Long calendarId = calendarService.addRecord(member, category,
Long calendarId = calendarService.addRecord(member, categoryE,
color, image, date, detailFood);

return ApiResponse.of(SuccessStatus.ADD_CALENDAR_OK, calendarId);
}

@GetMapping
@Operation
@Operation(
summary = "모든 기록 조회 API")
public ApiResponse<CalendarResponseDTO> showCalendar(
@Parameter(name = "user", hidden = true) @AuthUser Member member,
@RequestParam(value = "date") LocalDate date){
Expand All @@ -55,11 +61,27 @@ public ApiResponse<CalendarResponseDTO> showCalendar(
}

@DeleteMapping("/{calendarId}")
@Operation
@Operation(summary = "기록 삭제")
public ApiResponse<Void> deleteCalendar(
@Parameter(name = "user", hidden = true) @AuthUser Member member,
@PathVariable("calendarId") Long calendarId){
calendarService.deleteRecord(member, calendarId);
return ApiResponse.of(SuccessStatus.DELETE_RECORD_OK,null);
}


@GetMapping("/api/calender/count")
@Operation(summary = "한달 동안의 야식 카테고리 결산")
public ApiResponse<calenderCountResponseDTO.MissionPreviewListDTO> monthCategoryCount(
@Parameter(name = "user", hidden = true) @AuthUser Member member)
{
List<Calendar> ll = calenderCountService.getCalenderList(member);
List<calenderCountResponseDTO.monthCountPreviewDTO> kk = calenderCountService.getMonthCountPreviewDTOList();
calenderCountService.categoryCount(kk,ll);

calenderCountResponseDTO.MissionPreviewListDTO result = calenderConverter.toCCList(kk);

return ApiResponse.of(SuccessStatus.MONTH_CATEGORY_COUNT_OK,result);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,10 @@ public ApiResponse<Void> DeletePost(@PathVariable(name = "postId") long postId){
}

@GetMapping("/api/post/all")
@Operation
@Operation(
summary = "모든 게시분 조회 API")
public ApiResponse<PostResponseDTO.getPostResponseDTO> getAllPosts() {
PostResponseDTO.getPostResponseDTO response = postService.getPost();
PostResponseDTO.getPostResponseDTO response = null;
return ApiResponse.of(SuccessStatus.INQUERY_POST_OK,response);
}
}
Loading
Loading