Skip to content

Commit 180273a

Browse files
committed
refact: 컨벤션에 따른 패키지 수정
1 parent 710dda2 commit 180273a

File tree

10 files changed

+131
-382
lines changed

10 files changed

+131
-382
lines changed

src/main/java/targeter/aim/domain/auth/service/AuthService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public UserDto.UserResponse signUp(AuthDto.SignUpRequest request) {
7171

7272
private void saveProfileImage(MultipartFile file, User user) {
7373
if(file != null && !file.isEmpty()) {
74-
ProfileImage profileImage = ProfileImage.from(file);
74+
ProfileImage profileImage = ProfileImage.from(file, user);
7575
if(profileImage == null) return;
7676
user.setProfileImage(profileImage);
7777
profileImage.setUser(user);

src/main/java/targeter/aim/domain/file/entity/ProfileImage.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public class ProfileImage extends AttachedFile {
2525
@JoinColumn(name = "user_id")
2626
private User user;
2727

28-
public static ProfileImage from(MultipartFile file) {
28+
public static ProfileImage from(MultipartFile file, User user) {
2929
throwIfNotAImageFile(file);
3030

3131
String uuId = UUID.randomUUID().toString();
@@ -37,6 +37,7 @@ public static ProfileImage from(MultipartFile file) {
3737
.fileName(safeFilename(file.getOriginalFilename()))
3838
.size(file.getSize())
3939
.filePath(filePath)
40+
.user(user)
4041
.build();
4142
}
4243

src/main/java/targeter/aim/domain/file/repository/ProfileImageRepository.java

Lines changed: 0 additions & 7 deletions
This file was deleted.

src/main/java/targeter/aim/domain/user/controller/ProfileController.java

Lines changed: 0 additions & 56 deletions
This file was deleted.

src/main/java/targeter/aim/domain/user/controller/UserController.java

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

33
import io.swagger.v3.oas.annotations.Operation;
44
import io.swagger.v3.oas.annotations.Parameter;
5-
import io.swagger.v3.oas.annotations.responses.ApiResponse;
6-
import io.swagger.v3.oas.annotations.responses.ApiResponses;
75
import io.swagger.v3.oas.annotations.tags.Tag;
86
import lombok.RequiredArgsConstructor;
7+
import org.springframework.http.MediaType;
98
import org.springframework.security.core.annotation.AuthenticationPrincipal;
10-
import org.springframework.web.bind.annotation.GetMapping;
11-
import org.springframework.web.bind.annotation.PathVariable;
12-
import org.springframework.web.bind.annotation.RequestMapping;
13-
import org.springframework.web.bind.annotation.RestController;
9+
import org.springframework.web.bind.annotation.*;
1410
import targeter.aim.domain.user.dto.UserDto;
1511
import targeter.aim.domain.user.service.UserService;
1612
import targeter.aim.system.exception.model.ErrorCode;
@@ -72,4 +68,17 @@ public UserDto.ProfileResponse getUserProfile(
7268
) {
7369
return userService.getProfile(userId, userDetails);
7470
}
71+
72+
@PatchMapping(value = "/me/profile", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
73+
@Operation(summary = "내 프로필 수정", description = "내 프로필(닉네임/관심사/관심분야/프로필사진)을 수정합니다.")
74+
public UserDto.ProfileResponse updateMyProfile(
75+
@ModelAttribute UserDto.UpdateProfileRequest request,
76+
@AuthenticationPrincipal UserDetails userDetails
77+
) {
78+
if (userDetails == null) {
79+
throw new RestException(ErrorCode.AUTH_LOGIN_REQUIRED);
80+
}
81+
82+
return userService.updateMyProfile(request, userDetails);
83+
}
7584
}

src/main/java/targeter/aim/domain/user/dto/ProfileDto.java

Lines changed: 0 additions & 97 deletions
This file was deleted.

src/main/java/targeter/aim/domain/user/dto/UserDto.java

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
package targeter.aim.domain.user.dto;
22

33
import io.swagger.v3.oas.annotations.media.Schema;
4+
import jakarta.validation.constraints.NotBlank;
5+
import jakarta.validation.constraints.NotNull;
6+
import jakarta.validation.constraints.Pattern;
47
import lombok.*;
8+
import org.springframework.security.crypto.password.PasswordEncoder;
9+
import org.springframework.web.multipart.MultipartFile;
510
import targeter.aim.domain.file.dto.FileDto;
611
import targeter.aim.domain.user.entity.Gender;
712
import targeter.aim.domain.user.entity.SocialLogin;
@@ -187,6 +192,61 @@ public static class ChallengeRecord {
187192

188193
@Schema(description = "실패 횟수", example = "10")
189194
private Long failCount;
195+
}
196+
197+
@Data
198+
@Builder
199+
@NoArgsConstructor
200+
@AllArgsConstructor
201+
@Schema(description = "챌린지 기록(시도/성공/실패/성공률)")
202+
public static class UpdateProfileRequest {
203+
@NotBlank(message = "아이디를 입력해주세요.")
204+
@Schema(description = "아이디", example = "user1234")
205+
@Pattern(regexp = "^(?=.*[a-z])(?=.*[0-9])[a-z0-9]{8,16}$", message = "아이디는 영문 소문자와 숫자를 각각 1자 이상 포함하며, 8~16자여야 합니다.")
206+
private String loginId;
207+
208+
@NotBlank(message = "닉네임을 입력해주세요.")
209+
@Schema(description = "닉네임", example = "nickname")
210+
@Pattern(regexp = "^[a-zA-Z0-9가-힣]{1,10}$",
211+
message = "닉네임은 한글, 영문, 숫자로만 구성되며 1~10자여야 합니다.")
212+
private String nickname;
190213

214+
@NotBlank(message = "비밀번호를 입력해주세요.")
215+
@Schema(description = "비밀번호", example = "password123!")
216+
@Pattern(regexp = "^(?=.*[a-z])(?=.*[0-9])(?=.*[!@#$%^&*?_])[a-z0-9!@#$%^&*?_]{8,16}$", message = "비밀번호는 영문 소문자, 숫자, 특수문자를 각각 1자 이상 포함하며 8~16자여야 합니다.")
217+
private String password;
218+
219+
@NotNull(message = "생년월일을 입력해주세요.")
220+
@Schema(description = "생년월일", example = "yyyy-mm-dd")
221+
private LocalDate birthday;
222+
223+
@Schema(description = "프로필 이미지")
224+
private MultipartFile profileImage;
225+
226+
@NotNull(message = "성별을 입력해주세요.")
227+
@Schema(
228+
description = "사용자 성별",
229+
example = "MALE | FEMALE | OTHER",
230+
allowableValues = {"MALE", "FEMALE", "OTHER"}
231+
)
232+
private Gender gender;
233+
234+
public void applyTo(User user, PasswordEncoder encoder) {
235+
if(loginId != null && !loginId.equals(user.getLoginId())) {
236+
user.setLoginId(loginId);
237+
}
238+
if(nickname != null && !nickname.equals(user.getNickname())) {
239+
user.setNickname(nickname);
240+
}
241+
if(password != null) {
242+
user.setPassword(encoder.encode(password));
243+
}
244+
if(birthday != null) {
245+
user.setBirthday(birthday);
246+
}
247+
if(gender != null) {
248+
user.setGender(gender);
249+
}
250+
}
191251
}
192252
}

0 commit comments

Comments
 (0)