package apis import ( cJobs "IotAdmin/common/jobs" "IotAdmin/common/permission" "IotAdmin/core/sdk" "fmt" "net/http" "IotAdmin/core/sdk/api" "IotAdmin/core/sdk/pkg/jwt-auth/user" _ "IotAdmin/core/sdk/pkg/response" "github.com/gin-gonic/gin" "IotAdmin/app/schedule/models" "IotAdmin/app/schedule/service" "IotAdmin/app/schedule/service/dto" ) // SysJobApi 定时任务接口 type SysJobApi struct { api.Api } // GetPage 获取定时任务列表 // @Summary 获取定时任务列表 // @Description 获取定时任务列表 // @Tags 定时任务管理 // @Param jobName query string false "名称" // @Param jobGroup query string false "任务分组" // @Param jobType query int false "调用类型" // @Param invokeTarget query string false "调用目标" // @Param status query int false "状态" // @Param pageSize query int false "页条数" // @Param pageIndex query int false "页码" // @Success 200 {object} response.Response{data=response.Page{list=[]models.SysJob}} "{"code": 200, "data": [...]}" // @Router /api/sys-job [get] // @Security Bearer func (e SysJobApi) GetPage(c *gin.Context) { req := dto.SysJobGetPageReq{} s := service.SysJobService{} err := e.MakeContext(c). MakeOrm(). Bind(&req). MakeService(&s.Service). Errors if err != nil { e.Logger.Error(err) e.Error(500, err, err.Error()) return } p := permission.GetPermissionFromContext(c) list := make([]models.SysJob, 0) var count int64 err = s.GetPage(&req, p, &list, &count) if err != nil { e.Error(500, err, fmt.Sprintf("获取定时任务失败,\r\n失败信息 %s", err.Error())) return } e.PageOK(list, int(count), req.GetPageIndex(), req.GetPageSize(), "查询成功") } // Get 获取定时任务 // @Summary 获取定时任务 // @Description 获取定时任务 // @Tags 定时任务管理 // @Param id path int false "id" // @Success 200 {object} response.Response{data=models.SysJob} "{"code": 200, "data": [...]}" // @Router /api/sys-job/{id} [get] // @Security Bearer func (e SysJobApi) Get(c *gin.Context) { req := dto.SysJobGetReq{} s := service.SysJobService{} err := e.MakeContext(c). MakeOrm(). Bind(&req). MakeService(&s.Service). Errors if err != nil { e.Logger.Error(err) e.Error(500, err, err.Error()) return } var object models.SysJob p := permission.GetPermissionFromContext(c) err = s.Get(&req, p, &object) if err != nil { e.Error(500, err, fmt.Sprintf("获取定时任务失败,\r\n失败信息 %s", err.Error())) return } e.OK(object, "查询成功") } // Insert 添加定时任务 // @Summary 添加定时任务 // @Description 添加定时任务 // @Tags 定时任务管理 // @Accept application/json // @Product application/json // @Param data body dto.SysJobInsertReq true "data" // @Success 200 {object} response.Response "{"code": 200, "message": "添加成功"}" // @Router /api/sys-job [post] // @Security Bearer func (e SysJobApi) Insert(c *gin.Context) { req := dto.SysJobInsertReq{} s := service.SysJobService{} err := e.MakeContext(c). MakeOrm(). Bind(&req). MakeService(&s.Service). Errors if err != nil { e.Logger.Error(err) e.Error(500, err, err.Error()) return } // 设置创建人 req.SetCreateBy(user.GetUserId(c)) err = s.Insert(&req) if err != nil { e.Error(500, err, fmt.Sprintf("添加定时任务失败,\r\n失败信息 %s", err.Error())) return } e.OK(req.GetId(), "添加成功") } // Update 修改定时任务 // @Summary 修改定时任务 // @Description 修改定时任务 // @Tags 定时任务管理 // @Accept application/json // @Product application/json // @Param id path int true "id" // @Param data body dto.SysJobUpdateReq true "body" // @Success 200 {object} response.Response "{"code": 200, "message": "修改成功"}" // @Router /api/sys-job/{id} [put] // @Security Bearer func (e SysJobApi) Update(c *gin.Context) { req := dto.SysJobUpdateReq{} s := service.SysJobService{} err := e.MakeContext(c). MakeOrm(). Bind(&req). MakeService(&s.Service). Errors if err != nil { e.Logger.Error(err) e.Error(500, err, err.Error()) return } req.SetUpdateBy(user.GetUserId(c)) p := permission.GetPermissionFromContext(c) err = s.Update(&req, p) if err != nil { e.Error(500, err, fmt.Sprintf("修改定时任务失败,\r\n失败信息 %s", err.Error())) return } e.OK(req.GetId(), "修改成功") } // Delete 删除定时任务 // @Summary 删除定时任务 // @Description 删除定时任务 // @Tags 定时任务管理 // @Param data body dto.SysJobDeleteReq true "body" // @Success 200 {object} response.Response "{"code": 200, "message": "删除成功"}" // @Router /api/sys-job [delete] // @Security Bearer func (e SysJobApi) Delete(c *gin.Context) { s := service.SysJobService{} req := dto.SysJobDeleteReq{} err := e.MakeContext(c). MakeOrm(). Bind(&req). MakeService(&s.Service). Errors if err != nil { e.Logger.Error(err) e.Error(500, err, err.Error()) return } // req.SetUpdateBy(user.GetUserId(c)) p := permission.GetPermissionFromContext(c) err = s.Remove(&req, p) if err != nil { e.Error(500, err, fmt.Sprintf("删除定时任务失败,\r\n失败信息 %s", err.Error())) return } e.OK(req.GetId(), "删除成功") } // GetJobKeys 获取系统内的定时任务 // @Summary 获取系统内的定时任务 // @Description 获取系统内的定时任务 // @Tags 定时任务管理 // @Product application/json // @Success 200 {object} response.Response "{"code": 200, "data": [...]}" // @Router /api/sys-job/keys [get] // @Security Bearer func (e SysJobApi) GetJobKeys(c *gin.Context) { if err := e.MakeContext(c).Errors; err != nil { e.Logger.Error(err) e.Error(500, err, err.Error()) return } result := cJobs.GetJobKeys() e.OK(result, "获取成功") } // Start 启动定时任务 // @Summary 启动定时任务 // @Description 启动定时任务 // @Tags 定时任务管理 // @Product application/json // @Param data body dto.SysJobInsertReq true "data" // @Success 200 {object} response.Response "{"code": 200, "message": "添加成功"}" // @Router /api/sys-job/start/{id} [post] // @Security Bearer func (e SysJobApi) Start(c *gin.Context) { s := service.SysJobService{} var v dto.SysJobGetReq err := e.MakeContext(c). MakeOrm(). Bind(&v). MakeService(&s.Service). Errors if err != nil { e.Logger.Warnf("参数验证错误, error: %s", err) e.Error(http.StatusUnprocessableEntity, err, "参数验证失败") return } s.Cron = sdk.Runtime.GetCrontabKey(c.Request.Host) err = s.StartJob(&v) if err != nil { e.Logger.Errorf("GetCrontabKey error, %s", err.Error()) e.Error(500, err, err.Error()) return } e.OK(nil, s.Msg) } // Stop 停止定时任务 // @Summary 停止定时任务 // @Description 停止定时任务 // @Tags 定时任务管理 // @Product application/json // @Param data body dto.SysJobInsertReq true "data" // @Success 200 {object} response.Response "{"code": 200, "message": "添加成功"}" // @Router /api/sys-job/stop/{id} [post] // @Security Bearer func (e SysJobApi) Stop(c *gin.Context) { v := dto.SysJobGetReq{} s := service.SysJobService{} err := e.MakeContext(c). MakeOrm(). Bind(&v). MakeService(&s.Service). Errors if err != nil { e.Logger.Error(err) return } s.Cron = sdk.Runtime.GetCrontabKey(c.Request.Host) err = s.StopJob(&v) if err != nil { e.Logger.Errorf("RemoveJob error, %s", err.Error()) e.Error(500, err, "") return } e.OK(nil, s.Msg) }