| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- package routes
-
- import (
- "context"
-
- "git.x2erp.com/qdy/go-base/authbase"
- "git.x2erp.com/qdy/go-base/ctx"
- "git.x2erp.com/qdy/go-base/logger"
- "git.x2erp.com/qdy/go-base/model/response"
- "git.x2erp.com/qdy/go-base/webx/router"
- "git.x2erp.com/qdy/go-svc-code/internal/opencode"
- )
-
- // GetSessionMessagesRequest 获取会话消息请求
- type GetSessionMessagesRequest struct {
- SessionID string `json:"sessionID" binding:"required"`
- Limit int `json:"limit,omitempty"`
- }
-
- // SessionMessagesResponse 会话消息响应
- type SessionMessagesResponse struct {
- Messages []opencode.SessionMessage `json:"messages"`
- Count int `json:"count"`
- }
-
- // RegisterSessionMessagesRoutes 注册会话消息路由
- func RegisterSessionMessagesRoutes(ws *router.RouterService, client opencode.OpenCodeClient) {
- // 获取会话消息历史(需要Token认证)
- ws.POST("/api/session/messages",
- func(req *GetSessionMessagesRequest, ctx context.Context, reqCtx *ctx.RequestContext) (*response.QueryResult[SessionMessagesResponse], error) {
- // 检查请求参数是否为nil
- if req == nil {
- logger.Error("获取会话消息请求参数为nil")
- return &response.QueryResult[SessionMessagesResponse]{
- Success: false,
- Message: "请求参数不能为空",
- }, nil
- }
-
- // 检查sessionID是否为空
- if req.SessionID == "" {
- return &response.QueryResult[SessionMessagesResponse]{
- Success: false,
- Message: "参数 sessionID 不能为空",
- }, nil
- }
-
- // 检查客户端是否可用
- if client == nil {
- logger.Error("opencode客户端未初始化", "session_id", req.SessionID)
- return &response.QueryResult[SessionMessagesResponse]{
- Success: false,
- Message: "服务内部错误: opencode客户端未初始化",
- }, nil
- }
-
- // 调用 opencode 客户端获取消息
- messages, err := client.GetSessionMessages(ctx, req.SessionID, req.Limit)
- if err != nil {
- logger.Error("获取会话消息失败", "session_id", req.SessionID, "error", err)
- return &response.QueryResult[SessionMessagesResponse]{
- Success: false,
- Message: "获取会话消息失败: " + err.Error(),
- }, nil
- }
-
- return &response.QueryResult[SessionMessagesResponse]{
- Success: true,
- Data: SessionMessagesResponse{
- Messages: messages,
- Count: len(messages),
- },
- }, nil
- },
- ).Use(authbase.TokenAuth).Desc("获取指定会话的消息历史").Register()
- }
|