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) } }