SysConfigServiceImpl.java 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. package com.ruoyi.system.service.impl;
  2. import cn.hutool.core.convert.Convert;
  3. import cn.hutool.core.util.ObjectUtil;
  4. import com.baomidou.dynamic.datasource.annotation.DS;
  5. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  6. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  7. import com.ruoyi.common.constant.CacheNames;
  8. import com.ruoyi.common.constant.UserConstants;
  9. import com.ruoyi.common.core.domain.PageQuery;
  10. import com.ruoyi.common.core.page.TableDataInfo;
  11. import com.ruoyi.common.core.service.ConfigService;
  12. import com.ruoyi.common.exception.ServiceException;
  13. import com.ruoyi.common.utils.StringUtils;
  14. import com.ruoyi.common.utils.redis.CacheUtils;
  15. import com.ruoyi.system.domain.SysConfig;
  16. import com.ruoyi.system.mapper.SysConfigMapper;
  17. import com.ruoyi.system.service.ISysConfigService;
  18. import lombok.RequiredArgsConstructor;
  19. import org.springframework.cache.annotation.CachePut;
  20. import org.springframework.cache.annotation.Cacheable;
  21. import org.springframework.stereotype.Service;
  22. import java.util.Arrays;
  23. import java.util.List;
  24. import java.util.Map;
  25. /**
  26. * 参数配置 服务层实现
  27. *
  28. * @author Lion Li
  29. */
  30. @RequiredArgsConstructor
  31. @Service
  32. public class SysConfigServiceImpl implements ISysConfigService, ConfigService {
  33. private final SysConfigMapper baseMapper;
  34. @Override
  35. public TableDataInfo<SysConfig> selectPageConfigList(SysConfig config, PageQuery pageQuery) {
  36. Map<String, Object> params = config.getParams();
  37. LambdaQueryWrapper<SysConfig> lqw = new LambdaQueryWrapper<SysConfig>()
  38. .like(StringUtils.isNotBlank(config.getConfigName()), SysConfig::getConfigName, config.getConfigName())
  39. .eq(StringUtils.isNotBlank(config.getConfigType()), SysConfig::getConfigType, config.getConfigType())
  40. .like(StringUtils.isNotBlank(config.getConfigKey()), SysConfig::getConfigKey, config.getConfigKey())
  41. .between(params.get("beginTime") != null && params.get("endTime") != null,
  42. SysConfig::getCreateTime, params.get("beginTime"), params.get("endTime"));
  43. Page<SysConfig> page = baseMapper.selectPage(pageQuery.build(), lqw);
  44. return TableDataInfo.build(page);
  45. }
  46. /**
  47. * 查询参数配置信息
  48. *
  49. * @param configId 参数配置ID
  50. * @return 参数配置信息
  51. */
  52. @Override
  53. @DS("master")
  54. public SysConfig selectConfigById(Long configId) {
  55. return baseMapper.selectById(configId);
  56. }
  57. /**
  58. * 根据键名查询参数配置信息
  59. *
  60. * @param configKey 参数key
  61. * @return 参数键值
  62. */
  63. @Cacheable(cacheNames = CacheNames.SYS_CONFIG, key = "#configKey")
  64. @Override
  65. public String selectConfigByKey(String configKey) {
  66. SysConfig retConfig = baseMapper.selectOne(new LambdaQueryWrapper<SysConfig>()
  67. .eq(SysConfig::getConfigKey, configKey));
  68. if (ObjectUtil.isNotNull(retConfig)) {
  69. return retConfig.getConfigValue();
  70. }
  71. return StringUtils.EMPTY;
  72. }
  73. /**
  74. * 获取验证码开关
  75. *
  76. * @return true开启,false关闭
  77. */
  78. @Override
  79. public boolean selectCaptchaEnabled() {
  80. String captchaEnabled = selectConfigByKey("sys.account.captchaEnabled");
  81. if (StringUtils.isEmpty(captchaEnabled)) {
  82. return true;
  83. }
  84. return Convert.toBool(captchaEnabled);
  85. }
  86. /**
  87. * 查询参数配置列表
  88. *
  89. * @param config 参数配置信息
  90. * @return 参数配置集合
  91. */
  92. @Override
  93. public List<SysConfig> selectConfigList(SysConfig config) {
  94. Map<String, Object> params = config.getParams();
  95. LambdaQueryWrapper<SysConfig> lqw = new LambdaQueryWrapper<SysConfig>()
  96. .like(StringUtils.isNotBlank(config.getConfigName()), SysConfig::getConfigName, config.getConfigName())
  97. .eq(StringUtils.isNotBlank(config.getConfigType()), SysConfig::getConfigType, config.getConfigType())
  98. .like(StringUtils.isNotBlank(config.getConfigKey()), SysConfig::getConfigKey, config.getConfigKey())
  99. .between(params.get("beginTime") != null && params.get("endTime") != null,
  100. SysConfig::getCreateTime, params.get("beginTime"), params.get("endTime"));
  101. return baseMapper.selectList(lqw);
  102. }
  103. /**
  104. * 新增参数配置
  105. *
  106. * @param config 参数配置信息
  107. * @return 结果
  108. */
  109. @CachePut(cacheNames = CacheNames.SYS_CONFIG, key = "#config.configKey")
  110. @Override
  111. public String insertConfig(SysConfig config) {
  112. int row = baseMapper.insert(config);
  113. if (row > 0) {
  114. return config.getConfigValue();
  115. }
  116. throw new ServiceException("操作失败");
  117. }
  118. /**
  119. * 修改参数配置
  120. *
  121. * @param config 参数配置信息
  122. * @return 结果
  123. */
  124. @CachePut(cacheNames = CacheNames.SYS_CONFIG, key = "#config.configKey")
  125. @Override
  126. public String updateConfig(SysConfig config) {
  127. int row = 0;
  128. if (config.getConfigId() != null) {
  129. row = baseMapper.updateById(config);
  130. } else {
  131. row = baseMapper.update(config, new LambdaQueryWrapper<SysConfig>()
  132. .eq(SysConfig::getConfigKey, config.getConfigKey()));
  133. }
  134. if (row > 0) {
  135. return config.getConfigValue();
  136. }
  137. throw new ServiceException("操作失败");
  138. }
  139. /**
  140. * 批量删除参数信息
  141. *
  142. * @param configIds 需要删除的参数ID
  143. */
  144. @Override
  145. public void deleteConfigByIds(Long[] configIds) {
  146. for (Long configId : configIds) {
  147. SysConfig config = selectConfigById(configId);
  148. if (StringUtils.equals(UserConstants.YES, config.getConfigType())) {
  149. throw new ServiceException(String.format("内置参数【%1$s】不能删除 ", config.getConfigKey()));
  150. }
  151. CacheUtils.evict(CacheNames.SYS_CONFIG, config.getConfigKey());
  152. }
  153. baseMapper.deleteBatchIds(Arrays.asList(configIds));
  154. }
  155. /**
  156. * 加载参数缓存数据
  157. */
  158. @Override
  159. public void loadingConfigCache() {
  160. List<SysConfig> configsList = selectConfigList(new SysConfig());
  161. configsList.forEach(config ->
  162. CacheUtils.put(CacheNames.SYS_CONFIG, config.getConfigKey(), config.getConfigValue()));
  163. }
  164. /**
  165. * 清空参数缓存数据
  166. */
  167. @Override
  168. public void clearConfigCache() {
  169. CacheUtils.clear(CacheNames.SYS_CONFIG);
  170. }
  171. /**
  172. * 重置参数缓存数据
  173. */
  174. @Override
  175. public void resetConfigCache() {
  176. clearConfigCache();
  177. loadingConfigCache();
  178. }
  179. /**
  180. * 校验参数键名是否唯一
  181. *
  182. * @param config 参数配置信息
  183. * @return 结果
  184. */
  185. @Override
  186. public String checkConfigKeyUnique(SysConfig config) {
  187. Long configId = ObjectUtil.isNull(config.getConfigId()) ? -1L : config.getConfigId();
  188. SysConfig info = baseMapper.selectOne(new LambdaQueryWrapper<SysConfig>().eq(SysConfig::getConfigKey, config.getConfigKey()));
  189. if (ObjectUtil.isNotNull(info) && info.getConfigId().longValue() != configId.longValue()) {
  190. return UserConstants.NOT_UNIQUE;
  191. }
  192. return UserConstants.UNIQUE;
  193. }
  194. /**
  195. * 根据参数 key 获取参数值
  196. *
  197. * @param configKey 参数 key
  198. * @return 参数值
  199. */
  200. @Override
  201. public String getConfigValue(String configKey) {
  202. return selectConfigByKey(configKey);
  203. }
  204. }