暂无描述
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

session_messages_routes.go 1.8KB

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/webx/router"
  9. "git.x2erp.com/qdy/go-svc-code/internal/opencode"
  10. )
  11. // GetSessionMessagesRequest 获取会话消息请求
  12. type GetSessionMessagesRequest struct {
  13. SessionID string `form:"sessionID" binding:"required"`
  14. Limit int `form:"limit,omitempty"`
  15. }
  16. // SessionMessagesResponse 会话消息响应
  17. type SessionMessagesResponse struct {
  18. Messages []opencode.SessionMessage `json:"messages"`
  19. Count int `json:"count"`
  20. }
  21. // RegisterSessionMessagesRoutes 注册会话消息路由
  22. func RegisterSessionMessagesRoutes(ws *router.RouterService, client opencode.OpenCodeClient) {
  23. // 获取会话消息历史(需要Token认证)
  24. ws.GET("/api/session/messages",
  25. func(req *GetSessionMessagesRequest, ctx context.Context, reqCtx *ctx.RequestContext) (*response.QueryResult[SessionMessagesResponse], error) {
  26. if req.SessionID == "" {
  27. return &response.QueryResult[SessionMessagesResponse]{
  28. Success: false,
  29. Message: "参数 sessionID 不能为空",
  30. }, nil
  31. }
  32. // 调用 opencode 客户端获取消息
  33. messages, err := client.GetSessionMessages(ctx, req.SessionID, req.Limit)
  34. if err != nil {
  35. logger.Error("获取会话消息失败", "session_id", req.SessionID, "error", err)
  36. return &response.QueryResult[SessionMessagesResponse]{
  37. Success: false,
  38. Message: "获取会话消息失败: " + err.Error(),
  39. }, nil
  40. }
  41. return &response.QueryResult[SessionMessagesResponse]{
  42. Success: true,
  43. Data: SessionMessagesResponse{
  44. Messages: messages,
  45. Count: len(messages),
  46. },
  47. }, nil
  48. },
  49. ).Use(authbase.TokenAuth).Desc("获取指定会话的消息历史").Register()
  50. }