From e392e4c12ea2b5dca4e31ab190e9098883d21416 Mon Sep 17 00:00:00 2001 From: linxiaozhi Date: Sun, 17 Feb 2019 07:07:33 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=96=B0=E5=A2=9E=E5=BE=AE=E4=BF=A1=E9=80=9A?= =?UTF-8?q?=E7=9F=A5=E6=96=B9=E5=BC=8F=202.=E9=80=9A=E7=9F=A5=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E5=8F=98=E9=87=8F=E6=9B=B4=E6=94=B9=203.=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E6=B2=89=E4=BD=99sql=204.readme.md=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 14 ++++-- conf/app.conf | 9 ++-- controllers/admin.go | 4 ++ controllers/notify_tpl.go | 5 ++- controllers/user.go | 2 + jobs/job.go | 48 +++++++++++++++------ models/admin.go | 1 + notify/sms.go | 4 +- notify/wechat.go | 89 +++++++++++++++++++++++++++++++++++++++ ppgo_job2.sql | 71 ++++++------------------------- views/admin/add.html | 8 +++- views/admin/edit.html | 9 +++- views/admin/list.html | 1 + views/notifytpl/add.html | 7 +-- views/notifytpl/edit.html | 7 +-- views/task/add.html | 1 + views/task/copy.html | 1 + views/task/detail.html | 4 +- views/task/edit.html | 1 + views/tasklog/detail.html | 2 +- views/user/edit.html | 7 +++ 21 files changed, 201 insertions(+), 94 deletions(-) create mode 100644 notify/wechat.go diff --git a/README.md b/README.md index a67139bf..4f3602cf 100644 --- a/README.md +++ b/README.md @@ -94,10 +94,9 @@ jobs.pool = 1000 # 站点名称 site.name = 定时任务管理器 -#通知方式 0=邮件,1=信息 +#通知方式 0=邮件,1=信息,2=钉钉,3=微信 notify.type = 0 - # 数据库配置 db.host = 127.0.0.1 db.user = root @@ -115,10 +114,17 @@ email.user = ci@xxx.cn email.password = "xxxxxx" email.pool = 10 - # 短信通知方式配置 msg.url = http://chanxiyou.com/api/tools/send_sms msg.pool = 10 + +# 钉钉通知配置 +dingtalk.url = "https://oapi.dingtalk.com/robot/send?access_token=%s" +dingtalk.pool = 10 + +# 微信通知方式配置 +wechat.url = http://xx.com/api/tools/send_wechat +wechat.pool = 10 ``` 编译安装-可能会遇到的问题 @@ -128,6 +134,8 @@ jobs/job.go:19:2: cannot find package "golang.org/x/crypto/ssh" in any of: 需要 git clone https://github.com/golang/crypto.git 并拷贝到 $GOPATH/src/golang.org/x/ 下就OK +或 +git clone https://github.com/golang/crypto.git $GOPATH/src/golang.org/x/crypto # Docker 本地编译好的2进制文件放在根目录下执行下面的命令即可拥有 diff --git a/conf/app.conf b/conf/app.conf index bf71c81a..e5b3d434 100644 --- a/conf/app.conf +++ b/conf/app.conf @@ -11,10 +11,9 @@ jobs.pool = 1000 # 站点名称 site.name = 定时任务管理器 -#通知方式 0=邮件,1=信息,2=钉钉 +#通知方式 0=邮件,1=信息,2=钉钉,3=微信 notify.type = 0 - # 数据库配置 db.host = 127.0.0.1 db.user = root @@ -32,12 +31,14 @@ email.user = ci@xxx.cn email.password = "xxxxxx" email.pool = 10 - # 短信通知方式配置 msg.url = http://xx.com/api/tools/send_sms msg.pool = 10 - # 钉钉通知配置 dingtalk.url = "https://oapi.dingtalk.com/robot/send?access_token=%s" dingtalk.pool = 10 + +# 微信通知方式配置 +wechat.url = http://xx.com/api/tools/send_wechat +wechat.pool = 10 \ No newline at end of file diff --git a/controllers/admin.go b/controllers/admin.go index 968ccf7c..e502aa7a 100644 --- a/controllers/admin.go +++ b/controllers/admin.go @@ -59,6 +59,7 @@ func (self *AdminController) Edit() { row["phone"] = Admin.Phone row["email"] = Admin.Email row["dingtalk"] = Admin.Dingtalk + row["wechat"] = Admin.Wechat row["role_ids"] = Admin.RoleIds self.Data["admin"] = row @@ -95,6 +96,7 @@ func (self *AdminController) AjaxSave() { Admin.Phone = strings.TrimSpace(self.GetString("phone")) Admin.Email = strings.TrimSpace(self.GetString("email")) Admin.Dingtalk = strings.TrimSpace(self.GetString("dingtalk")) + Admin.Wechat = strings.TrimSpace(self.GetString("wechat")) Admin.RoleIds = strings.TrimSpace(self.GetString("roleids")) Admin.UpdateTime = time.Now().Unix() Admin.UpdateId = self.userId @@ -128,6 +130,7 @@ func (self *AdminController) AjaxSave() { Admin.Phone = strings.TrimSpace(self.GetString("phone")) Admin.Email = strings.TrimSpace(self.GetString("email")) Admin.Dingtalk = strings.TrimSpace(self.GetString("dingtalk")) + Admin.Wechat = strings.TrimSpace(self.GetString("wechat")) Admin.RoleIds = strings.TrimSpace(self.GetString("roleids")) Admin.UpdateTime = time.Now().Unix() Admin.UpdateId = self.userId @@ -207,6 +210,7 @@ func (self *AdminController) Table() { row["phone"] = v.Phone row["email"] = v.Email row["dingtalk"] = v.Dingtalk + row["wechat"] = v.Wechat row["role_ids"] = v.RoleIds row["create_time"] = beego.Date(time.Unix(v.CreateTime, 0), "Y-m-d H:i:s") row["update_time"] = beego.Date(time.Unix(v.UpdateTime, 0), "Y-m-d H:i:s") diff --git a/controllers/notify_tpl.go b/controllers/notify_tpl.go index b442a0e5..fbf1e05b 100644 --- a/controllers/notify_tpl.go +++ b/controllers/notify_tpl.go @@ -59,7 +59,7 @@ func (self *NotifyTplController) AjaxSave() { notifyTpl.Type = models.NotifyTplTypeDefault notifyTpl.Status, _ = self.GetInt("status") - if notifyTpl.TplType == 1 { + if notifyTpl.TplType == 1 || notifyTpl.TplType == 3 { m := make(map[string]string) err := json.Unmarshal([]byte(notifyTpl.Content), &m) if err != nil { @@ -85,7 +85,7 @@ func (self *NotifyTplController) AjaxSave() { notifyTpl.Content = strings.TrimSpace(self.GetString("content")) notifyTpl.Status, _ = self.GetInt("status") - if notifyTpl.TplType == 1 { + if notifyTpl.TplType == 1 || notifyTpl.TplType == 3 { m := make(map[string]string) err := json.Unmarshal([]byte(notifyTpl.Content), &m) if err != nil { @@ -137,6 +137,7 @@ func (self *NotifyTplController) Table() { "邮件", "信息", "钉钉", + "微信", } self.pageSize = limit diff --git a/controllers/user.go b/controllers/user.go index 2fdfff5b..d1a3a535 100644 --- a/controllers/user.go +++ b/controllers/user.go @@ -30,6 +30,7 @@ func (self *UserController) Edit() { row["phone"] = Admin.Phone row["email"] = Admin.Email row["dingtalk"] = Admin.Dingtalk + row["wechat"] = Admin.Wechat self.Data["admin"] = row self.display() } @@ -46,6 +47,7 @@ func (self *UserController) AjaxSave() { Admin.Phone = strings.TrimSpace(self.GetString("phone")) Admin.Email = strings.TrimSpace(self.GetString("email")) Admin.Dingtalk = strings.TrimSpace(self.GetString("dingtalk")) + Admin.Wechat = strings.TrimSpace(self.GetString("wechat")) resetPwd := self.GetString("reset_pwd") if resetPwd == "1" { diff --git a/jobs/job.go b/jobs/job.go index 98a0119e..b5d4ead6 100644 --- a/jobs/job.go +++ b/jobs/job.go @@ -280,6 +280,7 @@ func (j *Job) Run() { adminInfo := AllAdminInfo(j.task.NotifyUserIds) phone := make(map[string]string, 0) dingtalk := make(map[string]string, 0) + wechat := make(map[string]string, 0) toEmail := "" for _, v := range adminInfo { if v.Phone != "0" && v.Phone != "" { @@ -291,6 +292,9 @@ func (j *Job) Run() { if v.Dingtalk != "0" && v.Dingtalk != "" { dingtalk[v.Dingtalk] = v.Dingtalk } + if v.Wechat != "0" && v.Wechat != "" { + wechat[v.Wechat] = v.Wechat + } } toEmail = strings.TrimRight(toEmail, ";") @@ -302,8 +306,8 @@ func (j *Job) Run() { status := log.Status + 2 - var title = "" - var content = "" + title, content := "", "" + notifyTpl, err := models.NotifyTplGetById(j.task.NotifyTplId) if err != nil { notifyTpl, err := models.NotifyTplGetByTplType(j.task.NotifyType, models.NotifyTplTypeSystem) @@ -319,30 +323,28 @@ func (j *Job) Run() { if title != "" { title = strings.Replace(title, "{{TaskId}}", strconv.Itoa(j.task.Id), -1) title = strings.Replace(title, "{{TaskName}}", j.task.TaskName, -1) - title = strings.Replace(title, "{{CreateTime}}", beego.Date(time.Unix(log.CreateTime, 0), "Y-m-d H:i:s"), -1) + title = strings.Replace(title, "{{ExecuteTime}}", beego.Date(time.Unix(log.CreateTime, 0), "Y-m-d H:i:s"), -1) title = strings.Replace(title, "{{ProcessTime}}", strconv.FormatFloat(float64(log.ProcessTime)/1000, 'f', 6, 64), -1) - title = strings.Replace(title, "{{Status}}", TextStatus[status], -1) - title = strings.Replace(title, "{{TaskOut}}", log.Error, -1) + title = strings.Replace(title, "{{ExecuteStatus}}", TextStatus[status], -1) + title = strings.Replace(title, "{{TaskOutput}}", log.Error, -1) } if content != "" { content = strings.Replace(content, "{{TaskId}}", strconv.Itoa(j.task.Id), -1) content = strings.Replace(content, "{{TaskName}}", j.task.TaskName, -1) - content = strings.Replace(content, "{{CreateTime}}", beego.Date(time.Unix(log.CreateTime, 0), "Y-m-d H:i:s"), -1) + content = strings.Replace(content, "{{ExecuteTime}}", beego.Date(time.Unix(log.CreateTime, 0), "Y-m-d H:i:s"), -1) content = strings.Replace(content, "{{ProcessTime}}", strconv.FormatFloat(float64(log.ProcessTime)/1000, 'f', 6, 64), -1) - content = strings.Replace(content, "{{Status}}", TextStatus[status], -1) - content = strings.Replace(content, "{{TaskOut}}", log.Error, -1) + content = strings.Replace(content, "{{ExecuteStatus}}", TextStatus[status], -1) + content = strings.Replace(content, "{{TaskOutput}}", log.Error, -1) } if j.task.NotifyType == 0 && toEmail != "" { //邮件 mailtype := "html" - ok := notify.SendToChan(toEmail, title, content, mailtype) if !ok { fmt.Println("发送邮件错误", toEmail) } - } else if j.task.NotifyType == 1 && len(phone) > 0 { //信息 param := make(map[string]string) @@ -352,12 +354,30 @@ func (j *Job) Run() { return } - notify.SendSmsToChan(phone, param) + ok := notify.SendSmsToChan(phone, param) + if !ok { + fmt.Println("发送信息错误", phone) + } } else if j.task.NotifyType == 2 && len(dingtalk) > 0 { //钉钉 - notify.SendDingtalkToChan(dingtalk, content) - } + ok := notify.SendDingtalkToChan(dingtalk, content) + if !ok { + fmt.Println("发送钉钉错误", dingtalk) + } + } else if j.task.NotifyType == 3 && len(wechat) > 0 { + //信息 + param := make(map[string]string) + err := json.Unmarshal([]byte(content), ¶m) + if err != nil { + fmt.Println("发送微信错误", err) + return + } + ok := notify.SendWechatToChan(phone, param) + if !ok { + fmt.Println("发送微信错误", phone) + } + } } } @@ -375,6 +395,7 @@ type adminInfo struct { Email string Phone string Dingtalk string + Wechat string RealName string } @@ -400,6 +421,7 @@ func AllAdminInfo(adminIds string) []*adminInfo { Email: v.Email, Phone: v.Phone, Dingtalk: v.Dingtalk, + Wechat: v.Wechat, RealName: v.RealName, } adminInfos = append(adminInfos, &ai) diff --git a/models/admin.go b/models/admin.go index 0f0138a0..0dc630e0 100644 --- a/models/admin.go +++ b/models/admin.go @@ -20,6 +20,7 @@ type Admin struct { Phone string Email string Dingtalk string + Wechat string Salt string LastLogin int64 LastIp string diff --git a/notify/sms.go b/notify/sms.go index 16682e63..df238b25 100644 --- a/notify/sms.go +++ b/notify/sms.go @@ -16,7 +16,7 @@ import ( "github.com/pkg/errors" ) -type AjaxReturn struct { +type SmsAjaxReturn struct { Status int `json:"status"` Message string `json:"message"` Data interface{} `json:"data"` @@ -78,7 +78,7 @@ func (s *Sms) SendSms() error { return err } - ajaxData := AjaxReturn{} + ajaxData := SmsAjaxReturn{} jsonErr := json.Unmarshal([]byte(res), &ajaxData) if jsonErr != nil { diff --git a/notify/wechat.go b/notify/wechat.go new file mode 100644 index 00000000..a1d45a89 --- /dev/null +++ b/notify/wechat.go @@ -0,0 +1,89 @@ +package notify + +import ( + "github.com/astaxie/beego" + "github.com/george518/PPGo_Job/libs" + "log" + "time" + "encoding/json" + "github.com/pkg/errors" +) + +type WechatAjaxReturn struct { + Status int `json:"status"` + Message string `json:"message"` + Data interface{} `json:"data"` +} + +type Wechat struct { + Accounts map[string]string + Param map[string]string +} + +var WechatChan chan *Wechat +var WechatUrl string + +func init() { + WechatUrl = beego.AppConfig.String("wechat.url") + poolSize, _ := beego.AppConfig.Int("wechat.pool") + + //创建通道 + WechatChan = make(chan *Wechat, poolSize) + + go func() { + for { + select { + case m, ok := <-WechatChan: + if !ok { + return + } + if err := m.SendWechat(); err != nil { + beego.Error("SendWechat:", err.Error()) + } + } + } + }() + +} + +func SendWechatToChan(accounts map[string]string, param map[string]string) bool { + wechat := &Wechat{ + Accounts: accounts, + Param: param, + } + + select { + case WechatChan <- wechat: + return true + case <-time.After(time.Second * 3): + return false + } +} + +func (s *Wechat) SendWechat() error { + + for _, v := range s.Accounts { + s.Param["account"] = v + res, err := libs.HttpGet(WechatUrl, s.Param) + + if err != nil { + log.Println(err) + return err + } + + ajaxData := WechatAjaxReturn{} + jsonErr := json.Unmarshal([]byte(res), &ajaxData) + + if jsonErr != nil { + return jsonErr + } + + if ajaxData.Status != 200 { + return errors.Errorf("msg %s", ajaxData.Message) + } + + return nil + + } + return nil +} diff --git a/ppgo_job2.sql b/ppgo_job2.sql index 0bbb118b..2761e968 100644 --- a/ppgo_job2.sql +++ b/ppgo_job2.sql @@ -15,30 +15,6 @@ SET NAMES utf8; SET FOREIGN_KEY_CHECKS = 0; --- ---------------------------- --- Table structure for `default` --- ---------------------------- -DROP TABLE IF EXISTS `default`; -CREATE TABLE `default` ( - `id` int(11) unsigned NOT NULL AUTO_INCREMENT, - `user_name` varchar(20) NOT NULL DEFAULT '' COMMENT '用户名', - `email` varchar(50) NOT NULL DEFAULT '' COMMENT '邮箱', - `password` char(32) NOT NULL DEFAULT '' COMMENT '密码', - `salt` char(10) NOT NULL DEFAULT '' COMMENT '密码盐', - `last_login` int(11) NOT NULL DEFAULT '0' COMMENT '最后登录时间', - `last_ip` char(15) NOT NULL DEFAULT '' COMMENT '最后登录IP', - `status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '状态,0正常 -1禁用', - PRIMARY KEY (`id`), - UNIQUE KEY `idx_user_name` (`user_name`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; - --- ---------------------------- --- Records of `default` --- ---------------------------- -BEGIN; -INSERT INTO `default` VALUES ('1', 'admin', 'admin@example.com', '7fef6171469e80d32c0559f88b377245', '', '0', '', '0'); -COMMIT; - -- ---------------------------- -- Table structure for `pp_task` -- ---------------------------- @@ -297,34 +273,6 @@ BEGIN; INSERT INTO `pp_uc_role_auth` VALUES ('1', '1'), ('1', '15'), ('1', '16'), ('1', '30'), ('1', '31'), ('1', '36'), ('1', '37'), ('1', '39'), ('1', '41'), ('1', '46'), ('1', '47'), ('1', '48'), ('1', '49'), ('1', '54'), ('1', '55'), ('1', '56'), ('2', '0'), ('2', '17'), ('2', '18'), ('2', '19'), ('2', '20'), ('2', '21'), ('2', '22'), ('2', '23'), ('2', '24'), ('2', '25'), ('2', '26'), ('2', '27'), ('2', '28'), ('2', '29'), ('2', '32'), ('2', '33'), ('2', '34'), ('2', '35'), ('2', '38'), ('2', '40'), ('2', '42'), ('2', '43'), ('2', '44'), ('2', '45'), ('2', '50'), ('2', '51'), ('2', '52'), ('2', '53'); COMMIT; --- ---------------------------- --- Table structure for `pp_user` --- ---------------------------- -DROP TABLE IF EXISTS `pp_user`; -CREATE TABLE `pp_user` ( - `id` int(11) unsigned NOT NULL AUTO_INCREMENT, - `user_name` varchar(20) NOT NULL DEFAULT '' COMMENT '用户名', - `email` varchar(50) NOT NULL DEFAULT '' COMMENT '邮箱', - `password` char(32) NOT NULL DEFAULT '' COMMENT '密码', - `salt` char(10) NOT NULL DEFAULT '' COMMENT '密码盐', - `last_login` int(11) NOT NULL DEFAULT '0' COMMENT '最后登录时间', - `last_ip` char(15) NOT NULL DEFAULT '' COMMENT '最后登录IP', - `status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '状态,0正常 -1禁用', - PRIMARY KEY (`id`), - UNIQUE KEY `idx_user_name` (`user_name`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; - --- ---------------------------- --- Records of `pp_user` --- ---------------------------- -BEGIN; -INSERT INTO `pp_user` VALUES ('1', 'admin', 'haodaquan@shoplinq.cn', 'abfcf6dcedfb4b5b1505d41a8b4c77e8', 'aYk4Q1P83v', '1528124357', '[', '0'); -COMMIT; - -BEGIN; -ALTER TABLE `pp_task` CHANGE `notify_type` `notify_type` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' COMMENT '0-邮件通知,1-信息通知,2-钉钉通知,'; -COMMIT; - BEGIN; ALTER TABLE `pp_uc_admin` ADD `dingtalk` VARCHAR(64) NULL COMMENT '钉钉' AFTER `email`; COMMIT; @@ -349,7 +297,7 @@ CREATE TABLE `pp_notify_tpl` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '模板id', `type` enum('system','default') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'default', `tpl_name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '模板名称', - `tpl_type` tinyint(1) NOT NULL COMMENT '模板类型 0:邮件;1:信息;2:钉钉;', + `tpl_type` tinyint(1) NOT NULL COMMENT '模板类型 0:邮件;1:信息;2:钉钉;3:微信;', `title` varchar(64) DEFAULT NULL COMMENT '标题', `content` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '模板内容', `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态 0:禁用;1:启用;', @@ -358,15 +306,24 @@ CREATE TABLE `pp_notify_tpl` ( `update_time` int(11) NOT NULL DEFAULT '0' COMMENT '最后一次编辑时间', `update_id` int(11) NOT NULL DEFAULT '0' COMMENT '最后一次编辑者ID', PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='通知模板'; +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='通知模板'; -- -- 转存表中的数据 `pp_notify_tpl` -- BEGIN; -INSERT INTO `pp_notify_tpl` VALUES(1, 'system', '默认邮箱通知模板', 0, '定时任务异常:{{TaskName}}', 'Hello,定时任务出问题了:\r\n

