SalesQueryServiceImpl.java

package com.deveagles.be15_deveagles_be.features.sales.query.service.impl;

import com.deveagles.be15_deveagles_be.common.dto.Pagination;
import com.deveagles.be15_deveagles_be.features.sales.query.dto.request.SalesListFilterRequest;
import com.deveagles.be15_deveagles_be.features.sales.query.dto.response.SalesListResponse;
import com.deveagles.be15_deveagles_be.features.sales.query.dto.response.SalesListResult;
import com.deveagles.be15_deveagles_be.features.sales.query.mapper.SalesMapper;
import com.deveagles.be15_deveagles_be.features.sales.query.service.SalesQueryService;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class SalesQueryServiceImpl implements SalesQueryService {

  private final SalesMapper salesMapper;

  @Override
  public SalesListResult getSalesList(Long shopId, SalesListFilterRequest filter) {
    // 1. 매출 목록 조회
    List<SalesListResponse> list = salesMapper.findSalesList(shopId, filter);

    // 2. 전체 건수 조회
    long totalItems = salesMapper.countSalesList(shopId, filter);

    // 3. 페이지 계산
    int totalPages = (int) Math.ceil((double) totalItems / filter.getSize());

    // 4. Pagination 객체 생성
    Pagination pagination =
        Pagination.builder()
            .currentPage(filter.getPage())
            .totalPages(totalPages)
            .totalItems(totalItems)
            .build();

    // 5. 결과 래핑해서 반환
    return SalesListResult.builder().list(list).pagination(pagination).build();
  }
}