Skip to content

Commit

Permalink
Merge branch 'develop' into feature/#40
Browse files Browse the repository at this point in the history
  • Loading branch information
julia-heo authored May 28, 2024
2 parents 963f754 + 6052467 commit 520ca5c
Show file tree
Hide file tree
Showing 93 changed files with 5,673 additions and 181 deletions.
20 changes: 13 additions & 7 deletions .github/workflows/gradle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,15 @@ jobs:
java-version: '17'
distribution: "adopt"

- name: Make application.properties
- name: Make application.properties & Firebase Service Account Key & DB Config
run: |
cd ./src/main/resources
touch ./application.properties
echo "${{ secrets.PROPERTIES }}" > ./application.properties
echo "${{ secrets.RDS_CONFIG_INI }}" > ./crawling/config.ini
mkdir firebase
touch ./firebase/once-firebase-adminsdk.json
echo '${{ secrets.ONCE_FIREBASE_ADMINSDK }}' > ./firebase/once-firebase-adminsdk.json
shell: bash

- name: Build with Gradle
Expand All @@ -51,11 +55,15 @@ jobs:
java-version: '17'
distribution: "adopt"

- name: Make application.properties
- name: Make application.properties & Firebase Service Account Key & DB Config
run: |
cd ./src/main/resources
touch ./application.properties
echo "${{ secrets.PROPERTIES }}" > ./application.properties
echo "${{ secrets.RDS_CONFIG_INI }}" > ./crawling/config.ini
mkdir firebase
touch ./firebase/once-firebase-adminsdk.json
echo '${{ secrets.ONCE_FIREBASE_ADMINSDK }}' > ./firebase/once-firebase-adminsdk.json
shell: bash

- name: Build with Gradle
Expand All @@ -66,9 +74,7 @@ jobs:
- name: Docker build & push to prod
run: |
echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u ${{ secrets.DOCKER_USERNAME }} --password-stdin
# docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
# docker build -f Dockerfile -t ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPO }} .
docker build -t ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPO }} .
docker build -f Dockerfile -t ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPO }} .
docker push ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPO }}
- name: Deploy start
Expand All @@ -83,5 +89,5 @@ jobs:
sudo docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
sudo docker rm -f $(docker ps -qa)
sudo docker pull ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPO }}
docker-compose up -d
docker image prune -f
sudo docker-compose up -d
sudo docker image prune -f
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -39,4 +39,6 @@ out/


### Security ###
application.properties
application.properties
once-firebase-adminsdk.json
config.ini
24 changes: 22 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,25 @@
FROM openjdk:17-jdk
FROM openjdk:17-jdk-slim-bullseye

RUN apt-get update && apt-get install -y python3 python3-pip wget unzip curl && apt-get install -y systemd && apt-get install -y tzdata

RUN ln -snf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

RUN wget https://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/google-chrome-stable_114.0.5735.198-1_amd64.deb && \
apt -y install ./google-chrome-stable_114.0.5735.198-1_amd64.deb

RUN wget -O /tmp/chromedriver.zip https://chromedriver.storage.googleapis.com/114.0.5735.90/chromedriver_linux64.zip && \
unzip /tmp/chromedriver.zip -d /usr/bin && \
chmod +x /usr/bin/chromedriver

COPY ./requirements.txt .
RUN pip install --no-cache-dir --upgrade pip && \
pip install -r requirements.txt

COPY ./src/main/resources/crawling /crawling

ARG JAR_FILE=build/libs/once-0.0.1-SNAPSHOT.jar
COPY ${JAR_FILE} /app.jar

ENTRYPOINT ["java","-jar","/app.jar"]
ENV TZ=Asia/Seoul

ENTRYPOINT ["java","-jar","/app.jar"]
21 changes: 21 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,14 @@ dependencies {

implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE'
implementation 'org.springframework.boot:spring-boot-starter-data-redis'

//FCM
implementation 'com.google.firebase:firebase-admin:9.2.0'

//CODEF
implementation 'com.googlecode.json-simple:json-simple:1.1.1'

implementation 'commons-io:commons-io:2.11.0'
}

