Skip to content

Commit d3fa5ff

Browse files
authored
Merge pull request #31 from FlipNoteTeam/feat/notification
Feat: [FN-124][FN-125] 알림 생성 및 목록 조회 기능
2 parents a9676b8 + 2de323b commit d3fa5ff

32 files changed

Lines changed: 397 additions & 133 deletions

src/main/java/project/flipnote/auth/controller/AuthController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
import lombok.RequiredArgsConstructor;
2020
import project.flipnote.auth.controller.docs.AuthControllerDocs;
2121
import project.flipnote.auth.model.ChangePasswordRequest;
22-
import project.flipnote.auth.model.EmailVerifyRequest;
2322
import project.flipnote.auth.model.EmailVerificationRequest;
23+
import project.flipnote.auth.model.EmailVerifyRequest;
2424
import project.flipnote.auth.model.PasswordResetCreateRequest;
2525
import project.flipnote.auth.model.PasswordResetRequest;
2626
import project.flipnote.auth.model.TokenPair;

src/main/java/project/flipnote/auth/controller/docs/AuthControllerDocs.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
import io.swagger.v3.oas.annotations.Operation;
66
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
77
import project.flipnote.auth.model.ChangePasswordRequest;
8-
import project.flipnote.auth.model.EmailVerifyRequest;
98
import project.flipnote.auth.model.EmailVerificationRequest;
9+
import project.flipnote.auth.model.EmailVerifyRequest;
1010
import project.flipnote.auth.model.PasswordResetCreateRequest;
1111
import project.flipnote.auth.model.PasswordResetRequest;
1212
import project.flipnote.auth.model.UserLoginRequest;

src/main/java/project/flipnote/auth/service/AuthService.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
import project.flipnote.auth.event.PasswordResetCreateEvent;
1919
import project.flipnote.auth.exception.AuthErrorCode;
2020
import project.flipnote.auth.model.ChangePasswordRequest;
21-
import project.flipnote.auth.model.EmailVerifyRequest;
2221
import project.flipnote.auth.model.EmailVerificationRequest;
22+
import project.flipnote.auth.model.EmailVerifyRequest;
2323
import project.flipnote.auth.model.PasswordResetCreateRequest;
2424
import project.flipnote.auth.model.PasswordResetRequest;
2525
import project.flipnote.auth.model.TokenPair;
@@ -34,9 +34,9 @@
3434
import project.flipnote.auth.util.PasswordResetTokenGenerator;
3535
import project.flipnote.auth.util.VerificationCodeGenerator;
3636
import project.flipnote.common.config.ClientProperties;
37-
import project.flipnote.common.model.request.UserCreateCommand;
38-
import project.flipnote.common.model.event.UserRegisteredEvent;
3937
import project.flipnote.common.exception.BizException;
38+
import project.flipnote.common.model.event.UserRegisteredEvent;
39+
import project.flipnote.common.model.request.UserCreateCommand;
4040
import project.flipnote.common.security.dto.AuthPrinciple;
4141
import project.flipnote.common.security.jwt.JwtComponent;
4242
import project.flipnote.user.model.SocialLinksResponse;

src/main/java/project/flipnote/common/exception/CommonErrorCode.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@
1010
public enum CommonErrorCode implements ErrorCode {
1111
INTERNAL_SERVER_ERROR(HttpStatus.INTERNAL_SERVER_ERROR.value(), "COMMON_001", "예기치 않은 오류가 발생했습니다."),
1212
INVALID_INPUT_VALUE(HttpStatus.BAD_REQUEST.value(), "COMMON_002", "입력값이 올바르지 않습니다."),
13-
SERVICE_TEMPORARILY_UNAVAILABLE(HttpStatus.TOO_MANY_REQUESTS.value(), "COMMON_003", "요청이 많아 처리되지 않았습니다. 잠시 후 다시 시도해주세요.");
13+
SERVICE_TEMPORARILY_UNAVAILABLE(
14+
HttpStatus.TOO_MANY_REQUESTS.value(), "COMMON_003", "요청이 많아 처리되지 않았습니다. 잠시 후 다시 시도해주세요."
15+
);
1416

1517
private final int status;
1618
private final String code;
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package project.flipnote.common.model.event;
2+
3+
import java.util.List;
4+
5+
public record GroupJoinRequestedEvent(
6+
Long groupId,
7+
List<Long> receiverIds,
8+
Long requesterId
9+
) {
10+
}

src/main/java/project/flipnote/common/model/request/CursorPageRequest.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ public Long getCursorId() {
2929
return null;
3030
}
3131

32-
return Long.valueOf(normalized);
32+
try {
33+
return Long.valueOf(normalized);
34+
} catch (NumberFormatException ex) {
35+
return null;
36+
}
3337
}
3438
}

