Skip to content

Commit

Permalink
Merge pull request #56 from Capstone-Richam/feature/keyword
Browse files Browse the repository at this point in the history
feat : 최신 메일만 업데이트
  • Loading branch information
beakgugong authored Dec 10, 2023
2 parents ae9d056 + e048964 commit f1f222a
Show file tree
Hide file tree
Showing 3 changed files with 78 additions and 33 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.Nunbody.domain.Mail.domain.MailHeader;
import com.Nunbody.domain.Mail.domain.PlatformType;
import java.util.Optional;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
Expand All @@ -12,4 +13,5 @@ public interface MailRepository extends JpaRepository<MailHeader,Long> {
Page<MailHeader> findAllByMemberIdOrderByDateDesc(Long id, Pageable pageable);
List<MailHeader> findAllByMemberIdOrderByDateDesc(Long id);
Page<MailHeader> findAllByMemberIdAndPlatformTypeOrderByDateDesc(Long memberId, PlatformType platformType, Pageable pageable);
Optional<MailHeader> findFirstByMemberIdAndPlatformTypeOrderByDateDesc(Long memberId, PlatformType platformType);
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public class FilterService {
private final MailRepository mailRepository;
private final MailBodyRepository mailBodyRepository;

public Page<FilterMailListResponseDto> filterContent( Long memberId,FilterKeywordRequest filterKeywordRequest, Pageable pageable) {
public Page<FilterMailListResponseDto> filterContent(Long memberId, FilterKeywordRequest filterKeywordRequest, Pageable pageable) {


List<MailHeader> mailList = getMailHeaderList(memberId);
Expand Down
107 changes: 75 additions & 32 deletions src/main/java/com/Nunbody/domain/mail/service/MailService.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

Expand Down Expand Up @@ -125,40 +124,47 @@ public MailList mailSetting(Long userId, String platformHost, String platformId,

Message[] messages = folder.getMessages();
MailHeader mailHeaderData;
MailHeader latestMail = mailRepository.findFirstByMemberIdAndPlatformTypeOrderByDateDesc(userId,platformType).orElse(null);


for (int i = 0; i <5 ; i++) {
matcher = pattern.matcher(messages[i].getFrom()[0].toString());
Instant receivedInstant = messages[i].getReceivedDate().toInstant();
ZonedDateTime kstDateTime = ZonedDateTime.ofInstant(receivedInstant, ZoneId.of("Asia/Seoul"));
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDate = kstDateTime.format(formatter);

if (matcher.find()) {
String fromPerson = matcher.group(1);
mailHeaderData = MailHeader.builder()
.title(messages[i].getSubject())
.fromPerson(fromPerson)
.date(formattedDate)
.member(memberRepository.findById(userId).get())
.platformType(platformType)
.build();
} else {
mailHeaderData = MailHeader.builder()
.title(messages[i].getSubject())
.fromPerson(messages[i].getFrom()[0].toString())
.date(formattedDate)
.member(memberRepository.findById(userId).get())
.platformType(platformType)
.build();
if (latestMail==null){
reset(messages,userId, platformType,platformHost);
}
else {
for (int i = messages.length - 2; i < messages.length; i++) {
matcher = pattern.matcher(messages[i].getFrom()[0].toString());
Instant receivedInstant = messages[i].getReceivedDate().toInstant();
ZonedDateTime kstDateTime = ZonedDateTime.ofInstant(receivedInstant, ZoneId.of("Asia/Seoul"));
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDate = kstDateTime.format(formatter);
int compare = formattedDate.compareTo(latestMail.getDate());
if (compare > 0) {
if (matcher.find()) {
String fromPerson = matcher.group(1);
mailHeaderData = MailHeader.builder()
.title(messages[i].getSubject())
.fromPerson(fromPerson)
.date(formattedDate)
.member(memberRepository.findById(userId).get())
.platformType(platformType)
.build();
} else {
mailHeaderData = MailHeader.builder()
.title(messages[i].getSubject())
.fromPerson(messages[i].getFrom()[0].toString())
.date(formattedDate)
.member(memberRepository.findById(userId).get())
.platformType(platformType)
.build();
}
mailRepository.save(mailHeaderData);
//mailList.addData(mailHeaderData);

Long mailId = mailHeaderData.getId();
mailBodies.add(extractMailBody(platformHost, messages[i], mailId));
}
mongoTemplate.insertAll(mailBodies);
}
mailRepository.save(mailHeaderData);
//mailList.addData(mailHeaderData);

Long mailId = mailHeaderData.getId();
mailBodies.add(extractMailBody(platformHost,messages[i],mailId));
}
mongoTemplate.insertAll(mailBodies);
// 폴더와 스토어 닫기
folder.close(false);
store.close();
Expand All @@ -170,6 +176,43 @@ public MailList mailSetting(Long userId, String platformHost, String platformId,

return mailList;
}
public void reset(Message[] messages, Long userId, PlatformType platformType, String platformHost)
throws MessagingException, IOException {
MailHeader mailHeaderData;
List<MailBody> mailBodies = new ArrayList<>();
for (int i = messages.length-20; i < messages.length; i++) {
matcher = pattern.matcher(messages[i].getFrom()[0].toString());
Instant receivedInstant = messages[i].getReceivedDate().toInstant();
ZonedDateTime kstDateTime = ZonedDateTime.ofInstant(receivedInstant, ZoneId.of("Asia/Seoul"));
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDate = kstDateTime.format(formatter);
if (matcher.find()) {
String fromPerson = matcher.group(1);
mailHeaderData = MailHeader.builder()
.title(messages[i].getSubject())
.fromPerson(fromPerson)
.date(formattedDate)
.member(memberRepository.findById(userId).get())
.platformType(platformType)
.build();
} else {
mailHeaderData = MailHeader.builder()
.title(messages[i].getSubject())
.fromPerson(messages[i].getFrom()[0].toString())
.date(formattedDate)
.member(memberRepository.findById(userId).get())
.platformType(platformType)
.build();
}
mailRepository.save(mailHeaderData);
//mailList.addData(mailHeaderData);

Long mailId = mailHeaderData.getId();
mailBodies.add(extractMailBody(platformHost, messages[i], mailId));
}
mongoTemplate.insertAll(mailBodies);
}

public MailBody extractMailBody(String platformhost,Message messages, Long mailId) throws MessagingException, IOException {

Object content = messages.getContent();
Expand Down

0 comments on commit f1f222a

Please sign in to comment.