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
33 changes: 20 additions & 13 deletions nowait-app-admin-api/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ bootJar {
group = 'com.nowait'
version = '0.0.1-SNAPSHOT'


repositories {
mavenCentral()
maven { url 'https://jitpack.io' }
Expand All @@ -29,11 +30,11 @@ dependencyManagement {

dependencies {
implementation project(':nowait-common')
implementation project(':nowait-infra')
implementation project(':nowait-infra') // 사용자 관련 도메인
implementation project(':nowait-domain:domain-admin-rdb')
implementation project(':nowait-domain:domain-core-rdb')
implementation project(':nowait-domain:domain-redis')
implementation project(':nowait-event')
implementation project(":nowait-event")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

''에서 ""로 바꾼 이유가 있을까요?! ''로 통일해서 사용하는게 좋을 것 같습니다


// Spring Boot Starter
implementation 'org.springframework.boot:spring-boot-starter-web'
Expand All @@ -42,23 +43,27 @@ dependencies {
// SPRING SECURITY
implementation 'org.springframework.boot:spring-boot-starter-security'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'

// jwt
implementation 'io.jsonwebtoken:jjwt-api:0.12.3'
implementation 'io.jsonwebtoken:jjwt-impl:0.12.3'
implementation 'io.jsonwebtoken:jjwt-jackson:0.12.3'

// redis
implementation 'org.springframework.boot:spring-boot-starter-data-redis'

// SWAGGER
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.6.0'
// OAUTH2
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-resource-server'
implementation 'jakarta.servlet:jakarta.servlet-api:6.0.0'

// DB
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtimeOnly 'com.mysql:mysql-connector-j'

// SWAGGER
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.6.0'

// Redis
implementation 'org.springframework.boot:spring-boot-starter-data-redis'

// 디스코드 웹훅
implementation 'com.github.napstr:logback-discord-appender:1.0.0'

Expand All @@ -78,12 +83,14 @@ dependencies {

// test
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation platform("org.testcontainers:testcontainers-bom:1.20.1")
testImplementation "org.testcontainers:junit-jupiter"
testImplementation "org.testcontainers:testcontainers"

testImplementation 'org.junit.jupiter:junit-jupiter-api'
testImplementation 'org.junit.jupiter:junit-jupiter-engine'
testImplementation 'org.mockito:mockito-core'
testImplementation 'org.mockito:mockito-junit-jupiter'
testImplementation 'org.testcontainers:junit-jupiter'
testImplementation 'com.redis:testcontainers-redis:2.2.4'
}

test {
useJUnitPlatform()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ public class MenuService {
@Transactional
public MenuCreateResponse createMenu(MenuCreateRequest request, MemberDetails memberDetails) {
// 사용자 정보 가져오기
User user = getUser(memberDetails);
User user = memberDetails.getUser();
// 사용자 역할이 SUPER_ADMIN이거나, storeId가 일치하는지 확인
validateViewAuthorization(user, request.getStoreId());

Expand All @@ -61,7 +61,7 @@ public MenuCreateResponse createMenu(MenuCreateRequest request, MemberDetails me
@Transactional(readOnly = true)
public MenuReadResponse getAllMenusByStoreId(Long storeId, MemberDetails memberDetails) {
// 사용자 정보 가져오기
User user = getUser(memberDetails);
User user = memberDetails.getUser();
// 사용자 역할이 SUPER_ADMIN이거나, storeId가 일치하는지 확인
validateViewAuthorization(user, storeId);

Expand All @@ -86,7 +86,7 @@ public MenuReadDto getMenuById(Long storeId, Long menuId, MemberDetails memberDe
throw new MenuParamEmptyException();
}
// 사용자 정보 가져오기
User user = getUser(memberDetails);
User user = memberDetails.getUser();
Menu menu = getMenu(menuId);
// 사용자 역할이 SUPER_ADMIN이거나, storeId가 일치하는지 확인
validateViewAuthorization(user, menu.getStoreId());
Expand All @@ -102,7 +102,7 @@ public MenuReadDto getMenuById(Long storeId, Long menuId, MemberDetails memberDe

@Transactional
public MenuReadDto updateMenu(Long menuId, MenuUpdateRequest request, MemberDetails memberDetails) {
User user = getUser(memberDetails);
User user = memberDetails.getUser();
Menu menu = getMenu(menuId);

validateUpdateAuthorization(user, menu.getStoreId());
Expand Down Expand Up @@ -168,7 +168,7 @@ public String updateMenuSortOrder(List<MenuSortUpdateRequest> requests, MemberDe

@Transactional
public String deleteMenu(Long menuId, MemberDetails memberDetails) {
User user = getUser(memberDetails);
User user = memberDetails.getUser();
Menu menu = getMenu(menuId);

validateDeleteAuthorization(user, menu.getStoreId());
Expand Down Expand Up @@ -210,9 +210,9 @@ private void validateDeleteAuthorization(User user, Long storeId) {
}
}

private User getUser(MemberDetails memberDetails) {
return userRepository.findById(memberDetails.getId()).orElseThrow(UserNotFoundException::new);
}
// private User getUser(MemberDetails memberDetails) {
// return userRepository.findById(memberDetails.getId()).orElseThrow(UserNotFoundException::new);
// }
Comment on lines +213 to +215
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OAuth 측에서 예외 터진다면 해당 로직 삭제해도 될 것 같습니다


private Menu getMenu(Long menuId) {
return menuRepository.findByIdAndDeletedFalse(menuId)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,11 @@
import com.nowait.nowaitevent.order.event.OrderCancelledEvent;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

@Service
@RequiredArgsConstructor
@Slf4j
public class OrderService {
private final OrderRepository orderRepository;
private final StatisticCustomRepository statisticCustomRepository;
Expand All @@ -46,24 +48,29 @@ public class OrderService {

@Transactional(readOnly = true)
public List<OrderResponseDto> findAllOrders(Long storeId, MemberDetails memberDetails) {
User user = getUser(memberDetails);
log.info("getUser 호출 전");
User user = memberDetails.getUser();
log.info("getUser 호출 완료");
storeRepository.findByStoreIdAndDeletedFalse(storeId).orElseThrow(StoreNotFoundException::new);
log.info("Store 조회 완료");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

log.info 배포때는 없어도 될 것 같습니다!


validateViewAuthorization(user, storeId);

LocalDate today = LocalDate.now(ZoneId.of("Asia/Seoul"));
LocalDateTime startDateTime = today.atStartOfDay();
LocalDateTime endDateTime = today.plusDays(1).atStartOfDay();
return orderRepository.findAllByStore_StoreIdAndCreatedAtBetween(storeId, startDateTime, endDateTime)
List<OrderResponseDto> order = orderRepository.findAllByStore_StoreIdAndCreatedAtBetween(storeId, startDateTime, endDateTime)
.stream()
.map(OrderResponseDto::fromEntity)
.collect(Collectors.toList());
log.info("Order 조회 완료");
return order;
}

@Transactional
public OrderStatusUpdateResponseDto updateOrderStatus(Long orderId, OrderStatus newStatus,
MemberDetails memberDetails) {
User user = getUser(memberDetails);
User user = memberDetails.getUser();
UserOrder userOrder = orderRepository.findById(orderId).orElseThrow(OrderNotFoundException::new);
Long storeId = userOrder.getStore().getStoreId();

Expand Down Expand Up @@ -92,7 +99,7 @@ public OrderStatusUpdateResponseDto updateOrderStatus(Long orderId, OrderStatus

@Transactional
public OrderStatusUpdateResponseDto cancelOrder(Long orderId, CancelOrderRequest cancelOrderRequest, MemberDetails memberDetails) {
User user = getUser(memberDetails);
User user = memberDetails.getUser();
UserOrder userOrder = orderRepository.findById(orderId).orElseThrow(OrderNotFoundException::new);

validateUpdateAuthorization(user, userOrder.getStore().getStoreId());
Expand All @@ -113,7 +120,7 @@ public OrderStatusUpdateResponseDto cancelOrder(Long orderId, CancelOrderRequest

@Transactional(readOnly = true)
public OrderSalesSumDetail getSaleSumByStoreId(MemberDetails memberDetails, LocalDate date) {
User user = getUser(memberDetails);
User user = memberDetails.getUser();
Long storeId = user.getStoreId();

validateViewAuthorization(user, storeId);
Expand All @@ -124,7 +131,7 @@ public OrderSalesSumDetail getSaleSumByStoreId(MemberDetails memberDetails, Loca
// 현재는 사용하지 않음. 향후 관리자 통계 페이지 확장 시 활용 가능
@Transactional(readOnly = true)
public List<TopSalesStoresDetail> getTop5StoresBySalesToday(MemberDetails memberDetails) {
User user = getUser(memberDetails);
User user = memberDetails.getUser();
Long storeId = user.getStoreId();

validateUpdateAuthorization(user, storeId);
Expand All @@ -146,10 +153,11 @@ private void validateUpdateAuthorization(User user, Long storeId) {
}
}

private User getUser(MemberDetails memberDetails) {
if (memberDetails == null) {
throw new OrderViewUnauthorizedException();
}
return userRepository.findById(memberDetails.getId()).orElseThrow(UserNotFoundException::new);
}
// private User getUser(MemberDetails memberDetails) {
// if (memberDetails == null) {
// throw new OrderViewUnauthorizedException();
// }
// // findById로 Select 쿼리 나가는 것을 getReferenceById로 변경하여 방지
// return userRepository.getReferenceById(memberDetails.getId());
// }
}
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ public class ReservationService {
//TODO 성능 비교를 위해 남겨둔 로직
@Transactional(readOnly = true)
public ReservationStatusSummaryDto getReservationListByStoreId(Long storeId, MemberDetails memberDetails) {
User user = getUser(memberDetails);
User user = memberDetails.getUser();
validateViewAuthorization(user, storeId);
List<Reservation> reservations = reservationRepository.findAllByStore_StoreIdOrderByRequestedAtAsc(storeId);

Expand Down Expand Up @@ -96,7 +96,7 @@ public ReservationStatusSummaryDto getReservationListByStoreId(Long storeId, Mem
@Transactional
public CallGetResponseDto updateReservationStatus(Long reservationId, ReservationStatusUpdateRequestDto requestDto,
MemberDetails memberDetails) {
User user = getUser(memberDetails);
User user = memberDetails.getUser();
Reservation reservation = reservationRepository.findById(reservationId)
.orElseThrow(ReservationNotFoundException::new);
validateUpdateAuthorization(user, reservation.getStore().getStoreId());
Expand Down Expand Up @@ -195,7 +195,7 @@ public List<WaitingUserResponse> getAllWaitingUserDetails(Long storeId) {
// 완료 or 취소 처리된 대기 리스트 조회
@Transactional(readOnly = true)
public List<WaitingUserResponse> getCompletedWaitingUserDetails(Long storeId, MemberDetails memberDetails) {
User user = getUser(memberDetails);
User user = memberDetails.getUser();
validateViewAuthorization(user, storeId);
List<Reservation> reservations = findTodayWaiting(storeId);

Expand All @@ -214,7 +214,7 @@ public List<WaitingUserResponse> getCompletedWaitingUserDetails(Long storeId, Me
public EntryStatusResponseDto processEntryStatus(Long storeId, String userId, MemberDetails member,
ReservationStatus newStatus) {

User user = getUser(member);
User user = member.getUser();
validateUpdateAuthorization(user, storeId);

if (userId == null || userId.isBlank()) {
Expand Down Expand Up @@ -364,7 +364,7 @@ public EntryStatusResponseDto processEntryStatus(Long storeId, String userId, Me
public EntryStatusResponseDto processEntryStatusByReservationNumber(Long storeId, String reservationNumber,
MemberDetails member, ReservationStatus newStatus) {

User user = getUser(member);
User user = member.getUser();
validateUpdateAuthorization(user, storeId);

if (reservationNumber == null || reservationNumber.isBlank()) {
Expand Down Expand Up @@ -542,11 +542,11 @@ private void validateUpdateAuthorization(User user, Long storeId) {
}
}

private User getUser(MemberDetails memberDetails) {
if (memberDetails == null) {
throw new ReservationViewUnauthorizedException();
}
return userRepository.findById(memberDetails.getId()).orElseThrow(UserNotFoundException::new);
}
// private User getUser(MemberDetails memberDetails) {
// if (memberDetails == null) {
// throw new ReservationViewUnauthorizedException();
// }
// return userRepository.findById(memberDetails.getId()).orElseThrow(UserNotFoundException::new);
// }
}

Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ public StoreCreateResponse createStore(StoreCreateRequest request) {
@Transactional(readOnly = true)
public StoreDetailReadResponse getStoreByStoreId(Long storeId, MemberDetails memberDetails) {
if (storeId == null) throw new StoreParamEmptyException();
User user = getUser(memberDetails);
User user = memberDetails.getUser();
validateViewAuthorization(user, storeId);

Store store = storeRepository.findByStoreIdAndDeletedFalse(storeId)
Expand All @@ -82,7 +82,7 @@ public StoreDetailReadResponse getStoreByStoreId(Long storeId, MemberDetails mem
public StoreReadDto updateStore(Long storeId, StoreUpdateRequest request, MemberDetails memberDetails) {
if (storeId == null || request == null) throw new StoreParamEmptyException();

User user = getUser(memberDetails);
User user = memberDetails.getUser();
validateUpdateAuthorization(user, storeId);

Store store = storeRepository.findByStoreIdAndDeletedFalse(storeId)
Expand Down Expand Up @@ -115,7 +115,7 @@ public String deleteStore(Long storeId, MemberDetails memberDetails) {
throw new StoreParamEmptyException();
}

User user = getUser(memberDetails);
User user = memberDetails.getUser();
validateUpdateAuthorization(user, storeId);

Store store = storeRepository.findByStoreIdAndDeletedFalse(storeId)
Expand Down Expand Up @@ -150,10 +150,10 @@ private void validateUpdateAuthorization(User user, Long storeId) {
}
}

private User getUser(MemberDetails memberDetails) {
if (memberDetails == null) {
throw new StoreViewUnauthorizedException();
}
return userRepository.findById(memberDetails.getId()).orElseThrow(UserNotFoundException::new);
}
// private User getUser(MemberDetails memberDetails) {
// if (memberDetails == null) {
// throw new StoreViewUnauthorizedException();
// }
// return userRepository.findById(memberDetails.getId()).orElseThrow(UserNotFoundException::new);
// }
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,18 @@
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PatchMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.nowait.applicationadmin.storePayment.service.StorePaymentService;
import com.nowait.applicationadmin.storepayment.dto.StorePaymentCreateRequest;
import com.nowait.applicationadmin.storepayment.dto.StorePaymentCreateResponse;
import com.nowait.applicationadmin.storepayment.dto.StorePaymentReadDto;
import com.nowait.applicationadmin.storepayment.dto.StorePaymentUpdateRequest;
import com.nowait.applicationadmin.storepayment.service.StorePaymentService;
import com.nowait.common.api.ApiUtils;
import com.nowait.domaincorerdb.user.entity.MemberDetails;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.nowait.applicationadmin.storepayment.service;
package com.nowait.applicationadmin.storePayment.service;

import java.util.Optional;

Expand Down
Loading