package com.gkhy.exam.system.service.impl; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gkhy.exam.common.api.CommonPage; import com.gkhy.exam.common.constant.CacheConstant; import com.gkhy.exam.common.constant.UserConstant; import com.gkhy.exam.common.exception.ApiException; import com.gkhy.exam.common.utils.PageUtils; import com.gkhy.exam.common.utils.RedisUtils; import com.gkhy.exam.common.utils.StringUtils; import com.gkhy.exam.system.domain.SysConfig; import com.gkhy.exam.system.mapper.SysConfigMapper; import com.gkhy.exam.system.service.SysConfigService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; /** *

* 系统配置表 服务实现类 *

* * @author kzy * @since 2023-11-13 08:39:55 */ @Service public class SysConfigServiceImpl extends ServiceImpl implements SysConfigService { @Autowired private RedisUtils redisUtils; @Override public SysConfig selectConfigById(Long configId) { return baseMapper.selectById(configId); } @Override public String selectConfigByKey(String configKey) { String redisKey=getCacheKey(configKey); String configValue= (String) redisUtils.get(redisKey); if(StrUtil.isNotEmpty(configValue)){ return configValue; } SysConfig retConfig=baseMapper.getConfig(new SysConfig().setConfigKey(configKey)); if(ObjectUtil.isNotNull(retConfig)){ redisUtils.set(redisKey,retConfig.getConfigValue()); return retConfig.getConfigValue(); } return StrUtil.EMPTY; } @Override public boolean selectCaptchaEnabled() { String captchaEnabled = selectConfigByKey("sys.account.captchaEnabled"); if (StringUtils.isEmpty(captchaEnabled)) { return true; } return Convert.toBool(captchaEnabled); } @Override public CommonPage selectConfigList(SysConfig config) { PageUtils.startPage(); List sysConfigList=baseMapper.selectConfigList(config); return CommonPage.restPage(sysConfigList); } @Override public int insertConfig(SysConfig config) { int row=baseMapper.insert(config); if(row>0){ redisUtils.set(getCacheKey(config.getConfigKey()),config.getConfigValue()); } return row; } @Override public int updateConfig(SysConfig config) { SysConfig temp=selectConfigById(config.getId()); if(ObjectUtil.equals(temp.getConfigKey(),config.getConfigKey())){ redisUtils.del(getCacheKey(temp.getConfigKey())); } int row=baseMapper.updateById(config); if(row>0){ redisUtils.set(getCacheKey(config.getConfigKey()),config.getConfigValue()); } return row; } @Override public void deleteConfigByIds(Long[] configIds) { for(Long configId:configIds){ SysConfig config=selectConfigById(configId); if(ObjectUtil.equals(UserConstant.YES,config.getType())){ throw new ApiException(String.format("内置参数[%1$s]不能删除",config.getConfigKey())); } baseMapper.deleteById(configId); redisUtils.del(getCacheKey(config.getConfigKey())); } } @Override public void resetConfigCache() { } @Override public boolean checkConfigKeyUnique(SysConfig config) { return false; } private String getCacheKey(String configKey){ return CacheConstant.SYS_CONFIG_KEY+configKey; } }