refactor: 视频源删除改用ID,彻底避免中文URL编码问题

This commit is contained in:
tian 2026-07-26 13:09:06 +08:00
parent 332e36bd8f
commit 25d860ca33
5 changed files with 24 additions and 7 deletions

View File

@ -878,6 +878,13 @@ func (s *ConfigPreviewService) SaveVideoSourceAsset(asset ConfigVideoSourceAsset
return nil
}
func (s *ConfigPreviewService) DeleteVideoSourceByID(id int) error {
if s == nil || s.assets == nil {
return fmt.Errorf("基础配置仓库未初始化")
}
return s.assets.DeleteVideoSourceByID(id)
}
func (s *ConfigPreviewService) DeleteVideoSource(name string) error {
if s == nil || s.assets == nil {
return fmt.Errorf("基础配置仓库未初始化")

View File

@ -392,6 +392,14 @@ func (r *AssetsRepo) DeleteIntegrationService(name string) error {
return err
}
func (r *AssetsRepo) DeleteVideoSourceByID(id int) error {
if r == nil || r.db == nil {
return nil
}
_, err := r.db.Exec(`DELETE FROM video_sources WHERE id = ?`, id)
return err
}
func (r *AssetsRepo) DeleteVideoSource(name string) error {
if r == nil || r.db == nil {
return nil

View File

@ -791,7 +791,7 @@ func (u *UI) Routes() (chi.Router, error) {
r.Get("/assets/video-sources/template", u.actionVideoSourceCSVTemplate)
r.Post("/assets/video-sources/import", u.actionVideoSourceCSVImport)
r.Post("/assets/video-sources", u.actionAssetVideoSourceSave)
r.Post("/assets/video-sources/{name}/delete", u.actionAssetVideoSourceDelete)
r.Post("/assets/video-sources/{id}/delete", u.actionAssetVideoSourceDelete)
r.Get("/assets/templates", u.pageAssetTemplates)
r.Post("/assets/templates/create", u.actionAssetTemplateCreate)
r.Post("/assets/templates/{name}/clone", u.actionAssetTemplateClone)
@ -3769,12 +3769,14 @@ func (u *UI) actionAssetVideoSourceDelete(w http.ResponseWriter, r *http.Request
http.Error(w, "config preview service is not configured", http.StatusInternalServerError)
return
}
name := chi.URLParam(r, "name")
if decoded, err := url.PathUnescape(name); err == nil {
name = decoded
idStr := chi.URLParam(r, "id")
id, err := strconv.Atoi(idStr)
if err != nil {
http.Redirect(w, r, "/assets/video-sources?error="+urlQueryEscape("无效的ID"), http.StatusFound)
return
}
if err := u.preview.DeleteVideoSource(name); err != nil {
http.Redirect(w, r, "/assets/video-sources?error="+urlQueryEscape(err.Error())+"&name="+url.PathEscape(name), http.StatusFound)
if err := u.preview.DeleteVideoSourceByID(id); err != nil {
http.Redirect(w, r, "/assets/video-sources?error="+urlQueryEscape(err.Error()), http.StatusFound)
return
}
http.Redirect(w, r, "/assets/video-sources?msg="+urlQueryEscape("视频源已删除"), http.StatusFound)

View File

@ -190,7 +190,7 @@ toggleIntegrationFields('{{.AssetIntegration.Type}}');
<a class="btn secondary" href="/assets/video-sources?new=1">{{icon "apply"}}<span>新增视频源</span></a>
{{if .AssetVideoSource}}{{if .AssetVideoSource.Name}}
<a class="btn secondary" href="/assets/video-sources?name={{.AssetVideoSource.Name}}&edit=1">{{icon "edit"}}<span>编辑</span></a>
<form method="post" action="/assets/video-sources/{{.AssetVideoSource.Name}}/delete" onsubmit="return confirm('确认删除视频源 {{.AssetVideoSource.Name}}')">
<form method="post" action="/assets/video-sources/{{.AssetVideoSource.ID}}/delete" onsubmit="return confirm('确认删除视频源 {{.AssetVideoSource.Name}}')">
<button class="btn secondary" type="submit">删除</button>
</form>
{{end}}{{end}}

Binary file not shown.