Skip to content

Commit

Permalink
Merge pull request #13 from EWHA-LUX/feature/#12
Browse files Browse the repository at this point in the history
[Feature] 알림 조회, 알림 상세 조회 api 구현
  • Loading branch information
julia-heo authored Feb 1, 2024
2 parents 47fb07e + e3cd8d4 commit db52646
Show file tree
Hide file tree
Showing 18 changed files with 258 additions and 28 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ewha.lux.once.domain.home.entity;
package ewha.lux.once.domain.card.entity;

import ewha.lux.once.global.common.BaseEntity;
import jakarta.persistence.*;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ewha.lux.once.domain.home.entity;
package ewha.lux.once.domain.card.entity;

import jakarta.persistence.*;
import lombok.*;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ewha.lux.once.domain.home.entity;
package ewha.lux.once.domain.card.entity;

import lombok.Getter;
import lombok.RequiredArgsConstructor;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package ewha.lux.once.domain.home.entity;
package ewha.lux.once.domain.card.entity;

import ewha.lux.once.domain.card.entity.Card;
import ewha.lux.once.domain.user.entity.Users;
import ewha.lux.once.global.common.BaseEntity;
import jakarta.persistence.*;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package ewha.lux.once.domain.home.repository;
package ewha.lux.once.domain.card.repository;

import ewha.lux.once.domain.home.entity.Card;
import ewha.lux.once.domain.home.entity.CardCompany;
import ewha.lux.once.domain.card.entity.CardCompany;
import org.springframework.data.jpa.repository.JpaRepository;

public interface CardCompanyRepository extends JpaRepository<CardCompany, Long> {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package ewha.lux.once.domain.home.repository;
package ewha.lux.once.domain.card.repository;

import ewha.lux.once.domain.home.entity.Card;
import ewha.lux.once.domain.home.entity.CardCompany;
import ewha.lux.once.domain.card.entity.Card;
import ewha.lux.once.domain.card.entity.CardCompany;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package ewha.lux.once.domain.home.repository;
package ewha.lux.once.domain.card.repository;

import ewha.lux.once.domain.home.entity.Card;
import ewha.lux.once.domain.home.entity.OwnedCard;
import ewha.lux.once.domain.card.entity.Card;
import ewha.lux.once.domain.card.entity.OwnedCard;
import ewha.lux.once.domain.user.entity.Users;
import org.springframework.data.jpa.repository.JpaRepository;

Expand Down
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"));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class homeDto {
public class HomeDto {
private String nickname;
private List<String> keywordList;
}
38 changes: 38 additions & 0 deletions src/main/java/ewha/lux/once/domain/home/entity/Announcement.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package ewha.lux.once.domain.home.entity;

import ewha.lux.once.domain.user.entity.Users;
import ewha.lux.once.global.common.BaseEntity;
import jakarta.persistence.*;
import lombok.*;
import org.hibernate.annotations.ColumnDefault;

@Entity
@Table(name="Announcement")
@Getter
@Setter
@Builder
@NoArgsConstructor(access= AccessLevel.PROTECTED)
@AllArgsConstructor
public class Announcement extends BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "announcementId")
private Long id;

@ManyToOne
@JoinColumn(name = "userId")
private Users users;

@Column(name = "type",nullable = false)
private int type;

@Column(name = "content",nullable = false)
private String content;

@Column(name = "moreInfo")
private String moreInfo;

@Column(name = "hasCheck",nullable = false)
@ColumnDefault("false")
private boolean hasCheck;
}
30 changes: 30 additions & 0 deletions src/main/java/ewha/lux/once/domain/home/entity/Favorite.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package ewha.lux.once.domain.home.entity;

import ewha.lux.once.domain.user.entity.Users;
import ewha.lux.once.global.common.BaseEntity;
import jakarta.persistence.*;
import lombok.*;

@Entity
@Table(name="Favorite")
@Getter
@Setter
@Builder
@NoArgsConstructor(access= AccessLevel.PROTECTED)
@AllArgsConstructor
public class Favorite extends BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "favoriteId")
private Long id;

@ManyToOne
@JoinColumn(name = "userId")
private Users users;

@ManyToOne
@JoinColumn(name = "storeId")
private Store store;


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

import ewha.lux.once.global.common.BaseEntity;
import jakarta.persistence.*;
import lombok.*;

@Entity
@Table(name="Store")
@Getter
@Setter
@Builder
@NoArgsConstructor(access= AccessLevel.PROTECTED)
@AllArgsConstructor
public class Store extends BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "storeId")
private Long id;

@Column(name = "name",nullable = false)
private String name;

@Column(name = "address")
private String address;

@Column(name = "x")
private float x;

@Column(name = "y")
private float y;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package ewha.lux.once.domain.home.repository;

import ewha.lux.once.domain.home.entity.Announcement;
import ewha.lux.once.domain.user.entity.Users;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

public interface AnnouncementRepository extends JpaRepository<Announcement, Long> {
List<Announcement> findAnnouncementByUsers(Users users);
}
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);
}
}
12 changes: 6 additions & 6 deletions src/main/java/ewha/lux/once/domain/user/service/UserService.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package ewha.lux.once.domain.user.service;

import ewha.lux.once.domain.home.entity.Card;
import ewha.lux.once.domain.home.entity.CardCompany;
import ewha.lux.once.domain.home.entity.OwnedCard;
import ewha.lux.once.domain.home.repository.CardCompanyRepository;
import ewha.lux.once.domain.home.repository.CardRepository;
import ewha.lux.once.domain.home.repository.OwnedCardRepository;
import ewha.lux.once.domain.card.entity.Card;
import ewha.lux.once.domain.card.entity.CardCompany;
import ewha.lux.once.domain.card.entity.OwnedCard;
import ewha.lux.once.domain.card.repository.CardCompanyRepository;
import ewha.lux.once.domain.card.repository.CardRepository;
import ewha.lux.once.domain.card.repository.OwnedCardRepository;
import ewha.lux.once.domain.user.dto.*;
import ewha.lux.once.domain.user.entity.Users;
import ewha.lux.once.domain.user.repository.UsersRepository;
Expand Down

0 comments on commit db52646

Please sign in to comment.