init: web_hgdjc_server
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
package srv_playlet
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
"videoweb/pub/common/log"
|
||||
"videoweb/pub/models/playletmod"
|
||||
"videoweb/pub/seo/sitemapdirty"
|
||||
"videoweb/web/service/srv_seopush"
|
||||
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/mongo/options"
|
||||
)
|
||||
|
||||
func markSitemapDirty(ctx context.Context) {
|
||||
sitemapdirty.Mark(ctx)
|
||||
}
|
||||
|
||||
// notifyPlayletSeoAfterWrite 短剧写入后:刷新 sitemap 标记。
|
||||
// 搜索引擎只在新上架(含新增即上架)或从已上架变为下架时推送,普通改内容不推。
|
||||
// prevStatus 为变更前状态;nil 表示新增。
|
||||
func notifyPlayletSeoAfterWrite(ctx context.Context, playletId int64, prevStatus *playletmod.Status) {
|
||||
markSitemapDirty(ctx)
|
||||
item, err := playletmod.FindOnePlaylet(ctx, bson.M{playletmod.FN.Playlet.Id: playletId},
|
||||
options.FindOne().SetProjection(bson.D{
|
||||
{Key: playletmod.FN.Playlet.Id, Value: 1},
|
||||
{Key: playletmod.FN.Playlet.Status, Value: 1},
|
||||
{Key: playletmod.FN.Playlet.OnlineAt, Value: 1},
|
||||
}))
|
||||
if err != nil || item == nil {
|
||||
if err != nil {
|
||||
log.Warn("seopush: load playlet after write failed", log.Any("playletId", playletId), log.E(err))
|
||||
}
|
||||
return
|
||||
}
|
||||
wasUp := prevStatus != nil && *prevStatus == playletmod.StatusUp
|
||||
if item.Status == playletmod.StatusUp {
|
||||
if !wasUp {
|
||||
srv_seopush.EnqueuePlayletUpdated(ctx, item.Id, item.Status, item.OnlineAt)
|
||||
}
|
||||
return
|
||||
}
|
||||
if wasUp {
|
||||
srv_seopush.EnqueuePlayletDeleted(ctx, item.Id)
|
||||
}
|
||||
}
|
||||
|
||||
// notifyPlayletSeoAfterStatus 批量上下架后的 SEO 通知
|
||||
func notifyPlayletSeoAfterStatus(ctx context.Context, ids []int64, status playletmod.Status, onlineAt time.Time) {
|
||||
markSitemapDirty(ctx)
|
||||
if status == playletmod.StatusUp {
|
||||
for _, id := range ids {
|
||||
srv_seopush.EnqueuePlayletUpdated(ctx, id, status, onlineAt)
|
||||
}
|
||||
return
|
||||
}
|
||||
for _, id := range ids {
|
||||
srv_seopush.EnqueuePlayletDeleted(ctx, id)
|
||||
}
|
||||
}
|
||||
|
||||
// notifyPlayletSeoAfterDelete 物理删除后刷新 sitemap 标记,并对原上架短剧推送删除通知。
|
||||
func notifyPlayletSeoAfterDelete(ctx context.Context, onlineIds []int64) {
|
||||
markSitemapDirty(ctx)
|
||||
for _, id := range onlineIds {
|
||||
srv_seopush.EnqueuePlayletDeleted(ctx, id)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user