package com.izouma.nineth.service; import com.izouma.nineth.domain.SysConfig; import com.izouma.nineth.dto.PageQuery; import com.izouma.nineth.exception.BusinessException; import com.izouma.nineth.repo.SysConfigRepo; import com.izouma.nineth.utils.JpaUtils; import lombok.AllArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Page; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.time.LocalTime; import java.time.format.DateTimeFormatter; @Service @AllArgsConstructor public class SysConfigService { private SysConfigRepo sysConfigRepo; public Page all(PageQuery pageQuery) { return sysConfigRepo.findAll(JpaUtils.toSpecification(pageQuery, SysConfig.class), JpaUtils.toPageRequest(pageQuery)); } @Cacheable("SysConfigServiceGetBigDecimal") public BigDecimal getBigDecimal(String name) { try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } return sysConfigRepo.findByName(name).map(sysConfig -> new BigDecimal(sysConfig.getValue())) .orElse(BigDecimal.ZERO); } @Cacheable("SysConfigServiceGetTime") public LocalTime getTime(String name) { String str = sysConfigRepo.findByName(name).map(SysConfig::getValue) .orElseThrow(new BusinessException("配置不存在")); DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("HH:mm"); return LocalTime.from(dateTimeFormatter.parse(str)); } @Cacheable("SysConfigServiceGetBoolean") public boolean getBoolean(String name) { String str = sysConfigRepo.findByName(name).map(SysConfig::getValue) .orElseThrow(new BusinessException("配置不存在")); return str.equals("1"); } @Cacheable("SysConfigServiceGetInt") public int getInt(String name) { String str = sysConfigRepo.findByName(name).map(SysConfig::getValue) .orElseThrow(new BusinessException("配置不存在")); return Integer.parseInt(str); } }