Skip to content

Commit

Permalink
feat: 알림 조회 api, 알림 상세 조회 api 구현 (#12)
Browse files Browse the repository at this point in the history
  • Loading branch information
julia-heo committed Feb 1, 2024
1 parent bef026b commit e3cd8d4
Show file tree
Hide file tree
Showing 5 changed files with 127 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,15 @@ public ResponseEntity<ResponseDto<Object>> payCardHistory (@AuthenticationPrinci
homeService.getPayCardHistory(userAccount.getUsers(),chat_id);
return ResponseEntity.ok(ResponseDto.response(1000,1,"결제여부 변경 성공"));
}
@GetMapping ("/announcement")
public ResponseEntity<ResponseDto<Object>> announce (@AuthenticationPrincipal UserAccount userAccount){
return ResponseEntity.ok(ResponseDto.response(1000,1,"알림 조회 성공",homeService.getAnnounce(userAccount.getUsers())));
}

@GetMapping ("/announcement/{announceId}")
public ResponseEntity<ResponseDto<Object>> announcedetail (@PathVariable Long announceId){
return ResponseEntity.ok(ResponseDto.response(1000,1,"알림 상세 조회 성공",homeService.getAnnounceDetail(announceId)));
}


}
19 changes: 19 additions & 0 deletions src/main/java/ewha/lux/once/domain/home/dto/AnnouncListDto.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package ewha.lux.once.domain.home.dto;

import lombok.Getter;
import lombok.Setter;

import java.util.List;

@Getter
@Setter
public class AnnouncListDto {
private long announceCount;
private List<AnnounceDto> announceTodayList;
private List<AnnounceDto> announcePastList;
public AnnouncListDto(Long announceCount,List<AnnounceDto> announceTodayList,List<AnnounceDto> announcePastList){
this.announceCount = announceCount;
this.announceTodayList = announceTodayList;
this.announcePastList = announcePastList;
}
}
23 changes: 23 additions & 0 deletions src/main/java/ewha/lux/once/domain/home/dto/AnnounceDetailDto.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package ewha.lux.once.domain.home.dto;

import ewha.lux.once.domain.home.entity.Announcement;
import lombok.Getter;
import lombok.Setter;

import java.time.format.DateTimeFormatter;
@Getter
@Setter
public class AnnounceDetailDto {
private int type;
private String content;
private String moreInfo;
private String announceDate;

public AnnounceDetailDto(Announcement announce){
this.content = announce.getContent();
this.moreInfo = announce.getMoreInfo();
this.type = announce.getType();
this.announceDate = announce.getCreated_at().format(DateTimeFormatter.ofPattern("MM/dd/yyyy HH:mm:ss"));
}

}
28 changes: 28 additions & 0 deletions src/main/java/ewha/lux/once/domain/home/dto/AnnounceDto.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package ewha.lux.once.domain.home.dto;

import ewha.lux.once.domain.home.entity.Announcement;
import lombok.Getter;
import lombok.Setter;

import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.stream.Collector;

@Getter
@Setter
public class AnnounceDto {
private long announceId;
private String content;
private int type;
private boolean hasCheck;
private String announceDate;

public AnnounceDto(Announcement announce){
this.announceId = announce.getId();
this.content = announce.getContent();
this.type = announce.getType();
this.hasCheck = announce.isHasCheck();
this.announceDate = announce.getCreated_at().format(DateTimeFormatter.ofPattern("MM/dd/yyyy HH:mm:ss"));
}

}
55 changes: 47 additions & 8 deletions src/main/java/ewha/lux/once/domain/home/service/HomeService.java
Original file line number Diff line number Diff line change
@@ -1,17 +1,20 @@
package ewha.lux.once.domain.home.service;

