diff --git a/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/store/dto/StoreDetailReadResponse.java b/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/store/dto/StoreDetailReadResponse.java new file mode 100644 index 00000000..09f4d853 --- /dev/null +++ b/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/store/dto/StoreDetailReadResponse.java @@ -0,0 +1,60 @@ +package com.nowait.applicationadmin.store.dto; + +import java.time.LocalDateTime; +import java.util.List; + +import com.nowait.domaincorerdb.store.entity.ImageType; +import com.nowait.domaincorerdb.store.entity.Store; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; + +@Getter +@AllArgsConstructor +@Builder +public class StoreDetailReadResponse { + private Long storeId; + private Long departmentId; + private String departmentName; + private String name; + private String location; + private String description; + private String noticeTitle; + private String noticeContent; + private String openTime; + private StoreImageUploadResponse profileImage; + private List bannerImages; + private Boolean isActive; + private Boolean deleted; + private LocalDateTime createdAt; + + public static StoreDetailReadResponse fromEntity(Store store, List allImages, String departmentName) { + + StoreImageUploadResponse profile = allImages.stream() + .filter(image -> image.getImageType() == ImageType.PROFILE) + .findFirst() + .orElse(null); + + List banners = allImages.stream() + .filter(image -> image.getImageType() == ImageType.BANNER) + .toList(); + + return StoreDetailReadResponse.builder() + .storeId(store.getStoreId()) + .departmentId(store.getDepartmentId()) + .departmentName(departmentName) + .name(store.getName()) + .location(store.getLocation()) + .description(store.getDescription()) + .noticeTitle(store.getNoticeTitle()) + .noticeContent(store.getNoticeContent()) + .openTime(store.getOpenTime()) + .profileImage(profile) + .bannerImages(banners) + .isActive(store.getIsActive()) + .deleted(store.getDeleted()) + .createdAt(store.getCreatedAt()) + .build(); + } +} diff --git a/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/store/service/StoreService.java b/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/store/service/StoreService.java index 5ae0dcdf..2772d8b8 100644 --- a/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/store/service/StoreService.java +++ b/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/store/service/StoreService.java @@ -2,6 +2,7 @@ import com.nowait.applicationadmin.store.dto.StoreCreateRequest; import com.nowait.applicationadmin.store.dto.StoreCreateResponse; +import com.nowait.applicationadmin.store.dto.StoreDetailReadResponse; import com.nowait.applicationadmin.store.dto.StoreReadDto; import com.nowait.applicationadmin.store.dto.StoreUpdateRequest; import com.nowait.domaincorerdb.user.entity.MemberDetails; @@ -10,7 +11,7 @@ public interface StoreService { StoreCreateResponse createStore(StoreCreateRequest request); - StoreReadDto getStoreByStoreId(Long storeId, MemberDetails memberDetails); + StoreDetailReadResponse getStoreByStoreId(Long storeId, MemberDetails memberDetails); StoreReadDto updateStore(Long storeId, StoreUpdateRequest request, MemberDetails memberDetails); diff --git a/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/store/service/StoreServiceImpl.java b/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/store/service/StoreServiceImpl.java index 0f01a759..abdc5837 100644 --- a/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/store/service/StoreServiceImpl.java +++ b/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/store/service/StoreServiceImpl.java @@ -8,10 +8,13 @@ import com.nowait.applicationadmin.store.dto.StoreCreateRequest; import com.nowait.applicationadmin.store.dto.StoreCreateResponse; +import com.nowait.applicationadmin.store.dto.StoreDetailReadResponse; import com.nowait.applicationadmin.store.dto.StoreImageUploadResponse; import com.nowait.applicationadmin.store.dto.StoreReadDto; import com.nowait.applicationadmin.store.dto.StoreUpdateRequest; import com.nowait.common.enums.Role; +import com.nowait.domaincorerdb.department.entity.Department; +import com.nowait.domaincorerdb.department.repository.DepartmentRepository; import com.nowait.domaincorerdb.reservation.exception.ReservationUpdateUnauthorizedException; import com.nowait.domaincorerdb.store.entity.Store; import com.nowait.domaincorerdb.store.entity.StoreImage; @@ -36,6 +39,7 @@ public class StoreServiceImpl implements StoreService { private final StoreRepository storeRepository; private final StoreImageRepository storeImageRepository; private final UserRepository userRepository; + private final DepartmentRepository departmentRepository; @Override @Transactional @@ -51,7 +55,7 @@ public StoreCreateResponse createStore(StoreCreateRequest request) { @Override @Transactional(readOnly = true) - public StoreReadDto getStoreByStoreId(Long storeId, MemberDetails memberDetails) { + public StoreDetailReadResponse getStoreByStoreId(Long storeId, MemberDetails memberDetails) { if (storeId == null) throw new StoreParamEmptyException(); User user = userRepository.findById(memberDetails.getId()).orElseThrow(UserNotFoundException::new); if (!Role.SUPER_ADMIN.equals(user.getRole()) && !user.getStoreId().equals(storeId)) { @@ -60,12 +64,16 @@ public StoreReadDto getStoreByStoreId(Long storeId, MemberDetails memberDetails) Store store = storeRepository.findByStoreIdAndDeletedFalse(storeId) .orElseThrow(StoreNotFoundException::new); + String departmentName = departmentRepository.findById(store.getDepartmentId()) + .map(Department::getName) + .orElse("Unknown Department"); + List images = storeImageRepository.findByStore(store); List imageDto = images.stream() .map(StoreImageUploadResponse::fromEntity) .toList(); - return StoreReadDto.fromEntity(store, imageDto); + return StoreDetailReadResponse.fromEntity(store, imageDto, departmentName); } @Override