61 lines
1.8 KiB
Go
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)
|
|
}
|
|
}
|