Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

♻️ refactor: redis & QueryDSL 모듈 분리 #252

Merged
merged 5 commits into from
Mar 13, 2024
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
12 changes: 9 additions & 3 deletions .github/workflows/ci_gradle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:
echo " profiles:" >> application.yml
echo " group:" >> application.yml
echo " "local": "db, s3, secret"" >> application.yml
echo " "prod": "db, s3"" >> application.yml
echo " "prod": "db, s3, redis"" >> application.yml
echo " default: prod" >> application.yml

echo " servlet:" >> application.yml
Expand All @@ -49,8 +49,6 @@ jobs:
spring.jwt.secret: ${{ secrets.JWT_SECRET }}
spring.jwt.token.access-expiration-time: ${{ secrets.JWT_ACCESS_EXPIRATION_TIME }}
spring.jwt.token.refresh-expiration-time: ${{ secrets.JWT_REFRESH_EXPIRATION_TIME }}
spring.data.redis.host: ${{ secrets.REDIS_HOST }}
spring.data.redis.port: ${{ secrets.REDIS_PORT }}
mail.smtp.port: ${{ secrets.EMAIL_PORT }}
AdminMail.id: ${{ secrets.EMAIL_ID }}
AdminMail.password: ${{ secrets.EMAIL_PASSWORD }}
Expand Down Expand Up @@ -78,6 +76,14 @@ jobs:
cloud.aws.credentials.accessKey: ${{ secrets.S3_ACCESS_KEY }}
cloud.aws.credentials.secretKey: ${{ secrets.S3_SECRET_KEY }}

- name: 6) Set application-redis.yml
uses: microsoft/variable-substitution@v1
with:
files: ./core/core-infra-redis/src/main/resources/application-redis.yml
env:
spring.data.redis.host: ${{ secrets.REDIS_HOST }}
spring.data.redis.port: ${{ secrets.REDIS_PORT }}

