diff --git a/apis/sysjob/sysjob.go b/apis/sysjob/sysjob.go new file mode 100644 index 00000000..35776ece --- /dev/null +++ b/apis/sysjob/sysjob.go @@ -0,0 +1,78 @@ +package sysjob + +import ( +"github.com/gin-gonic/gin" +"github.com/gin-gonic/gin/binding" +"go-admin/models" +"go-admin/tools" +"go-admin/tools/app" +"go-admin/tools/app/msg" +) + +func GetSysJobList(c *gin.Context) { +var data models.SysJob +var err error +var pageSize = 10 +var pageIndex = 1 + +if size := c.Request.FormValue("pageSize"); size != "" { +pageSize = tools.StrToInt(err, size) +} +if index := c.Request.FormValue("pageIndex"); index != "" { +pageIndex = tools.StrToInt(err, index) +} + +data.JobId, _ = tools.StringToInt(c.Request.FormValue("jobId")) + data.JobName = c.Request.FormValue("jobName") + data.JobGroup = c.Request.FormValue("jobGroup") + data.CronExpression = c.Request.FormValue("cronExpression") + data.InvokeTarget = c.Request.FormValue("invokeTarget") + data.Status = c.Request.FormValue("status") + + +data.DataScope = tools.GetUserIdStr(c) +result, count, err := data.GetPage(pageSize, pageIndex) +tools.HasError(err, "", -1) + +app.PageOK(c, result, count, pageIndex, pageSize, "") +} + +func GetSysJob(c *gin.Context) { +var data models.SysJob +data.JobId, _ = tools.StringToInt(c.Param("jobId")) +result, err := data.Get() +tools.HasError(err, "抱歉未找到相关信息", -1) + +app.OK(c, result, "") +} + +func InsertSysJob(c *gin.Context) { +var data models.SysJob +err := c.ShouldBindJSON(&data) +data.CreateBy = tools.GetUserIdStr(c) +tools.HasError(err, "", 500) +result, err := data.Create() +tools.HasError(err, "", -1) +app.OK(c, result, "") +} + +func UpdateSysJob(c *gin.Context) { +var data models.SysJob +err := c.BindWith(&data, binding.JSON) +tools.HasError(err, "数据解析失败", -1) +data.UpdateBy = tools.GetUserIdStr(c) +result, err := data.Update(data.JobId) +tools.HasError(err, "", -1) + +app.OK(c, result, "") +} + +func DeleteSysJob(c *gin.Context) { +var data models.SysJob +data.UpdateBy = tools.GetUserIdStr(c) + +IDS := tools.IdsStrToIdsIntGroup("jobId", c) +_, err := data.BatchDelete(IDS) +tools.HasError(err, msg.DeletedFail, 500) +app.OK(c, nil, msg.DeletedSuccess) +} \ No newline at end of file diff --git a/models/sysjob.go b/models/sysjob.go new file mode 100644 index 00000000..cdd2df29 --- /dev/null +++ b/models/sysjob.go @@ -0,0 +1,152 @@ +package models + +import ( + orm "go-admin/global" + "go-admin/tools" +) + +type SysJob struct { + JobId int `json:"jobId" gorm:"type:int(11);primary_key"` // 编码 + JobName string `json:"jobName" gorm:"type:varchar(255);"` // 名称 + JobGroup string `json:"jobGroup" gorm:"type:varchar(255);"` // 任务分组 + CronExpression string `json:"cronExpression" gorm:"type:varchar(255);"` // cron表达式 + InvokeTarget string `json:"invokeTarget" gorm:"type:varchar(255);"` // 调用目标 + MisfirePolicy string `json:"misfirePolicy" gorm:"type:varchar(255);"` // 执行策略 + Concurrent string `json:"concurrent" gorm:"type:int(1);"` // 是否并发 + Status string `json:"status" gorm:"type:int(1);"` // 状态 + CreateBy string `json:"createBy" gorm:"type:varchar(128);"` // + UpdateBy string `json:"updateBy" gorm:"type:varchar(128);"` // + DataScope string `json:"dataScope" gorm:"-"` + Params string `json:"params" gorm:"-"` + BaseModel +} + +func (SysJob) TableName() string { + return "sys_job" +} + +// 创建SysJob +func (e *SysJob) Create() (SysJob, error) { + var doc SysJob + result := orm.Eloquent.Table(e.TableName()).Create(&e) + if result.Error != nil { + err := result.Error + return doc, err + } + doc = *e + return doc, nil +} + +// 获取SysJob +func (e *SysJob) Get() (SysJob, error) { + var doc SysJob + table := orm.Eloquent.Table(e.TableName()) + + if e.JobId != 0 { + table = table.Where("job_id = ?", e.JobId) + } + + if e.JobName != "" { + table = table.Where("job_name like ?", "%"+e.JobName+"%") + } + + if e.JobGroup != "" { + table = table.Where("job_group = ?", e.JobGroup) + } + + if e.CronExpression != "" { + table = table.Where("cron_expression = ?", e.CronExpression) + } + + if e.InvokeTarget != "" { + table = table.Where("invoke_target = ?", e.InvokeTarget) + } + + if e.Status != "" { + table = table.Where("status = ?", e.Status) + } + + if err := table.First(&doc).Error; err != nil { + return doc, err + } + return doc, nil +} + +// 获取SysJob带分页 +func (e *SysJob) GetPage(pageSize int, pageIndex int) ([]SysJob, int, error) { + var doc []SysJob + + table := orm.Eloquent.Select("*").Table(e.TableName()) + + if e.JobId != 0 { + table = table.Where("job_id = ?", e.JobId) + } + + if e.JobName != "" { + table = table.Where("job_name like ?", "%"+e.JobName+"%") + } + + if e.JobGroup != "" { + table = table.Where("job_group = ?", e.JobGroup) + } + + if e.CronExpression != "" { + table = table.Where("cron_expression = ?", e.CronExpression) + } + + if e.InvokeTarget != "" { + table = table.Where("invoke_target = ?", e.InvokeTarget) + } + + if e.Status != "" { + table = table.Where("status = ?", e.Status) + } + + // 数据权限控制(如果不需要数据权限请将此处去掉) + dataPermission := new(DataPermission) + dataPermission.UserId, _ = tools.StringToInt(e.DataScope) + table, err := dataPermission.GetDataScope(e.TableName(), table) + if err != nil { + return nil, 0, err + } + var count int + + if err := table.Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&doc).Error; err != nil { + return nil, 0, err + } + table.Where("`deleted_at` IS NULL").Count(&count) + return doc, count, nil +} + +// 更新SysJob +func (e *SysJob) Update(id int) (update SysJob, err error) { + if err = orm.Eloquent.Table(e.TableName()).Where("job_id = ?", id).First(&update).Error; err != nil { + return + } + + //参数1:是要修改的数据 + //参数2:是修改的数据 + if err = orm.Eloquent.Table(e.TableName()).Model(&update).Updates(&e).Error; err != nil { + return + } + return +} + +// 删除SysJob +func (e *SysJob) Delete(id int) (success bool, err error) { + if err = orm.Eloquent.Table(e.TableName()).Where("job_id = ?", id).Delete(&SysJob{}).Error; err != nil { + success = false + return + } + success = true + return +} + +//批量删除 +func (e *SysJob) BatchDelete(id []int) (Result bool, err error) { + if err = orm.Eloquent.Table(e.TableName()).Where("job_id in (?)", id).Delete(&SysJob{}).Error; err != nil { + return + } + Result = true + return +} diff --git a/router/router.go b/router/router.go index 9366ed48..7ec8acfb 100644 --- a/router/router.go +++ b/router/router.go @@ -25,7 +25,8 @@ func examplesNoCheckRoleRouter(r *gin.Engine) { // 空接口防止v1定义无使用报错 v1.GET("/nilcheckrole", nil) - // {{无需认证路由自动补充在此处请勿删除}} + // {{无需认证路由自动补充在此处请勿删除}} + registerSysJobRouter(v1) } // 需要认证的路由示例 diff --git a/router/sysjob.go b/router/sysjob.go new file mode 100644 index 00000000..6699db46 --- /dev/null +++ b/router/sysjob.go @@ -0,0 +1,20 @@ +package router + +import ( +"github.com/gin-gonic/gin" +"go-admin/apis/sysjob" +) + +// 无需认证的路由代码 +func registerSysJobRouter(v1 *gin.RouterGroup) { + +v1.GET("/sysjobList",sysjob.GetSysJobList) + +r := v1.Group("/sysjob") +{ +r.GET("/:jobId", sysjob.GetSysJob) +r.POST("", sysjob.InsertSysJob) +r.PUT("", sysjob.UpdateSysJob) +r.DELETE("/:jobId", sysjob.DeleteSysJob) +} +}