按意图重做在 huakui 代码底: - 删除数据埋点逻辑:移除 pub/dataReport、reportser、srv_report、 eventmod、上报定时任务及注册/登录/点赞/收藏/评论/解锁/订单处的 上报调用和 reportSdkConfig 配置下发 - app 认证改为按设备ID识别用户:去掉 token 校验、Register/Login/ ResetPassword/GuestLogin 接口,新增 ResolveDeviceUser 和设备缓存 - 广告改为按 AppId 从媒资中心拉取:pub/storage 新增 QueryAdvitise, UpdateAdvitiseData 替代 UpdateAdvitiseDataFromJt - 后台登录取消谷歌二次验证,密码正确即登录 - 短剧/专题 slug 改为 10 位大小写字母+数字混合 - 本地 app.yaml/web.yaml 保留 HKDJNET_* 模板(不提交生产凭据) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
91 lines
2.7 KiB
Go
91 lines
2.7 KiB
Go
package skd
|
|
|
|
import (
|
|
"hkdj-web-server/pub/common/log"
|
|
"hkdj-web-server/web/service/srv_mediaresource"
|
|
seopushjob "hkdj-web-server/web/skd/job/seopush"
|
|
"hkdj-web-server/web/skd/job/vipexpiry"
|
|
"hkdj-web-server/web/skd/playletwatermark"
|
|
"hkdj-web-server/web/skd/videosync"
|
|
"hkdj-web-server/web/webg"
|
|
"math/rand"
|
|
"time"
|
|
|
|
"github.com/robfig/cron/v3"
|
|
)
|
|
|
|
var (
|
|
skdCron *cron.Cron
|
|
)
|
|
|
|
func init() {
|
|
skdCron = cron.New(cron.WithSeconds()) // 秒级定时任务
|
|
}
|
|
|
|
func Start() {
|
|
log.Info("skd start...")
|
|
rand.Seed(time.Now().UnixNano())
|
|
|
|
if webg.Conf.MediaJobsEnabled {
|
|
|
|
// 视频同步:每10分钟从媒资库增量同步到 video_information
|
|
_, _ = skdCron.AddFunc("0 */10 * * * ?", func() {
|
|
videosync.VideoSync()
|
|
})
|
|
|
|
// 短剧水印:每5分钟提交最多10条未处理剧集到 media
|
|
_, _ = skdCron.AddFunc("0 */5 * * * ?", func() {
|
|
playletwatermark.SubmitPendingChapters()
|
|
})
|
|
// 短剧水印:每3分钟拉取 media 已完成任务并回写剧集
|
|
_, _ = skdCron.AddFunc("0 */3 * * * ?", func() {
|
|
playletwatermark.SyncCompletedChapters()
|
|
})
|
|
// 连载中短剧:每60分钟扫描一次并投递到 Redis 队列,由后台消费者逐条同步
|
|
_, _ = skdCron.AddFunc(srv_mediaresource.PlayletSerialSyncCronSpec, func() {
|
|
srv_mediaresource.EnqueueSerialPlayletSyncJobs()
|
|
})
|
|
// 历史短剧压缩封面:每5分钟扫描压缩封面为空的记录并投递队列
|
|
_, _ = skdCron.AddFunc(srv_mediaresource.PlayletCoverCompressCronSpec, func() {
|
|
srv_mediaresource.EnqueuePlayletCoverCompressJobs()
|
|
})
|
|
_, _ = skdCron.AddFunc(srv_mediaresource.AIContentBackflowCronSpec(), func() {
|
|
go srv_mediaresource.ReportAIContentBackflowYesterday()
|
|
})
|
|
_, _ = skdCron.AddFunc(srv_mediaresource.AIContentBackflowTodayStatCronSpec(), func() {
|
|
go srv_mediaresource.RefreshAIContentBackflowTodayStats()
|
|
})
|
|
go srv_mediaresource.RefreshAIContentBackflowTodayStats()
|
|
|
|
}
|
|
|
|
// 每天凌晨 02:00 重置 VIP 已过期用户的 VipType
|
|
_, _ = skdCron.AddFunc("0 0 2 * * ?", func() {
|
|
vipexpiry.ResetExpiredVip()
|
|
})
|
|
|
|
// 搜索引擎推送兜底:补推已上架短剧并重试失败任务。
|
|
// 开关关闭或非正式环境不会真正对外提交,详见 srv_seopush.seoPushEnabled
|
|
_, _ = skdCron.AddFunc("0/30 * * * * ?", func() {
|
|
seopushjob.Run()
|
|
})
|
|
|
|
//if webg.Conf.LsjMediaConf.ApiUrl != "" {
|
|
// _, _ = skdCron.AddFunc("0 30 */2 * * ?", func() {
|
|
// transcodejob.TranscodeVideoByWatchTimes()
|
|
// })
|
|
// _, _ = skdCron.AddFunc("0 */5 * * * ?", func() {
|
|
// transcodejob.CheckTranscodingResults()
|
|
// })
|
|
//}
|
|
|
|
skdCron.Start()
|
|
}
|
|
|
|
func Stop() {
|
|
log.Info("srv_datinggirl:updater Stop...")
|
|
defer log.Info("srv_datinggirl: updater Stop!!!")
|
|
srv_mediaresource.CloseAIContentBackflowClient()
|
|
skdCron.Stop()
|
|
}
|