| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- package data
- import (
- "context"
- "fmt"
- "strings"
- "github.com/mark3labs/mcp-go/mcp"
- "github.com/mark3labs/mcp-go/server"
- "fwh-toolbox-server/cmd/mcp/tools/helper"
- "fwh-toolbox-server/repositories"
- )
- func registerSimApiTools(s *server.MCPServer) {
- // SmartHub
- s.AddTool(
- mcp.NewTool("data_sim_smarthub_batch_info",
- mcp.WithDescription("批量查询 SmartHub 平台 SIM 卡信息"),
- mcp.WithNumber("page", mcp.Description("页码,默认1")),
- mcp.WithNumber("size", mcp.Description("每页数量,默认20")),
- ),
- handleSimSmartHubBatchInfo,
- )
- s.AddTool(
- mcp.NewTool("data_sim_smarthub_card_info",
- mcp.WithDescription("查询 SmartHub 平台单张 SIM 卡详细信息"),
- mcp.WithString("giccid", mcp.Required(), mcp.Description("SIM 卡 GICCID")),
- ),
- handleSimSmartHubCardInfo,
- )
- // Acceleronix
- s.AddTool(
- mcp.NewTool("data_sim_acceleronix_card_list",
- mcp.WithDescription("查询 Acceleronix 平台 SIM 卡列表"),
- mcp.WithNumber("page", mcp.Description("页码,默认1")),
- mcp.WithNumber("size", mcp.Description("每页数量,默认20")),
- ),
- handleSimAcceleronixCardList,
- )
- s.AddTool(
- mcp.NewTool("data_sim_acceleronix_card_info",
- mcp.WithDescription("查询 Acceleronix 平台单张 SIM 卡详情"),
- mcp.WithString("iccid", mcp.Required(), mcp.Description("SIM 卡 ICCID")),
- ),
- handleSimAcceleronixCardInfo,
- )
- s.AddTool(
- mcp.NewTool("data_sim_acceleronix_batch_data_info",
- mcp.WithDescription("批量获取 Acceleronix SIM 卡数据用量信息"),
- mcp.WithString("iccid_list", mcp.Required(), mcp.Description("ICCID 列表,逗号分隔")),
- mcp.WithString("month", mcp.Required(), mcp.Description("月份,格式 YYYYMM(如 202601)")),
- ),
- handleSimAcceleronixBatchDataInfo,
- )
- s.AddTool(
- mcp.NewTool("data_sim_acceleronix_data_pool_list",
- mcp.WithDescription("查询 Acceleronix 流量池列表"),
- mcp.WithNumber("page", mcp.Description("页码,默认1")),
- mcp.WithNumber("size", mcp.Description("每页数量,默认20")),
- ),
- handleSimAcceleronixDataPoolList,
- )
- s.AddTool(
- mcp.NewTool("data_sim_acceleronix_data_pool_sim_info",
- mcp.WithDescription("查询 Acceleronix 流量池中的 SIM 卡详情"),
- mcp.WithString("data_pool_id", mcp.Required(), mcp.Description("流量池ID")),
- mcp.WithNumber("page", mcp.Description("页码,默认1")),
- mcp.WithNumber("size", mcp.Description("每页数量,默认20")),
- ),
- handleSimAcceleronixDataPoolSimInfo,
- )
- }
- // === Handlers ===
- func handleSimSmartHubBatchInfo(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
- page := uint(req.GetFloat("page", 1))
- size := uint(req.GetFloat("size", 20))
- data, err := repositories.QuerySmartHubBatchSimCardInfo(page, size)
- if err != nil {
- return helper.ServiceError("查询SmartHub SIM卡列表", err), nil
- }
- return helper.JSONResultOrFileAuto(data), nil
- }
- func handleSimSmartHubCardInfo(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
- giccid, err := req.RequireString("giccid")
- if err != nil {
- return helper.ParamError("giccid"), nil
- }
- data, err := repositories.QuerySmartHubSimCardInfo(giccid)
- if err != nil {
- return helper.ServiceError("查询SmartHub SIM卡详情", err), nil
- }
- return helper.JSONResultOrFileAuto(data), nil
- }
- func handleSimAcceleronixCardList(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
- page := uint(req.GetFloat("page", 1))
- size := uint(req.GetFloat("size", 20))
- data, err := repositories.QueryAcceleronixSimCardList(page, size)
- if err != nil {
- return helper.ServiceError("查询Acceleronix SIM卡列表", err), nil
- }
- return helper.JSONResultOrFileAuto(data), nil
- }
- func handleSimAcceleronixCardInfo(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
- iccid, err := req.RequireString("iccid")
- if err != nil {
- return helper.ParamError("iccid"), nil
- }
- data, err := repositories.QueryAcceleronixSimCardInfo(iccid)
- if err != nil {
- return helper.ServiceError("查询Acceleronix SIM卡详情", err), nil
- }
- return helper.JSONResultOrFileAuto(data), nil
- }
- func handleSimAcceleronixBatchDataInfo(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
- iccidListStr, err := req.RequireString("iccid_list")
- if err != nil {
- return helper.ParamError("iccid_list"), nil
- }
- month, err := req.RequireString("month")
- if err != nil {
- return helper.ParamError("month"), nil
- }
- // 验证月份格式
- if len(month) != 6 {
- return helper.ParamInvalidError("month", "需要 YYYYMM 格式,如 202601"), nil
- }
- iccidList := strings.Split(iccidListStr, ",")
- for i := range iccidList {
- iccidList[i] = strings.TrimSpace(iccidList[i])
- }
- if len(iccidList) == 0 {
- return helper.ParamInvalidError("iccid_list", "至少需要一个ICCID"), nil
- }
- if len(iccidList) > 50 {
- return helper.ParamInvalidError("iccid_list", fmt.Sprintf("最多50个ICCID,当前%d个", len(iccidList))), nil
- }
- data, err := repositories.QueryAcceleronixBatchSimCardDataInfo(iccidList, month)
- if err != nil {
- return helper.ServiceError("批量查询Acceleronix数据用量", err), nil
- }
- return helper.JSONResultOrFileAuto(data), nil
- }
- func handleSimAcceleronixDataPoolList(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
- page := uint(req.GetFloat("page", 1))
- size := uint(req.GetFloat("size", 20))
- data, err := repositories.QueryAcceleronixDataPoolList(page, size)
- if err != nil {
- return helper.ServiceError("查询Acceleronix流量池列表", err), nil
- }
- return helper.JSONResultOrFileAuto(data), nil
- }
- func handleSimAcceleronixDataPoolSimInfo(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
- poolID, err := req.RequireString("data_pool_id")
- if err != nil {
- return helper.ParamError("data_pool_id"), nil
- }
- page := uint(req.GetFloat("page", 1))
- size := uint(req.GetFloat("size", 20))
- data, err := repositories.QueryAcceleronixDataPoolSimInfo(poolID, page, size)
- if err != nil {
- return helper.ServiceError("查询流量池SIM详情", err), nil
- }
- return helper.JSONResultOrFileAuto(data), nil
- }
|