import ewha.lux.once.domain.home.dto.ChatDto;
import ewha.lux.once.domain.home.dto.homeDto;
import ewha.lux.once.domain.home.entity.Card;
import ewha.lux.once.domain.home.dto.*;
import ewha.lux.once.domain.card.entity.Card;
import ewha.lux.once.domain.home.entity.Announcement;
import ewha.lux.once.domain.home.entity.ChatHistory;
import ewha.lux.once.domain.home.entity.OwnedCard;
import ewha.lux.once.domain.home.repository.CardRepository;
import ewha.lux.once.domain.card.entity.OwnedCard;
import ewha.lux.once.domain.card.repository.CardRepository;
import ewha.lux.once.domain.home.repository.AnnouncementRepository;
import ewha.lux.once.domain.home.repository.ChatHistoryRepository;
import ewha.lux.once.domain.home.repository.OwnedCardRepository;
import ewha.lux.once.domain.card.repository.OwnedCardRepository;
import ewha.lux.once.domain.user.entity.Users;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.time.LocalDate;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
Expand All @@ -23,6 +26,7 @@ public class HomeService {
private final CardRepository cardRepository;
private final OwnedCardRepository ownedCardRepository;
private final ChatHistoryRepository chatHistoryRepository;
private final AnnouncementRepository announcementRepository;
public ChatDto getHomeChat(Users nowUser, String keyword, int paymentAmount){
// 파인튜닝한 GPT에 keyword, paymentAmount, 보유 카드 번호, 해당 혜택 정보 전송
// 파인튜닝한 GPT에게 cardId, benefit, discount 반환받음
Expand Down Expand Up @@ -54,7 +58,7 @@ public ChatDto getHomeChat(Users nowUser, String keyword, int paymentAmount){
return new ChatDto(nowUser.getNickname(), ownedCardCount, savedChat.getId(),exampleCard.getName(),exampleCard.getImgUrl(),benefit,discount);
}

public homeDto getHome(Users nowUser){
public HomeDto getHome(Users nowUser){
// 사용자별 맞춤형 키워드 조회
List<ChatHistory> allChatHistory = chatHistoryRepository.findByUsers(nowUser);

Expand All @@ -74,7 +78,7 @@ public homeDto getHome(Users nowUser){
topKeywords.add(defaultKeywords.get(topKeywords.size()));
}

return new homeDto(nowUser.getNickname(),topKeywords);
return new HomeDto(nowUser.getNickname(),topKeywords);

}
public void getPayCardHistory(Users nowUser, Long chatId){
Expand Down Expand Up @@ -104,4 +108,39 @@ public void getPayCardHistory(Users nowUser, Long chatId){

return;
}

public AnnouncListDto getAnnounce(Users nowUser){
LocalDate today = LocalDate.now();
LocalDate thisWeek = today.minusDays(7);

List<Announcement> announcementList = announcementRepository.findAnnouncementByUsers(nowUser);

// 오늘 생성된 알림
List<AnnounceDto> todayAnnounceDto = announcementList.stream()
.filter(announcement -> announcement.getCreated_at().toLocalDate().isEqual(today))
.sorted(Comparator.comparing(Announcement::getCreated_at).reversed())
.map(AnnounceDto::new)
.collect(Collectors.toList());

// 7일 이내에 생성된 알림 (오늘 제외)
List<AnnounceDto> recentAnnounceDto = announcementList.stream()
.filter(announcement -> !announcement.getCreated_at().toLocalDate().isEqual(today)
&& announcement.getCreated_at().toLocalDate().isAfter(thisWeek))
.sorted(Comparator.comparing(Announcement::getCreated_at).reversed())
.map(AnnounceDto::new)
.collect(Collectors.toList());

long uncheckedcnt = announcementList.stream()
.filter(announcement -> !announcement.isHasCheck()
&& announcement.getCreated_at().toLocalDate().isAfter(thisWeek))
.count();

return new AnnouncListDto(uncheckedcnt,todayAnnounceDto,recentAnnounceDto);
}
public AnnounceDetailDto getAnnounceDetail(Long announceId){
Announcement announcement = announcementRepository.findById(announceId).get();
announcement.setHasCheck(true);
announcementRepository.save(announcement);
return new AnnounceDetailDto(announcement);
}
}

0 comments on commit e3cd8d4

Please sign in to comment.