feat: implement custom WebUI support with dynamic frontend replacement

- Add WebUI service and controller for managing custom frontend packages

- Allow overriding default static assets when custom WebUI is activated

- Add Make commands for packing custom WebUI distributions

- Update UI settings to support uploading, activating and deleting WebUIs

- Document WebUI feature in README and changelog
This commit is contained in:
duorameng
2026-05-29 11:49:01 +08:00
parent 41af3cf9e0
commit 323a58e041
19 changed files with 1004 additions and 35 deletions
+9 -2
View File
@@ -148,15 +148,22 @@ func (s *SettingsService) Get(section, key string) string {
func (s *SettingsService) Set(section, key, value string) error {
var setting models.Setting
res := database.DB.Where(&models.Setting{Section: section, Key: key}).Limit(1).Find(&setting)
var err error
if res.Error != nil || res.RowsAffected == 0 {
return database.DB.Create(&models.Setting{
err = database.DB.Create(&models.Setting{
ID: utils.GenerateID(),
Section: section,
Key: key,
Value: models.BigText(value),
}).Error
} else {
err = database.DB.Model(&setting).Update("value", models.BigText(value)).Error
}
return database.DB.Model(&setting).Update("value", models.BigText(value)).Error
if err == nil && section == constant.SectionSite {
cache.SetSiteCache(key, value)
}
return err
}
// Delete 删除单个设置