diff --git a/src/backend/state-server/src/main/resources/application.yml b/src/backend/state-server/src/main/resources/application.yml index d4631103..0fb2c938 100644 --- a/src/backend/state-server/src/main/resources/application.yml +++ b/src/backend/state-server/src/main/resources/application.yml @@ -29,14 +29,14 @@ spring: consumer: group-id: - channel-chat-event: "${spring.application.name}-channelChatEventGroup-${INSTANCE_ID}" - dm-chat-event: "${spring.application.name}-dmChatEventGroup-${INSTANCE_ID}" - notification-event: "${spring.application.name}-notificationEventGroup-${INSTANCE_ID}" - server-event: "${spring.application.name}-serverEventGroup-${INSTANCE_ID}" - channel-event: "${spring.application.name}-channelEventGroup-${INSTANCE_ID}" - connection-event: "${spring.application.name}-connectionEventGroup-${INSTANCE_ID}" - presence-event: "${spring.application.name}-presenceEventGroup-${INSTANCE_ID}" - member-event: "${spring.application.name}-memberEventGroup-${INSTANCE_ID}" + channel-chat-event: "${spring.application.name}-channelChatEventGroup" + dm-chat-event: "${spring.application.name}-dmChatEventGroup" + notification-event: "${spring.application.name}-notificationEventGroup" + server-event: "${spring.application.name}-serverEventGroup" + channel-event: "${spring.application.name}-channelEventGroup" + connection-event: "${spring.application.name}-connectionEventGroup" + presence-event: "${spring.application.name}-presenceEventGroup" + member-event: "${spring.application.name}-memberEventGroup" enable-auto-commit: true auto-offset-reset: latest diff --git a/src/backend/user-server/src/main/java/com/bbebig/userserver/global/kafka/PresenceEventConsumerService.java b/src/backend/user-server/src/main/java/com/bbebig/userserver/global/kafka/PresenceEventConsumerService.java index eed57820..9e1e3900 100644 --- a/src/backend/user-server/src/main/java/com/bbebig/userserver/global/kafka/PresenceEventConsumerService.java +++ b/src/backend/user-server/src/main/java/com/bbebig/userserver/global/kafka/PresenceEventConsumerService.java @@ -2,6 +2,7 @@ import com.bbebig.commonmodule.kafka.dto.PresenceEventDto; import com.bbebig.commonmodule.kafka.dto.notification.FriendPresenceEventDto; +import com.bbebig.commonmodule.kafka.dto.notification.NotificationEventType; import com.bbebig.userserver.friend.service.FriendService; import com.bbebig.userserver.member.service.KafkaProducerService; import lombok.RequiredArgsConstructor; @@ -41,6 +42,7 @@ private void handleEvent(PresenceEventDto presenceEventDto) { for (Long friendMemberId : friendMemberIds) { FriendPresenceEventDto friendPresenceEventDto = FriendPresenceEventDto.builder() .memberId(friendMemberId) + .type(NotificationEventType.FRIEND_PRESENCE) .friendMemberId(memberId) .globalStatus(presenceEventDto.getGlobalStatus()) .build(); diff --git a/src/backend/user-server/src/main/java/com/bbebig/userserver/member/controller/MemberController.java b/src/backend/user-server/src/main/java/com/bbebig/userserver/member/controller/MemberController.java index 6f72661e..7e9b5d92 100644 --- a/src/backend/user-server/src/main/java/com/bbebig/userserver/member/controller/MemberController.java +++ b/src/backend/user-server/src/main/java/com/bbebig/userserver/member/controller/MemberController.java @@ -96,4 +96,17 @@ public CommonResponse readMember( return CommonResponse.onSuccess(memberService.readMember(memberId)); } + @Operation(summary = "멤버 닉네임으로 검색", description = "멤버 닉네임으로 조회합니다.") + @ApiResponses(value = { + @ApiResponse(responseCode = "200", description = "멤버 조회 성공", useReturnTypeSchema = true), + @ApiResponse(responseCode = "400", description = "", content = @Content) + }) + @GetMapping("/search") + public CommonResponse getMemberByNickName( + @RequestParam("nickName") String nickName + ) { + log.info("[Member] 닉네임으로 멤버 조회 요청: nickName = {}", nickName); + return CommonResponse.onSuccess(memberService.getMemberByNickname(nickName)); + } + } diff --git a/src/backend/user-server/src/main/java/com/bbebig/userserver/member/repository/MemberRepository.java b/src/backend/user-server/src/main/java/com/bbebig/userserver/member/repository/MemberRepository.java index d420a59a..cd0a7ca1 100644 --- a/src/backend/user-server/src/main/java/com/bbebig/userserver/member/repository/MemberRepository.java +++ b/src/backend/user-server/src/main/java/com/bbebig/userserver/member/repository/MemberRepository.java @@ -3,5 +3,9 @@ import com.bbebig.userserver.member.entity.Member; import org.springframework.data.jpa.repository.JpaRepository; +import java.util.Optional; + public interface MemberRepository extends JpaRepository { + + Optional findByNickname(String nickname); } diff --git a/src/backend/user-server/src/main/java/com/bbebig/userserver/member/service/MemberService.java b/src/backend/user-server/src/main/java/com/bbebig/userserver/member/service/MemberService.java index d2d1314b..0739dcfe 100644 --- a/src/backend/user-server/src/main/java/com/bbebig/userserver/member/service/MemberService.java +++ b/src/backend/user-server/src/main/java/com/bbebig/userserver/member/service/MemberService.java @@ -1,6 +1,5 @@ package com.bbebig.userserver.member.service; -import com.bbebig.commonmodule.clientDto.UserFeignResponseDto; import com.bbebig.commonmodule.clientDto.UserFeignResponseDto.*; import com.bbebig.commonmodule.global.response.code.error.ErrorStatus; import com.bbebig.commonmodule.global.response.exception.ErrorHandler; @@ -26,6 +25,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.List; +import java.util.Optional; @Slf4j @Service @@ -143,6 +143,12 @@ public MemberReadResponseDto readMember(Long memberId) { return MemberReadResponseDto.convertToMemberReadResponseDto(member); } + @Transactional(readOnly = true) + public MemberReadResponseDto getMemberByNickname(String nickname) { + Optional member = memberRepository.findByNickname(nickname); + return member.map(MemberReadResponseDto::convertToMemberReadResponseDto).orElse(null); + } + /** * 멤버 정보 조회 (For Feign Client) */ @@ -164,6 +170,8 @@ public MemberInfoResponseDto getMemberInfo(Long memberId) { .build(); } + + /** * 멤버 전역 상태 조회 */ diff --git a/src/backend/user-server/src/main/resources/application.yml b/src/backend/user-server/src/main/resources/application.yml index 87169707..d1083a9e 100644 --- a/src/backend/user-server/src/main/resources/application.yml +++ b/src/backend/user-server/src/main/resources/application.yml @@ -16,7 +16,7 @@ spring: host: redis kafka: - bootstrap-servers: kafka:9092 + bootstrap-servers: ${KAFKA_BOOTSTRAP_SERVERS} topic: channel-chat-event: "channelChatEvent" @@ -29,18 +29,18 @@ spring: member-event: "memberEvent" producer: - bootstrap-servers: kafka:9092 + bootstrap-servers: ${KAFKA_BOOTSTRAP_SERVERS} consumer: group-id: - channel-chat-event: "${spring.application.name}-channelChatEventGroup-${INSTANCE_ID}" - dm-chat-event: "${spring.application.name}-dmChatEventGroup-${INSTANCE_ID}" - notification-event: "${spring.application.name}-notificationEventGroup-${INSTANCE_ID}" - server-event: "${spring.application.name}-serverEventGroup-${INSTANCE_ID}" - channel-event: "${spring.application.name}-channelEventGroup-${INSTANCE_ID}" - connection-event: "${spring.application.name}-connectionEventGroup-${INSTANCE_ID}" - presence-event: "${spring.application.name}-presenceEventGroup-${INSTANCE_ID}" - member-event: "${spring.application.name}-memberEventGroup-${INSTANCE_ID}" + channel-chat-event: "${spring.application.name}-channelChatEventGroup" + dm-chat-event: "${spring.application.name}-dmChatEventGroup" + notification-event: "${spring.application.name}-notificationEventGroup" + server-event: "${spring.application.name}-serverEventGroup" + channel-event: "${spring.application.name}-channelEventGroup" + connection-event: "${spring.application.name}-connectionEventGroup" + presence-event: "${spring.application.name}-presenceEventGroup" + member-event: "${spring.application.name}-memberEventGroup" enable-auto-commit: true