SysConfigServiceImpl.java 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. package com.ruoyi.system.service.impl;
  2. import java.util.List;
  3. import javax.annotation.PostConstruct;
  4. import cn.hutool.cache.Cache;
  5. import cn.hutool.cache.CacheUtil;
  6. import com.ruoyi.common.annotation.DataSource;
  7. import com.ruoyi.common.constant.Constants;
  8. import com.ruoyi.common.constant.UserConstants;
  9. import com.ruoyi.common.core.text.Convert;
  10. import com.ruoyi.common.enums.DataSourceType;
  11. import com.ruoyi.common.exception.CustomException;
  12. import com.ruoyi.common.utils.StringUtils;
  13. import com.ruoyi.system.domain.SysConfig;
  14. import com.ruoyi.system.mapper.SysConfigMapper;
  15. import com.ruoyi.system.service.ISysConfigService;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.stereotype.Service;
  18. /**
  19. * 参数配置 服务层实现
  20. *
  21. * @author ruoyi
  22. */
  23. @Service
  24. public class SysConfigServiceImpl implements ISysConfigService
  25. {
  26. @Autowired
  27. private SysConfigMapper configMapper;
  28. private final Cache<String, Object> CACHE_OBJECT = CacheUtil.newLFUCache(500);
  29. /**
  30. * 项目启动时,初始化参数到缓存
  31. */
  32. @PostConstruct
  33. public void init()
  34. {
  35. List<SysConfig> configsList = configMapper.selectConfigList(new SysConfig());
  36. for (SysConfig config : configsList)
  37. {
  38. CACHE_OBJECT.put(getCacheKey(config.getConfigKey()), config.getConfigValue());
  39. //redisCache.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());
  40. }
  41. }
  42. /**
  43. * 查询参数配置信息
  44. *
  45. * @param configId 参数配置ID
  46. * @return 参数配置信息
  47. */
  48. @Override
  49. @DataSource(DataSourceType.MASTER)
  50. public SysConfig selectConfigById(Long configId)
  51. {
  52. SysConfig config = new SysConfig();
  53. config.setConfigId(configId);
  54. return configMapper.selectConfig(config);
  55. }
  56. /**
  57. * 根据键名查询参数配置信息
  58. *
  59. * @param configKey 参数key
  60. * @return 参数键值
  61. */
  62. @Override
  63. public String selectConfigByKey(String configKey)
  64. {
  65. String configValue = Convert.toStr(CACHE_OBJECT.get(getCacheKey(configKey)));
  66. if (StringUtils.isNotEmpty(configValue))
  67. {
  68. return configValue;
  69. }
  70. SysConfig config = new SysConfig();
  71. config.setConfigKey(configKey);
  72. SysConfig retConfig = configMapper.selectConfig(config);
  73. if (StringUtils.isNotNull(retConfig))
  74. {
  75. CACHE_OBJECT.put(getCacheKey(configKey), retConfig.getConfigValue());
  76. //redisCache.setCacheObject(getCacheKey(configKey), retConfig.getConfigValue());
  77. return retConfig.getConfigValue();
  78. }
  79. return StringUtils.EMPTY;
  80. }
  81. /**
  82. * 查询参数配置列表
  83. *
  84. * @param config 参数配置信息
  85. * @return 参数配置集合
  86. */
  87. @Override
  88. public List<SysConfig> selectConfigList(SysConfig config)
  89. {
  90. return configMapper.selectConfigList(config);
  91. }
  92. /**
  93. * 新增参数配置
  94. *
  95. * @param config 参数配置信息
  96. * @return 结果
  97. */
  98. @Override
  99. public int insertConfig(SysConfig config)
  100. {
  101. int row = configMapper.insertConfig(config);
  102. if (row > 0)
  103. {
  104. CACHE_OBJECT.put(getCacheKey(config.getConfigKey()), config.getConfigValue());
  105. //redisCache.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());
  106. }
  107. return row;
  108. }
  109. /**
  110. * 修改参数配置
  111. *
  112. * @param config 参数配置信息
  113. * @return 结果
  114. */
  115. @Override
  116. public int updateConfig(SysConfig config)
  117. {
  118. int row = configMapper.updateConfig(config);
  119. if (row > 0)
  120. {
  121. CACHE_OBJECT.put(getCacheKey(config.getConfigKey()), config.getConfigValue());
  122. //redisCache.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());
  123. }
  124. return row;
  125. }
  126. /**
  127. * 批量删除参数信息
  128. *
  129. * @param configIds 需要删除的参数ID
  130. * @return 结果
  131. */
  132. @Override
  133. public int deleteConfigByIds(Long[] configIds)
  134. {
  135. for (Long configId : configIds)
  136. {
  137. SysConfig config = selectConfigById(configId);
  138. if (StringUtils.equals(UserConstants.YES, config.getConfigType()))
  139. {
  140. throw new CustomException(String.format("内置参数【%1$s】不能删除 ", config.getConfigKey()));
  141. }
  142. }
  143. int count = configMapper.deleteConfigByIds(configIds);
  144. if (count > 0)
  145. {
  146. CACHE_OBJECT.clear();
  147. //Collection<String> keys = redisCache.keys(Constants.SYS_CONFIG_KEY + "*");
  148. //redisCache.deleteObject(keys);
  149. }
  150. return count;
  151. }
  152. /**
  153. * 清空缓存数据
  154. */
  155. @Override
  156. public void clearCache()
  157. {
  158. CACHE_OBJECT.clear();
  159. //Collection<String> keys = redisCache.keys(Constants.SYS_CONFIG_KEY + "*");
  160. //redisCache.deleteObject(keys);
  161. }
  162. /**
  163. * 校验参数键名是否唯一
  164. *
  165. * @param config 参数配置信息
  166. * @return 结果
  167. */
  168. @Override
  169. public String checkConfigKeyUnique(SysConfig config)
  170. {
  171. Long configId = StringUtils.isNull(config.getConfigId()) ? -1L : config.getConfigId();
  172. SysConfig info = configMapper.checkConfigKeyUnique(config.getConfigKey());
  173. if (StringUtils.isNotNull(info) && info.getConfigId().longValue() != configId.longValue())
  174. {
  175. return UserConstants.NOT_UNIQUE;
  176. }
  177. return UserConstants.UNIQUE;
  178. }
  179. /**
  180. * 设置cache key
  181. *
  182. * @param configKey 参数键
  183. * @return 缓存键key
  184. */
  185. private String getCacheKey(String configKey)
  186. {
  187. return Constants.SYS_CONFIG_KEY + configKey;
  188. }
  189. }