From 964c508f4c3fc6d32b9298b42edb9e6f636352cc Mon Sep 17 00:00:00 2001 From: hejl Date: Tue, 9 Sep 2025 10:11:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9D=83=E9=99=90=E6=95=B0=E6=8D=AE=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E6=90=9E=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../route-sync/direct-route-mappings.js | 2 +- .../auth/controller/resource_controller.go | 51 ------------------- .../auth/model/frontend_backend_route.go | 3 +- .../internal/auth/model/frontend_route.go | 1 - .../repository/frontend_backend_route_repo.go | 32 ++++++------ .../auth/repository/route_mapping_repo.go | 38 -------------- .../internal/auth/routes/resource_routes.go | 6 +-- .../auth/service/frontend_route_service.go | 14 +---- 8 files changed, 20 insertions(+), 127 deletions(-) diff --git a/gofaster/app/src/renderer/modules/route-sync/direct-route-mappings.js b/gofaster/app/src/renderer/modules/route-sync/direct-route-mappings.js index 5813fda..0f2f632 100644 --- a/gofaster/app/src/renderer/modules/route-sync/direct-route-mappings.js +++ b/gofaster/app/src/renderer/modules/route-sync/direct-route-mappings.js @@ -252,7 +252,7 @@ export default { "id": 15, "component": "PasswordChangeModal", "module": "user-management", - "triggerName": "passwordchangemodal-input-l447v0", + "triggerName": "passwordchangemodal-input-zhkdt8", "triggerType": "input" } ] diff --git a/gofaster/backend/internal/auth/controller/resource_controller.go b/gofaster/backend/internal/auth/controller/resource_controller.go index a4287de..74542fa 100644 --- a/gofaster/backend/internal/auth/controller/resource_controller.go +++ b/gofaster/backend/internal/auth/controller/resource_controller.go @@ -270,54 +270,3 @@ func (c *ResourceController) ListResourcesByType(ctx *gin.Context) { response.Success(ctx, "获取类型资源成功", resources) } - -// GetAuthGroupStats 获取权限分组统计 -// @Summary 获取权限分组统计 -// @Description 获取路由映射的权限分组统计信息 -// @Tags 资源管理 -// @Accept json -// @Produce json -// @Success 200 {object} response.Response{data=map[string]int} -// @Failure 400 {object} response.Response -// @Router /api/resources/auth-group-stats [get] -func (c *ResourceController) GetAuthGroupStats(ctx *gin.Context) { - stats, err := c.routeMappingRepo.GetAuthGroupStats() - if err != nil { - response.Error(ctx, http.StatusInternalServerError, "获取权限分组统计失败", err.Error()) - return - } - - response.Success(ctx, "获取权限分组统计成功", stats) -} - -// ListRoutesByAuthGroup 根据权限分组获取路由列表 -// @Summary 根据权限分组获取路由列表 -// @Description 根据权限分组获取路由映射列表 -// @Tags 资源管理 -// @Accept json -// @Produce json -// @Param authGroup path string true "权限分组" Enums(Read, Edit) -// @Success 200 {object} response.Response{data=[]model.RouteMapping} -// @Failure 400 {object} response.Response -// @Router /api/resources/auth-group/{authGroup}/routes [get] -func (c *ResourceController) ListRoutesByAuthGroup(ctx *gin.Context) { - authGroup := ctx.Param("authGroup") - if authGroup == "" { - response.Error(ctx, http.StatusBadRequest, "请求参数错误", "权限分组不能为空") - return - } - - // 验证权限分组值 - if authGroup != "Read" && authGroup != "Edit" { - response.Error(ctx, http.StatusBadRequest, "请求参数错误", "权限分组只能是Read或Edit") - return - } - - routes, err := c.routeMappingRepo.FindByAuthGroup(authGroup) - if err != nil { - response.Error(ctx, http.StatusInternalServerError, "获取权限分组路由失败", err.Error()) - return - } - - response.Success(ctx, "获取权限分组路由成功", routes) -} diff --git a/gofaster/backend/internal/auth/model/frontend_backend_route.go b/gofaster/backend/internal/auth/model/frontend_backend_route.go index 6a07b25..a133100 100644 --- a/gofaster/backend/internal/auth/model/frontend_backend_route.go +++ b/gofaster/backend/internal/auth/model/frontend_backend_route.go @@ -11,10 +11,9 @@ type FrontendBackendRoute struct { FrontendRouteID uint `gorm:"uniqueIndex:idx_frontend_backend_routes_unique" json:"frontend_route_id"` // 前台路由ID BackendRoute string `gorm:"uniqueIndex:idx_frontend_backend_routes_unique" json:"backend_route"` // 后台API路径 HTTPMethod string `json:"http_method"` // HTTP方法 - AuthGroup string `json:"auth_group"` // 权限分组:Read-读取权限,Edit-编辑权限 + Component string `json:"component"` // 前端组件名称 Module string `json:"module"` // 所属模块 Description string `json:"description"` // 描述 - IsDefault bool `gorm:"default:false" json:"is_default"` // 是否为默认关联 Sort int `gorm:"default:0" json:"sort"` // 排序 Status int `gorm:"default:1" json:"status"` // 状态:1-启用,0-禁用 } diff --git a/gofaster/backend/internal/auth/model/frontend_route.go b/gofaster/backend/internal/auth/model/frontend_route.go index 3d83d83..1ef3a14 100644 --- a/gofaster/backend/internal/auth/model/frontend_route.go +++ b/gofaster/backend/internal/auth/model/frontend_route.go @@ -7,7 +7,6 @@ import ( // FrontendRoute 前台路由模型 type FrontendRoute struct { ID uint `gorm:"primarykey" json:"id"` - CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` Path string `json:"path"` // 前台路由路径 Name string `json:"name"` // 路由名称 diff --git a/gofaster/backend/internal/auth/repository/frontend_backend_route_repo.go b/gofaster/backend/internal/auth/repository/frontend_backend_route_repo.go index 0243985..ff02f64 100644 --- a/gofaster/backend/internal/auth/repository/frontend_backend_route_repo.go +++ b/gofaster/backend/internal/auth/repository/frontend_backend_route_repo.go @@ -52,10 +52,10 @@ func (r *FrontendBackendRouteRepository) FindByModule(module string) ([]*model.F return relations, err } -// FindByAuthGroup 根据权限分组查找关系 -func (r *FrontendBackendRouteRepository) FindByAuthGroup(authGroup string) ([]*model.FrontendBackendRoute, error) { +// FindByComponent 根据组件名称查找关系 +func (r *FrontendBackendRouteRepository) FindByComponent(component string) ([]*model.FrontendBackendRoute, error) { var relations []*model.FrontendBackendRoute - err := r.db.Where("auth_group = ?", authGroup).Order("sort ASC").Find(&relations).Error + err := r.db.Where("component = ?", component).Order("sort ASC").Find(&relations).Error return relations, err } @@ -86,15 +86,14 @@ func (r *FrontendBackendRouteRepository) Upsert(relation *model.FrontendBackendR // 使用 PostgreSQL 的 ON CONFLICT 语法处理唯一索引冲突 sql := ` INSERT INTO frontend_backend_routes - (frontend_route_id, backend_route, http_method, auth_group, module, description, is_default, sort, status, updated_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, NOW()) + (frontend_route_id, backend_route, http_method, component, module, description, sort, status, updated_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, NOW()) ON CONFLICT (frontend_route_id, backend_route) DO UPDATE SET http_method = EXCLUDED.http_method, - auth_group = EXCLUDED.auth_group, + component = EXCLUDED.component, module = EXCLUDED.module, description = EXCLUDED.description, - is_default = EXCLUDED.is_default, sort = EXCLUDED.sort, status = EXCLUDED.status, updated_at = NOW() @@ -106,10 +105,9 @@ func (r *FrontendBackendRouteRepository) Upsert(relation *model.FrontendBackendR relation.FrontendRouteID, relation.BackendRoute, relation.HTTPMethod, - relation.AuthGroup, + relation.Component, relation.Module, relation.Description, - relation.IsDefault, relation.Sort, relation.Status, ).Scan(&id).Error @@ -126,8 +124,8 @@ func (r *FrontendBackendRouteRepository) Upsert(relation *model.FrontendBackendR // GetStats 获取前后台路由关系统计信息 func (r *FrontendBackendRouteRepository) GetStats() (map[string]interface{}, error) { var total int64 - var authGroupStats []struct { - AuthGroup string `json:"auth_group"` + var componentStats []struct { + Component string `json:"component"` Count int64 `json:"count"` } var moduleStats []struct { @@ -140,9 +138,9 @@ func (r *FrontendBackendRouteRepository) GetStats() (map[string]interface{}, err } if err := r.db.Model(&model.FrontendBackendRoute{}). - Select("auth_group, count(*) as count"). - Group("auth_group"). - Scan(&authGroupStats).Error; err != nil { + Select("component, count(*) as count"). + Group("component"). + Scan(&componentStats).Error; err != nil { return nil, err } @@ -154,9 +152,9 @@ func (r *FrontendBackendRouteRepository) GetStats() (map[string]interface{}, err } return map[string]interface{}{ - "total": total, - "auth_group_stats": authGroupStats, - "module_stats": moduleStats, + "total": total, + "component_stats": componentStats, + "module_stats": moduleStats, }, nil } diff --git a/gofaster/backend/internal/auth/repository/route_mapping_repo.go b/gofaster/backend/internal/auth/repository/route_mapping_repo.go index def27d1..bfdd6f7 100644 --- a/gofaster/backend/internal/auth/repository/route_mapping_repo.go +++ b/gofaster/backend/internal/auth/repository/route_mapping_repo.go @@ -106,41 +106,3 @@ func (r *RouteMappingRepository) CreateOrUpdate(mapping *model.RouteMapping) err mapping.ID = existing.ID return r.Update(mapping) } - -// FindByAuthGroup 根据权限分组查找路由映射 -func (r *RouteMappingRepository) FindByAuthGroup(authGroup string) ([]model.RouteMapping, error) { - var mappings []model.RouteMapping - err := r.DB().Where("auth_group = ?", authGroup).Order("id ASC").Find(&mappings).Error - return mappings, err -} - -// FindByModuleAndAuthGroup 根据模块和权限分组查找路由映射 -func (r *RouteMappingRepository) FindByModuleAndAuthGroup(module, authGroup string) ([]model.RouteMapping, error) { - var mappings []model.RouteMapping - err := r.DB().Where("module = ? AND auth_group = ?", module, authGroup).Order("id ASC").Find(&mappings).Error - return mappings, err -} - -// GetAuthGroupStats 获取权限分组统计 -func (r *RouteMappingRepository) GetAuthGroupStats() (map[string]int, error) { - var stats []struct { - AuthGroup string `json:"auth_group"` - Count int `json:"count"` - } - - err := r.DB().Model(&model.RouteMapping{}). - Select("auth_group, COUNT(*) as count"). - Group("auth_group"). - Find(&stats).Error - - if err != nil { - return nil, err - } - - result := make(map[string]int) - for _, stat := range stats { - result[stat.AuthGroup] = stat.Count - } - - return result, nil -} diff --git a/gofaster/backend/internal/auth/routes/resource_routes.go b/gofaster/backend/internal/auth/routes/resource_routes.go index 1195d2f..46157c5 100644 --- a/gofaster/backend/internal/auth/routes/resource_routes.go +++ b/gofaster/backend/internal/auth/routes/resource_routes.go @@ -35,10 +35,8 @@ func RegisterResourceRoutes(router *gin.RouterGroup, db *gorm.DB, jwtSecret stri resourceGroup.POST("/sync", resourceController.SyncResources) // 同步资源 // 按模块和类型查询 - resourceGroup.GET("/module/:module", resourceController.ListResourcesByModule) // 按模块获取资源 - resourceGroup.GET("/type/:type", resourceController.ListResourcesByType) // 按类型获取资源 - resourceGroup.GET("/auth-group-stats", resourceController.GetAuthGroupStats) // 获取权限分组统计 - resourceGroup.GET("/auth-group/:authGroup/routes", resourceController.ListRoutesByAuthGroup) // 按权限分组获取路由 + resourceGroup.GET("/module/:module", resourceController.ListResourcesByModule) // 按模块获取资源 + resourceGroup.GET("/type/:type", resourceController.ListResourcesByType) // 按类型获取资源 } } } diff --git a/gofaster/backend/internal/auth/service/frontend_route_service.go b/gofaster/backend/internal/auth/service/frontend_route_service.go index bb02944..a3ba0e5 100644 --- a/gofaster/backend/internal/auth/service/frontend_route_service.go +++ b/gofaster/backend/internal/auth/service/frontend_route_service.go @@ -70,10 +70,9 @@ func (s *FrontendRouteService) SyncFrontendRoute(routeData map[string]interface{ FrontendRouteID: existingRoute.ID, BackendRoute: backendRoute["backend_route"].(string), HTTPMethod: backendRoute["http_method"].(string), - AuthGroup: s.getAuthGroupByMethod(backendRoute["http_method"].(string)), + Component: routeData["component"].(string), // 使用前台路由的组件名称 Module: backendRoute["module"].(string), Description: backendRoute["description"].(string), - IsDefault: i == 0, // 第一个为默认关联 Sort: i, Status: 1, } @@ -154,14 +153,3 @@ func (s *FrontendRouteService) GetStats() (map[string]interface{}, error) { "route_relations": relationStats, }, nil } - -// getAuthGroupByMethod 根据HTTP方法获取权限分组 -func (s *FrontendRouteService) getAuthGroupByMethod(method string) string { - editMethods := []string{"POST", "PUT", "PATCH", "DELETE"} - for _, editMethod := range editMethods { - if method == editMethod { - return "Edit" - } - } - return "Read" -}