From 8e52e120058c6c7ae653ce482584e11896967f46 Mon Sep 17 00:00:00 2001 From: yml2213 Date: Wed, 29 Jul 2026 10:48:42 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=97=B6=E9=97=B4=E6=A0=A1=E5=87=86?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=85=A8=E5=B1=80=E5=A4=8D=E7=94=A8=E6=97=A7?= =?UTF-8?q?=20peace/storedetail=EF=BC=8C=E4=BF=AE=E6=AD=A3=E6=B4=BB?= =?UTF-8?q?=E5=8A=A8=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 从 Activity 结构体移除 TimeAPIURL 字段,时间校准与活动无关, 统一用 constants.DefaultTimeAPI(peace/storedetail 能稳定返回 currentTime) - 旧活动 peace DisplayName 从"和平手册"修正为"精英手册" - 更改项目默认端口避免冲突:Vite 5173→15173,Wails dev 34115→34215 --- app.go | 2 +- frontend/vite.config.ts | 1 + internal/activity/activity.go | 12 ++++-------- internal/client/client.go | 4 ++-- internal/config/config.go | 6 ++---- internal/constants/constants.go | 5 +++++ wails.json | 3 ++- 7 files changed, 17 insertions(+), 16 deletions(-) diff --git a/app.go b/app.go index 0410e7c..9d34a8f 100644 --- a/app.go +++ b/app.go @@ -625,7 +625,7 @@ func (a *App) SwitchActivity(id string) map[string]any { return map[string]any{"success": false, "error": "未知活动: " + id} } a.cfg.Activity = act.ID - a.cfg.TimeAPIURL = act.TimeAPIURL + a.cfg.TimeAPIURL = constants.DefaultTimeAPI if err := config.SaveConfig(a.paths.ConfigFile, a.cfg); err != nil { logger.LogEvent("活动", "error", "切换活动配置保存失败: %v", err) return map[string]any{"success": false, "error": "配置保存失败: " + err.Error()} diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts index 3f42d84..04b0ae8 100644 --- a/frontend/vite.config.ts +++ b/frontend/vite.config.ts @@ -15,6 +15,7 @@ export default defineConfig({ sourcemap: false }, server: { + port: 15173, strictPort: true } }) diff --git a/internal/activity/activity.go b/internal/activity/activity.go index 3225aeb..a0c06d2 100644 --- a/internal/activity/activity.go +++ b/internal/activity/activity.go @@ -4,7 +4,7 @@ import "douyu_go/internal/constants" // Activity 描述一个斗鱼手册活动的全部接口参数。 // -// 不同活动(和平手册 / 电竞手册)的 manualID、roomID、actAlias 以及接口路径段都不同, +// 不同活动(精英手册 / 电竞手册)的 manualID、roomID、actAlias 以及接口路径段都不同, // 集中在这里可以让调度核心逻辑保持活动无关,新增活动只需在 registry 中加一项。 // // 注意:peacematch 的 exchange / preExchange / batchExchangeLimit / storedetail 端点 @@ -21,8 +21,6 @@ type Activity struct { BaseURL string ShopReferer string - TimeAPIURL string // 服务端时间校准接口(storedetail) - StoreHomeURL string CSRFURL string @@ -38,16 +36,15 @@ type Activity struct { const douyuBase = constants.BaseURL -// peace 和平手册(旧活动,ActAlias=20260120QYOOB)。 +// peace 精英手册(旧活动,ActAlias=20260120QYOOB)。 var peace = &Activity{ ID: "peace", - DisplayName: "和平手册", + DisplayName: "精英手册", ManualID: "G4KA4Qnz4LDp7", RoomID: "9263298", ActAlias: "20260120QYOOB", BaseURL: douyuBase, ShopReferer: douyuBase + "/pages/live-peace-handbook/web/shop?ditchname=pass0&roomId=9263298", - TimeAPIURL: douyuBase + "/wgapi/ordnc/activity/peace/storedetail?manualID=G4KA4Qnz4LDp7&commodityID=20260120QYOOB_bag274&rid=9263298", StoreHomeURL: douyuBase + "/wgapi/ordnc/activity/peace/storehome?manualID=G4KA4Qnz4LDp7&rid=9263298", CSRFURL: douyuBase + "/japi/carnival/nc/common/generateCsrf", BatchLimitURL: douyuBase + "/wgapi/ordnc/activity/peace/batchExchangeLimit", @@ -69,7 +66,6 @@ var peacematch = &Activity{ ActAlias: "20260226ZMGDG", BaseURL: douyuBase, ShopReferer: douyuBase + "/pages/live-peace-pel/web/shop?roomId=9263298&isAnchorSide=0", - TimeAPIURL: douyuBase + "/wgapi/ordnc/activity/peacematch/storedetail?manualID=1W0yGkOdDbAXb&commodityID=20260226ZMGDG_bag139&rid=9263298", StoreHomeURL: douyuBase + "/wgapi/ordnc/activity/peacematch/storehome?manualID=1W0yGkOdDbAXb&rid=9263298", // generateCsrf 为嘉年华平台级接口,抓包未单独出现,沿用 peace 同款端点。 CSRFURL: douyuBase + "/japi/carnival/nc/common/generateCsrf", @@ -91,7 +87,7 @@ var registry = map[string]*Activity{ // DefaultActivityID 默认活动,新分支默认启用「电竞手册」。 const DefaultActivityID = "peacematch" -// List 返回所有注册活动,按注册顺序(和平手册在前)。 +// List 返回所有注册活动,按注册顺序(精英手册在前)。 func List() []*Activity { return []*Activity{peace, peacematch} } diff --git a/internal/client/client.go b/internal/client/client.go index d16238f..c773bcb 100644 --- a/internal/client/client.go +++ b/internal/client/client.go @@ -29,13 +29,13 @@ type DouyuClient struct { } // New 创建斗鱼客户端。act 决定使用哪个活动的接口参数; -// timeAPIURL 为空时回退到 act.TimeAPIURL。 +// timeAPIURL 为空时回退到 constants.DefaultTimeAPI(全局共享的服务端时间接口)。 func New(act *activity.Activity, timeAPIURL string, tr *trace.Recorder) *DouyuClient { if act == nil { act = activity.Default() } if timeAPIURL == "" { - timeAPIURL = act.TimeAPIURL + timeAPIURL = constants.DefaultTimeAPI } return &DouyuClient{ Activity: act, diff --git a/internal/config/config.go b/internal/config/config.go index 3345ef3..9e8035d 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -77,7 +77,7 @@ func envInt(key string, fallback int) int { func defaultConfig() types.Config { return types.Config{ Activity: activity.DefaultActivityID, - TimeAPIURL: activity.Default().TimeAPIURL, + TimeAPIURL: constants.DefaultTimeAPI, TraceEnabled: false, TraceMaxBody: 0, LogLevel: "info", @@ -124,9 +124,7 @@ func LoadConfig(path string) types.Config { cfg.Activity = activity.DefaultActivityID } if cfg.TimeAPIURL == "" { - if act := activity.Get(cfg.Activity); act != nil { - cfg.TimeAPIURL = act.TimeAPIURL - } + cfg.TimeAPIURL = constants.DefaultTimeAPI } if cfg.Concurrency <= 0 { cfg.Concurrency = constants.DefaultConcurrency diff --git a/internal/constants/constants.go b/internal/constants/constants.go index be570a1..aeeae34 100644 --- a/internal/constants/constants.go +++ b/internal/constants/constants.go @@ -19,6 +19,11 @@ const ( DefaultAccountFile = "data/user.txt" DefaultLogDir = "logs" DefaultSuccessDir = "success_images" + + // DefaultTimeAPI 服务端时间校准接口。 + // 斗鱼服务器时间与活动无关,统一用精英手册的 storedetail(能稳定返回 + // data.preExchange.currentTime),所有活动共用。 + DefaultTimeAPI = BaseURL + "/wgapi/ordnc/activity/peace/storedetail?manualID=G4KA4Qnz4LDp7&commodityID=20260120QYOOB_bag274&rid=9263298" ) // CST 中国标准时间 UTC+8。 diff --git a/wails.json b/wails.json index f023125..66d1923 100644 --- a/wails.json +++ b/wails.json @@ -7,7 +7,8 @@ "frontend:install": "npm install", "frontend:build": "npm run build", "frontend:dev:watcher": "npm run dev", - "frontend:dev:serverUrl": "auto", + "frontend:dev:serverUrl": "http://localhost:15173", + "devserver": "localhost:34215", "wailsjsdir": "frontend", "author": { "name": "yml",