From 695bd3ddf5bf1a84e49824d7a7c4d6e041edd511 Mon Sep 17 00:00:00 2001 From: marvzhang Date: Sat, 18 Jul 2020 12:48:21 +0800 Subject: [PATCH] added batch delete schedules --- backend/main.go | 18 ++++++------ backend/routes/schedule.go | 59 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 8 deletions(-) diff --git a/backend/main.go b/backend/main.go index 189a12f1..7a0b6ba0 100644 --- a/backend/main.go +++ b/backend/main.go @@ -256,14 +256,16 @@ func main() { } // 定时任务 { - authGroup.GET("/schedules", routes.GetScheduleList) // 定时任务列表 - authGroup.GET("/schedules/:id", routes.GetSchedule) // 定时任务详情 - authGroup.PUT("/schedules", routes.PutSchedule) // 创建定时任务 - authGroup.PUT("/schedules/batch", routes.PutBatchSchedules) // 批量创建定时任务 - authGroup.POST("/schedules/:id", routes.PostSchedule) // 修改定时任务 - authGroup.DELETE("/schedules/:id", routes.DeleteSchedule) // 删除定时任务 - authGroup.POST("/schedules/:id/disable", routes.DisableSchedule) // 禁用定时任务 - authGroup.POST("/schedules/:id/enable", routes.EnableSchedule) // 启用定时任务 + authGroup.GET("/schedules", routes.GetScheduleList) // 定时任务列表 + authGroup.GET("/schedules/:id", routes.GetSchedule) // 定时任务详情 + authGroup.PUT("/schedules", routes.PutSchedule) // 创建定时任务 + authGroup.PUT("/schedules/batch", routes.PutBatchSchedules) // 批量创建定时任务 + authGroup.POST("/schedules/:id", routes.PostSchedule) // 修改定时任务 + authGroup.DELETE("/schedules/:id", routes.DeleteSchedule) // 删除定时任务 + authGroup.DELETE("/schedules", routes.DeleteBatchSchedules) // 批量删除定时任务 + authGroup.POST("/schedules/:id/disable", routes.DisableSchedule) // 禁用定时任务 + authGroup.POST("/schedules/:id/enable", routes.EnableSchedule) // 启用定时任务 + authGroup.POST("/schedules-set-status", routes.SetStatusSchedules) // 批量设置定时任务状态 } // 用户 { diff --git a/backend/routes/schedule.go b/backend/routes/schedule.go index 3cca75af..9009fae5 100644 --- a/backend/routes/schedule.go +++ b/backend/routes/schedule.go @@ -259,3 +259,62 @@ func PutBatchSchedules(c *gin.Context) { HandleSuccess(c) } + +func DeleteBatchSchedules(c *gin.Context) { + ids := make(map[string][]string) + if err := c.ShouldBindJSON(&ids); err != nil { + HandleError(http.StatusBadRequest, c, err) + return + } + list := ids["ids"] + for _, id := range list { + if err := model.RemoveSchedule(bson.ObjectIdHex(id)); err != nil { + HandleError(http.StatusInternalServerError, c, err) + return + } + } + + // 更新定时任务 + if err := services.Sched.Update(); err != nil { + HandleError(http.StatusInternalServerError, c, err) + return + } + + HandleSuccess(c) +} + +func SetStatusSchedules(c *gin.Context) { + type ReqBody struct { + ScheduleIds []bson.ObjectId `json:"schedule_ids"` + Enabled bool `json:"enabled"` + } + var reqBody ReqBody + if err := c.ShouldBindJSON(&reqBody); err != nil { + HandleError(http.StatusBadRequest, c, err) + return + } + for _, id := range reqBody.ScheduleIds { + s, err := model.GetSchedule(id) + if err != nil { + log.Errorf("get schedule error: " + err.Error()) + debug.PrintStack() + HandleError(http.StatusInternalServerError, c, err) + return + } + s.Enabled = reqBody.Enabled + if err := s.Save(); err != nil { + log.Errorf("save schedule error: " + err.Error()) + debug.PrintStack() + HandleError(http.StatusInternalServerError, c, err) + return + } + } + + // 更新定时任务 + if err := services.Sched.Update(); err != nil { + HandleError(http.StatusInternalServerError, c, err) + return + } + + HandleSuccess(c) +}