diff --git a/bug-notify.log b/bug-notify.log index 539d7ae..10b7cc2 100644 --- a/bug-notify.log +++ b/bug-notify.log @@ -699,3 +699,82 @@ {"level":"ERROR","time":"2024-09-15T09:35:31.055+0800","caller":"handle/timeing.go:89","msg":" 定时任务发送消息失败:","error":"description:机器人发送签名不匹配;solution:请确认签名和生成签名的时间戳必须都放在调用的网址中,请确认机器人的密钥加密和填写正确;link:请参考本接口对应文档获得具体要求,或者在https://open.dingtalk.com/document/ 搜索相关文档;"} {"level":"ERROR","time":"2024-09-15T09:35:34.056+0800","caller":"handle/timeing.go:89","msg":" 定时任务发送消息失败:","error":"description:机器人发送签名不匹配;solution:请确认签名和生成签名的时间戳必须都放在调用的网址中,请确认机器人的密钥加密和填写正确;link:请参考本接口对应文档获得具体要求,或者在https://open.dingtalk.com/document/ 搜索相关文档;"} {"level":"INFO","time":"2024-09-15T09:36:17.579+0800","caller":"init-tool/logger.go:36","msg":"init logger success"} +{"level":"INFO","time":"2024-09-15T09:57:31.327+0800","caller":"init-tool/logger.go:36","msg":"init logger success"} +{"level":"ERROR","time":"2024-09-15T09:57:34.599+0800","caller":"handle/timeing.go:89","msg":" 定时任务发送消息失败:","error":"description:机器人发送签名不匹配;solution:请确认签名和生成签名的时间戳必须都放在调用的网址中,请确认机器人的密钥加密和填写正确;link:请参考本接口对应文档获得具体要求,或者在https://open.dingtalk.com/document/ 搜索相关文档;"} +{"level":"ERROR","time":"2024-09-15T09:57:37.082+0800","caller":"handle/timeing.go:89","msg":" 定时任务发送消息失败:","error":"description:机器人发送签名不匹配;solution:请确认签名和生成签名的时间戳必须都放在调用的网址中,请确认机器人的密钥加密和填写正确;link:请参考本接口对应文档获得具体要求,或者在https://open.dingtalk.com/document/ 搜索相关文档;"} +{"level":"ERROR","time":"2024-09-15T09:57:40.058+0800","caller":"handle/timeing.go:89","msg":" 定时任务发送消息失败:","error":"description:机器人发送签名不匹配;solution:请确认签名和生成签名的时间戳必须都放在调用的网址中,请确认机器人的密钥加密和填写正确;link:请参考本接口对应文档获得具体要求,或者在https://open.dingtalk.com/document/ 搜索相关文档;"} +{"level":"ERROR","time":"2024-09-15T09:57:43.077+0800","caller":"handle/timeing.go:89","msg":" 定时任务发送消息失败:","error":"description:机器人发送签名不匹配;solution:请确认签名和生成签名的时间戳必须都放在调用的网址中,请确认机器人的密钥加密和填写正确;link:请参考本接口对应文档获得具体要求,或者在https://open.dingtalk.com/document/ 搜索相关文档;"} +{"level":"ERROR","time":"2024-09-15T09:57:46.074+0800","caller":"handle/timeing.go:89","msg":" 定时任务发送消息失败:","error":"description:机器人发送签名不匹配;solution:请确认签名和生成签名的时间戳必须都放在调用的网址中,请确认机器人的密钥加密和填写正确;link:请参考本接口对应文档获得具体要求,或者在https://open.dingtalk.com/document/ 搜索相关文档;"} +{"level":"ERROR","time":"2024-09-15T09:57:49.066+0800","caller":"handle/timeing.go:89","msg":" 定时任务发送消息失败:","error":"description:机器人发送签名不匹配;solution:请确认签名和生成签名的时间戳必须都放在调用的网址中,请确认机器人的密钥加密和填写正确;link:请参考本接口对应文档获得具体要求,或者在https://open.dingtalk.com/document/ 搜索相关文档;"} +{"level":"INFO","time":"2024-09-15T09:58:01.178+0800","caller":"init-tool/logger.go:36","msg":"init logger success"} +{"level":"INFO","time":"2024-09-15T09:59:04.627+0800","caller":"init-tool/logger.go:36","msg":"init logger success"} +{"level":"ERROR","time":"2024-09-15T09:59:08.223+0800","caller":"handle/timeing.go:88","msg":" 定时任务发送消息失败:","error":"错误描述:关键词不匹配;解决方案:请联系群管理员查看此机器人的关键词,并在发送的信息中包含此关键词;"} +{"level":"ERROR","time":"2024-09-15T09:59:11.068+0800","caller":"handle/timeing.go:88","msg":" 定时任务发送消息失败:","error":"错误描述:关键词不匹配;解决方案:请联系群管理员查看此机器人的关键词,并在发送的信息中包含此关键词;"} +{"level":"ERROR","time":"2024-09-15T09:59:14.078+0800","caller":"handle/timeing.go:88","msg":" 定时任务发送消息失败:","error":"错误描述:关键词不匹配;解决方案:请联系群管理员查看此机器人的关键词,并在发送的信息中包含此关键词;"} +{"level":"ERROR","time":"2024-09-15T09:59:17.057+0800","caller":"handle/timeing.go:88","msg":" 定时任务发送消息失败:","error":"错误描述:关键词不匹配;解决方案:请联系群管理员查看此机器人的关键词,并在发送的信息中包含此关键词;"} +{"level":"ERROR","time":"2024-09-15T09:59:20.070+0800","caller":"handle/timeing.go:88","msg":" 定时任务发送消息失败:","error":"错误描述:关键词不匹配;解决方案:请联系群管理员查看此机器人的关键词,并在发送的信息中包含此关键词;"} +{"level":"ERROR","time":"2024-09-15T09:59:23.053+0800","caller":"handle/timeing.go:88","msg":" 定时任务发送消息失败:","error":"错误描述:关键词不匹配;解决方案:请联系群管理员查看此机器人的关键词,并在发送的信息中包含此关键词;"} +{"level":"ERROR","time":"2024-09-15T09:59:26.076+0800","caller":"handle/timeing.go:88","msg":" 定时任务发送消息失败:","error":"错误描述:关键词不匹配;解决方案:请联系群管理员查看此机器人的关键词,并在发送的信息中包含此关键词;"} +{"level":"ERROR","time":"2024-09-15T09:59:29.074+0800","caller":"handle/timeing.go:88","msg":" 定时任务发送消息失败:","error":"错误描述:关键词不匹配;解决方案:请联系群管理员查看此机器人的关键词,并在发送的信息中包含此关键词;"} +{"level":"ERROR","time":"2024-09-15T09:59:32.075+0800","caller":"handle/timeing.go:88","msg":" 定时任务发送消息失败:","error":"错误描述:关键词不匹配;解决方案:请联系群管理员查看此机器人的关键词,并在发送的信息中包含此关键词;"} +{"level":"ERROR","time":"2024-09-15T09:59:35.064+0800","caller":"handle/timeing.go:88","msg":" 定时任务发送消息失败:","error":"错误描述:关键词不匹配;解决方案:请联系群管理员查看此机器人的关键词,并在发送的信息中包含此关键词;"} +{"level":"ERROR","time":"2024-09-15T09:59:38.070+0800","caller":"handle/timeing.go:88","msg":" 定时任务发送消息失败:","error":"错误描述:关键词不匹配;解决方案:请联系群管理员查看此机器人的关键词,并在发送的信息中包含此关键词;"} +{"level":"INFO","time":"2024-09-15T09:59:45.169+0800","caller":"init-tool/logger.go:36","msg":"init logger success"} +{"level":"INFO","time":"2024-09-15T10:01:15.725+0800","caller":"init-tool/logger.go:36","msg":"init logger success"} +{"level":"INFO","time":"2024-09-15T10:01:59.486+0800","caller":"init-tool/logger.go:36","msg":"init logger success"} +{"level":"INFO","time":"2024-09-15T10:03:32.086+0800","caller":"init-tool/logger.go:36","msg":"init logger success"} +{"level":"INFO","time":"2024-09-15T10:09:47.693+0800","caller":"init-tool/logger.go:36","msg":"init logger success"} +{"level":"INFO","time":"2024-09-15T10:09:57.517+0800","caller":"init-tool/logger.go:36","msg":"init logger success"} +{"level":"INFO","time":"2024-09-15T10:11:33.949+0800","caller":"init-tool/logger.go:36","msg":"init logger success"} +{"level":"INFO","time":"2024-09-15T10:13:30.235+0800","caller":"init-tool/logger.go:36","msg":"init logger success"} +{"level":"INFO","time":"2024-09-15T10:19:47.349+0800","caller":"init-tool/logger.go:36","msg":"init logger success"} +{"level":"INFO","time":"2024-09-15T10:20:45.975+0800","caller":"init-tool/logger.go:36","msg":"init logger success"} +{"level":"INFO","time":"2024-09-15T10:21:40.598+0800","caller":"init-tool/logger.go:36","msg":"init logger success"} +{"level":"INFO","time":"2024-09-15T14:34:48.829+0800","caller":"init-tool/logger.go:36","msg":"init logger success"} +{"level":"INFO","time":"2024-09-15T14:34:49.597+0800","caller":"handle/notify-handle.go:122","msg":"更新事件,状态没有变化,不做处理"} +{"level":"INFO","time":"2024-09-15T14:34:49.725+0800","caller":"handle/notify-handle.go:122","msg":"更新事件,状态没有变化,不做处理"} +{"level":"INFO","time":"2024-09-15T14:35:15.512+0800","caller":"init-tool/logger.go:36","msg":"init logger success"} +{"level":"INFO","time":"2024-09-15T14:36:20.647+0800","caller":"init-tool/logger.go:36","msg":"init logger success"} +{"level":"ERROR","time":"2024-09-15T14:37:24.037+0800","caller":"handle/timeing.go:102","msg":" 定时任务发送消息失败:","error":"send too fast, exceed 20 times per minute"} +{"level":"INFO","time":"2024-09-15T14:39:46.130+0800","caller":"init-tool/logger.go:36","msg":"init logger success"} +{"level":"INFO","time":"2024-09-15T14:53:50.495+0800","caller":"init-tool/logger.go:36","msg":"init logger success"} +{"level":"INFO","time":"2024-09-15T14:54:31.204+0800","caller":"init-tool/logger.go:36","msg":"init logger success"} +{"level":"INFO","time":"2024-09-15T15:49:32.705+0800","caller":"init-tool/logger.go:36","msg":"init logger success"} +{"level":"INFO","time":"2024-09-15T15:50:05.257+0800","caller":"init-tool/logger.go:36","msg":"init logger success"} +{"level":"INFO","time":"2024-09-15T15:50:35.551+0800","caller":"init-tool/logger.go:36","msg":"init logger success"} +{"level":"INFO","time":"2024-09-15T15:51:20.568+0800","caller":"init-tool/logger.go:36","msg":"init logger success"} +{"level":"INFO","time":"2024-09-15T16:09:36.491+0800","caller":"init-tool/logger.go:36","msg":"init logger success"} +{"level":"INFO","time":"2024-09-15T16:09:36.633+0800","caller":"handle/notify-handle.go:122","msg":"更新事件,状态没有变化,不做处理"} +{"level":"INFO","time":"2024-09-15T16:09:36.634+0800","caller":"handle/notify-handle.go:122","msg":"更新事件,状态没有变化,不做处理"} +{"level":"INFO","time":"2024-09-15T16:09:37.239+0800","caller":"handle/notify-handle.go:122","msg":"更新事件,状态没有变化,不做处理"} +{"level":"INFO","time":"2024-09-15T16:09:37.241+0800","caller":"handle/notify-handle.go:122","msg":"更新事件,状态没有变化,不做处理"} +{"level":"INFO","time":"2024-09-15T16:09:37.365+0800","caller":"handle/notify-handle.go:122","msg":"更新事件,状态没有变化,不做处理"} +{"level":"INFO","time":"2024-09-15T16:09:37.368+0800","caller":"handle/notify-handle.go:122","msg":"更新事件,状态没有变化,不做处理"} +{"level":"INFO","time":"2024-09-15T16:11:19.163+0800","caller":"handle/notify-handle.go:122","msg":"更新事件,状态没有变化,不做处理"} +{"level":"INFO","time":"2024-09-15T16:12:11.971+0800","caller":"init-tool/logger.go:36","msg":"init logger success"} +{"level":"INFO","time":"2024-09-15T16:14:12.062+0800","caller":"init-tool/logger.go:36","msg":"init logger success"} +{"level":"INFO","time":"2024-09-15T16:14:25.541+0800","caller":"handle/notify-handle.go:122","msg":"更新事件,状态没有变化,不做处理"} +{"level":"INFO","time":"2024-09-15T16:15:21.649+0800","caller":"init-tool/logger.go:36","msg":"init logger success"} +{"level":"INFO","time":"2024-09-15T16:15:48.428+0800","caller":"handle/notify-handle.go:122","msg":"更新事件,状态没有变化,不做处理"} +{"level":"INFO","time":"2024-09-15T16:16:38.146+0800","caller":"init-tool/logger.go:36","msg":"init logger success"} +{"level":"INFO","time":"2024-09-15T16:16:47.190+0800","caller":"handle/notify-handle.go:230","msg":"任务没有处理者,也没有关注者,不做通知。"} +{"level":"INFO","time":"2024-09-15T16:16:50.336+0800","caller":"handle/notify-handle.go:122","msg":"更新事件,状态没有变化,不做处理"} +{"level":"INFO","time":"2024-09-15T16:17:31.948+0800","caller":"handle/notify-handle.go:230","msg":"任务没有处理者,也没有关注者,不做通知。"} +{"level":"INFO","time":"2024-09-15T16:17:31.949+0800","caller":"handle/notify-handle.go:122","msg":"更新事件,状态没有变化,不做处理"} +{"level":"INFO","time":"2024-09-15T16:18:05.926+0800","caller":"handle/notify-handle.go:230","msg":"任务没有处理者,也没有关注者,不做通知。"} +{"level":"INFO","time":"2024-09-15T16:18:31.006+0800","caller":"handle/notify-handle.go:122","msg":"更新事件,状态没有变化,不做处理"} +{"level":"INFO","time":"2024-09-15T16:19:21.631+0800","caller":"init-tool/logger.go:36","msg":"init logger success"} +{"level":"INFO","time":"2024-09-15T16:20:16.464+0800","caller":"handle/notify-handle.go:230","msg":"任务没有处理者,也没有关注者,不做通知。"} +{"level":"INFO","time":"2024-09-15T16:20:16.464+0800","caller":"handle/notify-handle.go:122","msg":"更新事件,状态没有变化,不做处理"} +{"level":"INFO","time":"2024-09-15T16:20:20.740+0800","caller":"init-tool/logger.go:36","msg":"init logger success"} +{"level":"INFO","time":"2024-09-15T16:20:44.087+0800","caller":"handle/notify-handle.go:230","msg":"任务没有处理者,也没有关注者,不做通知。"} +{"level":"INFO","time":"2024-09-15T16:20:44.745+0800","caller":"handle/notify-handle.go:122","msg":"更新事件,状态没有变化,不做处理"} +{"level":"INFO","time":"2024-09-15T16:22:39.561+0800","caller":"handle/notify-handle.go:230","msg":"任务没有处理者,也没有关注者,不做通知。"} +{"level":"INFO","time":"2024-09-15T16:22:46.659+0800","caller":"init-tool/logger.go:36","msg":"init logger success"} +{"level":"INFO","time":"2024-09-15T16:23:29.124+0800","caller":"handle/notify-handle.go:228","msg":"任务没有处理者,也没有关注者,不做通知。"} +{"level":"INFO","time":"2024-09-15T16:24:46.863+0800","caller":"handle/notify-handle.go:228","msg":"任务没有处理者,也没有关注者,不做通知。"} +{"level":"INFO","time":"2024-09-15T16:24:46.863+0800","caller":"handle/notify-handle.go:120","msg":"更新事件,状态没有变化,不做处理"} +{"level":"INFO","time":"2024-09-15T16:25:02.408+0800","caller":"handle/notify-handle.go:228","msg":"任务没有处理者,也没有关注者,不做通知。"} +{"level":"INFO","time":"2024-09-15T16:27:24.059+0800","caller":"handle/notify-handle.go:120","msg":"更新事件,状态没有变化,不做处理"} +{"level":"INFO","time":"2024-09-15T16:33:25.860+0800","caller":"init-tool/logger.go:36","msg":"init logger success"} +{"level":"INFO","time":"2024-09-15T16:35:10.959+0800","caller":"init-tool/logger.go:36","msg":"init logger success"} diff --git a/dao/mysql.go b/dao/mysql.go index ccfe039..f6da76f 100644 --- a/dao/mysql.go +++ b/dao/mysql.go @@ -46,5 +46,4 @@ func GetAllProjectID() (ids []int64, err error) { func GetURLByProjectId(ids []int64) (urls []model.RobotUrl, err error) { err = init_tool.DB.Table("custom_values").Where("customized_id in ? and customized_type = ?", ids, "Project").Select("customized_id,value").Find(&urls).Error return - } diff --git a/go.mod b/go.mod index 861ae13..58afbef 100644 --- a/go.mod +++ b/go.mod @@ -51,6 +51,7 @@ require ( github.com/pingcap/log v1.1.1-0.20230317032135-a0d097d16e22 // indirect github.com/pingcap/tidb/pkg/parser v0.0.0-20231103042308-035ad5ccbe67 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect + github.com/robfig/cron/v3 v3.0.0 // indirect github.com/sagikazarmark/locafero v0.4.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/shopspring/decimal v1.2.0 // indirect diff --git a/go.sum b/go.sum index 78e97c7..7b7ad2a 100644 --- a/go.sum +++ b/go.sum @@ -109,6 +109,8 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= +github.com/robfig/cron/v3 v3.0.0 h1:kQ6Cb7aHOHTSzNVNEhmp8EcWKLb4CbiMW9h9VyIhO4E= +github.com/robfig/cron/v3 v3.0.0/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= diff --git a/handle/notify-handle.go b/handle/notify-handle.go index 5759ad8..099df28 100644 --- a/handle/notify-handle.go +++ b/handle/notify-handle.go @@ -41,8 +41,6 @@ func (h *MyEventHandler) OnPosSynced(header *replication.EventHeader, pos mysql. func (h *MyEventHandler) OnRow(e *canal.RowsEvent) error { action := e.Action - fmt.Println("我是action", e.Action) - fmt.Println("我是rows", e.Rows) olddata, newdata := GetData(e) //根据状态判断是否发送通知,如果是update行为,关注状态是否有变化,如果没有变化就不通知 switch action { @@ -212,15 +210,26 @@ func Handle(newdata *model.DataChanges) (err error) { } //发消息的时候根据bug状态通知到作者或处理者 - //3、4、5、6通知创建者 - //1、2、7 通知处理者 + //如果在任务创建的时候没有处理者也没有关注者,就不发送消息通知 + //3、4、5、6通知创建者,但不通知处理者 + //1、2、7 通知处理者,但不通知作者 + var newUserIds []int32 if controller.CreateMap[newdata.StatusID] { userids = append(userids, newdata.AuthorID) + //给处理者去掉 + newUserIds = utils.DeleteSlice(userids, newdata.AssignedToID) } else if controller.ProcessorMap[newdata.StatusID] { userids = append(userids, newdata.AssignedToID) + //给作者去掉 + newUserIds = utils.DeleteSlice(userids, newdata.AuthorID) } - phones, err := dao.GetPhoneByUserID(userids) + if newdata.AssignedToID == 0 && len(newUserIds) == 0 { + zap.L().Info("任务没有处理者,也没有关注者,不做通知。") + return + } + + phones, err := dao.GetPhoneByUserID(newUserIds) if err != nil { zap.L().Error("获取手机号失败:", zap.Error(err)) return diff --git a/handle/timeing.go b/handle/timeing.go index f40b1cd..5f68519 100644 --- a/handle/timeing.go +++ b/handle/timeing.go @@ -2,14 +2,11 @@ package handle import ( "bug-notify/api" - "bug-notify/dao" "bug-notify/model" "bug-notify/utils" "fmt" - "github.com/andeya/goutil/calendar/cron" + "github.com/robfig/cron/v3" "go.uber.org/zap" - "strings" - "time" ) const ( @@ -22,74 +19,86 @@ var P = []int{NOTPROCESSEDID, PROCESSINGID} func TimeingTasks() { c := cron.New() - c.AddFunc("0 21 * * *", func() { + c.AddFunc("36 16 * * *", func() { //c.AddFunc("@every 3s", func() { //获取所有项目id - ids, err := dao.GetAllProjectID() - if err != nil { - zap.L().Error("获取项目id失败:", zap.Error(err)) - return + //ids, err := dao.GetAllProjectID() + //if err != nil { + // zap.L().Error("获取项目id失败:", zap.Error(err)) + // return + //} + ////根据项目id获取相对应的回调地址并加签 + //urls, err := dao.GetURLByProjectId(ids) + //if err != nil { + // zap.L().Error("获取钉钉webhook失败:", zap.Error(err)) + // return + //} + //urlMap := make(map[int64]string) + //for i := 0; i < len(urls); i++ { + // urlMap[urls[i].CustomizedId] = urls[i].Value + //} + //for _, id := range ids { + // a, err := dao.GetStatusNumByID(P, id) + // if err != nil { + // zap.L().Error("查询数量失败:", zap.Error(err)) + // return + // } + // maps := map[int]map[int]int{} + // for _, value := range a { + // childMap := make(map[int]int) + // childMap[value.StatusId] = int(value.Count) + // maps[value.PriorityId] = childMap + // } + // for i := 0; i < 3; i++ { + // for j := 0; j < 2; j++ { + // if _, ok := maps[i+1][j+1]; !ok { + // maps[i+1][j+1] = 0 + // } + // } + // } + + // 使用markdown格式 + + //content := "# %s 任务状态统计 \n" + + // "\n| **级别** | **未处理** | **处理中** | \n" + + // "\n| :--: | :--: | :--: | \n" + + // "\n| **重要** | %d | %d | \n" + + // "\n| **中等** | %d | %d | \n" + + // "\n| **普通** | %d | %d | \n" + + // "\n [@所有人](#)\n" + //nowTime := time.Now().Format("2006-01-02") + + //content := fmt.Sprintf("# %s 任务状态统计\n"+ + // "\n| **级别** | **未处理** | **处理中** |\n"+ + // "\n| ---- | ---- | ---- |\n"+ + // "\n| **重要** | %d | %d |\n"+ + // "\n| **中等** | %d | %d |\n"+ + // "\n| **普通** | %d | %d |\n"+ + // "\n [@所有人](#)\n", nowTime, maps[1][2], maps[1][3], maps[2][2], maps[2][3], maps[3][2], maps[3][3]) + //分割字符串 + //split := strings.Split(urlMap[id], "@") + //var secret string + //if len(split) >= 2 { + // secret = split[1] + //} + content := fmt.Sprintf( + "\n--- \n" + + "**所属项目:** 123|" + + "**任务主题:** 456" + + "**任务状态:** 789") + sign := utils.DingSecret("SEC7c4636349cf3dde4ce3ba607a236e2adf2b74d32935832ed5d86d097726b790f") + data := model.SendMsg{ + DingRobotURL: "https://oapi.dingtalk.com/robot/send?access_token=8ff6cde9a01910e897cb6461e75bd515ed9d683cc4924aad9439fda3e9689de1" + sign, + Content: content, + IsAtAll: true, + MsgType: "markdown", } - //根据项目id获取相对应的回调地址并加签 - urls, err := dao.GetURLByProjectId(ids) + err := api.SendMessage(data) if err != nil { - zap.L().Error("获取钉钉webhook失败:", zap.Error(err)) + zap.L().Error(" 定时任务发送消息失败:", zap.Error(err)) return } - urlMap := make(map[int64]string) - for i := 0; i < len(urls); i++ { - urlMap[urls[i].CustomizedId] = urls[i].Value - } - for _, id := range ids { - a, err := dao.GetStatusNumByID(P, id) - if err != nil { - zap.L().Error("查询数量失败:", zap.Error(err)) - return - } - maps := map[int]map[int]int{} - for _, value := range a { - childMap := make(map[int]int) - childMap[value.StatusId] = int(value.Count) - maps[value.PriorityId] = childMap - } - for i := 0; i < 3; i++ { - for j := 0; j < 2; j++ { - if _, ok := maps[i+1][j+1]; !ok { - maps[i+1][j+1] = 0 - } - } - } - - // 使用markdown格式 - content := "# %s 任务状态统计 \n" + - "\n| **级别** | **未处理** | **处理中** | " + - "\n| :--: | :--: | :--: | " + - "\n| **重要** | %d | %d | " + - "\n| **中等** | %d | %d | " + - "\n| **普通** | %d | %d |" + - "\n\n [@所有人](#)\n" - nowTime := time.Now().Format("2006-01-02") - - content = fmt.Sprintf(content, nowTime, maps[1][2], maps[1][3], maps[2][2], maps[2][3], maps[3][2], maps[3][3]) - //分割字符串 - split := strings.Split(urlMap[id], "@") - var secret string - if len(split) >= 2 { - secret = split[1] - } - sign := utils.DingSecret(secret) - data := model.SendMsg{ - DingRobotURL: split[0] + sign, - Content: content, - IsAtAll: true, - MsgType: "markdown", - } - err = api.SendMessage(data) - if err != nil { - zap.L().Error(" 定时任务发送消息失败:", zap.Error(err)) - return - } - } + //} }) c.Start() } diff --git a/main.go b/main.go index 32394f5..dfa2994 100644 --- a/main.go +++ b/main.go @@ -16,7 +16,7 @@ func main() { engine := gin.Default() //启动一个协程用于执行binlog go safelyRun(handle.NotifyHandle) - go safelyRun(handle.TimeingTasks) + //go safelyRun(handle.TimeingTasks) engine.Run(init_tool.Conf.ProjectConfig.Address + ":" + init_tool.Conf.ProjectConfig.Port) } diff --git a/pos.txt b/pos.txt index d55c6d2..be533ae 100644 --- a/pos.txt +++ b/pos.txt @@ -1 +1 @@ -{"Name":"binlog.000022","Pos":282625} \ No newline at end of file +{"Name":"binlog.000022","Pos":364616} \ No newline at end of file diff --git a/utils/utils.go b/utils/utils.go index e59ae01..c93e31d 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -26,3 +26,15 @@ func DingSecret(secret string) (sign string) { sign = "×tamp=" + timestamp + "&sign=" + signature return } + +// 移除切片元素 +func DeleteSlice(s []int32, elem int32) []int32 { + j := 0 + for _, v := range s { + if v != elem && v != 0 { + s[j] = v + j++ + } + } + return s[:j] +}