tasks.named('test') {
Expand All @@ -51,4 +59,17 @@ tasks.named('test') {

jar {
enabled = false
}
sourceSets{
main{
resources {
srcDirs 'src/main/resources'
}
}
}

tasks {
processResources {
duplicatesStrategy = org.gradle.api.file.DuplicatesStrategy.INCLUDE
}
}
11 changes: 10 additions & 1 deletion docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,13 @@ services:
- 8080
restart: always
ports:
- 8080:8080
- 8080:8080
environment:
- TZ=Asia/Seoul
shm_size: 2gb
logging:
driver: json-file
options:
mode: non-blocking
stdin_open: true
tty: true
7 changes: 7 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
beautifulsoup4==4.12.2
pandas==2.1.3
selenium==4.15.2
webdriver-manager==4.0.1
pymysql==1.1.0
boto3==1.19.0
Pillow==9.0.0
4 changes: 4 additions & 0 deletions src/main/java/ewha/lux/once/OnceApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,13 @@
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;

@EnableJpaAuditing
@SpringBootApplication
@EnableScheduling
@EnableAsync
public class OnceApplication {

public static void main(String[] args) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package ewha.lux.once.domain.card.controller;

import ewha.lux.once.domain.card.dto.CardGoalRequestDto;
import ewha.lux.once.domain.card.dto.CardPerformanceRequestDto;
import com.fasterxml.jackson.core.JsonProcessingException;
import ewha.lux.once.domain.card.dto.*;
import ewha.lux.once.domain.card.service.CardService;
import ewha.lux.once.domain.card.service.CrawlingService;
import ewha.lux.once.global.common.CommonResponse;
import ewha.lux.once.global.common.CustomException;
import ewha.lux.once.global.common.ResponseCode;
Expand All @@ -12,13 +13,55 @@
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;


@Controller
@RestController
@RequiredArgsConstructor
@RequestMapping("card")
public class CardController {

private final CardService cardService;
private final CrawlingService crawlingService;

// ** 추후 삭제해야 함 - 테스트용 ** ==================================
@GetMapping("/test/{companyID}")
@ResponseBody
public CommonResponse<?> testtest(@AuthenticationPrincipal UserAccount user, @PathVariable("companyID") int companyId) {
try {
crawlingService.cardCrawlingTest(companyId);
return new CommonResponse<>(ResponseCode.SUCCESS);
} catch (CustomException e) {
return new CommonResponse<>(e.getStatus());
}
}

@GetMapping("/test/summary")
@ResponseBody
public CommonResponse<?> testSummary(@AuthenticationPrincipal UserAccount user, @RequestBody TestSummaryDto testSummaryDto) {
try {
cardService.updateBenefitSummaryTest(testSummaryDto.getPrompt(), testSummaryDto.getModel_name());
return new CommonResponse<>(ResponseCode.SUCCESS);
} catch (CustomException e) {
return new CommonResponse<>(e.getStatus());
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
}

@GetMapping("/test/summary/index")
@ResponseBody
public CommonResponse<?> testSummaryByIndex(@AuthenticationPrincipal UserAccount user, @RequestBody TestSummaryIndexDto testSummaryIndexDto) {
try {
cardService.updateBenefitSummaryTestByIndex(testSummaryIndexDto.getPrompt(), testSummaryIndexDto.getModel_name(), testSummaryIndexDto.getStart_index(), testSummaryIndexDto.getEnd_index());
return new CommonResponse<>(ResponseCode.SUCCESS);
} catch (CustomException e) {
return new CommonResponse<>(e.getStatus());
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
}

// ============================================================

// [Get] 마이월렛 조회
@GetMapping("")
Expand Down Expand Up @@ -65,4 +108,51 @@ public CommonResponse<?> cardGoal(@AuthenticationPrincipal UserAccount user, @Re
return new CommonResponse<>(e.getStatus());
}
}
}

// [Get] CODEF 보유 카드 조회
@PostMapping("/list")
@ResponseBody
public CommonResponse<?> codefCardList(@AuthenticationPrincipal UserAccount user, @RequestBody CodefCardListRequestDto codefCardListRequestDto) {
try {
return new CommonResponse<>(ResponseCode.SUCCESS, cardService.getCodefCardList(user.getUsers(), codefCardListRequestDto));
} catch (CustomException e) {
return new CommonResponse<>(e.getStatus());
}
}

// [Post] 주카드 등록
@PostMapping("/main")
@ResponseBody
public CommonResponse<?> registerMainCard(@AuthenticationPrincipal UserAccount user, @RequestBody MainCardRequestDto mainCardRequestDto) {
try {
cardService.postRegisterCard(user.getUsers(), mainCardRequestDto);
return new CommonResponse<>(ResponseCode.SUCCESS);
} catch (CustomException e) {
return new CommonResponse<>(e.getStatus());
}
}

// [Get] 주카드 실적 업데이트
@GetMapping("/main/performance")
@ResponseBody
public CommonResponse<?> registerMainCard(@AuthenticationPrincipal UserAccount user) {
try {
cardService.updateOwnedCardsPerformance(user.getUsers());
return new CommonResponse<>(ResponseCode.SUCCESS);
} catch (CustomException e) {
return new CommonResponse<>(e.getStatus());
}
}

// [Get] 카드사 연결 현황
@GetMapping("/connect")
@ResponseBody
public CommonResponse<?> checkConnectedCardCompany (@AuthenticationPrincipal UserAccount user) {
try {
return new CommonResponse<>(ResponseCode.SUCCESS,cardService.getConnectedCardCompany(user.getUsers()));
} catch (CustomException e) {
return new CommonResponse<>(e.getStatus());
}
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package ewha.lux.once.domain.card.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class CodefCardListRequestDto {
private String code;
private String id;
private String password;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package ewha.lux.once.domain.card.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class CodefCardListResponseDto {
private String cardName;
private String cardImg;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package ewha.lux.once.domain.card.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ConnectedCardCompanyResponseDto {
private String cardCompanyName;
private String connectedAt;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package ewha.lux.once.domain.card.dto;

import java.util.List;

import lombok.ToString;

@ToString
public class GoogleMapPlaceResponseDto {

private List<Place> places;

public GoogleMapPlaceResponseDto() {
}

public GoogleMapPlaceResponseDto(List<Place> places) {
this.places = places;
}

public List<Place> getPlaces() {
return places;
}

public void setPlaces(List<Place> places) {
this.places = places;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package ewha.lux.once.domain.card.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;


@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class MainCardRequestDto {
private String code;
private String cardName;

}
Loading

0 comments on commit 520ca5c

Please sign in to comment.