mirror of
https://gitee.com/dromara/mayfly-go
synced 2025-11-03 16:00:25 +08:00
96 lines
2.7 KiB
Go
96 lines
2.7 KiB
Go
package api
|
|
|
|
import (
|
|
"mayfly-go/internal/machine/api/form"
|
|
"mayfly-go/internal/machine/api/vo"
|
|
"mayfly-go/internal/machine/application"
|
|
"mayfly-go/internal/machine/application/dto"
|
|
"mayfly-go/internal/machine/domain/entity"
|
|
"mayfly-go/internal/machine/imsg"
|
|
tagapp "mayfly-go/internal/tag/application"
|
|
tagentity "mayfly-go/internal/tag/domain/entity"
|
|
"strings"
|
|
|
|
"mayfly-go/pkg/biz"
|
|
"mayfly-go/pkg/req"
|
|
"mayfly-go/pkg/scheduler"
|
|
"mayfly-go/pkg/utils/collx"
|
|
|
|
"github.com/may-fly/cast"
|
|
)
|
|
|
|
type MachineCronJob struct {
|
|
machineCronJobApp application.MachineCronJob `inject:"T"`
|
|
tagTreeRelateApp tagapp.TagTreeRelate `inject:"T"`
|
|
}
|
|
|
|
func (mcj *MachineCronJob) ReqConfs() *req.Confs {
|
|
reqs := [...]*req.Conf{
|
|
// 获取机器任务列表
|
|
req.NewGet("", mcj.MachineCronJobs),
|
|
|
|
req.NewPost("", mcj.Save).Log(req.NewLogSaveI(imsg.LogMachineCronJobSave)),
|
|
|
|
req.NewDelete(":ids", mcj.Delete).Log(req.NewLogSaveI(imsg.LogMachineCronJobDelete)),
|
|
|
|
req.NewPost("/run/:key", mcj.RunCronJob).Log(req.NewLogSaveI(imsg.LogMachineCronJobRun)),
|
|
|
|
req.NewGet("/execs", mcj.CronJobExecs),
|
|
}
|
|
|
|
return req.NewConfs("machine-cronjobs", reqs[:]...)
|
|
}
|
|
|
|
func (m *MachineCronJob) MachineCronJobs(rc *req.Ctx) {
|
|
cond, pageParam := req.BindQueryAndPage(rc, new(entity.MachineCronJob))
|
|
|
|
var vos []*vo.MachineCronJobVO
|
|
pageRes, err := m.machineCronJobApp.GetPageList(cond, pageParam, &vos)
|
|
biz.ErrIsNil(err)
|
|
|
|
for _, mcj := range vos {
|
|
mcj.Running = scheduler.ExistKey(mcj.Key)
|
|
}
|
|
|
|
m.tagTreeRelateApp.FillTagInfo(tagentity.TagRelateTypeMachineCronJob, collx.ArrayMap(vos, func(mvo *vo.MachineCronJobVO) tagentity.IRelateTag {
|
|
return mvo
|
|
})...)
|
|
|
|
rc.ResData = pageRes
|
|
}
|
|
|
|
func (m *MachineCronJob) Save(rc *req.Ctx) {
|
|
jobForm := new(form.MachineCronJobForm)
|
|
mcj := req.BindJsonAndCopyTo[*entity.MachineCronJob](rc, jobForm, new(entity.MachineCronJob))
|
|
rc.ReqParam = jobForm
|
|
|
|
err := m.machineCronJobApp.SaveMachineCronJob(rc.MetaCtx, &dto.SaveMachineCronJob{
|
|
CronJob: mcj,
|
|
CodePaths: jobForm.CodePaths,
|
|
})
|
|
biz.ErrIsNil(err)
|
|
}
|
|
|
|
func (m *MachineCronJob) Delete(rc *req.Ctx) {
|
|
idsStr := rc.PathParam("ids")
|
|
rc.ReqParam = idsStr
|
|
ids := strings.Split(idsStr, ",")
|
|
|
|
for _, v := range ids {
|
|
m.machineCronJobApp.Delete(rc.MetaCtx, cast.ToUint64(v))
|
|
}
|
|
}
|
|
|
|
func (m *MachineCronJob) RunCronJob(rc *req.Ctx) {
|
|
cronJobKey := rc.PathParam("key")
|
|
biz.NotEmpty(cronJobKey, "cronJob key cannot be empty")
|
|
m.machineCronJobApp.RunCronJob(cronJobKey)
|
|
}
|
|
|
|
func (m *MachineCronJob) CronJobExecs(rc *req.Ctx) {
|
|
cond, pageParam := req.BindQueryAndPage[*entity.MachineCronJobExec](rc, new(entity.MachineCronJobExec))
|
|
res, err := m.machineCronJobApp.GetExecPageList(cond, pageParam, new([]entity.MachineCronJobExec))
|
|
biz.ErrIsNil(err)
|
|
rc.ResData = res
|
|
}
|