Ingen beskrivning
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.

menu_routes.go 1.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package routes
  2. import (
  3. "context"
  4. "git.x2erp.com/qdy/go-base/authbase"
  5. "git.x2erp.com/qdy/go-base/ctx"
  6. "git.x2erp.com/qdy/go-base/logger"
  7. "git.x2erp.com/qdy/go-base/model/response"
  8. "git.x2erp.com/qdy/go-base/util"
  9. "git.x2erp.com/qdy/go-base/webx/router"
  10. "git.x2erp.com/qdy/go-svc-code/internal/service/menu"
  11. )
  12. // RegisterMenuRoutes 注册菜单路由
  13. func RegisterMenuRoutes(ws *router.RouterService, mappingService *menu.MappingService) {
  14. // 获取顶部菜单(需要Token认证)
  15. ws.GET("/api/menu/top",
  16. func(ctx context.Context, reqCtx *ctx.RequestContext) (*response.QueryResult[[]menu.MenuItem], error) {
  17. return menu.GetTopMenu(ctx, reqCtx), nil
  18. },
  19. ).Use(authbase.TokenAuth).Desc("获取顶部菜单").Register()
  20. // 获取菜单项的所有会话ID(需要Token认证)
  21. ws.GET("/api/menu/sessions/{menuItemID}",
  22. func(menuItemID string, ctx context.Context, reqCtx *ctx.RequestContext) (*response.QueryResult[[]string], error) {
  23. if menuItemID == "" {
  24. return &response.QueryResult[[]string]{
  25. Success: false,
  26. Message: "参数 menu_item_id 不能为空",
  27. }, nil
  28. }
  29. // 获取用户ID
  30. userID := reqCtx.UserID
  31. if userID == "" {
  32. logger.Warn("无法从请求上下文获取用户ID")
  33. return &response.QueryResult[[]string]{
  34. Success: false,
  35. Message: "用户认证信息不完整",
  36. }, nil
  37. }
  38. // 获取菜单项的所有会话ID
  39. sessionIDs, err := mappingService.GetSessionIDsByMenuItemID(ctx, menuItemID, userID)
  40. if err != nil {
  41. logger.Error("获取菜单项会话ID失败", "menu_item_id", menuItemID, "user_id", userID, "error", err)
  42. return &response.QueryResult[[]string]{
  43. Success: false,
  44. Message: "获取菜单项会话ID失败: " + err.Error(),
  45. }, nil
  46. }
  47. return util.CreateSuccessResultData(sessionIDs, reqCtx), nil
  48. },
  49. ).Use(authbase.TokenAuth).Desc("获取菜单项的所有会话ID").Register()
  50. }