Files
2026-10-27 16:44:55 +08:00

116 lines
2.8 KiB
Go

// Package h5path 统一拼装 jha-1045-hgdjnet-web 的页面路径。
// Abs 保持原有无尾斜杠规范,SitemapAbs 专用于 sitemap 页面 URL
package h5path
import (
"strconv"
"strings"
"videoweb/pub/common/utils"
)
func Segment(slug string, id int64) string {
return utils.PathSegment(slug, id)
}
// Entity 拼 /{prefix}/{slug|id},无有效段时只返回 prefix。
func Entity(prefix, slug string, id int64) string {
prefix = "/" + strings.Trim(prefix, "/")
if segment := Segment(slug, id); segment != "" {
return prefix + "/" + segment
}
return prefix
}
func Playlet(slug string, id int64) string {
if Segment(slug, id) == "" {
return ""
}
return Entity("/play", slug, id)
}
// Detail 短剧详情页,对应 H5 /detail/{slug|id}/。
func Detail(slug string, id int64) string {
if Segment(slug, id) == "" {
return ""
}
return Entity("/detail", slug, id)
}
// Topic 专题详情页,对应 H5 /topics/{slug|id}/。
func Topic(slug string, id int64) string {
if Segment(slug, id) == "" {
return ""
}
return Entity("/topics", slug, id)
}
// ContentTag 标签列表页,对应 H5 /tag/{slug|id}/。
func ContentTag(slug string, id int64) string {
if Segment(slug, id) == "" {
return ""
}
return Entity("/tag", slug, id)
}
// HomeMore 首页模块更多页,对应 H5 /config/{slug|id}/。
func HomeMore(slug string, id int64) string {
if Segment(slug, id) == "" {
return ""
}
return Entity("/config", slug, id)
}
func PlayletChapter(slug string, playletID, chapterID int64) string {
base := Playlet(slug, playletID)
if base == "" || chapterID <= 0 {
return ""
}
return base + "/" + strconv.FormatInt(chapterID, 10)
}
func TopicDetail(slug string, id int64) string {
if Segment(slug, id) == "" {
return "/topic"
}
return Entity("/topic-detail", slug, id)
}
func Tag(slug string, id int64) string {
if Segment(slug, id) == "" {
return ""
}
return Entity("/tags", slug, id)
}
func ListTheme(slug string, id int64) string {
if Segment(slug, id) == "" {
return "/list"
}
return Entity("/list", slug, id)
}
func MoreList(slug string, id int64) string {
if Segment(slug, id) == "" {
return ""
}
return Entity("/more-list", slug, id)
}
// Abs 拼绝对地址。首页保留尾斜杠,其余页面与 H5 路由一致、不带尾斜杠。
func Abs(webAddr, path string) string {
path = strings.TrimSpace(path)
if path == "" || path == "/" {
return utils.JoinUrlPathKeepSlash(webAddr, "/")
}
return utils.JoinUrlPathKeepSlash(webAddr, "/"+strings.Trim(path, "/"))
}
// SitemapAbs 拼 sitemap 页面绝对地址,统一保留尾斜杠
func SitemapAbs(webAddr, path string) string {
path = strings.TrimSpace(path)
if path == "" || path == "/" {
return utils.JoinUrlPathKeepSlash(webAddr, "/")
}
return utils.JoinUrlPathKeepSlash(webAddr, "/"+strings.Trim(path, "/")+"/")
}