This commit is contained in:
2026-06-24 10:04:03 +08:00
parent b103192fac
commit 0f961789dc
538 changed files with 128210 additions and 128008 deletions
+45 -17
View File
@@ -1,6 +1,7 @@
package services
import (
"encoding/json"
"strings"
"server/models"
@@ -21,6 +22,49 @@ func PublicRequestBaseURL(c *beego.Controller) (scheme, host string) {
return scheme, host
}
// ResolveSoftwareDownloadURL 优先使用自定义 download_url;否则根据 file_id 读附件 src 拼完整 URL
func ResolveSoftwareDownloadURLs(scheme, host string, downloadURLs *string) map[string]string {
result := map[string]string{}
if downloadURLs == nil || strings.TrimSpace(*downloadURLs) == "" {
return result
}
raw := strings.TrimSpace(*downloadURLs)
var values map[string]string
if err := json.Unmarshal([]byte(raw), &values); err != nil {
return result
}
for k, v := range values {
platform := strings.ToLower(strings.TrimSpace(k))
url := strings.TrimSpace(v)
if platform == "" || url == "" {
continue
}
result[platform] = ResolvePublicURL(scheme, host, url)
}
return result
}
// ResolvePublicURL 把相对路径拼成公开 URL;http(s) 地址原样返回。
func ResolvePublicURL(scheme, host, src string) string {
src = strings.TrimSpace(src)
if src == "" {
return ""
}
if strings.HasPrefix(strings.ToLower(src), "http://") || strings.HasPrefix(strings.ToLower(src), "https://") {
return src
}
if host == "" {
return src
}
if !strings.HasPrefix(src, "/") {
src = "/" + src
}
if scheme == "" {
scheme = "http"
}
return scheme + "://" + host + src
}
// ResolveSoftwareDownloadURL 优先使用自定义 download_url;否则根据 file_id 读附件 src 拼完整 URL
func ResolveSoftwareDownloadURL(scheme, host string, downloadURL *string, fileID *uint64) string {
if downloadURL != nil {
@@ -40,21 +84,5 @@ func ResolveSoftwareDownloadURL(scheme, host string, downloadURL *string, fileID
if err != nil {
return ""
}
src := strings.TrimSpace(f.Src)
if src == "" {
return ""
}
if strings.HasPrefix(strings.ToLower(src), "http://") || strings.HasPrefix(strings.ToLower(src), "https://") {
return src
}
if host == "" {
return src
}
if !strings.HasPrefix(src, "/") {
src = "/" + src
}
if scheme == "" {
scheme = "http"
}
return scheme + "://" + host + src
return ResolvePublicURL(scheme, host, f.Src)
}