- name: Grant execute permission for gradlew and build
run: |
chmod +x ./gradlew
Expand Down
7 changes: 2 additions & 5 deletions api/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ dependencies {
implementation project(':core:core-domain');
implementation project(':core:core-infra-db');
implementation project(':core:core-infra-s3');
implementation project(':core:core-infra-redis');

// Core
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
Expand All @@ -23,10 +24,6 @@ dependencies {
implementation 'io.jsonwebtoken:jjwt-impl:0.12.3'
implementation 'io.jsonwebtoken:jjwt-jackson:0.12.3'

// Redis
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-redis', version: '3.2.0'
implementation 'org.springframework.session:spring-session-data-redis:3.1.1'

// Swagger
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.4'
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-api:2.0.4'
Expand All @@ -35,7 +32,7 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-validation'

// email
implementation 'com.sun.mail:jakarta.mail:2.0.1'
implementation 'org.springframework.boot:spring-boot-starter-mail'

// FCM
implementation 'com.google.firebase:firebase-admin:9.1.1'
Expand Down
14 changes: 14 additions & 0 deletions api/out/production/resources/application-local.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
server:
port: 8080

spring:
jwt:
secret: EENY5W0eegTf1naQB2eDeyCLl5kRS2b8xa5c4qLdS0hmVjtbvo8tOyhPMcAmtPuQ
token:
access-expiration-time: 999999999
refresh-expiration-time: 999999999

data:
redis:
host: localhost
port: 6379
37 changes: 37 additions & 0 deletions api/out/production/resources/application-prod.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
server:
port: 8080

spring:
jwt:
secret: ${JWT_SECRET}
token:
access-expiration-time: ${JWT_ACCESS_EXPIRATION_TIME}
refresh-expiration-time: ${JWT_REFRESH_EXPIRATION_TIME}

data:
redis:
host: ${REDIS_HOST}
port: ${REDIS_PORT}

mail:
smtp:
port: ${EMAIL_PORT}
auth: true
starttls:
required: true
enable: true
socketFactory:
class: javax.net.ssl.SSLSocketFactory
fallback: false

AdminMail:
id: ${EMAIL_ID}
password: ${EMAIL_PASSWORD}

firebase:
fcmUrl: ${FIREBASE_URL}
firebaseConfigPath: ${FIREBASE_PATH}
scope: https://www.googleapis.com/auth/cloud-platform

PORT_ONE_KEY: ${PORT_ONE_KEY}
PORT_ONE_SECRET: ${PORT_ONE_SECRET}
14 changes: 14 additions & 0 deletions api/out/production/resources/application.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
server:
port: 8080

spring:
profiles:
group:
"local": "db, s3, secret"
"prod": "db, s3"
default: local

servlet:
multipart:
max-file-size: 20MB
max-request-size: 20MB
77 changes: 77 additions & 0 deletions api/out/production/resources/templates/payment.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
<!DOCTYPE html>
<html lang="en">
<head>
<style>
.payment-button {
background-color: #4CAF50; /* 녹색 배경 */
border: none;
color: white;
padding: 15px 32px; /* 위아래 15px, 좌우 32px의 패딩 */
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
margin: 4px 2px;
cursor: pointer;
border-radius: 8px; /* 버튼 모서리 둥글게 */
transition-duration: 0.4s; /* 호버 효과 시간 */
}

.payment-button:hover {
background-color: white; /* 호버 상태 배경 */
color: black; /* 호버 상태 텍스트 색상 */
border: 2px solid #4CAF50; /* 호버 상태 테두리 */
}
</style>
<!-- jQuery -->
<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<!-- iamport.payment.js -->
<script type="text/javascript" src="https://cdn.iamport.kr/js/iamport.payment-1.2.0.js"></script>
<!-- axios -->
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
<script>
var IMP = window.IMP;
IMP.init("imp60728723");

function requestPay() {
IMP.request_pay({
pg: "kakaopay.TC0ONETIME", //Test는 TC0ONETIME
pay_method: "card",
merchant_uid: `payment-${crypto.randomUUID()}`,
name: "스포너스 결제 테스트",
amount: 100000,
buyer_email: '[email protected]',
buyer_name: '스포너스',
buyer_tel: '010-1234-5678',
buyer_addr: '서울특별시',
buyer_postcode: '123-456',
},
rsp => {
if (rsp.success) {
console.log(rsp);
// axios로 HTTP 요청
// axios({
// url: "/api/v1/payments", // 가맹점 서버
// method: "post",
// headers: {"Content-Type": "application/json"},
// data: {
// "impUid": rsp.imp_uid,
// "merchantUid": rsp.merchant_uid
// }
// }).then((data) => {
// alert(`결제가 완료되었습니다.`);
// })
} else {
alert(`결제에 실패하였습니다. 에러 내용: ${rsp.error_msg}`);
}
}
);
}
</script>
<meta charset="UTF-8">
<title>Sample Payment</title>
</head>
<body>
<button class="payment-button" onclick="requestPay()">결제하기</button>
</body>
</html>
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@

import com.fasterxml.jackson.databind.ObjectMapper;
import com.sponus.coredomain.domain.common.ApiResponse;
import com.sponus.coreinfraredis.util.RedisUtil;
import com.sponus.sponusbe.auth.jwt.dto.JwtPair;
import com.sponus.sponusbe.auth.jwt.util.HttpResponseUtil;
import com.sponus.sponusbe.auth.jwt.util.JwtUtil;
import com.sponus.sponusbe.auth.jwt.util.RedisUtil;
import com.sponus.sponusbe.auth.user.CustomUserDetails;

import jakarta.servlet.FilterChain;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
import org.springframework.security.core.Authentication;
import org.springframework.security.web.authentication.logout.LogoutHandler;

import com.sponus.coreinfraredis.util.RedisUtil;
import com.sponus.sponusbe.auth.jwt.exception.SecurityCustomException;
import com.sponus.sponusbe.auth.jwt.exception.SecurityErrorCode;
import com.sponus.sponusbe.auth.jwt.util.JwtUtil;
import com.sponus.sponusbe.auth.jwt.util.RedisUtil;

import io.jsonwebtoken.ExpiredJwtException;
import jakarta.servlet.http.HttpServletRequest;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.web.filter.OncePerRequestFilter;

import com.sponus.coreinfraredis.util.RedisUtil;
import com.sponus.sponusbe.auth.jwt.exception.SecurityCustomException;
import com.sponus.sponusbe.auth.jwt.util.JwtUtil;
import com.sponus.sponusbe.auth.jwt.util.RedisUtil;
import com.sponus.sponusbe.auth.user.CustomUserDetails;

import io.jsonwebtoken.ExpiredJwtException;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import com.sponus.coreinfraredis.util.RedisUtil;
import com.sponus.sponusbe.auth.jwt.dto.JwtPair;
import com.sponus.sponusbe.auth.jwt.exception.SecurityCustomException;
import com.sponus.sponusbe.auth.jwt.exception.SecurityErrorCode;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
import com.sponus.coredomain.domain.announcement.enums.AnnouncementType;
import com.sponus.coredomain.domain.announcement.repository.AnnouncementRepository;
import com.sponus.coredomain.domain.organization.Organization;
import com.sponus.sponusbe.auth.jwt.util.RedisUtil;
import com.sponus.coreinfraredis.util.RedisUtil;
import com.sponus.sponusbe.domain.announcement.dto.response.AnnouncementSummaryResponse;

import lombok.RequiredArgsConstructor;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@

import com.sponus.coredomain.domain.announcement.Announcement;
import com.sponus.coredomain.domain.announcement.AnnouncementImage;
import com.sponus.coredomain.domain.announcement.AnnouncementView;
import com.sponus.coredomain.domain.announcement.enums.AnnouncementStatus;
import com.sponus.coredomain.domain.announcement.repository.AnnouncementRepository;
import com.sponus.coredomain.domain.announcement.repository.AnnouncementViewRepository;
import com.sponus.coredomain.domain.organization.Organization;
import com.sponus.coredomain.domain.propose.repository.ProposeRepository;
import com.sponus.coreinfraredis.entity.AnnouncementView;
import com.sponus.coreinfraredis.repository.AnnouncementViewRepository;
import com.sponus.coreinfraredis.util.RedisUtil;
import com.sponus.coreinfras3.S3Util;
import com.sponus.sponusbe.auth.jwt.util.RedisUtil;
import com.sponus.sponusbe.domain.announcement.dto.request.AnnouncementCreateRequest;
import com.sponus.sponusbe.domain.announcement.dto.request.AnnouncementUpdateRequest;
import com.sponus.sponusbe.domain.announcement.dto.response.AnnouncementCreateResponse;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
import com.sponus.coredomain.domain.organization.Organization;
import com.sponus.coredomain.domain.propose.Propose;
import com.sponus.coredomain.domain.report.Report;
import com.sponus.sponusbe.auth.jwt.util.RedisUtil;
import com.sponus.coreinfraredis.util.RedisUtil;
import com.sponus.sponusbe.domain.notification.dto.request.FcmMessage;

import lombok.RequiredArgsConstructor;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import org.springframework.transaction.annotation.Transactional;

import com.sponus.coredomain.domain.organization.Organization;
import com.sponus.coredomain.domain.propose.repository.ProposeCustomRepository;
import com.sponus.coreinfradb.propose.ProposeCustomRepository;
import com.sponus.sponusbe.domain.propose.dto.response.DateGroupedProposeResponse;
import com.sponus.sponusbe.domain.propose.dto.response.ProposeSummaryGetResponse;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;

import com.sponus.coreinfraredis.util.RedisUtil;
import com.sponus.sponusbe.auth.jwt.exception.JwtAccessDeniedHandler;
import com.sponus.sponusbe.auth.jwt.exception.JwtAuthenticationEntryPoint;
import com.sponus.sponusbe.auth.jwt.filter.CustomLoginFilter;
Expand All @@ -24,7 +25,6 @@
import com.sponus.sponusbe.auth.jwt.filter.JwtExceptionFilter;
import com.sponus.sponusbe.auth.jwt.util.HttpResponseUtil;
import com.sponus.sponusbe.auth.jwt.util.JwtUtil;
import com.sponus.sponusbe.auth.jwt.util.RedisUtil;

import lombok.RequiredArgsConstructor;

Expand Down
5 changes: 0 additions & 5 deletions api/src/main/resources/application-prod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,6 @@ spring:
access-expiration-time: ${JWT_ACCESS_EXPIRATION_TIME}
refresh-expiration-time: ${JWT_REFRESH_EXPIRATION_TIME}

data:
redis:
host: ${REDIS_HOST}
port: ${REDIS_PORT}

mail:
smtp:
port: ${EMAIL_PORT}
Expand Down
2 changes: 1 addition & 1 deletion api/src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ spring:
profiles:
group:
"local": "db, s3, secret"
"prod": "db, s3"
"prod": "db, s3, redis"
default: local

servlet:
Expand Down
4 changes: 0 additions & 4 deletions core/core-domain/build.gradle
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

// Redis
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-redis', version: '3.2.0'
implementation 'org.springframework.session:spring-session-data-redis:3.1.1'

//querydsl
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,12 @@
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.data.redis.repository.configuration.EnableRedisRepositories;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@Configuration
@EnableTransactionManagement
@EntityScan("com.sponus.coredomain")
@EnableJpaRepositories("com.sponus.coredomain")
@EnableRedisRepositories("com.sponus.coredomain")
@EnableJpaAuditing
public class CoreDomainConfig {
}
9 changes: 9 additions & 0 deletions core/core-infra-db/build.gradle
Original file line number Diff line number Diff line change
@@ -1,7 +1,16 @@
dependencies {

implementation project(':core:core-domain');

// Database
runtimeOnly 'org.postgresql:postgresql'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

//querydsl
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
}

bootJar { enabled = false }
Expand Down
Loading
Loading