3f4bf95b57b3a9339066ce702e92ba41ba219c7a.svn-base 5.8 KB

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