From de193a5b2f072366cf68846fbf485d042746a87a Mon Sep 17 00:00:00 2001 From: kwongio Date: Mon, 28 Apr 2025 12:03:13 +0900 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=ED=91=B8=EC=8B=9C=20=EC=95=8C?= =?UTF-8?q?=EB=A6=BC=20Entity=20=EC=84=A4=EA=B3=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 6 +++ .../NotificationPushToken.java | 42 +++++++++++++++++++ .../NotificationPushTokenController.java | 31 ++++++++++++++ .../NotificationPushTokenService.java | 9 ++++ .../push_notification/PermissionStatus.java | 5 +++ .../juulabel/push_notification/Platform.java | 5 +++ 6 files changed, 98 insertions(+) create mode 100644 src/main/java/com/juu/juulabel/push_notification/NotificationPushToken.java create mode 100644 src/main/java/com/juu/juulabel/push_notification/NotificationPushTokenController.java create mode 100644 src/main/java/com/juu/juulabel/push_notification/NotificationPushTokenService.java create mode 100644 src/main/java/com/juu/juulabel/push_notification/PermissionStatus.java create mode 100644 src/main/java/com/juu/juulabel/push_notification/Platform.java diff --git a/build.gradle b/build.gradle index 14b3b484..29c04a5b 100644 --- a/build.gradle +++ b/build.gradle @@ -23,6 +23,7 @@ configurations { repositories { mavenCentral() + maven { url 'https://jitpack.io' } } @@ -87,6 +88,11 @@ dependencies { //Sentry implementation 'io.sentry:sentry-spring-boot-starter-jakarta:8.5.0' + + + //expo fcm push notification + implementation 'com.github.hlspablo:expo-server-sdk-java:v3.1.2' + } def generatedQueryDsl = 'src/main/generated' diff --git a/src/main/java/com/juu/juulabel/push_notification/NotificationPushToken.java b/src/main/java/com/juu/juulabel/push_notification/NotificationPushToken.java new file mode 100644 index 00000000..9e7685e4 --- /dev/null +++ b/src/main/java/com/juu/juulabel/push_notification/NotificationPushToken.java @@ -0,0 +1,42 @@ +package com.juu.juulabel.push_notification; + + +import com.juu.juulabel.common.base.BaseTimeEntity; +import jakarta.persistence.*; +import lombok.*; + +@Getter +@Builder +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@AllArgsConstructor(access = AccessLevel.PRIVATE) +@Entity +@Table( + name = "notification_push_token" +) +public class NotificationPushToken extends BaseTimeEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id", columnDefinition = "comment '푸시 토큰 고유 번호'") + private Long id; + + @Column(name = "member_id", nullable = false, columnDefinition = "comment '회원 고유 번호'") + private Long memberId; + + @Column(name = "push_token", columnDefinition = "comment '푸시 토큰'") + private String pushToken; + + @Enumerated(EnumType.STRING) + @Column(name = "platform", columnDefinition = "comment '플랫폼'") + private Platform platform; + + @Enumerated(EnumType.STRING) + @Column(name = "permission_status", columnDefinition = "comment '푸시 알림 권한 상태'") + private PermissionStatus permissionStatus; + + public String getPushToken() { + return String.format("ExponentPushToken[%s]", pushToken); + } +} + + diff --git a/src/main/java/com/juu/juulabel/push_notification/NotificationPushTokenController.java b/src/main/java/com/juu/juulabel/push_notification/NotificationPushTokenController.java new file mode 100644 index 00000000..152410a7 --- /dev/null +++ b/src/main/java/com/juu/juulabel/push_notification/NotificationPushTokenController.java @@ -0,0 +1,31 @@ +package com.juu.juulabel.push_notification; + +import com.juu.juulabel.common.exception.code.SuccessCode; +import com.juu.juulabel.common.response.CommonResponse; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Tag( + name = "알림 푸시 토큰 API", + description = "알림 푸시 토큰 관련 API" +) +@RestController +@RequestMapping(value = {"/v1/api/notifications/push-tokens"}) +@RequiredArgsConstructor +public class NotificationPushTokenController { + + @Operation( + summary = "유저 푸시 토큰 등록 및 업데이트", + description = "푸시 알림을 위한 유저 푸시 토큰 등록 및 업데이트" + ) + @PostMapping("/") + public ResponseEntity > registerPushToken( + ) { + return CommonResponse.success(SuccessCode.SUCCESS); + } +} diff --git a/src/main/java/com/juu/juulabel/push_notification/NotificationPushTokenService.java b/src/main/java/com/juu/juulabel/push_notification/NotificationPushTokenService.java new file mode 100644 index 00000000..44dcf9b5 --- /dev/null +++ b/src/main/java/com/juu/juulabel/push_notification/NotificationPushTokenService.java @@ -0,0 +1,9 @@ +package com.juu.juulabel.push_notification; + +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +public class NotificationPushTokenService { +} diff --git a/src/main/java/com/juu/juulabel/push_notification/PermissionStatus.java b/src/main/java/com/juu/juulabel/push_notification/PermissionStatus.java new file mode 100644 index 00000000..2eecd601 --- /dev/null +++ b/src/main/java/com/juu/juulabel/push_notification/PermissionStatus.java @@ -0,0 +1,5 @@ +package com.juu.juulabel.push_notification; + +public enum PermissionStatus { + ALLOW, DENY +} diff --git a/src/main/java/com/juu/juulabel/push_notification/Platform.java b/src/main/java/com/juu/juulabel/push_notification/Platform.java new file mode 100644 index 00000000..ed11bc7a --- /dev/null +++ b/src/main/java/com/juu/juulabel/push_notification/Platform.java @@ -0,0 +1,5 @@ +package com.juu.juulabel.push_notification; + +public enum Platform { + ANDROID, IOS +} From ddc5a2d9f00f3361bf20ef0d598ed9b07acea07b Mon Sep 17 00:00:00 2001 From: kwongio Date: Mon, 28 Apr 2025 12:46:58 +0900 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20comment=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../push_notification/NotificationPushToken.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/juu/juulabel/push_notification/NotificationPushToken.java b/src/main/java/com/juu/juulabel/push_notification/NotificationPushToken.java index 9e7685e4..e73efead 100644 --- a/src/main/java/com/juu/juulabel/push_notification/NotificationPushToken.java +++ b/src/main/java/com/juu/juulabel/push_notification/NotificationPushToken.java @@ -17,21 +17,21 @@ public class NotificationPushToken extends BaseTimeEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "id", columnDefinition = "comment '푸시 토큰 고유 번호'") + @Column(name = "id") private Long id; - @Column(name = "member_id", nullable = false, columnDefinition = "comment '회원 고유 번호'") + @Column(name = "member_id", nullable = false) private Long memberId; - @Column(name = "push_token", columnDefinition = "comment '푸시 토큰'") + @Column(name = "push_token") private String pushToken; @Enumerated(EnumType.STRING) - @Column(name = "platform", columnDefinition = "comment '플랫폼'") + @Column(name = "platform") private Platform platform; @Enumerated(EnumType.STRING) - @Column(name = "permission_status", columnDefinition = "comment '푸시 알림 권한 상태'") + @Column(name = "permission_status") private PermissionStatus permissionStatus; public String getPushToken() {