Skip to content

Commit

Permalink
Merge pull request #202 from Link-MIND/test
Browse files Browse the repository at this point in the history
[Merge] test branch merge
  • Loading branch information
mmihye authored Jan 18, 2024
2 parents 0017b48 + 3b755c0 commit d6614c7
Show file tree
Hide file tree
Showing 11 changed files with 90 additions and 29 deletions.
17 changes: 17 additions & 0 deletions linkmind/src/main/java/com/app/toaster/domain/Link.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

@Getter
@Entity
@NoArgsConstructor(access = AccessLevel.PROTECTED)
Expand All @@ -24,10 +27,24 @@ public class Link {
@Column(columnDefinition = "TEXT")
private String thumbnailUrl;

private LocalDateTime updateAt;

private boolean thisWeekLink = false;


@Builder
public Link(String title, String linkUrl, String thumbnailUrl) {
this.title = title;
this.linkUrl = linkUrl;
this.thumbnailUrl = thumbnailUrl;
}

public void setWeekLinkFalse(){
this.thisWeekLink = false;
}

public void updateWeekLink(){
this.updateAt = LocalDateTime.now();
this.thisWeekLink =true;
}
}
12 changes: 7 additions & 5 deletions linkmind/src/main/java/com/app/toaster/domain/RecommendSite.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;


