diff --git a/go.mod b/go.mod index 5b8a606..661da2b 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.23.0 toolchain go1.23.7 require ( - gitea.timerzz.com/kedaya_haitao/common v0.0.0-20250327021208-7303e49bd09a + gitea.timerzz.com/kedaya_haitao/common v0.0.0-20250327094730-83e8af0c5f4b github.com/gofiber/fiber/v3 v3.0.0-beta.4 github.com/henrylee2cn/ameda v1.4.10 github.com/redis/go-redis/v9 v9.6.1 diff --git a/go.sum b/go.sum index 608ae32..4258194 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ -gitea.timerzz.com/kedaya_haitao/common v0.0.0-20250327021208-7303e49bd09a h1:AIi74nG73laj16WMoXAbMDyNCZoHt9vdWtCeEp/wybo= -gitea.timerzz.com/kedaya_haitao/common v0.0.0-20250327021208-7303e49bd09a/go.mod h1:cfkwyDHbOjucM8xLLg8yIkZKz33kdVqvBZYrfNjM8oc= +gitea.timerzz.com/kedaya_haitao/common v0.0.0-20250327094730-83e8af0c5f4b h1:nrEcJvWPWlVezQZ1eQAbpgOLieDmqVt2zkmTQci1iwo= +gitea.timerzz.com/kedaya_haitao/common v0.0.0-20250327094730-83e8af0c5f4b/go.mod h1:cfkwyDHbOjucM8xLLg8yIkZKz33kdVqvBZYrfNjM8oc= github.com/andybalholm/brotli v1.1.1 h1:PR2pgnyFznKEugtsUo0xLdDop5SKXd5Qf5ysW+7XdTA= github.com/andybalholm/brotli v1.1.1/go.mod h1:05ib4cKhjx3OQYUY22hTVd34Bc8upXjOLL2rKwwZBoA= github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs= diff --git a/service/provider_svc.go b/service/provider_svc.go index 1c426be..e14e596 100644 --- a/service/provider_svc.go +++ b/service/provider_svc.go @@ -1,12 +1,18 @@ package service import ( + "fmt" + "net/http" + "sync" + "time" + "gitea.timerzz.com/kedaya_haitao/common/pkg/subscribe" "gitea.timerzz.com/kedaya_haitao/common/pkg/web" "gitea.timerzz.com/kedaya_haitao/common/structs/storage" "gitea.timerzz.com/kedaya_haitao/common/structs/utils" v2 "gitea.timerzz.com/kedaya_haitao/common/structs/v2" "github.com/gofiber/fiber/v3" + "github.com/gofiber/fiber/v3/client" "github.com/henrylee2cn/ameda" "github.com/redis/go-redis/v9" "github.com/sirupsen/logrus" @@ -46,7 +52,19 @@ func (s *Provider) ListProviders(c fiber.Ctx) error { if err != nil { return err } - + var wg sync.WaitGroup + for idx := range providers { + wg.Add(1) + go func(idx int) { + defer wg.Done() + p := providers[idx] + resp, _ := client.C().Get(fmt.Sprintf("http://%s/living", p.ProviderId), client.Config{Timeout: time.Second}) + if resp != nil && resp.StatusCode() == http.StatusOK { + providers[idx].Online = true + } + }(idx) + } + wg.Wait() return c.JSON(web.NewResponse(web.NewListResponse(total, providers))) } @@ -85,7 +103,6 @@ func (s *Provider) GetProvider(c fiber.Ctx) error { return fiber.ErrBadRequest } provider, err := s.storage.Provider().Get(uint(id)) - if err != nil { return err }