Skip to content

Commit dba928a

Browse files
Merge pull request #149 from TeamLearningFlow/develop
[FEAT] User에서 배너 이미지 추가
2 parents e02eb05 + d93fccf commit dba928a

10 files changed

Lines changed: 47 additions & 52 deletions

File tree

src/main/generated/learningFlow/learningFlow_BE/domain/QUser.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ public class QUser extends EntityPathBase<User> {
2222

2323
public final QBaseEntity _super = new QBaseEntity(this);
2424

25+
public final StringPath bannerImgUrl = createString("bannerImgUrl");
26+
2527
public final ListPath<Long, NumberPath<Long>> bookmarkedCollectionIds = this.<Long, NumberPath<Long>>createList("bookmarkedCollectionIds", Long.class, NumberPath.class, PathInits.DIRECT2);
2628

2729
//inherited

src/main/java/learningFlow/learningFlow_BE/converter/UserConverter.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ public static UserResponseDTO.UserLoginResponseDTO toUserLoginResponseDTO(User u
1919
.name(user.getName())
2020
.role(user.getRole())
2121
.socialType(user.getSocialType())
22+
.profileImgUrl(user.getProfileImgUrl())
2223
.build();
2324
}
2425

@@ -30,6 +31,7 @@ public static UserInfoDTO convertToUserInfoDTO(User user) {
3031
.interestFields(user.getInterestFields())
3132
.preferType(user.getPreferType())
3233
.profileImgUrl(user.getProfileImgUrl())
34+
.bannerImgUrl(user.getBannerImgUrl())
3335
.build();
3436
}
3537

@@ -53,6 +55,7 @@ private static UserResponseDTO.UserPreviewDTO convertToUserPreviewDTO(User user)
5355
.email(user.getEmail())
5456
.job(user.getJob().getDescription())
5557
.profileImgUrl(user.getProfileImgUrl())
58+
.bannerImgUrl(user.getBannerImgUrl())
5659
.build();
5760
}
5861
}