@Getter
@Entity
Expand All @@ -16,15 +18,15 @@ public class RecommendSite {
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long siteId;

String siteTitle;
private String siteTitle;

String siteUrl;
@Column(columnDefinition = "TEXT")
private String siteUrl;

String siteImg;
private String siteImg;

@Enumerated(EnumType.STRING)
Topic siteSub;

private Topic siteSub;

@Builder
public RecommendSite(String siteTitle, String siteUrl, String siteImg, Topic siteSub) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,12 @@ public ResponseEntity<String> sendNotificationByToken(
/**
* 새로운 질문이 도착했음을 알리는 푸시 알림 활성화 API
*/
@PostMapping("/qna")
@ResponseStatus(HttpStatus.OK)
public ApiResponse sendTopicScheduledTest(@RequestBody FCMPushRequestDto request) {
sqsProducer.sendMessage(request);
return ApiResponse.success(Success.PUSH_ALARM_PERIODIC_SUCCESS);
}
// @PostMapping("/qna")
// @ResponseStatus(HttpStatus.OK)
// public ApiResponse sendTopicScheduledTest(@RequestBody FCMPushRequestDto request) {
// sqsProducer.sendMessage(request);
// return ApiResponse.success(Success.PUSH_ALARM_PERIODIC_SUCCESS);
// }

@DeleteMapping("/clear")
@ResponseStatus(HttpStatus.OK)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import java.time.LocalDateTime;
import java.util.ArrayList;
Expand Down Expand Up @@ -40,4 +41,5 @@ public String pushTodayTimer() {
return "오늘의 토스터를 구워 전달했어요!!!";
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ public void schedulePushAlarm(String cronExpression,Long timerId) {
//sqs 푸시
FCMPushRequestDto request = getPushMessage(timer,toastRepository.getUnReadToastNumber(timer.getUser().getUserId()) );

sqsProducer.sendMessage(request);
sqsProducer.sendMessage(request, timer.getId().toString());

System.out.println("========="+request.getTitle() + request.getBody()+"=========");

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,12 @@ public class SqsProducer {
private static final String SQS_QUEUE_REQUEST_LOG_MESSAGE = "====> [SQS Queue Request] : %s ";


public void sendMessage(FCMPushRequestDto requestDto) {
public void sendMessage(FCMPushRequestDto requestDto, String timerId) {
System.out.println("Sender: " + requestDto.getBody());
template.send(to -> {
try {
to.queue(QUEUE_NAME)
.messageGroupId(GROUP_ID)
.messageGroupId(timerId)
.payload(objectMapper.writeValueAsString(requestDto));
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
package com.app.toaster.infrastructure;

import com.app.toaster.domain.Category;
import com.app.toaster.domain.Link;
import com.app.toaster.domain.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

import java.util.ArrayList;
import java.util.List;

@Repository
Expand All @@ -13,4 +16,7 @@ public interface LinkRepository extends JpaRepository<Link, Long> {
@Query("SELECT e FROM Link e ORDER BY FUNCTION('RAND') FETCH FIRST 3 ROWS ONLY")
List<Link> findRandom3Links();

List<Link> findAllByThisWeekLinkIsTrue();


}
Original file line number Diff line number Diff line change
Expand Up @@ -136,9 +136,10 @@ else if (socialType.toString() == "KAKAO") {
public void withdraw(Long userId) {
User user = userRepository.findByUserId(userId).orElseThrow(
()->new NotFoundException(Error.NOT_FOUND_USER_EXCEPTION, Error.NOT_FOUND_USER_EXCEPTION.getMessage()));
// if (user.getSocialType() == SocialType.KAKAO){
// kakaoSignInService.withdrawKakao(accessToken);
// }
if (user.getSocialType() == SocialType.KAKAO){
String deleteSocialId = kakaoSignInService.withdrawKakao(user.getSocialId());
System.out.println(deleteSocialId);
}
try {
toastService.deleteAllToast(user);
}catch (IOException e){
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
import org.springframework.http.HttpHeaders;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;

import com.app.toaster.exception.Error;
Expand All @@ -27,6 +29,9 @@ public class KakaoSignInService {
@Value("${jwt.KAKAO_WITHDRAW}")
private String KAKAO_WITHDRAW;

@Value("${jwt.KAKAO_AK}")
private String KAKAO_AK;

public LoginResult getKaKaoId(String accessToken) {
ResponseEntity<Object> responseData = requestKakaoServer(accessToken, Strategy.LOGIN);
ObjectMapper objectMapper = new ObjectMapper();
Expand All @@ -36,25 +41,32 @@ public LoginResult getKaKaoId(String accessToken) {
}
// 인가코드 나중에 서버에서 한번에 처리 하는 방식으로 변경. ux 이슈

// public String withdrawKakao(String accessToken){
// ResponseEntity<Object> responseData = requestKakaoServer(accessToken, Strategy.WITHDRAWAL);
// ObjectMapper objectMapper = new ObjectMapper();
// HashMap profileResponse = (HashMap)objectMapper.convertValue( responseData.getBody(),Map.class);
// return profileResponse.get("id").toString();
// }
public String withdrawKakao(String socialId){
ResponseEntity<Object> responseData = requestKakaoServer(socialId, Strategy.WITHDRAWAL);
ObjectMapper objectMapper = new ObjectMapper();
HashMap profileResponse = (HashMap)objectMapper.convertValue( responseData.getBody(),Map.class);
return profileResponse.get("id").toString();
}

private ResponseEntity<Object> requestKakaoServer(String accessToken, Strategy strategy){
private ResponseEntity<Object> requestKakaoServer(String idOrAccessToken, Strategy strategy){
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.add("Authorization","Bearer "+ accessToken);

HttpEntity<JsonArray> httpEntity = new HttpEntity<>(headers);
ResponseEntity<Object> responseData;
switch (strategy){
case WITHDRAWAL -> {
headers.add("Authorization","KakaoAK "+ KAKAO_AK);

MultiValueMap<String, Object> param = new LinkedMultiValueMap<>();
param.set("target_id_type", "user_id");
param.set("target_id", idOrAccessToken);
HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<>(param, headers);

return restTemplate.postForEntity(KAKAO_WITHDRAW,httpEntity,Object.class);
}
case LOGIN -> {
headers.add("Authorization","Bearer "+ idOrAccessToken);

HttpEntity<JsonArray> httpEntity = new HttpEntity<>(headers);
return restTemplate.postForEntity(KAKAO_URL, httpEntity, Object.class);
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,22 +1,41 @@
package com.app.toaster.service.link;

import com.app.toaster.controller.response.toast.WeekLinkDto;
import com.app.toaster.domain.Link;
import com.app.toaster.infrastructure.LinkRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.time.Duration;
import java.time.LocalDateTime;
import java.time.Period;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

@Service
@RequiredArgsConstructor
public class LinkService {

private final LinkRepository linkRepository;

@Transactional
public List<WeekLinkDto> getWeekLinks(){

return linkRepository.findRandom3Links().stream().map(WeekLinkDto::of).toList();
}
List<Link> lists = linkRepository.findAllByThisWeekLinkIsTrue();

long days = Duration.between(lists.get(0).getUpdateAt(), LocalDateTime.now()).toDays();

if(days>7){
lists.forEach(Link::setWeekLinkFalse);
lists = linkRepository.findRandom3Links().stream()
.peek(Link::updateWeekLink)
.toList();
}


return lists.stream().map(WeekLinkDto::of).toList();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import lombok.RequiredArgsConstructor;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

Expand All @@ -19,4 +20,5 @@ public List<RecommendSite> getRecommendSites(){

return recommedSiteRepository.findAll().subList(0, Math.min(9, recommedSiteRepository.findAll().size()));
}

}

0 comments on commit d6614c7

Please sign in to comment.