fix(rock): 上游地址改为以数据库配置为准,并消除 baseURL 数据竞争
GetConfig 从不把 rock_configs.base_url 回写到客户端,main.go 又硬编码了 https://0666.pro,导致后台改上游地址「保存那一刻生效、进程重启后失效」, 数据库里的值被静默忽略且无任何提示。 - 新增 model.RockDefaultBaseURL 统一默认值来源 - 新增 RockService.ApplyConfigToClient,启动时把 DB 地址同步到客户端 - UpdateConfig 改用 client.SetBaseURL 立即生效,不再直接写字段 - RockClient.baseURL 原为裸字段,被 HTTP 请求线程与库存巡检 goroutine 并发 读写(数据竞争),改为 sync.RWMutex 保护并新增 BaseURL/SetBaseURL - ClaimTokens/RefreshToken/RedeemSkin 的 Origin/Referer 跟随配置地址 - 空值回落默认地址,末尾斜杠自动裁剪 为保持该提交可编译,同一次改动把 rock_service.go(1177 行)按域拆分为 8 个文件(最大 221 行):rock_service / rock_bindlink / rock_stock / rock_assign / rock_bindcheck / rock_redeem / rock_recover / rock_snapshot。 35 个声明块全部有归属,无遗漏无重复;迁移文件 012 受 checksum 保护故未改动。 验证:TestRockServiceBaseURLFromConfig 覆盖「改地址→立即生效→重启→仍生效」; 并发用例在 -race 下通过;全量测试通过。
This commit is contained in:
@@ -8,6 +8,7 @@ import (
|
||||
"affiliate_dash/internal/config"
|
||||
"affiliate_dash/internal/database"
|
||||
"affiliate_dash/internal/handler"
|
||||
"affiliate_dash/internal/model"
|
||||
"affiliate_dash/internal/pkg/applog"
|
||||
"affiliate_dash/internal/pkg/jwt"
|
||||
"affiliate_dash/internal/pkg/lewan"
|
||||
@@ -102,9 +103,14 @@ func main() {
|
||||
lewanProvider := service.NewLewanProvider(lewanClient)
|
||||
deliverySvc.RegisterProvider(lewanProvider)
|
||||
|
||||
// Rock 平台 (0666.pro) 客户端、服务与履约提供商注册
|
||||
rockClient := service.NewRockClient("https://0666.pro")
|
||||
// Rock 平台客户端、服务与履约提供商注册。
|
||||
// 这里传的只是初始/兜底地址,真正的上游地址以 rock_configs.base_url 为准,
|
||||
// 因此紧接着要同步一次,否则后台改过的地址重启后会失效。
|
||||
rockClient := service.NewRockClient(model.RockDefaultBaseURL)
|
||||
rockSvc := service.NewRockService(db, rockClient)
|
||||
if err := rockSvc.ApplyConfigToClient(context.Background()); err != nil {
|
||||
applog.Warnf("读取 Rock 平台配置失败,暂用默认上游地址 %s: %v", model.RockDefaultBaseURL, err)
|
||||
}
|
||||
rockProvider := service.NewRockProvider(rockSvc)
|
||||
deliverySvc.RegisterProvider(rockProvider)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user