新建站点的默认冷却期原先硬编码 7 天(OnboardSite 字面量、DB 列默认、两套前端表单), 改一处要同时动三处。现统一到系统配置键 distribution.default_settlement_hold_days: - systemconfig 注册该键(默认 7,0=立即释放,0-365 校验),纳入 admin 可见配置 - distribution 建站两条路径(CreateSite 未传值、OnboardSite 缺省)读取该配置,缺失或非法回落 7 - 新增 GET /admin/distribution/site-defaults 暴露当前有效默认值 - Vue / React 站点表单改为运行时拉取,拉取失败保持 7 - DB 列默认值保留作为兜底,站点级 settlement_hold_days 仍可单独覆盖
55 lines
2.1 KiB
Go
55 lines
2.1 KiB
Go
package distribution
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"hfb_sys/backend/internal/model"
|
|
"hfb_sys/backend/internal/modules/systemconfig"
|
|
)
|
|
|
|
// TestCreateSiteUsesConfiguredDefaultSettlementHoldDays 验证新建站点未显式传值时读取系统配置的默认冷却天数。
|
|
func TestCreateSiteUsesConfiguredDefaultSettlementHoldDays(t *testing.T) {
|
|
db := distributionTestDB(t)
|
|
repo := NewRepository(db)
|
|
if err := db.Create(&model.SystemConfig{
|
|
Key: systemconfig.DistributionSettlementHoldDaysKey,
|
|
Value: "3",
|
|
}).Error; err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
dto, err := repo.CreateSite(t.Context(), CreateSiteRequest{SiteCode: "cfg_hold", SiteName: "配置冷却站", Domain: "cfghold.dist.com"})
|
|
if err != nil {
|
|
t.Fatalf("CreateSite err = %v", err)
|
|
}
|
|
if dto.SettlementHoldDays != 3 {
|
|
t.Fatalf("DTO settlement_hold_days = %d, want 3", dto.SettlementHoldDays)
|
|
}
|
|
var site model.DistributionSite
|
|
if err := db.Where("site_code = ?", "cfg_hold").First(&site).Error; err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if site.SettlementHoldDays != 3 {
|
|
t.Fatalf("DB settlement_hold_days = %d, want 3", site.SettlementHoldDays)
|
|
}
|
|
}
|
|
|
|
// TestCreateSiteFallsBackWhenConfigMissing 验证系统配置缺失时回落到内置默认 7 天。
|
|
func TestCreateSiteFallsBackWhenConfigMissing(t *testing.T) {
|
|
db := distributionTestDB(t)
|
|
repo := NewRepository(db)
|
|
dto, err := repo.CreateSite(t.Context(), CreateSiteRequest{SiteCode: "no_cfg_hold", SiteName: "兜底冷却站", Domain: "nocfghold.dist.com"})
|
|
if err != nil {
|
|
t.Fatalf("CreateSite err = %v", err)
|
|
}
|
|
if dto.SettlementHoldDays != systemconfig.DefaultDistributionSettlementHoldDays {
|
|
t.Fatalf("DTO settlement_hold_days = %d, want %d", dto.SettlementHoldDays, systemconfig.DefaultDistributionSettlementHoldDays)
|
|
}
|
|
var site model.DistributionSite
|
|
if err := db.Where("site_code = ?", "no_cfg_hold").First(&site).Error; err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if site.SettlementHoldDays != systemconfig.DefaultDistributionSettlementHoldDays {
|
|
t.Fatalf("DB settlement_hold_days = %d, want %d", site.SettlementHoldDays, systemconfig.DefaultDistributionSettlementHoldDays)
|
|
}
|
|
}
|