Files
PandaX/apps/job/api/job.go
2022-08-03 17:21:07 +08:00

103 lines
2.7 KiB
Go

package api
import (
"github.com/XM-GO/PandaKit/biz"
"github.com/XM-GO/PandaKit/restfulx"
"github.com/XM-GO/PandaKit/utils"
"pandax/apps/job/api/from"
"pandax/apps/job/entity"
"pandax/apps/job/jobs"
"pandax/apps/job/services"
)
type JobApi struct {
JobApp services.JobModel
}
func (j *JobApi) CreateJob(rc *restfulx.ReqCtx) {
var job entity.SysJob
restfulx.BindQuery(rc, &job)
job.CreateBy = rc.LoginAccount.UserName
j.JobApp.Insert(job)
}
func (j *JobApi) GetJobList(rc *restfulx.ReqCtx) {
pageNum := restfulx.QueryInt(rc, "pageNum", 1)
pageSize := restfulx.QueryInt(rc, "pageSize", 10)
jobName := restfulx.QueryParam(rc, "jobName")
jobGroup := restfulx.QueryParam(rc, "jobGroup")
status := restfulx.QueryParam(rc, "status")
list, total := j.JobApp.FindListPage(pageNum, pageSize, entity.SysJob{JobName: jobName, JobGroup: jobGroup, Status: status})
rc.ResData = map[string]any{
"data": list,
"total": total,
"pageNum": pageNum,
"pageSize": pageSize,
}
}
func (j *JobApi) GetJob(rc *restfulx.ReqCtx) {
jobId := restfulx.PathParamInt(rc, "jobId")
rc.ResData = j.JobApp.FindOne(int64(jobId))
}
func (l *JobApi) UpdateJob(rc *restfulx.ReqCtx) {
var job entity.SysJob
restfulx.BindQuery(rc, &job)
l.JobApp.Update(job)
}
func (l *JobApi) DeleteJob(rc *restfulx.ReqCtx) {
jobIds := restfulx.PathParam(rc, "jobId")
group := utils.IdsStrToIdsIntGroup(jobIds)
l.JobApp.Delete(group)
}
func (l *JobApi) StopJobForService(rc *restfulx.ReqCtx) {
jobId := restfulx.PathParamInt(rc, "jobId")
job := l.JobApp.FindOne(int64(jobId))
jobs.Remove(jobs.Crontab, job.EntryId)
}
func (l *JobApi) StartJobForService(rc *restfulx.ReqCtx) {
jobId := restfulx.PathParamInt(rc, "jobId")
job := l.JobApp.FindOne(int64(jobId))
biz.IsTrue(job.Status == "0", "以关闭的任务不能开启")
biz.IsTrue(job.EntryId == 0, "任务不能重复启动")
var err error
if job.JobType == "1" {
var j = &jobs.HttpJob{}
j.InvokeTarget = job.InvokeTarget
j.CronExpression = job.CronExpression
j.JobId = job.JobId
j.Name = job.JobName
j.JobGroup = job.JobGroup
j.MisfirePolicy = job.MisfirePolicy
job.EntryId, err = jobs.AddJob(jobs.Crontab, j)
biz.ErrIsNil(err, "添加JOB失败")
} else {
var j = &jobs.ExecJob{}
j.InvokeTarget = job.InvokeTarget
j.CronExpression = job.CronExpression
j.JobId = job.JobId
j.Name = job.JobName
j.JobGroup = job.JobGroup
j.Args = job.Args
j.MisfirePolicy = job.MisfirePolicy
job.EntryId, err = jobs.AddJob(jobs.Crontab, j)
biz.ErrIsNil(err, "添加JOB失败")
}
l.JobApp.Update(*job)
}
func (l *JobApi) UpdateStatusJob(rc *restfulx.ReqCtx) {
var job from.JobStatus
restfulx.BindQuery(rc, &job)
l.JobApp.Update(entity.SysJob{JobId: job.JobId, Status: job.Status})
}