// Package handler 管理后台Handler实现 package handler import ( "context" "fmt" "market-data-service/api" "market-data-service/internal/service" ) // AdminHandlerImpl 管理后台Handler实现 type AdminHandlerImpl struct { configService service.ConfigService adapterService service.AdapterService testService service.TestService } // NewAdminHandlerImpl 创建管理后台Handler func NewAdminHandlerImpl( configService service.ConfigService, adapterService service.AdapterService, testService service.TestService, ) *AdminHandlerImpl { return &AdminHandlerImpl{ configService: configService, adapterService: adapterService, testService: testService, } } // Ensure interfaces are implemented var _ api.ConfigHandler = (*AdminHandlerImpl)(nil) var _ api.AdapterHandler = (*AdminHandlerImpl)(nil) var _ api.TestHandler = (*AdminHandlerImpl)(nil) // ============================================ // 配置管理接口实现 // ============================================ // GetConfigList 获取配置列表 func (h *AdminHandlerImpl) GetConfigList(ctx context.Context, req *api.ConfigListRequest) (*api.Response, error) { data, err := h.configService.GetConfigList(ctx, req) if err != nil { return nil, err } return &api.Response{ Code: 0, Message: "success", Data: data, }, nil } // UpdateConfig 更新配置 func (h *AdminHandlerImpl) UpdateConfig(ctx context.Context, req *api.ConfigUpdateRequest) (*api.Response, error) { data, err := h.configService.UpdateConfig(ctx, req) if err != nil { return nil, err } return &api.Response{ Code: 0, Message: "success", Data: data, }, nil } // ReloadConfig 热加载配置 func (h *AdminHandlerImpl) ReloadConfig(ctx context.Context, req *api.ReloadRequest) (*api.Response, error) { data, err := h.configService.ReloadConfig(ctx, req) if err != nil { return nil, err } return &api.Response{ Code: 0, Message: "success", Data: data, }, nil } // GetSystemStatus 获取系统状态 func (h *AdminHandlerImpl) GetSystemStatus(ctx context.Context) (*api.Response, error) { data, err := h.configService.GetSystemStatus(ctx) if err != nil { return nil, err } return &api.Response{ Code: 0, Message: "success", Data: data, }, nil } // ============================================ // 适配器管理接口实现 // ============================================ // GetAdapterList 获取适配器列表 func (h *AdminHandlerImpl) GetAdapterList(ctx context.Context) (*api.Response, error) { data, err := h.adapterService.GetAdapterList(ctx) if err != nil { return nil, err } return &api.Response{ Code: 0, Message: "success", Data: data, }, nil } // ToggleAdapter 启用/禁用适配器 func (h *AdminHandlerImpl) ToggleAdapter(ctx context.Context, req *api.AdapterToggleRequest) (*api.Response, error) { if err := h.adapterService.ToggleAdapter(ctx, req); err != nil { return &api.Response{ Code: 500, Message: err.Error(), }, nil } return &api.Response{ Code: 0, Message: "success", }, nil } // UpdateAdapterConfig 更新适配器配置 func (h *AdminHandlerImpl) UpdateAdapterConfig(ctx context.Context, req *api.AdapterConfigUpdateRequest) (*api.Response, error) { if err := h.adapterService.UpdateAdapterConfig(ctx, req); err != nil { return &api.Response{ Code: 500, Message: err.Error(), }, nil } return &api.Response{ Code: 0, Message: "success", }, nil } // ============================================ // 测试管理接口实现 // ============================================ // GetAPITestList 获取API测试列表 func (h *AdminHandlerImpl) GetAPITestList(ctx context.Context) (*api.Response, error) { data, err := h.testService.GetAPITestList(ctx) if err != nil { return nil, err } return &api.Response{ Code: 0, Message: "success", Data: data, }, nil } // RunAPITest 执行API测试 func (h *AdminHandlerImpl) RunAPITest(ctx context.Context, req *api.APITestRequest) (*api.Response, error) { // 获取基础URL baseURL := "http://localhost:8080" if cfg := h.configService.GetCurrentConfig(); cfg != nil && cfg.Server.Port != 0 { baseURL = fmt.Sprintf("http://localhost:%d", cfg.Server.Port) } data, err := h.testService.RunAPITest(ctx, baseURL, req) if err != nil { return nil, err } return &api.Response{ Code: 0, Message: "success", Data: data, }, nil } // GetWSTestList 获取WebSocket测试列表 func (h *AdminHandlerImpl) GetWSTestList(ctx context.Context) (*api.Response, error) { data, err := h.testService.GetWSTestList(ctx) if err != nil { return nil, err } // 设置WebSocket URL wsURL := "ws://localhost:8080/v1/stream" if cfg := h.configService.GetCurrentConfig(); cfg != nil && cfg.Server.Port != 0 { wsURL = "ws://localhost:" + string(rune(cfg.Server.Port)) + "/v1/stream" } data.WSURL = wsURL return &api.Response{ Code: 0, Message: "success", Data: data, }, nil } // RunWSTest 执行WebSocket测试 func (h *AdminHandlerImpl) RunWSTest(ctx context.Context, req *api.WSTestRequest) (*api.Response, error) { // 获取WebSocket URL wsURL := "ws://localhost:8080/v1/stream" if cfg := h.configService.GetCurrentConfig(); cfg != nil && cfg.Server.Port != 0 { wsURL = fmt.Sprintf("ws://localhost:%d/v1/stream", cfg.Server.Port) } data, err := h.testService.RunWSTest(ctx, wsURL, req) if err != nil { return nil, err } return &api.Response{ Code: 0, Message: "success", Data: data, }, nil } // GetTestHistory 获取测试历史 func (h *AdminHandlerImpl) GetTestHistory(ctx context.Context, req *api.TestHistoryRequest) (*api.Response, error) { data, err := h.testService.GetTestHistory(ctx, req) if err != nil { return nil, err } return &api.Response{ Code: 0, Message: "success", Data: data, }, nil }