Skip to content

Commit e130587

Browse files
authored
Merge pull request #310 from Modagbul/hotfix
hotfix: 업데이트 푸시알림 + FCM SDK 업데이트
2 parents 88ccc3b + 46943aa commit e130587

File tree

13 files changed

+93
-35
lines changed

13 files changed

+93
-35
lines changed

.github/workflows/CD-prod.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ jobs:
1818

1919
steps:
2020
# 소스 코드 체크아웃
21-
- uses: actions/checkout@v2
21+
- uses: actions/checkout@v4
2222

2323
# JDK 11 설정
2424
- name: Set up JDK 11
@@ -29,7 +29,7 @@ jobs:
2929

3030
# Gradle 패키지 캐시
3131
- name: Cache Gradle packages
32-
uses: actions/cache@v2
32+
uses: actions/cache@v4
3333
with:
3434
path: |
3535
~/.gradle/caches
@@ -49,17 +49,17 @@ jobs:
4949
echo "${{env.APPLE_KEY}}" > ./apple-key.p8
5050
5151
# 설정 파일을 작업공간에 저장
52-
- uses: actions/upload-artifact@v2
52+
- uses: actions/upload-artifact@v4
5353
with:
5454
name: application.yml
5555
path: ./src/main/resources/application.yml
5656

57-
- uses: actions/upload-artifact@v2
57+
- uses: actions/upload-artifact@v4
5858
with:
5959
name: firebase-key.json
6060
path: ./src/main/resources/firebase-key.json
6161

62-
- uses: actions/upload-artifact@v2
62+
- uses: actions/upload-artifact@v4
6363
with:
6464
name: apple-key.p8
6565
path: ./src/main/resources/apple-key.p8

.github/workflows/CI-dev.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,18 @@ jobs:
1919

2020
steps:
2121
# 소스 코드 체크아웃
22-
- uses: actions/checkout@v2
22+
- uses: actions/checkout@v4
2323

2424
# JDK 11 설정
2525
- name: Set up JDK 11
26-
uses: actions/setup-java@v2
26+
uses: actions/setup-java@v4
2727
with:
2828
java-version: '11'
2929
distribution: 'adopt'
3030

3131
# Gradle 패키지 캐시
3232
- name: Cache Gradle packages
33-
uses: actions/cache@v2
33+
uses: actions/cache@v4
3434
with:
3535
path: |
3636
~/.gradle/caches
@@ -50,17 +50,17 @@ jobs:
5050
echo "${{env.APPLE_KEY}}" > ./apple-key.p8
5151
5252
# 설정 파일을 작업공간에 저장
53-
- uses: actions/upload-artifact@v2
53+
- uses: actions/upload-artifact@v4
5454
with:
5555
name: application.yml
5656
path: ./src/main/resources/application.yml
5757

58-
- uses: actions/upload-artifact@v2
58+
- uses: actions/upload-artifact@v4
5959
with:
6060
name: firebase-key.json
6161
path: ./src/main/resources/firebase-key.json
6262

63-
- uses: actions/upload-artifact@v2
63+
- uses: actions/upload-artifact@v4
6464
with:
6565
name: apple-key.p8
6666
path: ./src/main/resources/apple-key.p8

.github/workflows/CI-prod.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,18 @@ jobs:
1919

2020
steps:
2121
# 소스 코드 체크아웃
22-
- uses: actions/checkout@v2
22+
- uses: actions/checkout@v4
2323

2424
# JDK 11 설정
2525
- name: Set up JDK 11
26-
uses: actions/setup-java@v2
26+
uses: actions/setup-java@v4
2727
with:
2828
java-version: '11'
2929
distribution: 'adopt'
3030

3131
# Gradle 패키지 캐시
3232
- name: Cache Gradle packages
33-
uses: actions/cache@v2
33+
uses: actions/cache@v4
3434
with:
3535
path: |
3636
~/.gradle/caches
@@ -50,17 +50,17 @@ jobs:
5050
echo "${{env.APPLE_KEY}}" > ./apple-key.p8
5151
5252
# 설정 파일을 작업공간에 저장
53-
- uses: actions/upload-artifact@v2
53+
- uses: actions/upload-artifact@v4
5454
with:
5555
name: application.yml
5656
path: ./src/main/resources/application.yml
5757

58-
- uses: actions/upload-artifact@v2
58+
- uses: actions/upload-artifact@v4
5959
with:
6060
name: firebase-key.json
6161
path: ./src/main/resources/firebase-key.json
6262

