Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -46,3 +46,5 @@ hs_err_pid44980.log
build/

docker-compose.yaml

/src/main/resources/ancient-pipe-447417-i4-755ce59fbf03.json
3 changes: 2 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@ FROM openjdk:17
ARG JAR_FILE=build/libs/*.jar
COPY ${JAR_FILE} test-app.jar
EXPOSE 8080
CMD ["java", "-Dtest.customName=${CUSTOM_NAME}", "-jar", "test-app.jar"]
CMD ["java", "-Dtest.customName=${CUSTOM_NAME}", "-jar", "test-app.jar"]

6 changes: 5 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,15 @@ repositories {
mavenCentral()
}


dependencies {
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'io.jsonwebtoken:jjwt-api:0.12.3'
implementation 'io.jsonwebtoken:jjwt-impl:0.12.3'
implementation 'io.jsonwebtoken:jjwt-jackson:0.12.3'
implementation 'io.github.cdimascio:java-dotenv:5.2.2' // .env 파일
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
//implementation 'io.github.cdimascio:java-dotenv:5.2.2' // .env 파일
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtimeOnly 'com.h2database:h2'
implementation 'org.springframework.boot:spring-boot-starter-web'
Expand All @@ -38,6 +40,8 @@ dependencies {
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.7.0'
implementation group: 'com.google.cloud', name: 'spring-cloud-gcp-starter', version: '6.0.0'
implementation group: 'com.google.cloud', name: 'spring-cloud-gcp-storage', version: '6.0.0'
}

tasks.named('test') {
Expand Down
2 changes: 1 addition & 1 deletion buildDockerWindow.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#!/bin/bash

docker buildx build --platform linux/amd64 -t comncheck/spring-backend-oauth:1.0.5 .
docker buildx build --platform linux/amd64 -t comncheck/spring-backend-oauth:1.0.7 .

Binary file added data/refresh-token-data/dump.rdb
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,23 @@
import com.ComNCheck.ComNCheck.domain.majorEvent.model.dto.request.EventUpdateRequestDTO;
import com.ComNCheck.ComNCheck.domain.majorEvent.model.dto.response.EventListResponseDTO;
import com.ComNCheck.ComNCheck.domain.majorEvent.model.dto.response.EventResponseDTO;
import com.ComNCheck.ComNCheck.domain.majorEvent.model.dto.response.PagedEventListResponseDTO;
import com.ComNCheck.ComNCheck.domain.majorEvent.model.entity.MajorEvent;
import com.ComNCheck.ComNCheck.domain.majorEvent.repository.MajorEventRepository;
import com.ComNCheck.ComNCheck.domain.member.model.entity.Member;
import com.ComNCheck.ComNCheck.domain.member.model.entity.Role;
import com.ComNCheck.ComNCheck.domain.member.repository.MemberRepository;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.BlobInfo;
import java.io.IOException;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
Expand All @@ -29,10 +32,12 @@ public class MajorEventService {

private final MajorEventRepository majorEventRepository;
private final MemberRepository memberRepository;
@Value("${spring.cloud.gcp.storage.bucket}")
private String bucketName;
private final Storage storage;

@Transactional
public EventResponseDTO createMajorEvent(EventCreateRequestDTO requestDTO, Long writerId) {
System.out.println("서비스 들어옴");
Member writer = memberRepository.findByMemberId(writerId)
.orElseThrow(() -> new IllegalArgumentException("존재하지 않는 회원입니다."));

Expand Down Expand Up @@ -126,11 +131,27 @@ private List<String> uploadImagesToGcs(List<MultipartFile> images) {
if (images == null || images.isEmpty()) {
return new ArrayList<>();
}

List<String> uploadUrls = new ArrayList<>();
for(MultipartFile file : images) {
// gcs 업로드 호출
String url = "https://gcs.com" + file.getOriginalFilename();
uploadUrls.add(url);
for (MultipartFile file : images) {
try {
String uuid = UUID.randomUUID().toString();
String contentType = file.getContentType();
if (contentType == null) {
contentType = "application/octet-stream";
}
BlobInfo blobInfo = storage.create(
BlobInfo.newBuilder(bucketName, uuid)
.setContentType(contentType)
.build(),
file.getInputStream()
);
String url = "https://storage.googleapis.com/" + bucketName + "/" + uuid;
uploadUrls.add(url);

} catch (IOException e) {
throw new RuntimeException("이미지 업로드 실패", e);
}
}
return uploadUrls;
}
Expand All @@ -141,7 +162,6 @@ private boolean isNotPassed(MajorEvent majorEvent, LocalDate today, LocalTime cu
}

public void isCheckRole(Member member) {
System.out.println("조건문 들어옴");
Role checkRole = member.getRole();
if(checkRole != Role.ROLE_ADMIN && checkRole != Role.ROLE_MAJOR_PRESIDENT && checkRole != Role.ROLE_STUDENT_COUNCIL) {
System.out.println("접근 권한이 없음");
Expand Down
13 changes: 12 additions & 1 deletion src/main/resources/application.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,18 @@ spring:
scope:
- email
- profile

data:
redis:
host: ${REDIS_HOST:localhost}
port: ${REDIS_PORT:6379}
password: ${REDIS_PASSWORD}
cloud:
gcp:
storage:
credentials:
location: classpath:ancient-pipe-447417-i4-755ce59fbf03.json
project-id: ${PROJECT_ID}
bucket: ${BUCKET_ID}
jwt:
secret: ${JWT_SECRET}
expirationMs: ${JWT_EXPIRATIONMS}