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.
7.4 KiB
7.4 KiB
路由同步系统优化总结
优化概述
根据您的需求,我们对路由同步系统进行了全面优化,主要解决了以下三个问题:
- 移除
frontend_backend_routes
表的delete_at
字段 - 移除
frontend_routes
和route_mappings
表的delete_at
字段 - 优化路由映射逻辑,支持弹窗按钮的路由
详细优化内容
1. 数据库表结构优化
1.1 移除 delete_at
字段
影响表:
frontend_backend_routes
frontend_routes
route_mappings
优化原因:
frontend_backend_routes
表:更新时直接删除记录,不需要软删除frontend_routes
表:同步时只增加,不删除,冗余数据由人工删除route_mappings
表:同步时只增加,不删除,冗余数据由人工删除
实现方式:
// 更新模型定义,移除 BaseModel 继承
type FrontendBackendRoute struct {
ID uint `gorm:"primarykey" json:"id"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
// ... 其他字段
}
1.2 数据库迁移
创建了专门的迁移文件 remove_delete_at_fields.go
,自动处理表结构更新:
func RemoveDeleteAtFields(db *gorm.DB, log *zap.Logger) error {
// 移除三个表的 delete_at 字段
removeDeleteAtFromFrontendBackendRoutes(db, log)
removeDeleteAtFromFrontendRoutes(db, log)
removeDeleteAtFromRouteMappings(db, log)
}
2. 前端路由映射优化
2.1 增强路由收集器
新增功能:
- 自动识别页面内操作路由(弹窗、按钮等)
- 支持用户管理和角色管理的操作路由
实现方式:
// 添加页面内操作路由
_addPageOperationRoutes() {
this._addUserManagementOperations()
this._addRoleManagementOperations()
}
// 用户管理操作路由
_addUserManagementOperations() {
const operations = [
{ path: '/user-management/create', name: 'CreateUser', description: '新增用户' },
{ path: '/user-management/edit', name: 'EditUser', description: '编辑用户' },
{ path: '/user-management/delete', name: 'DeleteUser', description: '删除用户' },
{ path: '/user-management/assign-roles', name: 'AssignUserRoles', description: '分配用户角色' },
// ... 更多操作
]
}
2.2 优化路由映射器
增强功能:
- 支持弹窗操作的路由类型识别
- 为不同操作类型生成对应的API映射
- 按模块分组处理,避免重复同步
新增路由类型:
// 确定路由类型
_determineRouteType(route) {
// 检查是否是弹窗操作
if (path.includes('modal') || name.includes('modal')) return 'modal'
if (path.includes('dialog') || name.includes('dialog')) return 'modal'
if (path.includes('popup') || name.includes('popup')) return 'modal'
// 检查是否是表单操作
if (path.includes('form') || name.includes('form')) return 'form'
// ... 其他类型
}
2.3 用户管理模块API映射
完整的CRUD操作映射:
'user-management': {
basePath: '/api/users',
operations: {
// 列表页面相关
list: { method: 'GET', path: '' },
search: { method: 'GET', path: '' },
filter: { method: 'GET', path: '' },
// 弹窗操作相关
create: { method: 'POST', path: '' },
update: { method: 'PUT', path: '/:id' },
delete: { method: 'DELETE', path: '/:id' },
detail: { method: 'GET', path: '/:id' },
// 角色分配相关
assignRoles: { method: 'POST', path: '/:id/roles' },
getRoles: { method: 'GET', path: '/roles' },
// 状态管理
enable: { method: 'PUT', path: '/:id/enable' },
disable: { method: 'PUT', path: '/:id/disable' }
}
}
3. 同步策略优化
3.1 按模块分组同步
优化前: 逐个同步每个路由映射 优化后: 按模块分组,批量同步
// 按模块分组处理,避免重复同步
const moduleGroups = this._groupMappingsByModule(routeMappings)
for (const [module, mappings] of Object.entries(moduleGroups)) {
// 构建前台路由数据
const frontendRouteData = this._buildFrontendRouteData(module, mappings)
// 批量同步
}
3.2 智能路由数据构建
优化功能:
- 自动去重相同的前端路由
- 合并多个后端路由到同一个前端路由
- 保持数据结构的完整性
_buildFrontendRouteData(module, mappings) {
// 按前台路由分组
const frontendRouteGroups = {}
mappings.forEach(mapping => {
const frontendRoute = mapping.frontend_route
if (!frontendRouteGroups[frontendRoute]) {
frontendRouteGroups[frontendRoute] = {
path: frontendRoute,
name: frontendRoute.split('/').pop() || 'default',
component: 'Unknown',
module: module,
description: mapping.description,
sort: 0,
backend_routes: []
}
}
frontendRouteGroups[frontendRoute].backend_routes.push({
backend_route: mapping.backend_route,
http_method: mapping.http_method,
module: module,
description: mapping.description
})
})
return Object.values(frontendRouteGroups)
}
测试验证
测试脚本
创建了 test-route-sync-optimized.ps1
测试脚本,验证:
- 后端服务启动正常
- 前端应用启动正常
- 路由同步API测试通过
- 数据库表结构优化完成
- 前端路由收集功能正常
测试内容
- 路由同步状态获取
- 手动触发路由同步
- 获取同步后的路由列表
- 获取前后台路由关系
- 数据库表结构检查
使用说明
同步策略
- 只增加,不删除:同步时只增加新记录,不删除旧记录
- 手动清理:冗余数据需要手动清理
- 按模块处理:避免重复同步,提高效率
弹窗操作支持
- 自动识别用户管理页面的弹窗操作
- 自动生成对应的API映射
- 支持新增、编辑、删除、角色分配等操作
数据完整性
- 保持前后台路由关系的完整性
- 支持一对多的路由映射关系
- 维护模块和权限分组信息
优化效果
性能提升
- 同步效率:按模块分组处理,减少API调用次数
- 数据一致性:避免软删除带来的数据不一致问题
- 维护成本:简化数据清理流程
功能增强
- 操作覆盖:完整支持用户管理的所有操作
- 路由识别:自动识别弹窗和按钮操作
- 映射准确:更精确的路由到API映射
数据质量
- 结构清晰:移除不必要的软删除字段
- 关系明确:前后台路由关系更加清晰
- 冗余可控:明确的数据清理策略
后续建议
- 定期清理:建议定期清理冗余的路由数据
- 监控同步:监控路由同步的成功率和错误情况
- 扩展支持:可以扩展到其他模块的路由映射
- 权限集成:与权限系统深度集成,支持动态权限控制
总结: 本次优化解决了您提出的三个核心问题,提升了路由同步系统的性能、功能和数据质量,为后续的功能扩展奠定了良好的基础。