增加service实现

This commit is contained in:
linwenxiang
2020-09-15 13:59:01 +08:00
parent 3d5a2ea9f7
commit bb07d90407
5 changed files with 182 additions and 3 deletions
+75
View File
@@ -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
+4 -3
View File
@@ -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)
}
+70
View File
@@ -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
}