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

테스트2 #36

Open
wants to merge 50 commits into
base: GM-176
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
efc6b20
Merge pull request #16 from gaaji/GM-176
kgh2120 Feb 1, 2023
12b4d07
Merge pull request #17 from gaaji/GM-184
kgh2120 Feb 1, 2023
0786e95
GM-185 회원 서비스 설정 파일 수정 및 CI 파일 수정
kgh2120 Feb 1, 2023
3b9b6dc
GM-186 레디스 빈 설정 변경
kgh2120 Feb 1, 2023
eeb0214
Merge pull request #18 from gaaji/GM-185
kgh2120 Feb 1, 2023
9382107
Merge pull request #19 from gaaji/GM-186
kgh2120 Feb 1, 2023
7c4f2d0
GM-190 CI 파일 수정
kgh2120 Feb 2, 2023
94f8299
Merge pull request #21 from gaaji/GM-190
kgh2120 Feb 2, 2023
0855884
GM-192 회원 서비스 예외처리
kgh2120 Feb 3, 2023
e531c53
Merge pull request #22 from gaaji/GM-192
kgh2120 Feb 3, 2023
bd22b44
GM-244 닉네임 변경 이벤트 발행
kgh2120 Feb 14, 2023
a0704cf
GM-244 테스트 오류 수정
kgh2120 Feb 14, 2023
316de5a
Merge pull request #24 from gaaji/GM-244
kgh2120 Feb 14, 2023
87c8e54
GM-259 로그인 성공 후 리다이렉트
kgh2120 Feb 15, 2023
6d09be8
Merge pull request #25 from gaaji/GM-259
kgh2120 Feb 15, 2023
2b57a7e
리뷰 관련 도메인 추가
Feb 15, 2023
c04fe20
후기 추가 서비스
Feb 16, 2023
c8cec61
예외처리 추가
Feb 17, 2023
593383d
오류 수정 및 후기 테스트 완료
Feb 17, 2023
dd66565
Merge pull request #26 from gaaji/GM-250
ansm6358 Feb 20, 2023
71711e4
리뷰(후기) 수정 서비스
Feb 20, 2023
736f1e7
예외 사항 추가
Feb 20, 2023
e16168b
후기 수정 테스트
Feb 20, 2023
a53c743
Merge pull request #27 from gaaji/GM-252
ansm6358 Feb 21, 2023
8fd031f
내가 쓴 리뷰 조회
Feb 21, 2023
4066be2
내 글 조회 서비스 테스트 완료
Feb 21, 2023
ffbe132
ignore 수정
Feb 21, 2023
d5c2db3
upload
Feb 21, 2023
b7df206
Create pull_request_template.md
ansm6358 Feb 21, 2023
c7705cd
Merge branch 'GM-254' into GM-251
Feb 21, 2023
a27b3db
Merge pull request #28 from gaaji/GM-254
ansm6358 Feb 21, 2023
298665f
Merge branch 'GM-251' of https://github.com/gaaji/auth.git into GM-251
Feb 21, 2023
88a92e7
도메인에 town도 같이 저장 하게 수정
Feb 21, 2023
12fff18
후기 조회
Feb 22, 2023
6e9747d
후기 조회 테스트 완료
Feb 22, 2023
3125640
Merge pull request #29 from gaaji/GM-257
ansm6358 Feb 22, 2023
1f6f6f1
메너 평가 리스트 조회
Feb 22, 2023
84023b0
오타 수정
Feb 22, 2023
fdbe5bc
매너 리스트 조회 테스트 완료
Feb 22, 2023
d2c2cee
수정
Feb 22, 2023
3303145
Merge pull request #30 from gaaji/GM-309
ansm6358 Feb 22, 2023
3bc465b
매너 조회 서비스
Feb 27, 2023
8bf0a1c
매너 조회 테스트
Feb 27, 2023
eebafe9
Merge pull request #31 from gaaji/GM-255
ansm6358 Feb 27, 2023
01cc816
유저 매너평가 조회
Feb 27, 2023
db176cd
유저 매너평가 조회 테스트
Feb 27, 2023
2084f2c
Merge pull request #32 from gaaji/GM-253
ansm6358 Feb 27, 2023
59bf17e
Merge pull request #33 from gaaji/GM-251
ansm6358 Feb 27, 2023
c583765
Merge pull request #34 from gaaji/dev
kgh2120 Mar 17, 2023
e7444d5
Create CODEOWNERS
kgh2120 Apr 11, 2023
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
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*.java @gaaji/test
19 changes: 10 additions & 9 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ permissions:
contents: read