任务执行详情:

\r\n

\r\n任务 ID:{{TaskId}}
\r\n任务名称:{{TaskName}}
\r\n执行时间:{{CreateTime}}
\r\n执行耗时:{{ProcessTime}}秒
\r\n执行状态:{{Status}}\r\n

\r\n

任务执行输出

\r\n

\r\n{{TaskOut}}\r\n

', 1, 1550255030, 1, 1550338305, 1); -INSERT INTO `pp_notify_tpl` VALUES(2, 'system', '默认短信通知模板', 1, '', '{\r\n \"task_id\": \"{{TaskId}}\",\r\n \"task_name\": \"{{TaskName}}\",\r\n \"status\": \"{{Status}}\"\r\n}', 1, 1550255030, 1, 1550338215, 1); -INSERT INTO `pp_notify_tpl` VALUES(3, 'system', '默认钉钉通知模板', 2, '', '任务执行异常详情:\r\n任务 ID:{{TaskId}}\r\n任务名称:{{TaskName}}\r\n执行时间:{{CreateTime}}\r\n执行耗时:{{ProcessTime}}秒\r\n执行状态:{{Status}}\r\n任务执行输出:\r\n{{TaskOut}}', 1, 1550255030, 1, 1550338191, 1); +INSERT INTO `pp_notify_tpl` VALUES(1, 'system', '默认邮箱通知模板', 0, '定时任务异常:{{TaskName}}', 'Hello,定时任务出问题了:\r\n

任务执行详情:

\r\n

\r\n任务 ID:{{TaskId}}
\r\n任务名称:{{TaskName}}
\r\n执行时间:{{ExecuteTime}}
\r\n执行耗时:{{ProcessTime}}秒
\r\n执行状态:{{ExecuteStatus}}\r\n

\r\n

任务执行输出

\r\n

\r\n{{TaskOutput}}\r\n

', 1, 1550255030, 1, 1550338305, 1); +INSERT INTO `pp_notify_tpl` VALUES(2, 'system', '默认短信通知模板', 1, '', '{\r\n \"task_id\": \"{{TaskId}}\",\r\n \"task_name\": \"{{TaskName}}\",\r\n \"execute_status\": \"{{ExecuteStatus}}\"\r\n}', 1, 1550255030, 1, 1550338215, 1); +INSERT INTO `pp_notify_tpl` VALUES(3, 'system', '默认钉钉通知模板', 2, '', '任务执行异常详情:\r\n任务 ID:{{TaskId}}\r\n任务名称:{{TaskName}}\r\n执行时间:{{ExecuteTime}}\r\n执行耗时:{{ProcessTime}}秒\r\n执行状态:{{ExecuteStatus}}\r\n任务执行输出:\r\n{{TaskOutput}}', 1, 1550255030, 1, 1550338880, 1); +INSERT INTO `pp_notify_tpl` VALUES(4, 'system', '默认微信通知模板', 3, '', '{\r\n \"task_id\": \"{{TaskId}}\",\r\n \"task_name\": \"{{TaskName}}\",\r\n \"execute_status\": \"{{ExecuteStatus}}\"\r\n}', 1, 1550347183, 1, 1550347201, 1); +COMMIT; + +BEGIN; +ALTER TABLE `pp_task` CHANGE `notify_type` `notify_type` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' COMMENT '0-邮件通知,1-信息通知,2-钉钉通知,3-微信通知,'; +COMMIT; + +BEGIN; +ALTER TABLE `pp_uc_admin` ADD `wechat` VARCHAR(64) NULL COMMENT '微信' AFTER `dingtalk`; COMMIT; SET FOREIGN_KEY_CHECKS = 1; diff --git a/views/admin/add.html b/views/admin/add.html index 633e4ee0..5af1064d 100644 --- a/views/admin/add.html +++ b/views/admin/add.html @@ -42,7 +42,13 @@
-
*
+ + +
+ +
+ +
diff --git a/views/admin/edit.html b/views/admin/edit.html index d2ecbff4..72774256 100644 --- a/views/admin/edit.html +++ b/views/admin/edit.html @@ -39,6 +39,13 @@
+
+ +
+ +
+
+
@@ -58,8 +65,6 @@
*
{{end}} - - diff --git a/views/admin/list.html b/views/admin/list.html index 8e2b82d3..dc32919c 100644 --- a/views/admin/list.html +++ b/views/admin/list.html @@ -53,6 +53,7 @@ ,{field:'phone', title: '联系电话'} ,{field:'email', title: '电子邮箱'} ,{field:'dingtalk', title: '钉钉通知'} + ,{field:'wechat', title: '微信账号'} ,{field:'status_text', title: '状态'} ,{fixed: 'right', width:160, align:'center', toolbar: '#bar'} ]] diff --git a/views/notifytpl/add.html b/views/notifytpl/add.html index 9ab94841..409f60b6 100644 --- a/views/notifytpl/add.html +++ b/views/notifytpl/add.html @@ -17,6 +17,7 @@ +
@@ -40,10 +41,10 @@ {{"任务 ID {{TaskId}}"}} {{"任务名称 {{TaskName}}"}} - {{"执行时间 {{CreateTime}}"}} + {{"执行时间 {{ExecuteTime}}"}} {{"执行耗时 {{ProcessTime}}"}} - {{"执行状态 {{Status}}"}} - {{"任务输出 {{TaskOut}}"}} + {{"执行状态 {{ExecuteStatus}}"}} + {{"任务输出 {{TaskOutput}}"}} diff --git a/views/notifytpl/edit.html b/views/notifytpl/edit.html index 0ace94d8..f44d0b33 100644 --- a/views/notifytpl/edit.html +++ b/views/notifytpl/edit.html @@ -17,6 +17,7 @@ +
@@ -41,10 +42,10 @@ {{"任务 ID {{TaskId}}"}} {{"任务名称 {{TaskName}}"}} - {{"执行时间 {{CreateTime}}"}} + {{"执行时间 {{ExecuteTime}}"}} {{"执行耗时 {{ProcessTime}}"}} - {{"执行状态 {{Status}}"}} - {{"任务输出 {{TaskOut}}"}} + {{"执行状态 {{ExecuteStatus}}"}} + {{"任务输出 {{TaskOutput}}"}} diff --git a/views/task/add.html b/views/task/add.html index 4357faf5..e49cac2b 100644 --- a/views/task/add.html +++ b/views/task/add.html @@ -107,6 +107,7 @@ +
diff --git a/views/task/copy.html b/views/task/copy.html index 861af4a0..b1901597 100644 --- a/views/task/copy.html +++ b/views/task/copy.html @@ -101,6 +101,7 @@ +
diff --git a/views/task/detail.html b/views/task/detail.html index c5659c11..7f0ebca9 100644 --- a/views/task/detail.html +++ b/views/task/detail.html @@ -99,7 +99,7 @@ {{if eq .task.IsNotify 1}} 通知类型 - {{if eq .task.NotifyType 1}}短信{{end}} {{if eq .task.NotifyType 0}}邮件{{end}} {{if eq .task.NotifyType 2}}钉钉{{end}} + {{if eq .task.NotifyType 1}}短信{{end}} {{if eq .task.NotifyType 0}}邮件{{end}} {{if eq .task.NotifyType 2}}钉钉{{end}} {{if eq .task.NotifyType 3}}微信{{end}} @@ -217,8 +217,6 @@ }) - - //但是,如果你的HTML是动态生成的,自动渲染就会失效 //因此你需要在相应的地方,执行下述方法来手动渲染,跟这类似的还有 element.init(); form.render(); diff --git a/views/task/edit.html b/views/task/edit.html index 033f2200..09839b6b 100644 --- a/views/task/edit.html +++ b/views/task/edit.html @@ -99,6 +99,7 @@ +
diff --git a/views/tasklog/detail.html b/views/tasklog/detail.html index dc499cb1..4fe2af0d 100644 --- a/views/tasklog/detail.html +++ b/views/tasklog/detail.html @@ -153,7 +153,7 @@ {{if eq .task.IsNotify 1}} 通知类型 - {{if eq .task.NotifyType 1}}短信{{end}} {{if eq .task.NotifyType 0}}邮件{{end}} {{if eq .task.NotifyType 2}}钉钉{{end}} + {{if eq .task.NotifyType 1}}短信{{end}} {{if eq .task.NotifyType 0}}邮件{{end}} {{if eq .task.NotifyType 2}}钉钉{{end}} {{if eq .task.NotifyType 3}}微信{{end}} diff --git a/views/user/edit.html b/views/user/edit.html index 9a2f9395..bf5ec6ce 100644 --- a/views/user/edit.html +++ b/views/user/edit.html @@ -40,6 +40,13 @@ +
+ +
+ +
+
+