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
6 changes: 6 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,9 @@ jobs:
sudo docker rm -f $(docker ps -qa)
sudo docker pull ${{ secrets.DOCKER_REPO }}/eatssu-prod
sudo docker run -d -p 9000:9000 \
--log-driver=json-file \
--log-opt max-size=20m \
--log-opt max-file=5 \
-e EATSSU_DB_URL_PROD="${{ secrets.EATSSU_DB_URL_PROD }}" \
-e EATSSU_DB_USERNAME="${{ secrets.EATSSU_DB_USERNAME }}" \
-e EATSSU_DB_PASSWORD="${{ secrets.EATSSU_DB_PASSWORD }}" \
Expand All @@ -107,6 +110,9 @@ jobs:
sudo docker rm -f $(docker ps -qa)
sudo docker pull ${{ secrets.DOCKER_REPO }}/eatssu-dev
sudo docker run -d -p 9000:9000 \
--log-driver=json-file \
--log-opt max-size=20m \
--log-opt max-file=5 \
-e EATSSU_DB_URL_DEV="${{ secrets.EATSSU_DB_URL_DEV }}" \
-e EATSSU_DB_USERNAME="${{ secrets.EATSSU_DB_USERNAME }}" \
-e EATSSU_DB_PASSWORD="${{ secrets.EATSSU_DB_PASSWORD }}" \
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,4 @@ COPY --from=builder /home/gradle/project/build/libs/*.jar app.jar
EXPOSE 9000

# 애플리케이션 실행
ENTRYPOINT ["java", "-jar", "app.jar"]
ENTRYPOINT ["java", "-jar", "app.jar"]
3 changes: 2 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ def generated = 'src/main/generated'

tasks.withType(JavaCompile) {
options.getGeneratedSourceOutputDirectory().set(file(generated))
options.compilerArgs += ['-parameters']
}

sourceSets {
Expand All @@ -88,4 +89,4 @@ sourceSets {

clean {
delete file('src/main/generated')
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package ssu.eatssu.domain.auth.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import ssu.eatssu.global.log.annotation.LogMask;

@Schema(title = "애플 로그인 및 회원가입")
public record AppleLoginRequest(
@LogMask
@Schema(description = "identityToken", example = "eyJraWQiOiJXNldjT0tCIiwiYWxnIjoi...")
String identityToken
) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,17 @@
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import ssu.eatssu.global.log.annotation.LogMask;

@Schema(title = "카카오 로그인 및 회원가입")
public record KakaoLoginRequest(
@LogMask
@NotBlank(message = "이메일을 입력해주세요.")
@Email(message = "올바른 이메일 주소를 입력해주세요.")
@Schema(description = "이메일", example = "[email protected]")
String email,

@LogMask
@Schema(description = "providerId", example = "10378247832195")
String providerId
) {
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/ssu/eatssu/domain/auth/dto/ValidRequest.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import ssu.eatssu.global.log.annotation.LogMask;

@Schema(title = "유효한 토큰 확인")
public record ValidRequest(
@LogMask
@NotBlank(message = "토큰을 입력해주세요")
@Schema(description = "토큰", example = "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ7XCJpZFwiOjcsXCJlbWFpbFwiOlwidGVzdEBlbWFpbC5jb21cIixcInJvbGVcIjpcIlJPTEVfVVNFUlwifSIsImF1dGgiOiJST0xFX1VTRVIiLCJleHAiOjE3NDQzNzQ0MjB9.mhIWYX_Vj3xW1eXuVflbzpH6vLTcC9b1twbIcqovVjDVnS7tjegu3nQHGXUsUa_WG2DIAtJMFZT_Q1XcVq1jPw")
String token
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,18 @@
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.NoArgsConstructor;
import ssu.eatssu.global.log.annotation.LogMask;

@Schema(title = "문의 남기기")
@NoArgsConstructor
@Getter
public class CreateInquiryRequest {

@Schema(description = "답장 받을 이메일", example = "[email protected]")
@LogMask
private String email;

@Schema(description = "문의 내용", example = "어쩌고 저쩌고 문의 남깁니다")
@LogMask
private String content;
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package ssu.eatssu.domain.inquiry.service;

import lombok.RequiredArgsConstructor;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import ssu.eatssu.domain.auth.security.CustomUserDetails;
Expand All @@ -10,6 +11,7 @@
import ssu.eatssu.domain.user.entity.User;
import ssu.eatssu.domain.user.repository.UserRepository;
import ssu.eatssu.global.handler.response.BaseException;
import ssu.eatssu.global.log.event.LogEvent;

import static ssu.eatssu.global.handler.response.BaseResponseStatus.NOT_FOUND_USER;

Expand All @@ -20,14 +22,23 @@ public class InquiryService {

private final UserRepository userRepository;
private final InquiryRepository inquiryRepository;
private final ApplicationEventPublisher eventPublisher;

public Inquiry createUserInquiry(CustomUserDetails userDetails, CreateInquiryRequest request) {
User user = userRepository.findById(userDetails.getId())
.orElseThrow(() -> new BaseException(NOT_FOUND_USER));
.orElseThrow(() -> new BaseException(NOT_FOUND_USER));

Inquiry inquiry = new Inquiry(request.getContent(), user, request.getEmail());
Inquiry saved = inquiryRepository.save(inquiry);

return inquiryRepository.save(inquiry);
eventPublisher.publishEvent(LogEvent.of(String.format(
"Inquiry created: id=%d, userId=%d, status=%s",
saved.getId(),
user.getId(),
saved.getStatus()
)));

return saved;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import lombok.NoArgsConstructor;
import ssu.eatssu.domain.menu.entity.Meal;
import ssu.eatssu.domain.menu.entity.MealMenu;
import ssu.eatssu.domain.menu.entity.Menu;

import java.util.List;

Expand All @@ -18,9 +19,8 @@ public class MenusInMealResponse {
@Schema(description = "식단 속 메뉴 목록", example = "[]")
private List<BriefMenuResponse> briefMenus;

public static MenusInMealResponse from(Meal meal) {
List<BriefMenuResponse> menusInformation = meal.getMealMenus().stream()
.map(MealMenu::getMenu)
public static MenusInMealResponse from(List<Menu> menus) {
List<BriefMenuResponse> menusInformation = menus.stream()
.map(BriefMenuResponse::new)
.toList();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,15 @@ public class MealService {
public MenusInMealResponse getMenusInMealByMealId(Long mealId) {
Meal meal = mealRepository.findById(mealId)
.orElseThrow(() -> new BaseException(BaseResponseStatus.NOT_FOUND_MEAL));
List<Menu> menus = meal.getMealMenus().stream()
.map(MealMenu::getMenu)
.toList();

if (menus.isEmpty()) {
log.warn("Meal[{}] has no menus.", mealId);
}

return MenusInMealResponse.from(meal);
return MenusInMealResponse.from(menus);
}

public List<MealDetailResponse> getMealDetailsByDateAndRestaurantAndTimePart(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package ssu.eatssu.domain.partnership.service;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import ssu.eatssu.domain.auth.security.CustomUserDetails;
Expand All @@ -19,6 +21,7 @@
import ssu.eatssu.domain.user.entity.User;
import ssu.eatssu.domain.user.repository.UserRepository;
import ssu.eatssu.global.handler.response.BaseException;
import ssu.eatssu.global.log.event.LogEvent;

import java.util.List;
import java.util.Optional;
Expand All @@ -40,6 +43,7 @@ public class PartnershipService {
private final UserRepository userRepository;
private final PartnershipLikeRepository partnershipLikeRepository;
private final PartnershipRestaurantRepository partnerShipRestaurantRepository;
private final ApplicationEventPublisher eventPublisher;

@Transactional
public void createPartnership(CreatePartnershipRequest request) {
Expand Down Expand Up @@ -68,22 +72,30 @@ public List<PartnershipResponse> getAllPartnerships(CustomUserDetails customUser
@Transactional
public void togglePartnershipLike(Long partnershipId, CustomUserDetails userDetails) {
Partnership partnership = partnershipRepository.findById(partnershipId)
.orElseThrow(() -> new BaseException(NOT_FOUND_PARTNERSHIP));
.orElseThrow(() -> new BaseException(NOT_FOUND_PARTNERSHIP));
User user = userRepository.findById(userDetails.getId())
.orElseThrow(() -> new BaseException(NOT_FOUND_USER));
.orElseThrow(() -> new BaseException(NOT_FOUND_USER));
PartnershipRestaurant partnershipRestaurant = partnership.getPartnershipRestaurant();

Optional<PartnershipLike> optionalPartnershipLike = partnershipLikeRepository.findByUserAndPartnershipRestaurant(
user,
partnershipRestaurant);
Optional<PartnershipLike> optionalPartnershipLike =
partnershipLikeRepository.findByUserAndPartnershipRestaurant(user, partnershipRestaurant);

if (optionalPartnershipLike.isPresent()) {
PartnershipLike partnershipLike = optionalPartnershipLike.get();
partnershipRestaurant.getLikes().remove(partnershipLike);
partnershipLikeRepository.delete(partnershipLike);

eventPublisher.publishEvent(LogEvent.of(
String.format("User[%d] canceled like on PartnershipRestaurant[%d]",
user.getId(), partnershipRestaurant.getId())));
} else {
PartnershipLike partnershipLike = new PartnershipLike(user, partnershipRestaurant);
partnershipRestaurant.getLikes().add(partnershipLike);
partnershipLikeRepository.save(partnershipLike);

eventPublisher.publishEvent(LogEvent.of(
String.format("User[%d] liked PartnershipRestaurant[%d]",
user.getId(), partnershipRestaurant.getId())));
}
}

Expand Down
23 changes: 20 additions & 3 deletions src/main/java/ssu/eatssu/domain/report/service/ReportService.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package ssu.eatssu.domain.report.service;

import lombok.RequiredArgsConstructor;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import ssu.eatssu.domain.auth.security.CustomUserDetails;
Expand All @@ -14,6 +15,7 @@
import ssu.eatssu.domain.user.entity.User;
import ssu.eatssu.domain.user.repository.UserRepository;
import ssu.eatssu.global.handler.response.BaseException;
import ssu.eatssu.global.log.event.LogEvent;

import static ssu.eatssu.global.handler.response.BaseResponseStatus.NOT_FOUND_REVIEW;
import static ssu.eatssu.global.handler.response.BaseResponseStatus.NOT_FOUND_USER;
Expand All @@ -26,18 +28,33 @@ public class ReportService {
private final ReviewRepository reviewRepository;
private final UserRepository userRepository;
private final ReportRepository reportRepository;
private final ApplicationEventPublisher eventPublisher;

public Report reportReview(CustomUserDetails userDetails, ReportCreateRequest request) {
User user = userRepository.findById(userDetails.getId())
.orElseThrow(() -> new BaseException(NOT_FOUND_USER));
.orElseThrow(() -> new BaseException(NOT_FOUND_USER));

Review review = reviewRepository.findById(request.reviewId())
.orElseThrow(() -> new BaseException(NOT_FOUND_REVIEW));
.orElseThrow(() -> new BaseException(NOT_FOUND_REVIEW));

Report report = Report.create(user, review, request, ReportStatus.PENDING);
return reportRepository.save(report);
reportRepository.save(report);

eventPublisher.publishEvent(LogEvent.of(
String.format(
"Report created: reportId=%d, reviewId=%d, userId=%d, reportType=%s, status=%s",
report.getId(),
report.getReview().getId(),
report.getUser().getId(),
report.getReportType(),
report.getStatus()
)
));

return report;
}


public ReportTypeList getReportType() {
return ReportTypeList.get();
}
Expand Down
Loading