在MySQL数据库中执行以下SQL:
-- 配置版本表
CREATE TABLE `config_version` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`name` varchar(100) DEFAULT NULL COMMENT '名称',
`app_code` varchar(50) DEFAULT NULL COMMENT '应用编码',
`key` varchar(100) DEFAULT NULL COMMENT '键值',
`version` varchar(50) DEFAULT NULL COMMENT '版本号',
`status` int(11) DEFAULT '0' COMMENT '状态:0-禁用,1-启用',
`owner_by` bigint(20) DEFAULT NULL COMMENT '所有者',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建人',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新人',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`is_delete` tinyint(1) DEFAULT '0' COMMENT '是否删除:0-未删除,1-已删除',
`enabled` tinyint(1) DEFAULT '1' COMMENT '是否启用:0-禁用,1-启用',
`sort` int(11) DEFAULT '0' COMMENT '排序',
PRIMARY KEY (`id`),
KEY `idx_app_code` (`app_code`),
KEY `idx_key` (`key`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='配置版本表';
或者执行项目中的SQL文件:
mysql -u your_username -p your_database < storlead-knowledge/sql/config_version.sql
在项目根目录执行:
cd E:\workspace\storlead-sasa-platform
mvn clean install -DskipTests
启动包含knowledge模块的Spring Boot应用。
访问: http://localhost:8080/doc.html
找到"知识库: 配置版本管理"分组,即可看到所有接口。
保存配置版本:
curl -X POST http://localhost:8080/knowledge/config-version/save \
-H "Content-Type: application/json" \
-d '{
"name": "数据库连接配置",
"appCode": "USER_SERVICE",
"key": "db.connection.url",
"version": "1.0.0",
"status": 1
}'
查询配置版本列表:
curl -X GET "http://localhost:8080/knowledge/config-version/page?pageIndex=1&pageSize=10"
根据应用编码和键值查询:
curl -X GET "http://localhost:8080/knowledge/config-version/by-app-key?appCode=USER_SERVICE&key=db.connection.url"
# 为用户服务添加配置
curl -X POST http://localhost:8080/knowledge/config-version/save \
-H "Content-Type: application/json" \
-d '{
"name": "用户服务数据库URL",
"appCode": "user-service",
"key": "spring.datasource.url",
"version": "1.0.0",
"status": 1
}'
# 为订单服务添加配置
curl -X POST http://localhost:8080/knowledge/config-version/save \
-H "Content-Type: application/json" \
-d '{
"name": "订单服务Redis地址",
"appCode": "order-service",
"key": "spring.redis.host",
"version": "1.0.0",
"status": 1
}'
curl -X GET "http://localhost:8080/knowledge/config-version/page?pageIndex=1&pageSize=100&appCode=user-service"
curl -X GET "http://localhost:8080/knowledge/config-version/page?pageIndex=1&pageSize=10&keyword=database"
# 先查询获取ID
curl -X GET "http://localhost:8080/knowledge/config-version/by-app-key?appCode=USER_SERVICE&key=db.connection.url"
# 然后更新(假设ID为1)
curl -X PUT http://localhost:8080/knowledge/config-version/update \
-H "Content-Type: application/json" \
-d '{
"id": 1,
"name": "数据库连接配置",
"appCode": "USER_SERVICE",
"key": "db.connection.url",
"version": "2.0.0",
"status": 1
}'
@Service
public class YourService {
@Resource
private ConfigVersionService configVersionService;
public void example() {
// 1. 根据应用编码和键值获取配置
ConfigVersionEntity config = configVersionService.getByAppCodeAndKey("USER_SERVICE", "db.url");
// 2. 保存新配置
ConfigVersionDTO dto = new ConfigVersionDTO();
dto.setName("新配置");
dto.setAppCode("MY_APP");
dto.setKey("my.key");
dto.setVersion("1.0.0");
dto.setStatus(1);
configVersionService.saveByDTO(dto);
// 3. 分页查询
IPage<ConfigVersionVO> page = configVersionService.pageVO(1, 10, "USER_SERVICE", null);
}
}
@RestController
@RequestMapping("/your-path/")
public class YourController {
@Resource
private ConfigVersionService configVersionService;
@GetMapping("config/{appCode}/{key}")
public Result<ConfigVersionEntity> getConfig(@PathVariable String appCode,
@PathVariable String key) {
ConfigVersionEntity config = configVersionService.getByAppCodeAndKey(appCode, key);
return Result.ok(config);
}
}
A: 因为Entity继承了SysBaseField,框架会自动填充这些字段。
A: 调用removeById()方法时,框架会自动将is_delete字段设置为1,而不是真正删除数据。
A: 在Service实现类中使用LambdaQueryWrapper构建查询条件。
A:
A: 在Service方法上添加@Transactional注解。
CONFIG_VERSION_README.mdCREATE_SUMMARY.md