Files
urldb/handlers/scheduler_handler.go

162 lines
4.9 KiB
Go
Raw Permalink Normal View History

2025-07-11 17:45:16 +08:00
package handlers
import (
"net/http"
2025-08-05 11:45:18 +08:00
"github.com/ctwj/urldb/scheduler"
2025-07-11 17:45:16 +08:00
"github.com/gin-gonic/gin"
)
// GetSchedulerStatus 获取调度器状态
func GetSchedulerStatus(c *gin.Context) {
2025-08-05 11:45:18 +08:00
scheduler := scheduler.GetGlobalScheduler(
2025-07-12 21:23:23 +08:00
repoManager.HotDramaRepository,
repoManager.ReadyResourceRepository,
repoManager.ResourceRepository,
repoManager.SystemConfigRepository,
2025-07-15 12:50:24 +08:00
repoManager.PanRepository,
2025-07-18 00:34:27 +08:00
repoManager.CksRepository,
2025-07-25 22:24:08 +08:00
repoManager.TagRepository,
repoManager.CategoryRepository,
2025-07-12 21:23:23 +08:00
)
2025-07-11 17:45:16 +08:00
status := gin.H{
2025-07-12 21:23:23 +08:00
"hot_drama_scheduler_running": scheduler.IsHotDramaSchedulerRunning(),
"ready_resource_scheduler_running": scheduler.IsReadyResourceRunning(),
2025-07-11 17:45:16 +08:00
}
SuccessResponse(c, status)
}
// 启动热播剧定时任务
func StartHotDramaScheduler(c *gin.Context) {
2025-08-05 11:45:18 +08:00
scheduler := scheduler.GetGlobalScheduler(
2025-07-12 21:23:23 +08:00
repoManager.HotDramaRepository,
repoManager.ReadyResourceRepository,
repoManager.ResourceRepository,
repoManager.SystemConfigRepository,
2025-07-15 12:50:24 +08:00
repoManager.PanRepository,
2025-07-18 00:34:27 +08:00
repoManager.CksRepository,
2025-07-25 22:24:08 +08:00
repoManager.TagRepository,
repoManager.CategoryRepository,
2025-07-12 21:23:23 +08:00
)
2025-07-11 17:45:16 +08:00
if scheduler.IsHotDramaSchedulerRunning() {
ErrorResponse(c, "热播剧定时任务已在运行中", http.StatusBadRequest)
return
}
scheduler.StartHotDramaScheduler()
SuccessResponse(c, gin.H{"message": "热播剧定时任务已启动"})
}
// 停止热播剧定时任务
func StopHotDramaScheduler(c *gin.Context) {
2025-08-05 11:45:18 +08:00
scheduler := scheduler.GetGlobalScheduler(
2025-07-12 21:23:23 +08:00
repoManager.HotDramaRepository,
repoManager.ReadyResourceRepository,
repoManager.ResourceRepository,
repoManager.SystemConfigRepository,
2025-07-15 12:50:24 +08:00
repoManager.PanRepository,
2025-07-18 00:34:27 +08:00
repoManager.CksRepository,
2025-07-25 22:24:08 +08:00
repoManager.TagRepository,
repoManager.CategoryRepository,
2025-07-12 21:23:23 +08:00
)
2025-07-11 17:45:16 +08:00
if !scheduler.IsHotDramaSchedulerRunning() {
ErrorResponse(c, "热播剧定时任务未在运行", http.StatusBadRequest)
return
}
scheduler.StopHotDramaScheduler()
SuccessResponse(c, gin.H{"message": "热播剧定时任务已停止"})
}
// 手动触发热播剧定时任务
func TriggerHotDramaScheduler(c *gin.Context) {
2025-08-05 11:45:18 +08:00
scheduler := scheduler.GetGlobalScheduler(
2025-07-12 21:23:23 +08:00
repoManager.HotDramaRepository,
repoManager.ReadyResourceRepository,
repoManager.ResourceRepository,
repoManager.SystemConfigRepository,
2025-07-15 12:50:24 +08:00
repoManager.PanRepository,
2025-07-18 00:34:27 +08:00
repoManager.CksRepository,
2025-07-25 22:24:08 +08:00
repoManager.TagRepository,
repoManager.CategoryRepository,
2025-07-12 21:23:23 +08:00
)
2025-07-11 17:45:16 +08:00
scheduler.StartHotDramaScheduler() // 直接启动一次
SuccessResponse(c, gin.H{"message": "手动触发热播剧定时任务成功"})
}
// 手动获取热播剧名字
func FetchHotDramaNames(c *gin.Context) {
2025-08-05 11:45:18 +08:00
scheduler := scheduler.GetGlobalScheduler(
2025-07-12 21:23:23 +08:00
repoManager.HotDramaRepository,
repoManager.ReadyResourceRepository,
repoManager.ResourceRepository,
repoManager.SystemConfigRepository,
2025-07-15 12:50:24 +08:00
repoManager.PanRepository,
2025-07-18 00:34:27 +08:00
repoManager.CksRepository,
2025-07-25 22:24:08 +08:00
repoManager.TagRepository,
repoManager.CategoryRepository,
2025-07-12 21:23:23 +08:00
)
2025-07-11 17:45:16 +08:00
names, err := scheduler.GetHotDramaNames()
if err != nil {
ErrorResponse(c, "获取热播剧名字失败: "+err.Error(), http.StatusInternalServerError)
return
}
SuccessResponse(c, gin.H{"names": names})
}
2025-07-12 21:23:23 +08:00
// 启动待处理资源自动处理任务
func StartReadyResourceScheduler(c *gin.Context) {
2025-08-05 11:45:18 +08:00
scheduler := scheduler.GetGlobalScheduler(
2025-07-12 21:23:23 +08:00
repoManager.HotDramaRepository,
repoManager.ReadyResourceRepository,
repoManager.ResourceRepository,
repoManager.SystemConfigRepository,
2025-07-15 12:50:24 +08:00
repoManager.PanRepository,
2025-07-18 00:34:27 +08:00
repoManager.CksRepository,
2025-07-25 22:24:08 +08:00
repoManager.TagRepository,
repoManager.CategoryRepository,
2025-07-12 21:23:23 +08:00
)
if scheduler.IsReadyResourceRunning() {
ErrorResponse(c, "待处理资源自动处理任务已在运行中", http.StatusBadRequest)
return
}
scheduler.StartReadyResourceScheduler()
SuccessResponse(c, gin.H{"message": "待处理资源自动处理任务已启动"})
}
// 停止待处理资源自动处理任务
func StopReadyResourceScheduler(c *gin.Context) {
2025-08-05 11:45:18 +08:00
scheduler := scheduler.GetGlobalScheduler(
2025-07-12 21:23:23 +08:00
repoManager.HotDramaRepository,
repoManager.ReadyResourceRepository,
repoManager.ResourceRepository,
repoManager.SystemConfigRepository,
2025-07-15 12:50:24 +08:00
repoManager.PanRepository,
2025-07-18 00:34:27 +08:00
repoManager.CksRepository,
2025-07-25 22:24:08 +08:00
repoManager.TagRepository,
repoManager.CategoryRepository,
2025-07-12 21:23:23 +08:00
)
if !scheduler.IsReadyResourceRunning() {
ErrorResponse(c, "待处理资源自动处理任务未在运行", http.StatusBadRequest)
return
}
scheduler.StopReadyResourceScheduler()
SuccessResponse(c, gin.H{"message": "待处理资源自动处理任务已停止"})
}
// 手动触发待处理资源自动处理任务
func TriggerReadyResourceScheduler(c *gin.Context) {
2025-08-05 11:45:18 +08:00
scheduler := scheduler.GetGlobalScheduler(
2025-07-12 21:23:23 +08:00
repoManager.HotDramaRepository,
repoManager.ReadyResourceRepository,
repoManager.ResourceRepository,
repoManager.SystemConfigRepository,
2025-07-15 12:50:24 +08:00
repoManager.PanRepository,
2025-07-18 00:34:27 +08:00
repoManager.CksRepository,
2025-07-25 22:24:08 +08:00
repoManager.TagRepository,
repoManager.CategoryRepository,
2025-07-12 21:23:23 +08:00
)
2025-08-05 11:45:18 +08:00
scheduler.StartReadyResourceScheduler() // 直接启动一次
2025-07-12 21:23:23 +08:00
SuccessResponse(c, gin.H{"message": "手动触发待处理资源自动处理任务成功"})
}