Skip to content

Commit eab315f

Browse files
authored
feat: 채팅 설정 조회 기능 구현 (#103)
* feat: chatSetting 값 반환을 위한 Dto 생성 * feat: user 조회 후 chatsetting 값 반환 로직 작성 * feat: 채팅 설정 조회 로직 작성 * docs: Swagger 작성
1 parent 07a3a75 commit eab315f

File tree

5 files changed

+49
-0
lines changed

5 files changed

+49
-0
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package gotcha_user.dto;
2+
3+
import gotcha_domain.user.ChatOption;
4+
import gotcha_domain.user.PrivateChatOption;
5+
import gotcha_domain.user.User;
6+
7+
public record UserChatSettingRes(
8+
ChatOption chatOption,
9+
PrivateChatOption privateChatOption
10+
) {
11+
public static UserChatSettingRes fromUser(User user){
12+
return new UserChatSettingRes(
13+
user.getChatOption(),
14+
user.getPrivateChatOption()
15+
);
16+
}
17+
}

gotcha-user/src/main/java/gotcha_user/service/UserService.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import gotcha_domain.user.PrivateChatOption;
88
import gotcha_domain.user.Role;
99
import gotcha_domain.user.User;
10+
import gotcha_user.dto.UserChatSettingRes;
1011
import gotcha_user.dto.UserInfoRes;
1112
import gotcha_user.exceptionCode.UserExceptionCode;
1213
import gotcha_user.repository.UserRepository;
@@ -147,6 +148,12 @@ public void updateUserChatSetting(Long userId, ChatOption chatOption, PrivateCha
147148
redisUtil.hSet(settingsCacheKey, "privateChatOption", privateChatOption.name());
148149
}
149150

151+
@Transactional(readOnly = true)
152+
public UserChatSettingRes getUserChatSetting(Long userId){
153+
User user = findUserByUserId(userId);
154+
return UserChatSettingRes.fromUser(user);
155+
}
156+
150157
public User getUserByUuidAllowingGuest(String uuid) {
151158
if (uuid == null) {
152159
throw new CustomException(UserExceptionCode.INVALID_USERID);

gotcha/src/main/java/Gotcha/domain/mypage/api/MypageApi.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -418,4 +418,18 @@ ResponseEntity<?> modifyUserNickname(@Valid @RequestBody NicknameReq nicknameReq
418418
})
419419
ResponseEntity<?> modifyUserChatSetting(@Valid @RequestBody ChatSettingReq chatSettingReq,
420420
@AuthenticationPrincipal SecurityUserDetails userDetails);
421+
422+
@Operation(summary = "사용자 채팅 설정 조회", description = "사용자 채팅 설정 조회 API")
423+
@ApiResponses({
424+
@ApiResponse(responseCode = "200", description = "사용자 채팅 설정 조회 성공",
425+
content = @Content(mediaType = "application/json", examples = {
426+
@ExampleObject(value = """
427+
{
428+
"chatOption": "ALLOW_ALL",
429+
"privateChatOption": "ALLOW"
430+
}
431+
""")
432+
}))
433+
})
434+
ResponseEntity<?> getUserChatSetting(@AuthenticationPrincipal SecurityUserDetails userDetails);
421435
}

gotcha/src/main/java/Gotcha/domain/mypage/controller/MypageController.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,11 @@ public ResponseEntity<?> modifyUserNickname(@Valid @RequestBody NicknameReq nick
4141
return ResponseEntity.ok(SuccessRes.from("성공적으로 수정되었습니다."));
4242
}
4343

44+
@GetMapping("/chat/setting")
45+
public ResponseEntity<?> getUserChatSetting(@AuthenticationPrincipal SecurityUserDetails userDetails) {
46+
return ResponseEntity.ok(mypageService.getUserChatSetting(userDetails.getId()));
47+
}
48+
4449
@PutMapping("/chat/setting")
4550
public ResponseEntity<?> modifyUserChatSetting(@Valid @RequestBody ChatSettingReq chatSettingReq,
4651
@AuthenticationPrincipal SecurityUserDetails userDetails) {

gotcha/src/main/java/Gotcha/domain/mypage/service/MypageService.java

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

33
import Gotcha.domain.mypage.dto.ChatSettingReq;
44
import gotcha_domain.user.User;
5+
import gotcha_user.dto.UserChatSettingRes;
56
import gotcha_user.service.UserService;
67
import lombok.RequiredArgsConstructor;
78
import org.springframework.stereotype.Service;
@@ -41,4 +42,9 @@ public void modifyUserNickname(Long userId, String nickname) {
4142
public void modifyUserChatSetting(Long userId, ChatSettingReq chatSettingReq) {
4243
userService.updateUserChatSetting(userId, chatSettingReq.chatOption(), chatSettingReq.privateChatOption());
4344
}
45+
46+
@Transactional(readOnly = true)
47+
public UserChatSettingRes getUserChatSetting(Long userId){
48+
return userService.getUserChatSetting(userId);
49+
}
4450
}

0 commit comments

Comments
 (0)