feat: 增加系统配置

增加系统配置功能
This commit is contained in:
胡少翔
2024-07-30 16:21:10 +08:00
parent 01c1c0807e
commit 5677a6bba0
9 changed files with 166 additions and 21 deletions

View File

@@ -4,15 +4,25 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.youlai.system.common.constant.RedisKeyConstants;
import com.youlai.system.common.constant.SystemConstants;
import com.youlai.system.converter.SysConfigConverter;
import com.youlai.system.model.form.ConfigForm;
import com.youlai.system.model.query.ConfigPageQuery;
import com.youlai.system.security.util.SecurityUtils;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import com.youlai.system.mapper.SysConfigMapper;
import com.youlai.system.model.entity.SysConfig;
import com.youlai.system.model.vo.ConfigVO;
import com.youlai.system.service.SysConfigService;
import org.springframework.util.Assert;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 系统配置Service接口实现
@@ -28,6 +38,8 @@ public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig
private final SysConfigConverter sysConfigConverter;
private final RedisTemplate<String, Object> redisTemplate;
/**
* 分页查询系统配置
* @param configPageQuery 查询参数
@@ -37,7 +49,9 @@ public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig
public IPage<ConfigVO> page(ConfigPageQuery configPageQuery) {
Page<SysConfig> page = new Page<>(configPageQuery.getPageNum(), configPageQuery.getPageSize());
QueryWrapper<SysConfig> query = new QueryWrapper<>();
//TODO: 设置查询条件
if(StringUtils.isNotBlank(configPageQuery.getKeywords())) {
query.and(q -> q.like("sys_key", configPageQuery.getKeywords()).or().like("sys_name", configPageQuery.getKeywords()));
}
Page<SysConfig> pageList = this.page(page, query);
return sysConfigConverter.convertToPageVo(pageList);
}
@@ -49,10 +63,25 @@ public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig
*/
@Override
public boolean save(ConfigForm configForm) {
Assert.isTrue(super.count(new QueryWrapper<SysConfig>().eq("sys_key", configForm.getSysKey())) == 0, "配置key已存在");
SysConfig sysConfig = sysConfigConverter.toEntity(configForm);
sysConfig.setCreateBy(SecurityUtils.getUserId());
sysConfig.setIsDeleted(SystemConstants.NOT_DELETED_STATUS);
return this.save(sysConfig);
}
/**
* 获取系统配置表单数据
*
* @param id 系统配置ID
* @return
*/
@Override
public ConfigForm getConfigFormData(Long id) {
SysConfig entity = this.getById(id);
return sysConfigConverter.toForm(entity);
}
/**
* 编辑系统配置
* @param id 系统配置ID
@@ -61,8 +90,9 @@ public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig
*/
@Override
public boolean edit(Long id, ConfigForm configForm) {
//TODO 可能的校验
Assert.isTrue(super.count(new QueryWrapper<SysConfig>().eq("sys_key", configForm.getSysKey()).ne("id", id)) == 0, "配置key已存在");
SysConfig sysConfig = sysConfigConverter.toEntity(configForm);
sysConfig.setUpdateBy(SecurityUtils.getUserId());
return this.update(sysConfig, new QueryWrapper<SysConfig>().eq("id", id));
}
@@ -79,4 +109,33 @@ public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig
return false;
}
/**
* 刷新系统配置缓存
* @return 是否刷新成功
*/
@Override
public boolean refreshCache() {
redisTemplate.delete(RedisKeyConstants.SYSTEM_CONFIG_KEY);
List<SysConfig> list = this.list();
if (list != null) {
Map<String, String> map = list.stream().collect(Collectors.toMap(SysConfig::getSysKey, SysConfig::getSysValue));
redisTemplate.opsForHash().putAll(RedisKeyConstants.SYSTEM_CONFIG_KEY,map);
return true;
}
return false;
}
/**
* 获取系统配置
* @param key 配置key
* @return 配置value
*/
@Override
public Object getSystemConfig(String key) {
if(StringUtils.isNotBlank(key)){
return redisTemplate.opsForHash().get(RedisKeyConstants.SYSTEM_CONFIG_KEY, key);
}
return null;
}
}