package com.sinata.appointment.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.sinata.appointment.constants.CacheNames; import com.sinata.appointment.entity.BizHolidayDate; import com.sinata.appointment.mapper.BizHolidayDateMapper; import java.time.LocalDate; import java.util.Set; import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @Service @RequiredArgsConstructor public class BizHolidayDateCacheService { private final BizHolidayDateMapper bizHolidayDateMapper; @Cacheable(cacheNames = CacheNames.BIZ_HOLIDAY_DATE, key = "'" + CacheNames.BIZ_HOLIDAY_DATE_ALL_KEY + "'") public Set getAllEnabledHolidayDates() { return bizHolidayDateMapper.selectList( new LambdaQueryWrapper() .eq(BizHolidayDate::getDelFlag, 0) .orderByAsc(BizHolidayDate::getHolidayDate)) .stream() .map(BizHolidayDate::getHolidayDate) .filter(x -> x != null) .collect(Collectors.toSet()); } @CacheEvict(cacheNames = CacheNames.BIZ_HOLIDAY_DATE, key = "'" + CacheNames.BIZ_HOLIDAY_DATE_ALL_KEY + "'") public void evictAllHolidayDates() { // use spring cache eviction } }