src/main/java/project/flipnote/common/security/config/SecurityConfig.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Excepti
5858
.authorizeHttpRequests(auth -> auth
5959
.requestMatchers(
6060
HttpMethod.POST,
61-
"/*/users", "/*/auth/token/refresh", "/*/auth/password-resets", "/*/auth/register", "/*/images/upload"
61+
"/*/users", "/*/auth/token/refresh", "/*/auth/password-resets", "/*/auth/register",
62+
"/*/images/upload"
6263
).permitAll()
6364
.requestMatchers(HttpMethod.PATCH, "/*/auth/password-resets").permitAll()
6465
.requestMatchers(

src/main/java/project/flipnote/group/repository/GroupInvitationRepository.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,11 @@ Optional<GroupInvitation> findByIdAndGroup_IdAndInviteeUserIdAndStatus(
3333
boolean existsByGroup_IdAndInviteeEmailAndStatus(Long groupId, String inviteeEmail, GroupInvitationStatus status);
3434

3535
@Modifying(clearAutomatically = true, flushAutomatically = true)
36-
@Query("UPDATE GroupInvitation gi " +
37-
"SET gi.status = project.flipnote.group.entity.GroupInvitationStatus.EXPIRED " +
38-
"WHERE gi.status = project.flipnote.group.entity.GroupInvitationStatus.PENDING " +
39-
"AND gi.expiredAt < :now")
36+
@Query("""
37+
UPDATE GroupInvitation gi
38+
SET gi.status = project.flipnote.group.entity.GroupInvitationStatus.EXPIRED
39+
WHERE gi.status = project.flipnote.group.entity.GroupInvitationStatus.PENDING
40+
AND gi.expiredAt < :now
41+
""")
4042
int bulkExpire(@Param("now") LocalDateTime now);
4143
}
Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,25 @@
11
package project.flipnote.group.repository;
22

3+
import java.util.List;
4+
import java.util.Optional;
5+
36
import org.springframework.data.jpa.repository.JpaRepository;
7+
import org.springframework.stereotype.Repository;
48

59
import project.flipnote.group.entity.Group;
6-
7-
import org.springframework.stereotype.Repository;
810
import project.flipnote.group.entity.GroupMember;
11+
import project.flipnote.group.entity.GroupMemberRole;
912
import project.flipnote.user.entity.UserProfile;
1013

11-
import java.util.Optional;
12-
1314
@Repository
1415
public interface GroupMemberRepository extends JpaRepository<GroupMember, Long> {
15-
Optional<GroupMember> findByGroupAndUser(Group group, UserProfile userProfile);
16+
Optional<GroupMember> findByGroupAndUser(Group group, UserProfile userProfile);
1617

1718
long countByGroup_Id(Long groupId);
1819

1920
boolean existsByGroup_idAndUser_id(Long groupId, Long userId);
2021

2122
Optional<GroupMember> findByGroup_IdAndUser_Id(Long groupId, Long userId);
2223

24+
List<GroupMember> findByGroupAndRoleIn(Group group, List<GroupMemberRole> roles);
2325
}

src/main/java/project/flipnote/group/repository/GroupRolePermissionRepository.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package project.flipnote.group.repository;
22

3+
import java.util.List;
4+
35
import org.springframework.data.jpa.repository.JpaRepository;
46

57
import project.flipnote.group.entity.Group;
@@ -11,4 +13,6 @@
1113
@Repository
1214
public interface GroupRolePermissionRepository extends JpaRepository<GroupRolePermission, Long> {
1315
boolean existsByGroupAndRoleAndGroupPermission(Group group, GroupMemberRole role, GroupPermission groupPermission);
16+
17+
List<GroupRolePermission> findByGroupAndGroupPermission(Group group, GroupPermission groupPermission);
1418
}

0 commit comments

Comments
 (0)