mirror of
https://github.com/go-admin-team/go-admin.git
synced 2026-09-21 10:13:01 +00:00
增加service实现
This commit is contained in:
@@ -1,7 +1,10 @@
|
||||
package sysjob
|
||||
|
||||
import (
|
||||
"go-admin/app/admin/service"
|
||||
"go-admin/common/apis"
|
||||
"go-admin/common/dto"
|
||||
"gorm.io/gorm"
|
||||
"time"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
@@ -13,6 +16,50 @@ import (
|
||||
"go-admin/tools/app/msg"
|
||||
)
|
||||
|
||||
type SysJob struct {
|
||||
apis.Api
|
||||
}
|
||||
|
||||
// RemoveJobForService 调用service实现
|
||||
func (e *SysJob) RemoveJobForService(c *gin.Context) {
|
||||
db, err := e.GetOrm(c)
|
||||
if err != nil {
|
||||
app.Error(c, 500, err, "")
|
||||
}
|
||||
var v dto.GeneralDelDto
|
||||
err = c.BindUri(&v)
|
||||
if err != nil {
|
||||
app.Error(c, 422, err, "参数验证失败")
|
||||
}
|
||||
s := service.SysJob{}
|
||||
s.Orm = db
|
||||
err = s.RemoveJob(&v)
|
||||
if err != nil {
|
||||
app.Error(c, 500, err, "")
|
||||
}
|
||||
app.OK(c, nil, s.Msg)
|
||||
}
|
||||
|
||||
// StartJobForService 启动job service实现
|
||||
func (e *SysJob) StartJobForService(c *gin.Context) {
|
||||
db, err := e.GetOrm(c)
|
||||
if err != nil {
|
||||
app.Error(c, 500, err, "")
|
||||
}
|
||||
var v dto.GeneralGetDto
|
||||
err = c.BindUri(&v)
|
||||
if err != nil {
|
||||
app.Error(c, 422, err, "参数验证失败")
|
||||
}
|
||||
s := service.SysJob{}
|
||||
s.Orm = db
|
||||
err = s.StartJob(&v)
|
||||
if err != nil {
|
||||
app.Error(c, 500, err, "")
|
||||
}
|
||||
app.OK(c, nil, s.Msg)
|
||||
}
|
||||
|
||||
func RemoveJob(c *gin.Context) {
|
||||
var data models.SysJob
|
||||
var v dto.GeneralDelDto
|
||||
@@ -35,6 +82,34 @@ func RemoveJob(c *gin.Context) {
|
||||
|
||||
}
|
||||
|
||||
// StartJobForService 启动job service实现
|
||||
func StartJobForService(c *gin.Context) {
|
||||
var err error
|
||||
idb, exist := c.Get("db")
|
||||
if !exist {
|
||||
app.Error(c, 500, nil, "db connect not exist")
|
||||
}
|
||||
switch idb.(type) {
|
||||
case *gorm.DB:
|
||||
//新增操作
|
||||
db := idb.(*gorm.DB)
|
||||
var v dto.GeneralGetDto
|
||||
err = c.BindUri(&v)
|
||||
if err != nil {
|
||||
app.Error(c, 422, err, "参数验证失败")
|
||||
}
|
||||
s := service.SysJob{}
|
||||
s.Orm = db
|
||||
err = s.StartJob(&v)
|
||||
if err != nil {
|
||||
app.Error(c, 500, err, "")
|
||||
}
|
||||
app.OK(c, nil, s.Msg)
|
||||
default:
|
||||
app.Error(c, 500, nil, "db connect not exist")
|
||||
}
|
||||
}
|
||||
|
||||
func StartJob(c *gin.Context) {
|
||||
var data models.SysJob
|
||||
var v dto.GeneralGetDto
|
||||
|
||||
@@ -10,7 +10,7 @@ import (
|
||||
jwt "go-admin/pkg/jwtauth"
|
||||
)
|
||||
|
||||
func init() {
|
||||
func init() {
|
||||
routerCheckRole = append(routerCheckRole, registerSysJobRouter)
|
||||
}
|
||||
|
||||
@@ -29,7 +29,8 @@ func registerSysJobRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddlew
|
||||
r.PUT("", actions.PermissionAction(), actions.UpdateAction(new(dto.SysJobControl)))
|
||||
r.DELETE("/:id", actions.PermissionAction(), actions.DeleteAction(new(dto.SysJobById)))
|
||||
}
|
||||
sysJob := &sysjob.SysJob{}
|
||||
|
||||
v1.GET("/job/remove/:id", sysjob.RemoveJob)
|
||||
v1.GET("/job/start/:id", sysjob.StartJob)
|
||||
v1.GET("/job/remove/:id", sysJob.RemoveJobForService)
|
||||
v1.GET("/job/start/:id", sysJob.StartJobForService)
|
||||
}
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"go-admin/app/admin/models"
|
||||
"go-admin/app/jobs"
|
||||
"go-admin/common/dto"
|
||||
"go-admin/common/service"
|
||||
"go-admin/tools/app/msg"
|
||||
"time"
|
||||
)
|
||||
|
||||
type SysJob struct {
|
||||
service.Service
|
||||
}
|
||||
|
||||
// RemoveJob 删除job
|
||||
func (e *SysJob) RemoveJob(c *dto.GeneralDelDto) error {
|
||||
var err error
|
||||
var data models.SysJob
|
||||
data.JobId = c.Id
|
||||
err = e.Orm.Table(data.TableName()).First(&data).Error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
cn := jobs.Remove(data.EntryId)
|
||||
|
||||
select {
|
||||
case res := <-cn:
|
||||
if res {
|
||||
err = e.Orm.Table(data.TableName()).Where("entry_id = ?", data.EntryId).Update("entry_id", 0).Error
|
||||
return err
|
||||
}
|
||||
case <-time.After(time.Second * 1):
|
||||
e.Msg = msg.TimeOut
|
||||
return nil
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// StartJob 启动任务
|
||||
func (e *SysJob) StartJob(c *dto.GeneralGetDto) error {
|
||||
var data models.SysJob
|
||||
var err error
|
||||
err = e.Orm.Table(data.TableName()).First(&data, c.Id).Error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if data.JobType == 1 {
|
||||
var j = &jobs.HttpJob{}
|
||||
j.InvokeTarget = data.InvokeTarget
|
||||
j.CronExpression = data.CronExpression
|
||||
j.JobId = data.JobId
|
||||
j.Name = data.JobName
|
||||
data.EntryId, err = jobs.AddJob(j)
|
||||
} else {
|
||||
var j = &jobs.ExecJob{}
|
||||
j.InvokeTarget = data.InvokeTarget
|
||||
j.CronExpression = data.CronExpression
|
||||
j.JobId = data.JobId
|
||||
j.Name = data.JobName
|
||||
j.Args = data.Args
|
||||
data.EntryId, err = jobs.AddJob(j)
|
||||
}
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = e.Orm.Table(data.TableName()).Where(c.Id).Updates(&data).Error
|
||||
return err
|
||||
}
|
||||
Reference in New Issue
Block a user