Skip to content

Commit

Permalink
Feat : merge code
Browse files Browse the repository at this point in the history
  • Loading branch information
Hawardshin committed Nov 7, 2024
1 parent c434f1b commit e8b8af2
Show file tree
Hide file tree
Showing 7 changed files with 67 additions and 54 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@ public CorsFilter corsFilter() {
config.addAllowedOriginPattern("*"); // 모든 ip에 응답을 허용하겠다.
config.addAllowedHeader("*"); // 모든 header에 응답을 허용하겠다.
config.addAllowedMethod("*"); // 모든 post, get, put, delete, patch 요청을 허용하겠다.
source.registerCorsConfiguration("*", config); // api로 시작하는 모든 요청에 대해 적용
source.registerCorsConfiguration("/**", config); // 모든 경로에 대해 적용

return new CorsFilter(source);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,10 @@ public ClassroomDetailResponse(Long classroomId, String classroomName, String cl
this.reservationTimes = reservationTimes;
}

public static ClassroomDetailResponse from(Classroom classroom) {

// 강의실 정보와 예약 정보를 외부에서 주입받아 ClassroomDetailResponse 생성
public static ClassroomDetailResponse from(Classroom classroom, List<Reservation> reservations) {

List<ClassroomImage> images = classroom.getImages();
List<Reservation> reservations = classroom.getReservations();

return ClassroomDetailResponse.builder()
.classroomId(classroom.getId())
Expand All @@ -64,5 +64,4 @@ public static ClassroomDetailResponse from(Classroom classroom) {
)
.build();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,8 @@ public interface ClassroomRepository extends JpaRepository<Classroom, Long> {
+ "AND rs.status in ('PENDING', 'APPROVED')")
Optional<Classroom> findClassroomByIdAndDate(Long classroomId, LocalDate date);

List<Classroom> findByBuildingIdAndFloorAndCapacityGreaterThanEqual(Long buildingId, Long floor, Integer capacity);
Optional<Classroom> findClassroomById(Long classroomId);

List<Classroom> findClassroomByBuildingIdAndFloorAndCapacityGreaterThanEqual(Long buildingId, Long floor, Integer capacity);

}
Original file line number Diff line number Diff line change
@@ -1,11 +1,5 @@
package com.groomiz.billage.classroom.service;

import java.util.UUID;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;

import com.groomiz.billage.classroom.dto.response.ClassroomImageResponse;
import com.groomiz.billage.classroom.entity.Classroom;
import com.groomiz.billage.classroom.entity.ClassroomImage;
Expand All @@ -16,36 +10,43 @@
import com.groomiz.billage.global.config.S3Config;

import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;

import java.util.UUID;

@RequiredArgsConstructor
@Transactional
@Service
public class ClassroomImageService {

private final S3Service s3Service;
private final ClassroomRepository classroomRepository;
private final ClassroomImageRepository classroomImageRepository;
private final S3Config s3Config;
private final S3Service s3Service;
private final ClassroomRepository classroomRepository;
private final ClassroomImageRepository classroomImageRepository;
private final S3Config s3Config;

public ClassroomImageResponse uploadClassroomImage(Long classroomId, MultipartFile imageFile) throws Exception {
//Classroom 엔티티 찾기
Classroom classroom = classroomRepository.findById(classroomId)
.orElseThrow(() -> new ClassroomException(ClassroomErrorCode.CLASSROOM_NOT_FOUND));

String fileName = UUID.randomUUID() + imageFile.getOriginalFilename();
// 파일데이터와 파일명 넘겨서 S3에 저장

public ClassroomImageResponse uploadClassroomImage(Long classroomId, MultipartFile imageFile) throws Exception {
//Classroom 엔티티 찾기
Classroom classroom = classroomRepository.findById(classroomId)
.orElseThrow(() -> new ClassroomException(ClassroomErrorCode.CLASSROOM_NOT_FOUND));

String fileName = UUID.randomUUID() + imageFile.getOriginalFilename();
// 파일데이터와 파일명 넘겨서 S3에 저장

String imageUrl = s3Service.uploadFile(imageFile, fileName);
String imageUrl = s3Service.uploadFile(imageFile, fileName);

ClassroomImage classroomImage = ClassroomImage.builder()
.classroom(classroom)
.imageUrl(imageUrl)
.build();
ClassroomImage classroomImage = ClassroomImage.builder()
.classroom(classroom)
.imageUrl(imageUrl)
.build();

classroomImageRepository.save(classroomImage);
classroomImageRepository.save(classroomImage);

return new ClassroomImageResponse(classroomImage.getId(), classroomId, classroomImage.getImageUrl());
return new ClassroomImageResponse(classroomImage.getId(), classroomId ,classroomImage.getImageUrl());

}
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
import com.groomiz.billage.classroom.exception.ClassroomErrorCode;
import com.groomiz.billage.classroom.exception.ClassroomException;
import com.groomiz.billage.classroom.repository.ClassroomRepository;
import com.groomiz.billage.reservation.entity.Reservation;

import com.groomiz.billage.reservation.repository.ReservationRepository;

import lombok.RequiredArgsConstructor;
Expand All @@ -35,10 +37,14 @@ public class ClassroomService {
@Transactional(readOnly = true)
public ClassroomDetailResponse findClassroomByIdAndDate(Long classroomId, LocalDate date) {

Classroom classroom = classroomRepository.findClassroomByIdAndDate(classroomId, date)
Classroom classroom = classroomRepository.findClassroomById(classroomId)
.orElseThrow(() -> new ClassroomException(ClassroomErrorCode.CLASSROOM_NOT_FOUND));

return ClassroomDetailResponse.from(classroom);
List<Reservation> reservationsByClassroomIdsAndDate = reservationRepository.findReservationsByClassroomIdsAndDate(
List.of(classroomId), date);

return ClassroomDetailResponse.from(classroom, reservationsByClassroomIdsAndDate);

}

@Transactional(readOnly = true)
Expand All @@ -53,7 +59,8 @@ public List<ClassroomListResponse> findAllClassroom(ClassroomListRequest request
throw new BuildingException(BuildingErrorCode.FLOOR_NOT_FOUND);
}

List<Classroom> classrooms = classroomRepository.findByBuildingIdAndFloorAndCapacityGreaterThanEqual(
List<Classroom> classrooms = classroomRepository.findClassroomByBuildingIdAndFloorAndCapacityGreaterThanEqual(

request.getBuildingId(), request.getFloor(), request.getHeadcount()
);

Expand Down
42 changes: 22 additions & 20 deletions src/main/java/com/groomiz/billage/classroom/service/S3Service.java
Original file line number Diff line number Diff line change
@@ -1,32 +1,34 @@
package com.groomiz.billage.classroom.service;

import java.io.IOException;
import java.net.URLDecoder;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.model.ObjectMetadata;
import lombok.RequiredArgsConstructor;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.model.ObjectMetadata;
import java.io.IOException;

import java.net.URLDecoder;

import lombok.RequiredArgsConstructor;

@Service
@RequiredArgsConstructor

@Service
public class S3Service {
private final AmazonS3 amazonS3;

@Value("${cloud.aws.s3.bucket-name}")
private String bucketName;

public String uploadFile(MultipartFile imageFile, String s3FileName) throws IOException {
// 메타데이터 생성
ObjectMetadata objMeta = new ObjectMetadata();
objMeta.setContentLength(imageFile.getInputStream().available());
// S3에 객체 등록
amazonS3.putObject(bucketName, s3FileName, imageFile.getInputStream(), objMeta);
// 등록된 객체의 url 반환
return URLDecoder.decode(amazonS3.getUrl(bucketName, s3FileName).toString(), "utf-8");
}
private final AmazonS3 amazonS3;

@Value("${cloud.aws.s3.bucket-name}")
private String bucketName;

public String uploadFile(MultipartFile imageFile, String s3FileName) throws IOException {
// 메타데이터 생성
ObjectMetadata objMeta = new ObjectMetadata();
objMeta.setContentLength(imageFile.getInputStream().available());
// S3에 객체 등록
amazonS3.putObject(bucketName, s3FileName, imageFile.getInputStream(), objMeta);
// 등록된 객체의 url 반환
return URLDecoder.decode(amazonS3.getUrl(bucketName, s3FileName).toString(), "utf-8");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ public void register(RegisterRequest registerRequest) {
.username(registerRequest.getName())
.password("{bcrypt}" + encodedPassword)
.phoneNumber(registerRequest.getPhoneNumber())
.role(Role.ADMIN)
.role(Role.STUDENT)
.studentNumber(registerRequest.getStudentNumber())
.isAdmin(true)
.agreedToTerms(registerRequest.isAgreedToTerms())
Expand Down

0 comments on commit e8b8af2

Please sign in to comment.