From 7f87030cc8b890586c6172df3bcf0a32dc776f3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=97=E5=AD=90?= Date: Thu, 15 May 2025 09:47:43 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=A0=E9=80=92channel=E5=8F=82?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/job/panel_task.go | 4 +++- internal/service/cli.go | 3 ++- internal/service/dashboard.go | 11 +++++++---- pkg/api/api_test.go | 4 ++-- pkg/api/version.go | 7 ++++--- 5 files changed, 18 insertions(+), 11 deletions(-) diff --git a/internal/job/panel_task.go b/internal/job/panel_task.go index 18a1d4ad..55cfd11c 100644 --- a/internal/job/panel_task.go +++ b/internal/job/panel_task.go @@ -111,9 +111,11 @@ func (r *PanelTask) updatePanel() { return } + channel, _ := r.settingRepo.Get(biz.SettingKeyChannel) + // 加 300 秒确保在缓存更新后才更新面板 time.AfterFunc(time.Duration(rand.IntN(300))*time.Second+300*time.Second, func() { - panel, err := r.api.LatestVersion() + panel, err := r.api.LatestVersion(channel) if err != nil { return } diff --git a/internal/service/cli.go b/internal/service/cli.go index b12b150c..febe6986 100644 --- a/internal/service/cli.go +++ b/internal/service/cli.go @@ -96,7 +96,8 @@ func (s *CliService) Start(ctx context.Context, cmd *cli.Command) error { } func (s *CliService) Update(ctx context.Context, cmd *cli.Command) error { - panel, err := s.api.LatestVersion() + channel, _ := s.settingRepo.Get(biz.SettingKeyChannel) + panel, err := s.api.LatestVersion(channel) if err != nil { return errors.New(s.t.Get("Failed to get latest version: %v", err)) } diff --git a/internal/service/dashboard.go b/internal/service/dashboard.go index b9ada149..95b69f92 100644 --- a/internal/service/dashboard.go +++ b/internal/service/dashboard.go @@ -230,7 +230,8 @@ func (s *DashboardService) CheckUpdate(w http.ResponseWriter, r *http.Request) { } current := app.Version - latest, err := s.api.LatestVersion() + channel, _ := s.settingRepo.Get(biz.SettingKeyChannel) + latest, err := s.api.LatestVersion(channel) if err != nil { Error(w, http.StatusInternalServerError, s.t.Get("failed to get the latest version: %v", err)) return @@ -265,7 +266,8 @@ func (s *DashboardService) UpdateInfo(w http.ResponseWriter, r *http.Request) { } current := app.Version - latest, err := s.api.LatestVersion() + channel, _ := s.settingRepo.Get(biz.SettingKeyChannel) + latest, err := s.api.LatestVersion(channel) if err != nil { Error(w, http.StatusInternalServerError, s.t.Get("failed to get the latest version: %v", err)) return @@ -286,7 +288,7 @@ func (s *DashboardService) UpdateInfo(w http.ResponseWriter, r *http.Request) { return } - versions, err := s.api.IntermediateVersions() + versions, err := s.api.IntermediateVersions(channel) if err != nil { Error(w, http.StatusInternalServerError, s.t.Get("failed to get the update information: %v", err)) return @@ -306,7 +308,8 @@ func (s *DashboardService) Update(w http.ResponseWriter, r *http.Request) { return } - panel, err := s.api.LatestVersion() + channel, _ := s.settingRepo.Get(biz.SettingKeyChannel) + panel, err := s.api.LatestVersion(channel) if err != nil { Error(w, http.StatusInternalServerError, s.t.Get("failed to get the latest version: %v", err)) return diff --git a/pkg/api/api_test.go b/pkg/api/api_test.go index 731ddf0f..2c5ea13a 100644 --- a/pkg/api/api_test.go +++ b/pkg/api/api_test.go @@ -18,12 +18,12 @@ func TestAPITestSuite(t *testing.T) { } func (s *APITestSuite) TestGetLatestVersion() { - _, err := s.api.LatestVersion() + _, err := s.api.LatestVersion("stable") s.NoError(err) } func (s *APITestSuite) TestGetIntermediateVersions() { - _, err := s.api.IntermediateVersions() + _, err := s.api.IntermediateVersions("stable") s.NoError(err) } diff --git a/pkg/api/version.go b/pkg/api/version.go index c1731e9c..57f5e3b3 100644 --- a/pkg/api/version.go +++ b/pkg/api/version.go @@ -26,8 +26,8 @@ type Version struct { type Versions []Version // LatestVersion 返回最新版本 -func (r *API) LatestVersion() (*Version, error) { - resp, err := r.client.R().SetResult(&Response{}).Get("/version/latest") +func (r *API) LatestVersion(channel string) (*Version, error) { + resp, err := r.client.R().SetResult(&Response{}).SetQueryParam("channel", channel).Get("/version/latest") if err != nil { return nil, err } @@ -52,9 +52,10 @@ func (r *API) LatestVersion() (*Version, error) { } // IntermediateVersions 返回当前版本之后的所有版本 -func (r *API) IntermediateVersions() (*Versions, error) { +func (r *API) IntermediateVersions(channel string) (*Versions, error) { resp, err := r.client.R(). SetQueryParam("start", r.panelVersion). + SetQueryParam("channel", channel). SetResult(&Response{}).Get("/version/intermediate") if err != nil { return nil, err