env:
DOCKER_IMAGE: ghcr.io/${{ github.actor }}/gaaji-auth-service
DOCKER_IMAGE: ghcr.io/gaaji/auth-service
VERSION: ${{ github.sha }}


Expand All @@ -33,20 +33,21 @@ jobs:
SECRET_FILE_NAME: secret.yml
run: echo $SECRET_CODE | base64 --decode > $SECRET_DIR/$SECRET_FILE_NAME

- name: Create application-oauth.yml
- name: Create oauth.yml
env:
SECRET_CODE: ${{ secrets.OAUTH }}
SECRET_DIR: src/main/resources
SECRET_FILE_NAME: application-oauth.yml
SECRET_FILE_NAME: oauth.yml
run: echo $SECRET_CODE | base64 --decode > $SECRET_DIR/$SECRET_FILE_NAME
- name: Create kafka.yml
env:
SECRET_CODE: ${{ secrets.KAFKA }}
SECRET_DIR: src/main/resources
SECRET_FILE_NAME: kafka.yml
run: echo $SECRET_CODE | base64 --decode > $SECRET_DIR/$SECRET_FILE_NAME

- name: Grant execute permission for gradlew
run: chmod +x gradlew

- name : Set Eureka Server
run: |
docker pull ${{ secrets.EUREKA }}
docker run -d -p 8761:8761 ${{ secrets.EUREKA }}

- name: Build with Gradle
uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1
Expand Down Expand Up @@ -74,4 +75,4 @@ jobs:
context: . # dockerfile이 있는 위치랑 맞춰주자
file: ./Dockerfile # 빌드할 Dockerfile이 있는 디렉토리
push: true
tags: ${{ env.DOCKER_IMAGE }}:local
tags: ${{ env.DOCKER_IMAGE }}:local
6 changes: 4 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -37,5 +37,7 @@ out/
.vscode/

### security
/src/main/resources/application-oauth.yml
/src/main/resources/secret.yml
/src/main/resources/oauth.yml
/src/main/resources/secret.yml
/src/main/resources/kafka.yml
/spy.log
3 changes: 3 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.kafka:spring-kafka'


implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE'
Expand All @@ -43,6 +45,7 @@ dependencies {
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
testImplementation 'org.springframework.kafka:spring-kafka-test'
}

