Skip to content

Commit

Permalink
release: 0.1.9 (#131)
Browse files Browse the repository at this point in the history
* feat: 모임 삭제 기능 구현 (#102)

* refactor: 기획 변경에 따른 회원 카드 등록 API 리팩토링 (#105)

* refactor: sql 변경 (#104)

* refactor: User 클래스 필드명 변경 (#104)

* refactor: API 변경에 따른 코드 리팩토링 (#104)

* refactor: 불필요한 getId() 제거 ( 피드백 반영 ) (#104)

* feat: 유효성 검증 관련 에러 일괄 처리을 위한 메소드 추가 (#104)

* test: API 변경에 따른 통합 테스트 수정 및 단위 테스트 구현 (#104)

* refactor: UserMeGetResponse 필드 변경 (#104)

* fix: CI 에러 수정 (#104)

* refactor: 피드백 반영 (#104)

* fix: CI 에러 수정 (#104)

* refactor: JWT 에러 응답 리팩토링 및 인가 인증 예최 처리 코드 수정 (#103)

* refactor: 기타 코드 리팩토링( 피드백 반영 ) (#101)

* chore: JWT 관련 의존성 변경 (#101)

* refactor: JWT 및 인증 관련 로직 리팩토링 (#101)

* test: 테스트 코드 및 설정 관련 변경(#101)

* refactor: ObjectMapper Autowired 로 주입 (#101)

* refactor: AuthService 반환 타입 Optional<User> -> User 변경 (#101)

* fix: V6_create_users_interests.sql 추가 (#109) (#110)

* refactor: 회원 카드 등록시 JWT 정보도 함께 반환하도록 수정 (#114)

* chore : application.properties 에 jwt 관련 설정 값 추가 (#113)

* refactor : userService 회원 카드 등록 로직 수정 (#113)

* feat : UserRegisterResponse 필드 추가(#113)

* test: API 변경에 따른 테스트 관련 코드 수정 (#113)

* fix: 소셜 로그인 관련 500 에러 수정 및 OAuth 로직 일부 개선 (#112)

* fix: OAuthLoginController @RestController 어노테이션 추가(나는 바보..) 및 favicon 관련 임시 컨트롤러 생성 (#111)

* refactor : 설정 yml 리팩토링 (#111)

* refactor : SecurityConfig 리팩토링 (#111)

* refactor : 기타 OAuth 관련 로직 리팩토링(#111)

* refactor : Cors 허용 주소 임시 전부 허용 (#111)

* fix : SonarCloud 오류 수정 (#111)

* fix : SonarCloud 오류 수정 (#111)

* feat: 위치 기반 API 구현 및 테스트 (#108)

* refactor: 기타 코드 리팩토링( 피드백 반영 ) (#101)

* chore: JWT 관련 의존성 변경 (#101)

* refactor: JWT 및 인증 관련 로직 리팩토링 (#101)

* test: 테스트 코드 및 설정 관련 변경(#101)

* refactor: ObjectMapper Autowired 로 주입 (#101)

* refactor: AuthService 반환 타입 Optional<User> -> User 변경 (#101)

* refactor: application.properties redis.port 변경 (#91)

* refactor: 기존 Redis 설정 리팩토링 및 추가 구현 (#91)

* feat: 유저 위치 기반 관련 DTO 및 VO 구현 (#91)

* feat: 유저 위치 기반 API 구현 (#91)

* test: 유저 위치 기반 통합 테스트 관련 클래스 구현 및 테스트 (#91)

* test: redis port 변경에 따른 테스트 수정 (#91)

* fix: CI 에러 수정 (#91)

* fix: sonarCloud 에러 수정 (#91)

* refactor: 리뷰 반영 (#108)

* build: Gatling 세팅 (#115)

* feat: 부하테스트 툴 Gatling을 세팅한다

* feat: 예시 코드를 작성한다

* refactor: Sample 코드의 이름을 변경한다

* feat: 내 정보 조회에 Oauth 정보 추가 (#119)

* feat: 내 정보 조회에 Oauth 정보 추가

* test: Oauth 정보 추가에 따른 테스트 변경

* fix: 모임 목록 조회 조건에 활동 지역 조건이 안걸리는 버그 수정 (#121)

* feat: 회원 탈퇴 사유 저장 로직 추가 및 cors 관련 재설정 (#123)

* refactor: SecurityConfig Cors 관련 전체 허용으로 변경 및 회원 카드 등록 API permitAll 로 변경 (#117)

* refactor: 기존 엔티티 관련 리팩토링 (#117)

* feat: WithdrawReason 생성 sql 추가 (#117)

* feat: WithdrawReason 관련 도메인 구현 (#117)

* feat: 회원 탈퇴 시 탈퇴 사유 기능 추가 (#117)

* test: 회원 탈퇴 단위 테스트 (#117)

* refactor: 회원 탈퇴 API POST 로 수정 (#117)

* refactor: 회원탈퇴 관련 통합 테스트 수정 및 요청 DTO 수정 (#117)

* refactor: meeting 엔티티명 다시 복구 - 모든 테이블에 `s` 붙이는 방향 논의 필요 (#117)

* feat: withdraw_reason 테이블 이름 변경 (#117)

* fix: CI 에러 해결 (#117)

* fix: 모임 규격 변경 (#127)

* refactor: 코드 포매팅 적용 (#130)

---------

Co-authored-by: ChoiDongKuen <[email protected]>
Co-authored-by: xb205 <[email protected]>
  • Loading branch information
3 people authored Jan 19, 2024
1 parent 126e934 commit 49d361c
Show file tree
Hide file tree
Showing 8 changed files with 166 additions and 149 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,20 @@ public class MeetingSpecification {

public static Specification<Meeting> withIsOpen(boolean isOpen) {
if (isOpen) {
return (root, query, criteriaBuilder) -> criteriaBuilder.greaterThan(root.get("promiseDateTime"), LocalDateTime.now());
return (root, query, criteriaBuilder) -> criteriaBuilder.greaterThan(root.get("promiseDateTime"),
LocalDateTime.now());
}
return (root, query, criteriaBuilder) -> criteriaBuilder.lessThanOrEqualTo(root.get("promiseDateTime"), LocalDateTime.now());
return (root, query, criteriaBuilder) -> criteriaBuilder.lessThanOrEqualTo(root.get("promiseDateTime"),
LocalDateTime.now());
}

public static Specification<Meeting> withTopic(Topic topic) {
return (root, query, criteriaBuilder) -> criteriaBuilder.equal(root.get("topic"), topic);
}

public static Specification<Meeting> withAreaStreet(String meetingAreaStreet) {
return (root, query, criteriaBuilder) -> criteriaBuilder.equal(root.get("meetingArea").get("mainStreet"), meetingAreaStreet);
return (root, query, criteriaBuilder) -> criteriaBuilder.equal(root.get("meetingArea").get("mainStreet"),
meetingAreaStreet);
}

public static Specification<Meeting> withSearchWordInTitle(String searchWord) {
Expand All @@ -32,7 +35,8 @@ public static Specification<Meeting> withSearchWordInIntroduction(String searchW
}

public static Specification<Meeting> withParticipantUserId(Long participantUserId) {
return (root, query, criteriaBuilder) -> criteriaBuilder.equal(root.join("participantUserIds"), participantUserId);
return (root, query, criteriaBuilder) -> criteriaBuilder.equal(root.join("participantUserIds"),
participantUserId);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -9,27 +9,29 @@
import java.time.LocalDateTime;

public record CreateMeetingRequest(
@NotNull(message = "모임 주제를 입력해주세요.")
Topic topic,
@NotNull(message = "모임 제목을 입력해주세요.")
@Size(min = 2, max = 32, message = "모임 제목은 2자 이상 32자 이하로 입력해주세요.")
String title,
@NotNull(message = "모임 소개를 입력해주세요.")
@Size(min = 10, max = 200, message = "모임 소개는 10자 이상 200자 이하로 입력해주세요.")
String introduction,
@NotNull(message = "약속 시간을 입력해주세요.")
@Future(message = "약속 시간은 현재 시간보다 미래여야 합니다.")
LocalDateTime promiseDateTime,
@NotNull(message = "모집 인원을 입력해주세요.")
int numberOfRecruits,
@Valid
MeetingArea meetingArea
@NotNull(message = "모임 주제를 입력해주세요.")
Topic topic,
@NotNull(message = "모임 제목을 입력해주세요.")
@Size(min = 2, max = 32, message = "모임 제목은 2자 이상 32자 이하로 입력해주세요.")
String title,
@NotNull(message = "모임 소개를 입력해주세요.")
@Size(min = 10, max = 200, message = "모임 소개는 10자 이상 200자 이하로 입력해주세요.")
String introduction,
@NotNull(message = "약속 시간을 입력해주세요.")
@Future(message = "약속 시간은 현재 시간보다 미래여야 합니다.")
LocalDateTime promiseDateTime,
@NotNull(message = "모집 인원을 입력해주세요.")
int numberOfRecruits,
@Valid
MeetingArea meetingArea
) {

public record MeetingArea(
@NotNull(message = "주소를 입력해주세요.")
String address,
@NotNull(message = "상세 주소를 입력해주세요.")
String addressDetail
@NotNull(message = "주소를 입력해주세요.")
String address,
@NotNull(message = "상세 주소를 입력해주세요.")
String addressDetail
) {

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@

@Builder
public record ImageUploadResponse(
String fileName,
String originalFileName,
String contentType,
String filePath
String fileName,
String originalFileName,
String contentType,
String filePath
) {

}
Original file line number Diff line number Diff line change
Expand Up @@ -8,46 +8,48 @@
import java.util.Set;

public record MeetingResponse(
Long id,
Long hostId,
Topic topic,
String title,
String introduction,
Set<String> photoUrls,
LocalDateTime promiseDateTime,
int numberOfRecruits,
MeetingArea meetingArea,
Set<Long> participantIds
Long id,
Long hostId,
Topic topic,
String title,
String introduction,
Set<String> photoUrls,
LocalDateTime promiseDateTime,
int numberOfRecruits,
MeetingArea meetingArea,
Set<Long> participantIds
) {

public static MeetingResponse of(
Meeting meeting
Meeting meeting
) {
return new MeetingResponse(
meeting.getId(),
meeting.getHostUserId(),
meeting.getTopic(),
meeting.getTitle(),
meeting.getIntroduction(),
meeting.getImageUrls(),
meeting.getPromiseDateTime(),
meeting.getNumberOfRecruits(),
MeetingArea.of(meeting),
meeting.getParticipantUserIds()
meeting.getId(),
meeting.getHostUserId(),
meeting.getTopic(),
meeting.getTitle(),
meeting.getIntroduction(),
meeting.getImageUrls(),
meeting.getPromiseDateTime(),
meeting.getNumberOfRecruits(),
MeetingArea.of(meeting),
meeting.getParticipantUserIds()
);
}

public record MeetingArea(
String mainStreet,
String address,
String addressDetail
String mainStreet,
String address,
String addressDetail
) {

public static MeetingArea of(
Meeting meeting
Meeting meeting
) {
return new MeetingArea(
meeting.getMeetingArea().getMainStreet(),
meeting.getMeetingArea().getAddress(),
meeting.getMeetingArea().getAddressDetail()
meeting.getMeetingArea().getMainStreet(),
meeting.getMeetingArea().getAddress(),
meeting.getMeetingArea().getAddressDetail()
);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,57 +8,60 @@
import java.util.Set;

public record MeetingsResponse(
List<MeetingResponse> meetings
List<MeetingResponse> meetings
) {

public static MeetingsResponse of(List<Meeting> meetings) {
return new MeetingsResponse(
meetings.stream()
.map(MeetingResponse::of)
.toList()
meetings.stream()
.map(MeetingResponse::of)
.toList()
);
}

public record MeetingResponse(
Long id,
Long hostId,
Topic topic,
String title,
String introduction,
Set<String> photoUrls,
LocalDateTime promiseDateTime,
int numberOfRecruits,
MeetingArea meetingArea,
Set<Long> participantIds
Long id,
Long hostId,
Topic topic,
String title,
String introduction,
Set<String> photoUrls,
LocalDateTime promiseDateTime,
int numberOfRecruits,
MeetingArea meetingArea,
Set<Long> participantIds
) {

public static MeetingResponse of(
Meeting meeting
Meeting meeting
) {
return new MeetingResponse(
meeting.getId(),
meeting.getHostUserId(),
meeting.getTopic(),
meeting.getTitle(),
meeting.getIntroduction(),
meeting.getImageUrls(),
meeting.getPromiseDateTime(),
meeting.getNumberOfRecruits(),
MeetingArea.of(meeting),
meeting.getParticipantUserIds()
meeting.getId(),
meeting.getHostUserId(),
meeting.getTopic(),
meeting.getTitle(),
meeting.getIntroduction(),
meeting.getImageUrls(),
meeting.getPromiseDateTime(),
meeting.getNumberOfRecruits(),
MeetingArea.of(meeting),
meeting.getParticipantUserIds()
);
}

public record MeetingArea(
String mainStreet,
String address,
String addressDetail
String mainStreet,
String address,
String addressDetail
) {

public static MeetingArea of(
Meeting meeting
Meeting meeting
) {
return new MeetingArea(
meeting.getMeetingArea().getMainStreet(),
meeting.getMeetingArea().getAddress(),
meeting.getMeetingArea().getAddressDetail()
meeting.getMeetingArea().getMainStreet(),
meeting.getMeetingArea().getAddress(),
meeting.getMeetingArea().getAddressDetail()
);
}
}
Expand Down
18 changes: 9 additions & 9 deletions src/main/java/net/teumteum/meeting/infra/ImageUploadService.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,15 @@ public class ImageUploadService implements ImageUpload {
@Override
public ImageUploadResponse upload(MultipartFile file, String path) {
String originalFilename = Optional.ofNullable(file.getOriginalFilename())
.orElseThrow(() -> new IllegalArgumentException("파일 이름이 없습니다."));
.orElseThrow(() -> new IllegalArgumentException("파일 이름이 없습니다."));
String fileExtension = originalFilename.substring(originalFilename.lastIndexOf("."));
String fileName = UUID.randomUUID().toString();
String destination = path + "/" + fileName + fileExtension;

PutObjectRequest request = PutObjectRequest.builder()
.bucket(bucketName)
.key(destination)
.build();
.bucket(bucketName)
.key(destination)
.build();

try (var inputStream = file.getInputStream()) {
s3Client.putObject(request, RequestBody.fromInputStream(inputStream, file.getSize()));
Expand All @@ -43,10 +43,10 @@ public ImageUploadResponse upload(MultipartFile file, String path) {
}

return ImageUploadResponse.builder()
.fileName(fileName)
.originalFileName(originalFilename)
.contentType(file.getContentType())
.filePath(destination)
.build();
.fileName(fileName)
.originalFileName(originalFilename)
.contentType(file.getContentType())
.filePath(destination)
.build();
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package net.teumteum.meeting.config;


import org.jetbrains.annotations.NotNull;
import org.springframework.core.MethodParameter;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
Expand All @@ -25,9 +26,12 @@ public boolean supportsParameter(MethodParameter parameter) {
}

@Override
public Mono<Object> resolveArgument(MethodParameter methodParameter, BindingContext bindingContext, ServerWebExchange serverWebExchange) {
List<String> pageValues = serverWebExchange.getRequest().getQueryParams().getOrDefault("page", List.of(DEFAULT_PAGE));
List<String> sizeValues = serverWebExchange.getRequest().getQueryParams().getOrDefault("size", List.of(DEFAULT_SIZE));
public @NotNull Mono<Object> resolveArgument(@NotNull MethodParameter methodParameter, @NotNull BindingContext bindingContext,
ServerWebExchange serverWebExchange) {
List<String> pageValues = serverWebExchange.getRequest().getQueryParams()
.getOrDefault("page", List.of(DEFAULT_PAGE));
List<String> sizeValues = serverWebExchange.getRequest().getQueryParams()
.getOrDefault("size", List.of(DEFAULT_SIZE));

String page = pageValues.get(0);

Expand All @@ -44,11 +48,11 @@ public Mono<Object> resolveArgument(MethodParameter methodParameter, BindingCont
}

return Mono.just(
PageRequest.of(
Integer.parseInt(page),
Math.min(Integer.parseInt(sizeValues.get(0)),
MAX_SIZE), sort
)
PageRequest.of(
Integer.parseInt(page),
Math.min(Integer.parseInt(sizeValues.get(0)),
MAX_SIZE), sort
)
);
}
}
Loading

0 comments on commit 49d361c

Please sign in to comment.