src/main/java/learningFlow/learningFlow_BE/domain/User.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,9 @@ public class User extends BaseEntity {
6262

6363
@Column(nullable = true)
6464
private String profileImgUrl;
65+
66+
@Column(nullable = true)
67+
private String bannerImgUrl;
6568
// @ManyToOne(fetch = FetchType.LAZY)
6669
// @JoinColumn(name = "image_id")
6770
// private Image image;

src/main/java/learningFlow/learningFlow_BE/service/auth/local/LocalUserAuthService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ public UserResponseDTO.UserLoginResponseDTO completeRegister(
107107
UserRequestDTO.CompleteRegisterDTO requestDTO,
108108
HttpServletResponse response
109109
) {
110-
String imageUrl = null;
110+
// String profileImgUrl = null;
111111
//이메일 토큰 검증
112112
EmailVerificationToken verificationToken = validateRegistrationToken(emailVerificationCode);
113113

@@ -135,7 +135,7 @@ public UserResponseDTO.UserLoginResponseDTO completeRegister(
135135
.preferType(requestDTO.getPreferType())
136136
.socialType(SocialType.LOCAL)
137137
.role(Role.USER)
138-
.profileImgUrl(imageUrl)
138+
.profileImgUrl(requestDTO.getImgProfileUrl())
139139
.inactive(false)
140140
.build();
141141

src/main/java/learningFlow/learningFlow_BE/service/auth/oauth/OAuth2UserRegistrationService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ public UserResponseDTO.UserLoginResponseDTO updateAdditionalInfo(
7878
.job(additionalInfo.getJob())
7979
.interestFields(additionalInfo.getInterestFields())
8080
.preferType(additionalInfo.getPreferType())
81-
.profileImgUrl(imageUrl)
81+
.profileImgUrl(additionalInfo.getImgProfileUrl())
8282
.role(Role.USER)
8383
.inactive(false)
8484
.build();

src/main/java/learningFlow/learningFlow_BE/service/user/UserService.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,12 @@ public UserInfoDTO updateUserInfo(String loginId, UpdateUserDTO updateUserDTO) {
6666
// }
6767

6868
// 각 필드가 null이 아닌 경우에만 업데이트
69-
if(updateUserDTO.getImgUrl() != null){
70-
user.updateImage(updateUserDTO.getImgUrl());
69+
if(updateUserDTO.getImgProfileUrl() != null){
70+
user.updateImage(updateUserDTO.getImgProfileUrl());
71+
}
72+
73+
if(updateUserDTO.getImgBannerUrl() != null){
74+
user.updateImage(updateUserDTO.getImgBannerUrl());
7175
}
7276

7377
if (updateUserDTO.getName() != null) {

src/main/java/learningFlow/learningFlow_BE/web/controller/ImageController.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,9 @@ public class ImageController {
3434
[파일 요구사항]
3535
- 형식: JPG, JPEG, PNG
3636
- 최대 크기: 5MB
37-
- 최소 해상도: 100x100
38-
- 최대 해상도: 2000x2000
3937
4038
[주의사항]
4139
- 반환된 URL은 회원가입/정보수정 API 호출 시 필요
42-
- 미사용 이미지는 24시간 후 자동 삭제
4340
""")
4441
@ApiResponses({
4542
@io.swagger.v3.oas.annotations.responses.ApiResponse(

src/main/java/learningFlow/learningFlow_BE/web/controller/UserRestController.java

Lines changed: 6 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,11 @@ public class UserRestController {
7373
7474
4. 프로필 이미지 URL (선택)
7575
- 이미지 업로드 API를 통해 받은 URL 사용
76-
- 미입력시 기존 이미지 유지
76+
- 미입력시 기존(기본) 이미지 유지
77+
78+
5. 배너 이미지 URL (선택)
79+
- 이미지 업로드 API를 통해 받은 URL 사용
80+
- 미입력시 기존(기본) 이미지 유지
7781
7882
[응답 정보]
7983
수정된 사용자 정보 반환:
@@ -96,41 +100,7 @@ public ApiResponse<UserInfoDTO> updateUserInfo(
96100
}
97101

98102
@GetMapping
99-
@Operation(summary = "사용자 정보 조회 API", description = """
100-
로그인한 사용자의 상세 프로필 정보를 조회합니다.
101-
102-
[조회 정보]
103-
1. 기본 정보
104-
- 이름
105-
- 이메일
106-
- 직업
107-
* STUDENT: 대학생(휴학생)
108-
* ADULT: 성인
109-
* EMPLOYEE: 직장인
110-
* JOB_SEEKER: 이직/취업 준비생
111-
* OTHER: 기타
112-
113-
2. 관심분야 목록
114-
- APP_DEVELOPMENT: 앱개발
115-
- WEB_DEVELOPMENT: 웹개발
116-
- PROGRAMMING_LANGUAGE: 컴퓨터언어
117-
- DEEP_LEARNING: 딥러닝
118-
- STATISTICS: 통계
119-
- DATA_ANALYSIS: 데이터분석
120-
- UI_UX: UX/UI
121-
- PLANNING: 기획
122-
- BUSINESS_PRODUCTIVITY: 업무생산성
123-
- FOREIGN_LANGUAGE: 외국어
124-
- CAREER: 취업
125-
126-
3. 학습 설정
127-
- 선호 미디어 타입 (VIDEO/TEXT)
128-
- 프로필 이미지 URL
129-
130-
[접근 권한]
131-
- 로그인한 사용자만 조회 가능
132-
- 본인 정보만 조회 가능
133-
""")
103+
@Operation(summary = "사용자 조회 API", description = "사용자를 찾기 위한 API 입니다.")
134104
@ApiResponses({
135105
@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "COMMON200", description = "조회 성공"),
136106
@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "USER4001", description = "사용자를 찾을 수 없습니다."),

src/main/java/learningFlow/learningFlow_BE/web/dto/user/UserRequestDTO.java

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,20 @@ public static class CompleteRegisterDTO {
4343
MediaType preferType;
4444

4545
@NotEmpty
46-
String imgUrl;
46+
String imgProfileUrl;
47+
48+
// ✅ 기본 생성자에서 기본값 설정
49+
public CompleteRegisterDTO() {
50+
this.imgProfileUrl = "https://learningflow.s3.ap-northeast-2.amazonaws.com/%EC%98%A8%EB%B3%B4%EB%94%A9+%ED%8E%98%EC%9D%B4%EC%A7%80%EC%9A%A9.svg";
51+
}
52+
53+
// ✅ @JsonSetter 사용 (JSON에서 필드가 누락된 경우 기본값 설정)
54+
@JsonSetter
55+
public void setImgProfileUrl(String imgProfileUrl) {
56+
this.imgProfileUrl = (imgProfileUrl == null || imgProfileUrl.isEmpty())
57+
? "https://learningflow.s3.ap-northeast-2.amazonaws.com/%EC%98%A8%EB%B3%B4%EB%94%A9+%ED%8E%98%EC%9D%B4%EC%A7%80%EC%9A%A9.svg"
58+
: imgProfileUrl;
59+
}
4760
}
4861

4962
@Getter
@@ -72,20 +85,20 @@ public static class AdditionalInfoDTO {
7285
@NotNull(message = "선호하는 미디어 타입은 필수 선택값입니다")
7386
MediaType preferType;
7487

75-
private String imgUrl;
88+
private String imgProfileUrl;
7689

7790

7891
// ✅ 기본 생성자에서 기본값 설정
7992
public AdditionalInfoDTO() {
80-
this.imgUrl = "https://learningflow.s3.ap-northeast-2.amazonaws.com/%EC%98%A8%EB%B3%B4%EB%94%A9+%ED%8E%98%EC%9D%B4%EC%A7%80%EC%9A%A9.svg";
93+
this.imgProfileUrl = "https://learningflow.s3.ap-northeast-2.amazonaws.com/%EC%98%A8%EB%B3%B4%EB%94%A9+%ED%8E%98%EC%9D%B4%EC%A7%80%EC%9A%A9.svg";
8194
}
8295

8396
// ✅ @JsonSetter 사용 (JSON에서 필드가 누락된 경우 기본값 설정)
8497
@JsonSetter
85-
public void setImgUrl(String imgUrl) {
86-
this.imgUrl = (imgUrl == null || imgUrl.isEmpty())
98+
public void setImgProfileUrlUrl(String imgProfileUrl) {
99+
this.imgProfileUrl = (imgProfileUrl == null || imgProfileUrl.isEmpty())
87100
? "https://learningflow.s3.ap-northeast-2.amazonaws.com/%EC%98%A8%EB%B3%B4%EB%94%A9+%ED%8E%98%EC%9D%B4%EC%A7%80%EC%9A%A9.svg"
88-
: imgUrl;
101+
: imgProfileUrl;
89102
}
90103
}
91104

@@ -112,7 +125,8 @@ public static class UpdateUserDTO {
112125
String name;
113126
Job job;
114127
List<InterestField> interestFields;
115-
private String imgUrl;
128+
String imgProfileUrl;
129+
String imgBannerUrl;
116130

117131
}
118132
}

src/main/java/learningFlow/learningFlow_BE/web/dto/user/UserResponseDTO.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ public static class UserInfoDTO {
2323
String email;
2424
Job job;
2525
List<InterestField> interestFields;
26-
LocalDate birthDay;
2726
MediaType preferType;
2827
String profileImgUrl;
28+
String bannerImgUrl;
2929
/**
3030
* 어떤 필드들을 사용자 정보 조회 시에 보여줘야 할지 아직 안정해서 비워두었습니다.
3131
*/
@@ -42,6 +42,7 @@ public static class UserLoginResponseDTO {
4242
String name;
4343
Role role;
4444
SocialType socialType;
45+
String profileImgUrl;
4546
}
4647

4748
@Getter
@@ -63,5 +64,6 @@ public static class UserPreviewDTO {
6364
String email;
6465
String job;
6566
String profileImgUrl;
67+
String bannerImgUrl;
6668
}
6769
}

0 commit comments

Comments
 (0)