Files
2026-10-26 16:28:14 +08:00

61 lines
1.8 KiB
Go

package srv_seopush
import (
"context"
"time"
"videoweb/pub/models/playletmod"
"videoweb/pub/pubdef"
"videoweb/pub/seo/sitemapdirty"
)
// MarkSitemapDirty 通知 app 进程重新生成 sitemap。
func MarkSitemapDirty(ctx context.Context) {
sitemapdirty.Mark(ctx)
}
// NotifyPlayletAfterWrite 短剧写入后:刷新 sitemap 标记。
// 搜索引擎只在新上架(含新增即上架)或从已上架变为下架时推送,普通改内容不推。
func NotifyPlayletAfterWrite(ctx context.Context, playletId int64, prevStatus *playletmod.Status, status playletmod.Status, onlineAt time.Time) {
MarkSitemapDirty(ctx)
wasUp := prevStatus != nil && *prevStatus == playletmod.StatusUp
if status == playletmod.StatusUp {
if !wasUp {
EnqueueUpdated(ctx, KindPlaylet, playletId, PageVisiblePlaylet(status, onlineAt))
}
return
}
if wasUp {
EnqueueDeleted(ctx, KindPlaylet, playletId)
}
}
// NotifyPlayletAfterStatus 批量上下架后的 SEO 通知
func NotifyPlayletAfterStatus(ctx context.Context, ids []int64, status playletmod.Status, onlineAt time.Time) {
MarkSitemapDirty(ctx)
if status == playletmod.StatusUp {
for _, id := range ids {
EnqueueUpdated(ctx, KindPlaylet, id, PageVisiblePlaylet(status, onlineAt))
}
return
}
for _, id := range ids {
EnqueueDeleted(ctx, KindPlaylet, id)
}
}
// NotifyInfoAfterWrite 视频写入后的 SEO 通知。
// 搜索引擎只在新上架或从已上架变为下架时推送,普通改内容不推。
func NotifyInfoAfterWrite(ctx context.Context, kind string, id int64, prevStatus, status pubdef.InformationStatus) {
MarkSitemapDirty(ctx)
wasUp := prevStatus == pubdef.InformationStatusVerifyOK
if PageVisibleInfo(status) {
if !wasUp {
EnqueueUpdated(ctx, kind, id, true)
}
return
}
if wasUp {
EnqueueDeleted(ctx, kind, id)
}
}