mirror of
https://github.com/Dvorinka/MyClubServer.git
synced 2026-06-03 18:22:57 +00:00
4.9 KiB
4.9 KiB
Fix pro rozdělení sponzorů na kategorie (Hlavní partneři vs. Partneři)
Problém
Správa sponzorů nefungovala správně - pole tier (úroveň partnera) a display_order (pořadí zobrazení) se neukládala do databáze, takže nebylo možné odlišit hlavní partnery od běžných partnerů.
Provedené změny
1. Backend Controller (internal/controllers/base_controller.go)
GetSponsors - Oprava řazení
- Změněno řazení z
name ASCnaCASE WHEN tier = 'general' THEN 0 ELSE 1 END, display_order ASC, name ASC - Nyní se nejdříve zobrazí hlavní partneři (tier='general'), poté ostatní, vše seřazené podle pořadí a názvu
CreateSponsor - Přidána podpora pro tier a display_order
// Přidána nová pole do request body struct:
Tier string `json:"tier"`
DisplayOrder *int `json:"display_order"`
// Přidána logika pro zpracování těchto hodnot:
tier := strings.TrimSpace(body.Tier)
if tier == "" {
tier = "standard"
}
displayOrder := 0
if body.DisplayOrder != nil {
displayOrder = *body.DisplayOrder
}
// Přidáno do modelu Sponsor:
Tier: tier,
DisplayOrder: displayOrder,
UpdateSponsor - Přidána podpora pro tier a display_order
// Přidána nová pole do request body struct:
Tier *string `json:"tier"`
DisplayOrder *int `json:"display_order"`
// Přidána logika pro aktualizaci těchto hodnot:
if body.Tier != nil {
tier := strings.TrimSpace(*body.Tier)
if tier != "" {
s.Tier = tier
}
}
if body.DisplayOrder != nil {
s.DisplayOrder = *body.DisplayOrder
}
2. Main.go - Přidán Sponsor do AutoMigrate
if err := dbInstance.AutoMigrate(
// ... ostatní modely ...
&models.Sponsor{}, // <-- PŘIDÁNO
// ... ostatní modely ...
); err != nil {
log.Printf("Warning: AutoMigrate failed: %v", err)
}
Tato změna zajistí, že:
- Tabulka
sponsorsbude vytvořena při prvním spuštění - Sloupce
tieradisplay_orderbudou přidány, pokud ještě neexistují - Při dalších spuštěních se automaticky synchronizuje schema s modelem
Model Sponsor (už existoval správně v internal/models/models.go)
type Sponsor struct {
gorm.Model
Name string `gorm:"not null" json:"name"`
LogoURL string `json:"logo_url"`
WebsiteURL string `json:"website_url"`
Description string `json:"description"`
IsActive bool `gorm:"default:true" json:"is_active"`
Tier string `gorm:"default:'standard'" json:"tier"` // general (hlavní), standard
DisplayOrder int `gorm:"default:0" json:"display_order"` // Pro vlastní řazení
// ... další pole ...
}
Frontend (už fungoval správně)
Frontend správně odesílá tier a display_order:
- Admin stránka (
frontend/src/pages/admin/SponsorsAdminPage.tsx) zobrazuje a upravuje tier i display_order - Veřejná stránka (
frontend/src/pages/SponsorsPage.tsx) správně filtruje sponzory podle tier:tier === 'general'→ Hlavní partneři (větší zobrazení)- Ostatní → Partneři (menší zobrazení)
Testování
1. Spuštění serveru
# Server automaticky přidá chybějící sloupce při spuštění
go run main.go
2. Vytvoření nového sponzora
- Přihlásit se do adminu
- Jít na "Správa sponzorů"
- Kliknout "Nový sponzor"
- Vyplnit název
- Vybrat "Úroveň partnera":
- Hlavní partner (general) - pro hlavní sponzory
- Partner (standard) - pro běžné sponzory
- Nastavit "Pořadí zobrazení" (menší číslo = vyšší pozice)
- Uložit
3. Ověření na webu
- Jít na stránku "Sponzoři"
- Hlavní partneři by měli být zobrazeni nahoře s větším logem
- Běžní partneři by měli být pod nimi s menším logem
- Pořadí by mělo odpovídat nastaveným číslům
Možné problémy a řešení
Problém: Sloupce tier/display_order neexistují v databázi
Řešení: Restartujte server - AutoMigrate je automaticky přidá.
Problém: Existující sponzoři nemají nastavený tier
Řešení: Otevřete každého sponzora v admin rozhraní a nastavte jeho úroveň partnera, nebo proveďte SQL update:
UPDATE sponsors SET tier = 'standard' WHERE tier = '' OR tier IS NULL;
Problém: Sponzoři se nezobrazují v správném pořadí
Řešení: Zkontrolujte, že:
- Server byl restartován po změnách
- V databázi jsou správně vyplněné hodnoty tier a display_order
- Frontend cache byla vyčištěna (Ctrl+Shift+R)
Změny v souborech
- ✅
internal/controllers/base_controller.go- Přidána podpora tier a display_order v controllerech - ✅
main.go- Přidán Sponsor do AutoMigrate - ℹ️
internal/models/models.go- Model už obsahoval tier a display_order (bez změn) - ℹ️
frontend/src/pages/admin/SponsorsAdminPage.tsx- Frontend už fungoval správně (bez změn) - ℹ️
frontend/src/pages/SponsorsPage.tsx- Frontend už fungoval správně (bez změn)