CustomerMembershipQueryServiceImpl.java
package com.deveagles.be15_deveagles_be.features.membership.query.service.impl;
import com.deveagles.be15_deveagles_be.common.dto.Pagination;
import com.deveagles.be15_deveagles_be.features.membership.query.dto.request.CustomerMemebershipFilterRequest;
import com.deveagles.be15_deveagles_be.features.membership.query.dto.response.*;
import com.deveagles.be15_deveagles_be.features.membership.query.mapper.CustomerMembershipMapper;
import com.deveagles.be15_deveagles_be.features.membership.query.service.CustomerMembershipQueryService;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@Service
@RequiredArgsConstructor
public class CustomerMembershipQueryServiceImpl implements CustomerMembershipQueryService {
private final CustomerMembershipMapper customerMembershipMapper;
@Override
public CustomerMembershipResult getCustomerMembershipList(Long shopId, int page, int size) {
int offset = (page - 1) * size;
List<CustomerMembershipResponse> list =
customerMembershipMapper.findAllCustomerMemberships(shopId, offset, size);
// 고객별 session pass 추가 조회
for (CustomerMembershipResponse customer : list) {
List<SessionPassInfo> sessionPasses =
customerMembershipMapper.findSessionPassesByCustomerId(customer.getCustomerId());
customer.setSessionPasses(sessionPasses);
}
long totalItems = customerMembershipMapper.countAllCustomerMemberships(shopId);
Pagination pagination =
Pagination.builder()
.currentPage(page)
.totalPages((int) Math.ceil((double) totalItems / size))
.totalItems(totalItems)
.build();
return CustomerMembershipResult.builder().list(list).pagination(pagination).build();
}
@Override
public CustomerMembershipResult getCustomerMembershipList(
Long shopId, CustomerMemebershipFilterRequest filter) {
int offset = filter.getOffset();
List<CustomerMembershipResponse> list =
customerMembershipMapper.findCustomerMemberships(shopId, filter, offset);
for (CustomerMembershipResponse customer : list) {
List<SessionPassInfo> sessionPasses =
customerMembershipMapper.findSessionPassesByCustomerId(customer.getCustomerId());
customer.setSessionPasses(sessionPasses);
}
long totalItems = customerMembershipMapper.countCustomerMemberships(shopId, filter);
Pagination pagination =
Pagination.builder()
.currentPage(filter.getPage())
.totalPages((int) Math.ceil((double) totalItems / filter.getSize()))
.totalItems(totalItems)
.build();
return CustomerMembershipResult.builder().list(list).pagination(pagination).build();
}
@Override
public List<CustomerPrepaidPassDetailInfo> getPrepaidPassDetailsByCustomerId(Long customerId) {
return customerMembershipMapper.findPrepaidPassDetailsByCustomerId(customerId);
}
@Override
public List<CustomerSessionPassDetailInfo> getSessionPassDetailsByCustomerId(Long customerId) {
return customerMembershipMapper.findSessionPassDetailsByCustomerId(customerId);
}
@Override
public CustomerExpiringMembershipResult getExpiredOrUsedUpMemberships(Long customerId) {
List<CustomerPrepaidPassDetailInfo> prepaidList =
customerMembershipMapper.findExpiredOrUsedUpPrepaidPasses(customerId);
List<CustomerSessionPassDetailInfo> sessionList =
customerMembershipMapper.findExpiredOrUsedUpSessionPasses(customerId);
return CustomerExpiringMembershipResult.builder().Plist(prepaidList).SList(sessionList).build();
}
}