diff --git a/controllers/home.go b/controllers/home.go index 5015fa4..07a0584 100644 --- a/controllers/home.go +++ b/controllers/home.go @@ -26,6 +26,12 @@ func (self *HomeController) Index() { self.TplName = "public/main.html" } +func (self *HomeController) Help() { + self.Data["pageTitle"] = "Cron表达式说明" + //self.display() + self.TplName = "public/help.html" +} + func (self *HomeController) Start() { groups_map := serverGroupLists(self.serverGroups, self.userId) //计算总任务数量 diff --git a/controllers/task.go b/controllers/task.go index e24b34d..9197e78 100644 --- a/controllers/task.go +++ b/controllers/task.go @@ -23,6 +23,7 @@ type TaskController struct { func (self *TaskController) List() { self.Data["pageTitle"] = "任务管理" + self.Data["taskGroup"] = taskGroupLists(self.taskGroups, self.userId) self.display() } @@ -106,6 +107,36 @@ func (self *TaskController) Detail() { serverName = server.ServerName } } + + //任务分组 + groupName := "默认分组" + if task.GroupId > 0 { + group, err := models.TaskGroupGetById(task.GroupId) + if err == nil { + groupName = group.GroupName + } + } + + self.Data["GroupName"] = groupName + + //创建人和修改人 + createName := "未知" + updateName := "未知" + if task.CreateId > 0 { + admin, err := models.AdminGetById(task.CreateId) + if err == nil { + createName = admin.RealName + } + } + + if task.UpdateId > 0 { + admin, err := models.AdminGetById(task.UpdateId) + if err == nil { + updateName = admin.RealName + } + } + self.Data["CreateName"] = createName + self.Data["UpdateName"] = updateName self.Data["serverName"] = serverName self.display() } @@ -412,6 +443,8 @@ func (self *TaskController) Table() { limit = 30 } + groupId, _ := self.GetInt("group_id") + status, _ := self.GetInt("status") taskName := strings.TrimSpace(self.GetString("taskName")) @@ -450,6 +483,12 @@ func (self *TaskController) Table() { if taskName != "" { filters = append(filters, "task_name__icontains", taskName) } + + if groupId > 0 { + self.Ctx.SetCookie("group_id", strconv.Itoa(groupId)+"|job") + filters = append(filters, "group_id", groupId) + } + result, count := models.TaskGetList(page, self.pageSize, filters...) list := make([]map[string]interface{}, len(result)) diff --git a/controllers/task_log.go b/controllers/task_log.go index 709070f..033008e 100644 --- a/controllers/task_log.go +++ b/controllers/task_log.go @@ -143,6 +143,35 @@ func (self *TaskLogController) Detail() { } } self.Data["serverName"] = serverName + + //任务分组 + groupName := "默认分组" + if task.GroupId > 0 { + group, err := models.TaskGroupGetById(task.GroupId) + if err == nil { + groupName = group.GroupName + } + } + self.Data["GroupName"] = groupName + + //创建人和修改人 + createName := "未知" + updateName := "未知" + if task.CreateId > 0 { + admin, err := models.AdminGetById(task.CreateId) + if err == nil { + createName = admin.RealName + } + } + + if task.UpdateId > 0 { + admin, err := models.AdminGetById(task.UpdateId) + if err == nil { + updateName = admin.RealName + } + } + self.Data["CreateName"] = createName + self.Data["UpdateName"] = updateName self.Data["pageTitle"] = "日志详细" + "(#" + strconv.Itoa(id) + ")" self.display() } diff --git a/models/task.go b/models/task.go index a6dcf60..4603b94 100644 --- a/models/task.go +++ b/models/task.go @@ -103,7 +103,11 @@ func TaskGetById(id int) (*Task, error) { return task, nil } -func TaskDel(id int) error { - _, err := orm.NewOrm().QueryTable(TableName("task")).Filter("id", id).Delete() - return err +//修改为逻辑删除 +func TaskDel(id int) (int64, error) { + return orm.NewOrm().QueryTable(TableName("task")).Filter("id", id).Update(orm.Params{ + "status": -1, + }) + //_, err := orm.NewOrm().QueryTable(TableName("task")).Filter("id", id).Delete() + //return err } diff --git a/ppgo_job2.sql b/ppgo_job2.sql index 2e963b9..c1cc666 100644 --- a/ppgo_job2.sql +++ b/ppgo_job2.sql @@ -103,7 +103,7 @@ CREATE TABLE `pp_task_group` ( `create_time` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间', `update_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '修改者Id', `update_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '更新时间', - `status` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '状态:1-正常,0-删除', + `status` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '状态:1-正常,0-删除', PRIMARY KEY (`id`), KEY `idx_user_id` (`create_id`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8; diff --git a/routers/router.go b/routers/router.go index 812b015..dd583fa 100644 --- a/routers/router.go +++ b/routers/router.go @@ -10,7 +10,7 @@ func init() { beego.Router("/", &controllers.LoginController{}, "*:Login") beego.Router("/login_in", &controllers.LoginController{}, "*:LoginIn") beego.Router("/login_out", &controllers.LoginController{}, "*:LoginOut") - //beego.Router("/no_auth", &controllers.LoginController{}, "*:NoAuth") + beego.Router("/help", &controllers.HomeController{}, "*:Help") beego.Router("/home", &controllers.HomeController{}, "*:Index") beego.Router("/home/start", &controllers.HomeController{}, "*:Start") diff --git a/static/admin/css/main.css b/static/admin/css/main.css index 2fad7c5..e3dc358 100644 --- a/static/admin/css/main.css +++ b/static/admin/css/main.css @@ -12,7 +12,7 @@ .layui-layout-admin .layui-logo{ line-height:50px; height:50px; - font-size:20px; + font-size:18px; } .layui-nav layui-layout-right{ line-height:50px; diff --git a/views/home/start.html b/views/home/start.html index 0a084dc..d781b5b 100644 --- a/views/home/start.html +++ b/views/home/start.html @@ -138,7 +138,7 @@
即将执行的任务
-
+
diff --git a/views/public/help.html b/views/public/help.html new file mode 100644 index 0000000..3a887e2 --- /dev/null +++ b/views/public/help.html @@ -0,0 +1,80 @@ + + + + + + {{.siteName}} +{{if .zTree}} + + +{{end}} + + + + + + + + + +
+ +Cron表达式是一个字符串,字符串以空格隔开,分为5或6个域,每一个域代表一个含义,系统支持的表达式格式如下:
+
+   Seconds Minutes Hours DayofMonth Month [DayofWeek]
+
+ +其中 DayofWeek 为可选域。
+每一个域可出现的字符如下:
+
+Seconds: 可出现"* / , -"四个字符,有效范围为0-59的整数
+Minutes: 可出现"* / , -"四个字符,有效范围为0-59的整数
+Hours: 可出现"* / , -"四个字符,有效范围为0-23的整数
+DayofMonth: 可出现"* / , - ?"五个字符,有效范围为0-31的整数
+Month: 可出现", - * /"四个字符,有效范围为1-12的整数或JAN-DEC
+DayofWeek: 可出现"* / , - ?"五个字符,有效范围为0-6的整数或SUN-SAT两个范围。0表示星期天,1表示星期一, 依次类推
+
+ +各个字符的含义如下:
+
+* 表示匹配该域的任意值,假如在Minutes域使用*, 即表示每分钟都会触发事件。
+? 字符仅被用于天(月)和天(星期)两个子表达式,表示不指定值,当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为“?”。
+- 表示范围,例如在Minutes域使用5-20,表示从5分到20分钟每分钟触发一次。
+/ 表示起始时间开始触发,然后每隔固定时间触发一次,例如在Minutes域使用5/20,则意味着5分钟触发一次,而25,45等分别触发一次。
+, 表示列出枚举值值。例如:在Minutes域使用5,20,则意味着在5和20分每分钟触发一次。
+
+一些例子:
+
+0 0 10,14,16 * * ? 每天上午10点,下午2点,4点触发
+0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时触发
+0 0 12 ? * WED 表示每个星期三中午12点触发
+0 0 12 * * ? 每天中午12点触发
+0 15 10 ? * * 每天上午10:15触发
+0 15 10 * * ? 每天上午10:15触发
+0 15 10 * * ? * 每天上午10:15触发
+0 * 14 * * ? 在每天下午2点到下午2:59期间的每1分钟触发
+0 0/5 14 * * ? 在每天下午2点到下午2:55期间的每5分钟触发
+0 0/5 14,18 * * ? 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
+0 0-5 14 * * ? 在每天下午2点到下午2:05期间的每1分钟触发
+0 10,44 14 ? 3 WED 每年三月的星期三的下午2:10和2:44触发
+0 15 10 ? * MON-FRI 周一至周五的上午10:15触发
+0 15 10 15 * ? 每月15日上午10:15触发
+0 15 10 L * ? 每月最后一日的上午10:15触发
+
+ +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/views/public/main.html b/views/public/main.html index 46dce8a..4ea7866 100644 --- a/views/public/main.html +++ b/views/public/main.html @@ -11,13 +11,13 @@
- +
diff --git a/views/task/detail.html b/views/task/detail.html index e7636fb..b7181f8 100644 --- a/views/task/detail.html +++ b/views/task/detail.html @@ -56,6 +56,12 @@
+ + + + + + @@ -92,7 +98,7 @@ - + @@ -104,7 +110,7 @@ - + diff --git a/views/task/list.html b/views/task/list.html index 89181d3..b5493d5 100644 --- a/views/task/list.html +++ b/views/task/list.html @@ -4,7 +4,7 @@
新增 - + cron
@@ -13,9 +13,19 @@
- + {{/**/}} +
+ +
+ + {{/**/}}
- +
@@ -52,12 +62,12 @@ ,url: '/task/table' ,cols: [[ {checkbox: true, fixed: true}, - {field:'id', title: 'ID', align:'center',sort: true, width:50} + {field:'id', title: 'ID', align:'center',sort: true, width:100} ,{field:'task_name',width:300, title: '任务名称'} ,{field:'description',title: '任务说明'} ,{field:'next_time', width:170,title: '下次执行时间'} - ,{field:'pre_time', title: '上次执行时间'} + ,{field:'pre_time',width:170, title: '上次执行时间'} ,{field:'execute_times', width:70,title: '次数'} ,{fixed: 'right', width:200, align:'center', title:'操作', toolbar: '#bar'} ]] @@ -70,12 +80,19 @@ reload: function(){ table.reload('listReload', { where: { - taskName: $('#taskName').val(), + group_id: $('#group_id').val(), } }); } }; + form.on('select(select_group)', function(data){ + // console.log(data.elem); //得到select原始DOM对象 + // console.log(data.value); //得到被选中的值 + // console.log(data.othis); //得到美化后的DOM对象 + $("#reload").click() + }); + //监听工具条 table.on('tool(table_filter)', function(obj){ var data = obj.data; diff --git a/views/tasklog/detail.html b/views/tasklog/detail.html index ad8e1b2..9aa02bd 100644 --- a/views/tasklog/detail.html +++ b/views/tasklog/detail.html @@ -111,6 +111,11 @@ + + + + + @@ -147,7 +152,7 @@ - + @@ -159,7 +164,7 @@ - +
{{.task.ExecuteTimes}}
任务分组 {{.GroupName}}
服务资源 {{.serverName}}
创建人{{.task.CreateId}}{{.CreateName}}
最后修改人{{.task.UpdateId}}{{.UpdateName}}
{{.task.ExecuteTimes}}
任务分组 {{.GroupName}}
服务资源 {{.serverName}}
创建人{{.task.CreateId}}{{.CreateName}}
最后修改人{{.task.UpdateId}}{{.UpdateName}}