|
|
@@ -0,0 +1,222 @@
|
|
|
+# 配置版本管理模块 - 快速开始
|
|
|
+
|
|
|
+## 5分钟快速上手
|
|
|
+
|
|
|
+### 步骤1: 创建数据库表 (1分钟)
|
|
|
+
|
|
|
+在MySQL数据库中执行以下SQL:
|
|
|
+
|
|
|
+```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文件:
|
|
|
+```bash
|
|
|
+mysql -u your_username -p your_database < storlead-knowledge/sql/config_version.sql
|
|
|
+```
|
|
|
+
|
|
|
+### 步骤2: 编译项目 (2分钟)
|
|
|
+
|
|
|
+在项目根目录执行:
|
|
|
+
|
|
|
+```bash
|
|
|
+cd E:\workspace\storlead-sasa-platform
|
|
|
+mvn clean install -DskipTests
|
|
|
+```
|
|
|
+
|
|
|
+### 步骤3: 启动应用 (1分钟)
|
|
|
+
|
|
|
+启动包含knowledge模块的Spring Boot应用。
|
|
|
+
|
|
|
+### 步骤4: 测试API (1分钟)
|
|
|
+
|
|
|
+#### 方式1: 使用Swagger UI
|
|
|
+访问: `http://localhost:8080/doc.html`
|
|
|
+
|
|
|
+找到"知识库: 配置版本管理"分组,即可看到所有接口。
|
|
|
+
|
|
|
+#### 方式2: 使用curl命令
|
|
|
+
|
|
|
+**保存配置版本:**
|
|
|
+```bash
|
|
|
+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
|
|
|
+ }'
|
|
|
+```
|
|
|
+
|
|
|
+**查询配置版本列表:**
|
|
|
+```bash
|
|
|
+curl -X GET "http://localhost:8080/knowledge/config-version/page?pageIndex=1&pageSize=10"
|
|
|
+```
|
|
|
+
|
|
|
+**根据应用编码和键值查询:**
|
|
|
+```bash
|
|
|
+curl -X GET "http://localhost:8080/knowledge/config-version/by-app-key?appCode=USER_SERVICE&key=db.connection.url"
|
|
|
+```
|
|
|
+
|
|
|
+## 常用场景示例
|
|
|
+
|
|
|
+### 场景1: 为微服务管理配置版本
|
|
|
+
|
|
|
+```bash
|
|
|
+# 为用户服务添加配置
|
|
|
+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
|
|
|
+ }'
|
|
|
+```
|
|
|
+
|
|
|
+### 场景2: 查询某个应用的所有配置
|
|
|
+
|
|
|
+```bash
|
|
|
+curl -X GET "http://localhost:8080/knowledge/config-version/page?pageIndex=1&pageSize=100&appCode=user-service"
|
|
|
+```
|
|
|
+
|
|
|
+### 场景3: 搜索包含特定关键词的配置
|
|
|
+
|
|
|
+```bash
|
|
|
+curl -X GET "http://localhost:8080/knowledge/config-version/page?pageIndex=1&pageSize=10&keyword=database"
|
|
|
+```
|
|
|
+
|
|
|
+### 场景4: 更新配置版本
|
|
|
+
|
|
|
+```bash
|
|
|
+# 先查询获取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中注入并使用
|
|
|
+
|
|
|
+```java
|
|
|
+@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);
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+### 在Controller中添加自定义接口
|
|
|
+
|
|
|
+```java
|
|
|
+@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);
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+## 常见问题
|
|
|
+
|
|
|
+### Q1: 为什么保存后createTime和updateTime自动填充了?
|
|
|
+A: 因为Entity继承了SysBaseField,框架会自动填充这些字段。
|
|
|
+
|
|
|
+### Q2: 如何实现逻辑删除?
|
|
|
+A: 调用`removeById()`方法时,框架会自动将`is_delete`字段设置为1,而不是真正删除数据。
|
|
|
+
|
|
|
+### Q3: 如何添加自定义查询条件?
|
|
|
+A: 在Service实现类中使用LambdaQueryWrapper构建查询条件。
|
|
|
+
|
|
|
+### Q4: DTO和Entity有什么区别?
|
|
|
+A:
|
|
|
+- DTO用于接收前端数据,包含验证注解
|
|
|
+- Entity用于数据库持久化,包含MyBatis Plus注解
|
|
|
+- 两者通过Orika自动映射转换
|
|
|
+
|
|
|
+### Q5: 如何添加事务支持?
|
|
|
+A: 在Service方法上添加`@Transactional`注解。
|
|
|
+
|
|
|
+## 下一步
|
|
|
+
|
|
|
+1. 阅读完整文档: `CONFIG_VERSION_README.md`
|
|
|
+2. 查看创建总结: `CREATE_SUMMARY.md`
|
|
|
+3. 运行单元测试了解更多信息
|
|
|
+4. 根据业务需求扩展功能
|
|
|
+
|
|
|
+## 需要帮助?
|
|
|
+
|
|
|
+- 查看完整的API文档(Swagger)
|
|
|
+- 阅读源码注释
|
|
|
+- 参考其他模块的实现方式
|