// Code scaffolded by goctl. Safe to edit. // goctl 1.9.2 package common import ( "context" "github.com/zero-ppanel/zero-ppanel/apps/api/internal/svc" "github.com/zero-ppanel/zero-ppanel/apps/api/internal/types" "github.com/zero-ppanel/zero-ppanel/apps/rpc/core/core" "github.com/zeromicro/go-zero/core/logx" ) type HealthLogic struct { logx.Logger ctx context.Context svcCtx *svc.ServiceContext } func NewHealthLogic(ctx context.Context, svcCtx *svc.ServiceContext) *HealthLogic { return &HealthLogic{ Logger: logx.WithContext(ctx), ctx: ctx, svcCtx: svcCtx, } } func (l *HealthLogic) Health() (resp *types.HealthResp, err error) { // 调用 RPC 进行 Ping 测试,这能触发全链路追踪 (API -> RPC) rpcResp, err := l.svcCtx.CoreRpc.Ping(l.ctx, &core.Empty{}) status := "ok" if err != nil { status = "rpc_error: " + err.Error() } else if rpcResp.Msg != "" { status = rpcResp.Msg } return &types.HealthResp{ Status: status, }, nil }