dependencyManagement {
Expand Down
30 changes: 30 additions & 0 deletions pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Issue# - Issue
## Description
>

## PR Type
- [ ] Hotfix
- [ ] Feature
- [ ] Code style update
- [ ] Refactor (code, package, etc.)
- [ ] Build (gradle, spring, etc)
- [ ] Documentation content changes (api docs, etc.)
- [ ] Infra (cloud, security, etc.)
- [ ] Other... Please describe :

## Related Issues
-

## Issues

### Test

***

## Related Files
- `file`

## Think About..

## Conclusion
>
9 changes: 9 additions & 0 deletions src/main/java/com/gaaji/auth/adaptor/KafkaProducer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.gaaji.auth.adaptor;

import com.gaaji.auth.event.NicknameChangedEvent;

public interface KafkaProducer {

void publishNicknameChangedEvent(NicknameChangedEvent event);

}
28 changes: 28 additions & 0 deletions src/main/java/com/gaaji/auth/adaptor/KafkaProducerImpl.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.gaaji.auth.adaptor;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.gaaji.auth.event.NicknameChangedEvent;
import lombok.RequiredArgsConstructor;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.stereotype.Service;

@RequiredArgsConstructor
@Service
public class KafkaProducerImpl implements KafkaProducer {

private final KafkaTemplate<String,String> kafkaTemplate;

@Override
public void publishNicknameChangedEvent(NicknameChangedEvent event) {

String nicknameChangedEvent = null;
try {
nicknameChangedEvent = new ObjectMapper().writeValueAsString(event);
kafkaTemplate.send("nickname-changed",nicknameChangedEvent);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.gaaji.auth.controller.dto.RetrieveResponse;
import com.gaaji.auth.domain.Auth;
import com.gaaji.auth.domain.AuthId;
import com.gaaji.auth.exception.AuthIdNotFoundException;
import com.gaaji.auth.repository.AuthRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
Expand All @@ -19,7 +20,7 @@ public class AuthRetrieveServiceImpl implements
@Override
public RetrieveResponse retrieveAuth(String authId) {
Auth auth = authRepository.findById(authId)
.orElseThrow();
.orElseThrow(AuthIdNotFoundException::new);
return RetrieveResponse.of(authId, auth.getNickname(), auth.getMannerTemperature(), auth.getProfilePictureUrl());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.gaaji.auth.applicationservice;

import java.util.List;

import com.gaaji.auth.domain.BadManner;
import com.gaaji.auth.domain.GoodManner;

public interface MannerRetriveService {

List<GoodManner> retriveGoodMannerList();

List<BadManner> retriveBadMannerList();

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.gaaji.auth.applicationservice;

import java.util.Arrays;
import java.util.List;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.gaaji.auth.domain.BadManner;
import com.gaaji.auth.domain.GoodManner;
import com.gaaji.auth.repository.AuthRepository;

import lombok.RequiredArgsConstructor;

@RequiredArgsConstructor
@Transactional
@Service
public class MannerRetriveServiceImpl implements MannerRetriveService {

@Override
public List<GoodManner> retriveGoodMannerList() {
return Arrays.asList(GoodManner.values());
}

@Override
public List<BadManner> retriveBadMannerList() {
return Arrays.asList(BadManner.values());

}

}
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package com.gaaji.auth.applicationservice;

import com.gaaji.auth.adaptor.KafkaProducer;
import com.gaaji.auth.event.Events;
import com.gaaji.auth.event.NicknameChangedEvent;
import com.gaaji.auth.domain.Auth;
import com.gaaji.auth.exception.AuthIdNotFoundException;
import com.gaaji.auth.repository.AuthRepository;
Expand All @@ -21,5 +24,6 @@ public void registerNickname(String authId, String nickname){
.orElseThrow(AuthIdNotFoundException::new);

auth.registerNickname(nickname);
Events.raise(new NicknameChangedEvent(authId, nickname));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.gaaji.auth.applicationservice;

import org.springframework.web.multipart.MultipartFile;

import com.gaaji.auth.controller.dto.ReviewCreateRequest;

public interface ReviewCreateService {

void createReview(String authId, MultipartFile multipartFile, ReviewCreateRequest dto);

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
package com.gaaji.auth.applicationservice;

import java.util.ArrayList;
import java.util.List;

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

import com.gaaji.auth.adaptor.S3Uploader;
import com.gaaji.auth.controller.dto.ReviewCreateRequest;
import com.gaaji.auth.domain.AuthId;
import com.gaaji.auth.domain.BadManner;
import com.gaaji.auth.domain.Comment;
import com.gaaji.auth.domain.GoodManner;
import com.gaaji.auth.domain.PostId;
import com.gaaji.auth.domain.Review;
import com.gaaji.auth.domain.ReviewId;
import com.gaaji.auth.exception.EqualsSellerAndPurchaserException;
import com.gaaji.auth.exception.NoMatchIdException;
import com.gaaji.auth.exception.NoReviewException;
import com.gaaji.auth.exception.NoTownException;
import com.gaaji.auth.exception.NonexistentTargetException;
import com.gaaji.auth.repository.ReviewRepository;

import lombok.RequiredArgsConstructor;

@RequiredArgsConstructor
@Transactional
@Service
public class ReviewCreateServiceImpl implements ReviewCreateService {

private final ReviewRepository reviewRepository;
private final S3Uploader s3Uploader;

@Override
public void createReview(String authId, MultipartFile multipartFile,ReviewCreateRequest dto) {
saveEntity(createReviewEntity(dto, multipartFile, authId));
}

private void saveEntity(Review review) {
this.reviewRepository.save(review);
}

private Review createReviewEntity(ReviewCreateRequest dto, MultipartFile multipartFile, String authId) {
if(dto.getTown() == null) {
throw new NoTownException();
}

if((dto.getPurchaserId() == null) || dto.getSellerId() == null) {
throw new NonexistentTargetException();
}

if((dto.getContents() == null) && (dto.getGoodManners().size() == 0) && (dto.getBadManners().size() == 0)) {
throw new NoReviewException();
}

if(dto.getSellerId().equals(dto.getPurchaserId())) {
throw new EqualsSellerAndPurchaserException();
}

String pictureUrl = uploadImage(multipartFile);
List<GoodManner> goodManners = getGoodManners(dto.getGoodManners());
List<BadManner> badManners = getBaddManners(dto.getBadManners());
if (dto.getPurchaserId().equals(authId)) {
return Review.of(ReviewId.of(this.reviewRepository.nextId()), PostId.of(dto.getPostId()), AuthId.of(authId),
AuthId.of(dto.getSellerId()), goodManners, badManners,
Comment.of(pictureUrl, dto.getContents(), dto.getTown(), true));

} else if (dto.getSellerId().equals(authId)) {
return Review.of(ReviewId.of(this.reviewRepository.nextId()), PostId.of(dto.getPostId()), AuthId.of(authId),
AuthId.of(dto.getPurchaserId()), goodManners, badManners,
Comment.of(pictureUrl, dto.getContents(), dto.getTown(), false));
} else {
throw new NoMatchIdException();
}
}

private List<BadManner> getBaddManners(List<String> badManners) {
if (badManners.size() == 0) {
return null;
}

List<BadManner> badMannerList = new ArrayList<BadManner>();

for (String badManner : badManners) {
badMannerList.add(BadManner.valueOf(badManner));
}
return badMannerList;
}

private List<GoodManner> getGoodManners(List<String> goodManners) {
if (goodManners.size() == 0) {
return null;
}

List<GoodManner> goodMannerList = new ArrayList<GoodManner>();

for (String goodManner : goodManners) {
goodMannerList.add(GoodManner.valueOf(goodManner));
}
return goodMannerList;
}

private String uploadImage(MultipartFile multipartFile) {
if(multipartFile == null) {
return null;
}
return s3Uploader.upload(multipartFile);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.gaaji.auth.applicationservice;

import java.util.List;

import com.gaaji.auth.controller.dto.CommentRetrieveResponse;
import com.gaaji.auth.controller.dto.MannerRetrieveResponse;
import com.gaaji.auth.controller.dto.PreviewReviewRetrieveResponse;
import com.gaaji.auth.controller.dto.ReviewRetrieveResponse;

public interface ReviewRetriveService {

ReviewRetrieveResponse retriveMyReview(String authId, String postId);

List<CommentRetrieveResponse> retriveComment(String userId);

MannerRetrieveResponse retriveManner(String authId, String userId);

PreviewReviewRetrieveResponse retriveReview(String userId);

}
Loading