123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227 |
- package com.ruoyi.system.service.impl;
- import cn.hutool.core.convert.Convert;
- import cn.hutool.core.util.ObjectUtil;
- import com.baomidou.dynamic.datasource.annotation.DS;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.ruoyi.common.constant.CacheNames;
- import com.ruoyi.common.constant.UserConstants;
- import com.ruoyi.common.core.domain.PageQuery;
- import com.ruoyi.common.core.page.TableDataInfo;
- import com.ruoyi.common.core.service.ConfigService;
- import com.ruoyi.common.exception.ServiceException;
- import com.ruoyi.common.utils.StringUtils;
- import com.ruoyi.common.utils.redis.CacheUtils;
- import com.ruoyi.common.utils.spring.SpringUtils;
- import com.ruoyi.system.domain.SysConfig;
- import com.ruoyi.system.mapper.SysConfigMapper;
- import com.ruoyi.system.service.ISysConfigService;
- import lombok.RequiredArgsConstructor;
- import org.springframework.cache.annotation.CachePut;
- import org.springframework.cache.annotation.Cacheable;
- import org.springframework.stereotype.Service;
- import java.util.Arrays;
- import java.util.List;
- import java.util.Map;
- /**
- * 参数配置 服务层实现
- *
- * @author Lion Li
- */
- @RequiredArgsConstructor
- @Service
- public class SysConfigServiceImpl implements ISysConfigService, ConfigService {
- private final SysConfigMapper baseMapper;
- @Override
- public TableDataInfo<SysConfig> selectPageConfigList(SysConfig config, PageQuery pageQuery) {
- Map<String, Object> params = config.getParams();
- LambdaQueryWrapper<SysConfig> lqw = new LambdaQueryWrapper<SysConfig>()
- .like(StringUtils.isNotBlank(config.getConfigName()), SysConfig::getConfigName, config.getConfigName())
- .eq(StringUtils.isNotBlank(config.getConfigType()), SysConfig::getConfigType, config.getConfigType())
- .like(StringUtils.isNotBlank(config.getConfigKey()), SysConfig::getConfigKey, config.getConfigKey())
- .between(params.get("beginTime") != null && params.get("endTime") != null,
- SysConfig::getCreateTime, params.get("beginTime"), params.get("endTime"));
- Page<SysConfig> page = baseMapper.selectPage(pageQuery.build(), lqw);
- return TableDataInfo.build(page);
- }
- /**
- * 查询参数配置信息
- *
- * @param configId 参数配置ID
- * @return 参数配置信息
- */
- @Override
- @DS("master")
- public SysConfig selectConfigById(Long configId) {
- return baseMapper.selectById(configId);
- }
- /**
- * 根据键名查询参数配置信息
- *
- * @param configKey 参数key
- * @return 参数键值
- */
- @Cacheable(cacheNames = CacheNames.SYS_CONFIG, key = "#configKey")
- @Override
- public String selectConfigByKey(String configKey) {
- SysConfig retConfig = baseMapper.selectOne(new LambdaQueryWrapper<SysConfig>()
- .eq(SysConfig::getConfigKey, configKey));
- if (ObjectUtil.isNotNull(retConfig)) {
- return retConfig.getConfigValue();
- }
- return StringUtils.EMPTY;
- }
- /**
- * 获取验证码开关
- *
- * @return true开启,false关闭
- */
- @Override
- public boolean selectCaptchaEnabled() {
- String captchaEnabled = SpringUtils.getAopProxy(this).selectConfigByKey("sys.account.captchaEnabled");
- if (StringUtils.isEmpty(captchaEnabled)) {
- return true;
- }
- return Convert.toBool(captchaEnabled);
- }
- /**
- * 查询参数配置列表
- *
- * @param config 参数配置信息
- * @return 参数配置集合
- */
- @Override
- public List<SysConfig> selectConfigList(SysConfig config) {
- Map<String, Object> params = config.getParams();
- LambdaQueryWrapper<SysConfig> lqw = new LambdaQueryWrapper<SysConfig>()
- .like(StringUtils.isNotBlank(config.getConfigName()), SysConfig::getConfigName, config.getConfigName())
- .eq(StringUtils.isNotBlank(config.getConfigType()), SysConfig::getConfigType, config.getConfigType())
- .like(StringUtils.isNotBlank(config.getConfigKey()), SysConfig::getConfigKey, config.getConfigKey())
- .between(params.get("beginTime") != null && params.get("endTime") != null,
- SysConfig::getCreateTime, params.get("beginTime"), params.get("endTime"));
- return baseMapper.selectList(lqw);
- }
- /**
- * 新增参数配置
- *
- * @param config 参数配置信息
- * @return 结果
- */
- @CachePut(cacheNames = CacheNames.SYS_CONFIG, key = "#config.configKey")
- @Override
- public String insertConfig(SysConfig config) {
- int row = baseMapper.insert(config);
- if (row > 0) {
- return config.getConfigValue();
- }
- throw new ServiceException("操作失败");
- }
- /**
- * 修改参数配置
- *
- * @param config 参数配置信息
- * @return 结果
- */
- @CachePut(cacheNames = CacheNames.SYS_CONFIG, key = "#config.configKey")
- @Override
- public String updateConfig(SysConfig config) {
- int row = 0;
- if (config.getConfigId() != null) {
- SysConfig temp = baseMapper.selectById(config.getConfigId());
- if (!StringUtils.equals(temp.getConfigKey(), config.getConfigKey())) {
- CacheUtils.evict(CacheNames.SYS_CONFIG, temp.getConfigKey());
- }
- row = baseMapper.updateById(config);
- } else {
- row = baseMapper.update(config, new LambdaQueryWrapper<SysConfig>()
- .eq(SysConfig::getConfigKey, config.getConfigKey()));
- }
- if (row > 0) {
- return config.getConfigValue();
- }
- throw new ServiceException("操作失败");
- }
- /**
- * 批量删除参数信息
- *
- * @param configIds 需要删除的参数ID
- */
- @Override
- public void deleteConfigByIds(Long[] configIds) {
- for (Long configId : configIds) {
- SysConfig config = selectConfigById(configId);
- if (StringUtils.equals(UserConstants.YES, config.getConfigType())) {
- throw new ServiceException(String.format("内置参数【%1$s】不能删除 ", config.getConfigKey()));
- }
- CacheUtils.evict(CacheNames.SYS_CONFIG, config.getConfigKey());
- }
- baseMapper.deleteBatchIds(Arrays.asList(configIds));
- }
- /**
- * 加载参数缓存数据
- */
- @Override
- public void loadingConfigCache() {
- List<SysConfig> configsList = selectConfigList(new SysConfig());
- configsList.forEach(config ->
- CacheUtils.put(CacheNames.SYS_CONFIG, config.getConfigKey(), config.getConfigValue()));
- }
- /**
- * 清空参数缓存数据
- */
- @Override
- public void clearConfigCache() {
- CacheUtils.clear(CacheNames.SYS_CONFIG);
- }
- /**
- * 重置参数缓存数据
- */
- @Override
- public void resetConfigCache() {
- clearConfigCache();
- loadingConfigCache();
- }
- /**
- * 校验参数键名是否唯一
- *
- * @param config 参数配置信息
- * @return 结果
- */
- @Override
- public boolean checkConfigKeyUnique(SysConfig config) {
- long configId = ObjectUtil.isNull(config.getConfigId()) ? -1L : config.getConfigId();
- SysConfig info = baseMapper.selectOne(new LambdaQueryWrapper<SysConfig>().eq(SysConfig::getConfigKey, config.getConfigKey()));
- if (ObjectUtil.isNotNull(info) && info.getConfigId() != configId) {
- return false;
- }
- return true;
- }
- /**
- * 根据参数 key 获取参数值
- *
- * @param configKey 参数 key
- * @return 参数值
- */
- @Override
- public String getConfigValue(String configKey) {
- return SpringUtils.getAopProxy(this).selectConfigByKey(configKey);
- }
- }
|