You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
106 lines
3.4 KiB
106 lines
3.4 KiB
package com.wok.supportbot.service;
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
import com.wok.supportbot.dao.SystemConfigMapper;
|
|
import com.wok.supportbot.entity.SystemConfig;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
|
|
/**
|
|
* 系统配置 CRUD 服务
|
|
* <p>
|
|
* 使用 key-value 模式存储系统级配置项(如 SDK 保密声明等),
|
|
* 便于管理后台灵活编辑、SDK 端动态拉取。
|
|
*/
|
|
@Slf4j
|
|
@Service
|
|
public class SystemConfigService {
|
|
|
|
@Autowired
|
|
private SystemConfigMapper systemConfigMapper;
|
|
|
|
/**
|
|
* 根据 key 查询配置值(仅返回 configValue 字符串)
|
|
*
|
|
* @param key 配置键
|
|
* @return configValue,不存在返回 null
|
|
*/
|
|
public String getValueByKey(String key) {
|
|
SystemConfig config = getByKey(key);
|
|
return config != null ? config.getConfigValue() : null;
|
|
}
|
|
|
|
/**
|
|
* 根据 key 查询完整配置实体
|
|
*
|
|
* @param key 配置键
|
|
* @return 配置实体,不存在返回 null
|
|
*/
|
|
public SystemConfig getByKey(String key) {
|
|
LambdaQueryWrapper<SystemConfig> wrapper = new LambdaQueryWrapper<>();
|
|
wrapper.eq(SystemConfig::getConfigKey, key);
|
|
return systemConfigMapper.selectOne(wrapper);
|
|
}
|
|
|
|
/**
|
|
* 保存或更新配置(upsert 语义)
|
|
*
|
|
* @param key 配置键
|
|
* @param value 配置值
|
|
* @param description 描述说明
|
|
*/
|
|
public void saveOrUpdate(String key, String value, String description) {
|
|
SystemConfig existing = getByKey(key);
|
|
if (existing != null) {
|
|
// 更新 configValue、description 和 updateTime
|
|
LambdaUpdateWrapper<SystemConfig> wrapper = new LambdaUpdateWrapper<>();
|
|
wrapper.eq(SystemConfig::getId, existing.getId())
|
|
.set(SystemConfig::getConfigValue, value)
|
|
.set(SystemConfig::getDescription, description)
|
|
.set(SystemConfig::getUpdateTime, new Date());
|
|
systemConfigMapper.update(null, wrapper);
|
|
log.info("更新系统配置:{}", key);
|
|
} else {
|
|
// 新建
|
|
SystemConfig config = SystemConfig.builder()
|
|
.configKey(key)
|
|
.configValue(value)
|
|
.description(description)
|
|
.build();
|
|
systemConfigMapper.insert(config);
|
|
log.info("新建系统配置:{}", key);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 查询所有未删除的配置列表
|
|
*
|
|
* @return 配置实体列表
|
|
*/
|
|
public List<SystemConfig> listAll() {
|
|
LambdaQueryWrapper<SystemConfig> wrapper = new LambdaQueryWrapper<>();
|
|
wrapper.orderByAsc(SystemConfig::getConfigKey);
|
|
return systemConfigMapper.selectList(wrapper);
|
|
}
|
|
|
|
/**
|
|
* 根据 key 删除配置(逻辑删除)
|
|
*
|
|
* @param key 配置键
|
|
* @return true 删除成功,false 配置不存在
|
|
*/
|
|
public boolean deleteByKey(String key) {
|
|
SystemConfig existing = getByKey(key);
|
|
if (existing == null) {
|
|
return false;
|
|
}
|
|
systemConfigMapper.deleteById(existing.getId());
|
|
log.info("删除系统配置:{}", key);
|
|
return true;
|
|
}
|
|
}
|