63-
- uses: actions/upload-artifact@v2
63+
- uses: actions/upload-artifact@v4
6464
with:
6565
name: apple-key.p8
6666
path: ./src/main/resources/apple-key.p8

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ dependencies {
5454
implementation 'com.google.code.gson:gson:2.8.7'
5555

5656
// Push Alarm
57-
implementation 'com.google.firebase:firebase-admin:8.2.0'
57+
implementation 'com.google.firebase:firebase-admin:9.2.0'
5858
implementation 'com.google.firebase:firebase-messaging:23.0.0'
5959

6060
// RestDocs

src/main/java/com/moing/backend/domain/history/presentation/AlarmHistoryController.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public class AlarmHistoryController {
2323

2424
private final GetAlarmHistoryUseCase getAlarmHistoryUseCase;
2525
private final ReadAlarmHistoryUseCase readAlarmHistoryUseCase;
26+
2627
/**
2728
* 알림 전체 조회
2829
* [GET] api/history/alarm
@@ -52,4 +53,6 @@ public ResponseEntity<SuccessResponse> readAlarmHistory(@AuthenticationPrincipal
5253
public ResponseEntity<SuccessResponse<GetAlarmCountResponse>> getUnreadAlarmCount(@AuthenticationPrincipal User user) {
5354
return ResponseEntity.ok(SuccessResponse.create(GET_UNREAD_ALARM_HISTORY.getMessage(), getAlarmHistoryUseCase.getUnreadAlarmCount(user.getSocialId())));
5455
}
56+
57+
5558
}

src/main/java/com/moing/backend/domain/member/application/service/UpdateRemindAlarmUseCase.java

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -38,23 +38,29 @@ public class UpdateRemindAlarmUseCase {
3838
String REMIND_NAME = "미션 리마인드";
3939

4040

41-
public Boolean sendUpdateAppPushAlarm() {
41+
public void sendUpdateAppPushAlarm(String title, String message) {
4242

43-
String title = "MOING 업데이트 소식";
44-
String message = "이제 누구나 미션을 만들 수 있어요. 지금 업데이트하고 다른 소식도 확인해보세요!";
43+
// String title = "MOING 업데이트 소식";
44+
// String message = "이제 누구나 미션을 만들 수 있어요. 지금 업데이트하고 다른 소식도 확인해보세요!";
4545

46-
List<Member> allMemberOfPushAlarm = memberGetService.getAllMemberOfPushAlarm();
46+
long count = memberGetService.getAllMemberOfPushAlarm(0L, Long.MAX_VALUE).size();
4747

48-
Optional<List<MemberIdAndToken>> memberIdAndTokens = mapToMemberAndToken(allMemberOfPushAlarm);
49-
Optional<List<MemberIdAndToken>> pushMemberIdAndToken = isPushMemberIdAndToken(allMemberOfPushAlarm);
48+
for (Long offset = 0L; offset < count; offset += 499) {
5049

51-
if (pushMemberIdAndToken.isPresent() && !pushMemberIdAndToken.get().isEmpty()) {
52-
multiMessageSender.send(new MultiRequest(pushMemberIdAndToken.get(), title, message, "", REMIND_NAME, AlarmType.REMIND, PagePath.MISSION_ALL_PTAH.getValue()));
53-
}
54-
if (memberIdAndTokens.isPresent() && !memberIdAndTokens.get().isEmpty()) {
55-
saveMultiAlarmHistoryUseCase.saveAlarmHistories(AlarmHistoryMapper.getMemberIds(memberIdAndTokens.get()), "", title, message, REMIND_NAME, AlarmType.REMIND, PagePath.MISSION_ALL_PTAH.getValue());
50+
Long limit = offset+499;
51+
52+
List<Member> allMemberOfPushAlarm = memberGetService.getAllMemberOfPushAlarm(offset, limit);
53+
54+
Optional<List<MemberIdAndToken>> memberIdAndTokens = mapToMemberAndToken(allMemberOfPushAlarm);
55+
Optional<List<MemberIdAndToken>> pushMemberIdAndToken = isPushMemberIdAndToken(allMemberOfPushAlarm);
56+
57+
if (pushMemberIdAndToken.isPresent() && !pushMemberIdAndToken.get().isEmpty()) {
58+
multiMessageSender.send(new MultiRequest(pushMemberIdAndToken.get(), title, message, "", REMIND_NAME, AlarmType.REMIND, PagePath.MISSION_ALL_PTAH.getValue()));
59+
}
60+
if (memberIdAndTokens.isPresent() && !memberIdAndTokens.get().isEmpty()) {
61+
saveMultiAlarmHistoryUseCase.saveAlarmHistories(AlarmHistoryMapper.getMemberIds(memberIdAndTokens.get()), "", title, message, REMIND_NAME, AlarmType.REMIND, PagePath.MISSION_ALL_PTAH.getValue());
62+
}
5663
}
57-
return true;
5864

5965

6066
}

src/main/java/com/moing/backend/domain/member/domain/repository/MemberCustomRepository.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,6 @@ public interface MemberCustomRepository {
1313
Optional<Member> findNotDeletedByMemberId(Long id);
1414
Long getTodayNewMembers();
1515
Long getYesterdayNewMembers();
16-
Optional<List<Member>> findAllMemberOnPushAlarm();
16+
17+
Optional<List<Member>> findAllMemberOnPushAlarm(Long offset, Long limit);
1718
}

src/main/java/com/moing/backend/domain/member/domain/repository/MemberCustomRepositoryImpl.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,14 +88,16 @@ public Long getYesterdayNewMembers() {
8888
}
8989

9090
@Override
91-
public Optional<List<Member>> findAllMemberOnPushAlarm() {
91+
public Optional<List<Member>> findAllMemberOnPushAlarm(Long offset, Long limit) {
9292
return Optional.ofNullable(
9393
queryFactory.selectFrom(member)
9494
.where(
9595
member.isDeleted.eq(false),
9696
member.isRemindPush.eq(true),
9797
member.isSignOut.eq(false)
9898
)
99+
.offset(offset)
100+
.limit(limit)
99101
.fetch()
100102
);
101103
}

src/main/java/com/moing/backend/domain/member/domain/repository/MemberRepository.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,7 @@
22

33
import com.moing.backend.domain.member.domain.entity.Member;
44
import org.springframework.data.jpa.repository.JpaRepository;
5+
56
public interface MemberRepository extends JpaRepository<Member, Long>, MemberCustomRepository {
7+
68
}

src/main/java/com/moing/backend/domain/member/domain/service/MemberGetService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public Long getYesterdayNewMembers(){
3333
}
3434

3535

36-
public List<Member> getAllMemberOfPushAlarm() {
37-
return memberRepository.findAllMemberOnPushAlarm().orElseThrow(NotFoundRemindAlarmException::new);
36+
public List<Member> getAllMemberOfPushAlarm(Long offset, Long limit) {
37+
return memberRepository.findAllMemberOnPushAlarm(offset,limit).orElseThrow(NotFoundRemindAlarmException::new);
3838
}
3939
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.moing.backend.domain.member.dto.request;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Getter;
5+
import lombok.NoArgsConstructor;
6+
7+
@Getter
8+
@AllArgsConstructor
9+
@NoArgsConstructor
10+
public class PostUpdatePushAlarm {
11+
12+
private String title;
13+
private String message;
14+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.moing.backend.domain.member.presentation;
2+
3+
import com.moing.backend.domain.member.application.service.UpdateRemindAlarmUseCase;
4+
import com.moing.backend.domain.member.dto.request.PostUpdatePushAlarm;
5+
import com.moing.backend.global.config.security.dto.User;
6+
import com.moing.backend.global.response.SuccessResponse;
7+
import lombok.AllArgsConstructor;
8+
import org.springframework.http.ResponseEntity;
9+
import org.springframework.security.core.annotation.AuthenticationPrincipal;
10+
import org.springframework.web.bind.annotation.PostMapping;
11+
import org.springframework.web.bind.annotation.RequestBody;
12+
import org.springframework.web.bind.annotation.RequestMapping;
13+
import org.springframework.web.bind.annotation.RestController;
14+
15+
@RestController
16+
@AllArgsConstructor
17+
@RequestMapping("/api/remind/alarm")
18+
public class RemindAlarmController {
19+
20+
private final UpdateRemindAlarmUseCase updateRemindAlarmUseCase;
21+
22+
23+
@PostMapping("/update")
24+
public ResponseEntity<SuccessResponse<Void>> postUpdateRemindAlarm(@AuthenticationPrincipal User user , @RequestBody PostUpdatePushAlarm postUpdatePushAlarm) {
25+
updateRemindAlarmUseCase.sendUpdateAppPushAlarm(postUpdatePushAlarm.getTitle(), postUpdatePushAlarm.getMessage());
26+
return ResponseEntity.ok(SuccessResponse.create("remindAlarm Done"));
27+
}
28+
29+
}

src/main/java/com/moing/backend/global/config/fcm/service/MultiMessageSender.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ public void send(MultiRequest request) {
7070
.build();
7171

7272
try {
73-
BatchResponse response = firebaseMessaging.sendMulticast(message);
73+
// BatchResponse response = firebaseMessaging.sendMulticast(message);
74+
BatchResponse response = firebaseMessaging.sendEachForMulticast(message);
7475

7576

7677
List<String> failedTokens = new ArrayList<>();

0 commit comments

Comments
 (0)