Skip to content

Commit

Permalink
[FIX] update User 부분 필드 선택적 수정
Browse files Browse the repository at this point in the history
  • Loading branch information
femmefatalehaein committed Sep 1, 2024
1 parent a5feb37 commit a980c34
Show file tree
Hide file tree
Showing 7 changed files with 115 additions and 56 deletions.
1 change: 1 addition & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-websocket'

implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.openapitools:jackson-databind-nullable:0.2.4'


}
Expand Down
17 changes: 17 additions & 0 deletions src/main/java/com/example/ai_jeju/config/JacksonConfig.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.example.ai_jeju.config;

import com.fasterxml.jackson.databind.ObjectMapper;
import org.openapitools.jackson.nullable.JsonNullableModule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class JacksonConfig {

@Bean
public ObjectMapper objectMapper() {
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JsonNullableModule());
return mapper;
}
}
67 changes: 35 additions & 32 deletions src/main/java/com/example/ai_jeju/controller/MyPageController.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.example.ai_jeju.controller;

import com.example.ai_jeju.dto.ModifyMyPageRequest;
import com.example.ai_jeju.dto.MyPageResponse;
import com.example.ai_jeju.exception.UserNotFoundException;
import com.example.ai_jeju.jwt.TokenProvider;
import com.example.ai_jeju.service.MyPageService;
import com.example.ai_jeju.service.S3Service;
Expand Down Expand Up @@ -32,24 +34,12 @@ public MyPageController(TokenProvider tokenProvider) {
this.tokenProvider = tokenProvider;
}

//마이페이지 회원 1명씩 조회

// @GetMapping("/mypage")
// public ResponseEntity<User> getUserById(@RequestParam Long userId) {
// Optional<User> user = myPageService.getUserById(userId);
// if (user.isPresent()) {
// return ResponseEntity.ok(user.get());
// } else {
// return ResponseEntity.notFound().build();
// }
// }


@GetMapping("/mypage")
public ResponseDto myPage(@RequestHeader("Authorization") String token){
// Bearer 토큰 형식에서 "Bearer " 부분 제거
String accessToken = token.replace("Bearer ", "");
System.out.println(accessToken);

if (tokenProvider.validToken(accessToken)) {
Long userId = tokenProvider.getUserId(accessToken);

Expand All @@ -59,12 +49,12 @@ public ResponseDto myPage(@RequestHeader("Authorization") String token){
}
}

@PutMapping("/mypage/nickname")
public ResponseEntity<String> updateNickname(@RequestParam Long userId, @RequestBody Map<String, String> request) {
String nickname = request.get("nickname");
myPageService.updateNickname(userId, nickname);
return ResponseEntity.ok("Nickname changed");
}
// @PutMapping("/mypage/nickname")
// public ResponseEntity<String> updateNickname(@RequestParam Long userId, @RequestBody Map<String, String> request) {
// String nickname = request.get("nickname");
// myPageService.updateNickname(userId, nickname);
// return ResponseEntity.ok("Nickname changed");
// }


//프로필 이미지 변경
Expand All @@ -90,17 +80,30 @@ public ResponseEntity<String> createPresignedUrl(@RequestBody Map<String, String


//바꿔야함.
// @PutMapping("/mypage/update")
// public ResponseEntity<User> updateMyPage (@RequestBody ModifyMyPageRequest request) {
//
// Long userId = newUser.getId();
//
// try {
// User updatedUser = myPageService.updateUser(userId, newUser);
// return ResponseEntity.ok(updatedUser);
// } catch (RuntimeException e) {
// return ResponseEntity.notFound().build();
// }
//
// }
@PutMapping("/mypage/update")
public ResponseDto updateMyPage (@RequestHeader("Authorization") String token, @RequestBody ModifyMyPageRequest modifyMyPageRequest) {

String accessToken = token.replace("Bearer ", "");

if (tokenProvider.validToken(accessToken)) {
Long userId = tokenProvider.getUserId(accessToken);

try {
myPageService.updateUser(userId, modifyMyPageRequest);
return ResponseUtil.SUCCESS("마이페이지 수정에 성공하였습니다.", null);
} catch (UserNotFoundException e) {
return ResponseUtil.FAILURE(e.getMessage(), null);

} catch (Exception e) {
return ResponseUtil.FAILURE(e.getMessage(), null);
}

}else{
return ResponseUtil.FAILURE("고객 정보를 찾지 못하였습니다.", null);
}


}


}
20 changes: 19 additions & 1 deletion src/main/java/com/example/ai_jeju/dto/ModifyMyPageRequest.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,27 @@
package com.example.ai_jeju.dto;

public class ModifyMyPageRequest {
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.openapitools.jackson.nullable.JsonNullable;

@Getter
@Setter
@AllArgsConstructor
public class ModifyMyPageRequest {

private JsonNullable<String> nickname;
private JsonNullable<String> phoneNum; // 선택적 필드, null일 수 있음
// 닉네임 수정해야해 ? 기본키인데?
// private JsonNullable<String> email;
// 기본 생성자와 setter 추가


//이 기본생성자 꼭 ㅠㅠㅠㅠㅠ 생성해야해
public ModifyMyPageRequest() {
this.nickname = JsonNullable.undefined();
this.phoneNum = JsonNullable.undefined();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.example.ai_jeju.exception;

public class UserNotFoundException extends RuntimeException {

public UserNotFoundException(String message) {
super(message);
}

public UserNotFoundException(String message, Throwable cause) {
super(message, cause);
}
}
28 changes: 18 additions & 10 deletions src/main/java/com/example/ai_jeju/service/MyPageService.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.example.ai_jeju.service;

import com.example.ai_jeju.domain.User;
import com.example.ai_jeju.dto.ModifyMyPageRequest;
import com.example.ai_jeju.exception.UserNotFoundException;
import com.example.ai_jeju.repository.UserRepository;
import jakarta.transaction.Transactional;
import org.springframework.beans.factory.annotation.Autowired;
Expand Down Expand Up @@ -60,15 +62,21 @@ public void deleteProfileImage(Long id) {
}
}

public User updateUser(Long id, User newUserData) {
return userRepository.findById(id)
.map(user -> {
user.setName(newUserData.getName());
user.setNickname(newUserData.getNickname());
user.setProfileImg(newUserData.getProfileImg());
user.setPhoneNum(newUserData.getPhoneNum());
return userRepository.save(user);
})
.orElseThrow(() -> new RuntimeException("User not found"));
public void updateUser(Long userId, ModifyMyPageRequest modifyMyPageRequest) {
//수정당할 애 찾기
User user = userRepository.findById(userId)
.orElseThrow(() -> new UserNotFoundException("User not found with id: " + userId));

// 닉네임 업데이트
modifyMyPageRequest.getNickname().ifPresent(nickname -> {
user.setNickname(nickname);
});

// 전화번호 업데이트
modifyMyPageRequest.getPhoneNum().ifPresent(phoneNum -> {
user.setPhoneNum(phoneNum);
});
// 변경된 사용자 정보를 저장
userRepository.save(user);
}
}
26 changes: 13 additions & 13 deletions src/main/java/com/example/ai_jeju/service/UserService.java
Original file line number Diff line number Diff line change
Expand Up @@ -127,19 +127,19 @@ public Long registerUser( SignUpRequest signUpRequest, HttpServletRequest reques
childRepository.save(child);
}

// userId로 아이들 찾기
List<Child> savedChilds = childRepository.findAllById(registerdUser.get().getId());


for(int i=0; i<savedChilds.size(); i++){
Album album = Album.builder()
.albumId(savedChilds.get(i).getChildId())
.child(savedChilds.get(i))
.build();

albumRepository.save(album);
System.out.println(savedChilds.get(i).getUserId());
}
// // userId로 아이들 찾기
// List<Child> savedChilds = childRepository.findAllById(registerdUser.get().getId());
//
//
// for(int i=0; i<savedChilds.size(); i++){
// Album album = Album.builder()
// .albumId(savedChilds.get(i).getChildId())
// .child(savedChilds.get(i))
// .build();
//
// albumRepository.save(album);
// System.out.println(savedChilds.get(i).getUserId());
// }



Expand Down

0 comments on commit a980c34

Please sign in to comment.