From bc71375fc3dffb73cddec7bd104def58a7fbe567 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=AD=90=E9=BE=99?= Date: Fri, 21 Jul 2023 11:24:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E5=8D=95=E6=8E=A8=E9=80=81=E7=9F=AD?= =?UTF-8?q?=E4=BF=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/conf/options.go | 1 + src/main.go | 1 + src/router/workorderrouter.go | 1 + src/service/task_manage.go | 3 +- src/service/work_order.go | 62 +++++++++++++++++++++++++++++------ 5 files changed, 56 insertions(+), 12 deletions(-) diff --git a/src/common/conf/options.go b/src/common/conf/options.go index 7df4028..456a5bf 100644 --- a/src/common/conf/options.go +++ b/src/common/conf/options.go @@ -42,6 +42,7 @@ type Config struct { SmsAccessKeyId string SmsAccessSecret string SmsTemplateLogin string + SmsWorkOrderTemplate string SmsSignName string AweRestURL string diff --git a/src/main.go b/src/main.go index dba37d8..c304ef6 100644 --- a/src/main.go +++ b/src/main.go @@ -83,6 +83,7 @@ func initConfig() { SmsAccessKeyId: util.SetEnvStr("SMS_ACCESS_KEY", "LTAI4GBcVubRjzX7ABPcHnhB"), // 短信key SmsAccessSecret: util.SetEnvStr("SMS_ACCESS_SECRET", "dYE2dtABFOqYtK1ijcrits0yedHkw7"), // 短信secret SmsTemplateLogin: util.SetEnvStr("SMS_TEMPLATE_LOGIN", "SMS_212925130"), // 短信验证码模板 + SmsWorkOrderTemplate: util.SetEnvStr("SMS_TEMPLATE_LOGIN", "SMS_462020767"), // 短信工单下发模板 SmsSignName: util.SetEnvStr("SMS_SIGN_NAME", "比格数据"), // 签名 AweRestURL: util.SetEnvStr("AWE_REST_URL", "http://awecloud-rest/awecloud/rest"), // awecloud-rest KubernetesToken: util.SetEnvStr("AWE_REST_K8S_TOKEN", "eyJhbGciOiJSUzI1NiIsImtpZCI6InJ1alJzNEVGamN5UC0wRU1rS1BKQ0JZVUtNNWpzR0t2bmlrSlJhY2Q3R00ifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJiZWFnbGUtc3lzdGVtIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6InJvb3QiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoicm9vdCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjRlMDM0OTI3LTc0ZTMtNDQ5Yy1hN2RlLWExMGE3MjU1NGYyMCIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDpiZWFnbGUtc3lzdGVtOnJvb3QifQ.YPLE_E2kIeo-YFQtKScBt5p4KhnniJF9n3iWN2i9UMYS06lIsq2-2wBrgON-YsJihWJupYyDQRiZ9h8bUWTrQzhnpsnuJ_aUclKyAw3QOT9rjvZhJp7qP--27dmdspSHncKtvIiprWE7UTUKzvF33WsMB0fSYFqYXOggNFMoT-fXmWwUXjgar3op0iOl3c3deJ_GeBzFyLSHEuGM7OVdjU8032aUmTen0Kji_P1yB4-O3Iqd0OdVs33BQy_tycjbxhQ8TDEpqrqhLnXjAwJCprLDEpFMx7ODZbjB9Wmuns8yJhaRDxTO47rTME7ZIAxjZ-zLR_QybtW97rlwnUTaNw"), // k8s token diff --git a/src/router/workorderrouter.go b/src/router/workorderrouter.go index 60e6dba..e537ca3 100644 --- a/src/router/workorderrouter.go +++ b/src/router/workorderrouter.go @@ -29,6 +29,7 @@ func InitWorkOrderRouter(e *gin.Engine) { manage.GET("/details", controller.DetailsWorkOrderManage) // 详情 manage.GET("/list", controller.ListWorkOrderManage) // 列表 manage.POST("/push", controller.PushWorkOrderManage) // 手动下发 + } //业务工单列表 diff --git a/src/service/task_manage.go b/src/service/task_manage.go index 7b3a875..00a06e9 100644 --- a/src/service/task_manage.go +++ b/src/service/task_manage.go @@ -468,8 +468,7 @@ func ExecAnsible(id, taskId int, value string) { //return } } - err = redis.HDel(conf.TaskExecLog, strconv.Itoa(id)) - conf.Logger.Error("del redis err", zap.Error(err)) + redis.HDel(conf.TaskExecLog, strconv.Itoa(id)) redis.HDel(conf.AutoExecHistory, strconv.Itoa(id)) } diff --git a/src/service/work_order.go b/src/service/work_order.go index 84e9cb3..f7e4e5b 100644 --- a/src/service/work_order.go +++ b/src/service/work_order.go @@ -3,6 +3,7 @@ package service import ( "errors" "fmt" + "github.com/aliyun/alibaba-cloud-sdk-go/services/dysmsapi" json "github.com/json-iterator/go" "github.com/wanghuiyt/ding" "gitlab.wodcloud.com/smart-operation/so-operation-api/src/bean/entity" @@ -11,6 +12,8 @@ import ( "gitlab.wodcloud.com/smart-operation/so-operation-api/src/common/client" "gitlab.wodcloud.com/smart-operation/so-operation-api/src/common/conf" "gitlab.wodcloud.com/smart-operation/so-operation-api/src/pkg/beagle/resp" + "go.uber.org/zap" + "strings" "time" ) @@ -356,25 +359,29 @@ func (w *WorkOrderManageSvc) PushWorkOrderManage(req request.PushWorkOrderReq) ( switch req.PushObj.PushMethod { case 1: //发送钉钉消息 - err = WorkOrderPushDingTalkMsg(workOrder.OrderName, workOrder.OrderLevel, phones) + err = w.WorkOrderPushDingTalkMsg(workOrder.OrderName, workOrder.OrderLevel, phones) if err != nil { + session.Rollback() return } case 2: //发送短信 - err = WorkOrderPushNoteMsg(workOrder.OrderName, workOrder.OrderLevel, phones) + err = w.WorkOrderPushNoteMsg(workOrder.OrderName, phones, workOrder.OrderLevel) if err != nil { + session.Rollback() return } case 3: //发送钉钉消息 - err = WorkOrderPushDingTalkMsg(workOrder.OrderName, workOrder.OrderLevel, phones) + err = w.WorkOrderPushDingTalkMsg(workOrder.OrderName, workOrder.OrderLevel, phones) if err != nil { + session.Rollback() return } //发送短信 - err = WorkOrderPushNoteMsg(workOrder.OrderName, workOrder.OrderLevel, phones) + err = w.WorkOrderPushNoteMsg(workOrder.OrderName, phones, workOrder.OrderLevel) if err != nil { + session.Rollback() return } } @@ -641,7 +648,7 @@ func (w *WorkOrderManageSvc) ListWorkOrderMe(req request.ListWorkOrderReq) (tota } // WorkOrderPushDingTalkMsg 推送钉钉消息 -func WorkOrderPushDingTalkMsg(orderName string, orderLevel int, phones []string) (err error) { +func (w *WorkOrderManageSvc) WorkOrderPushDingTalkMsg(orderName string, orderLevel int, phones []string) (err error) { d := ding.Webhook{ AccessToken: conf.Options.OrderDingTalkAccessToken, //"203fe1644b446bba0a34e6e622c523d39ee9916fdad94b9c64224449f659e20b", Secret: conf.Options.OrderDingTalkSecret, //"SECa73d8372e336451c9daf29a99f750ee1bdd170c1dab910eab9cd06d729a831b7", @@ -658,16 +665,51 @@ func WorkOrderPushDingTalkMsg(orderName string, orderLevel int, phones []string) } //有一条工单需要您处理:工单类型:【业务工单】 工单名称:【$工单名称】 工单等级:【$工单等级】 - err = d.SendMessageText("有一条工单需要您处理:\n工单类型:【业务工单】\n工单名称:【"+orderName+"】\n工单等级:【"+orderLevels+"】", phones...) + err = d.SendMessageText("您有一条业务工单需要处理:工单名称:"+orderName+",工单等级:"+orderLevels+",请及时前往智能运维平台处理!", phones...) if err != nil { + err = resp.FAIL.ErrorDetail(err) return } - return } -// WorkOrderPushNoteMsg 推送短信消息 -func WorkOrderPushNoteMsg(orderName string, orderLevel int, phone []string) (err error) { +// WorkOrderPushNoteMsg 推送工单短信消息 +func (w *WorkOrderManageSvc) WorkOrderPushNoteMsg(orderName string, phone []string, orderLevel int) (err error) { + smsClient, err := dysmsapi.NewClientWithAccessKey("cn-hangzhou", conf.Options.SmsAccessKeyId, conf.Options.SmsAccessSecret) + if err != nil { + conf.Logger.Error("dysmsapi client error", zap.Error(err)) + err = resp.FAIL.ErrorDetail(err) + return + } + var orderLevels string + switch orderLevel { + case 1: + orderLevels = "紧急任务" + case 2: + orderLevels = "重要任务" + case 3: + orderLevels = "一般任务" + } + tickettype := "业务工单" + params := map[string]interface{}{"tickettype": tickettype, "ticketname": orderName, "ticketlevel": orderLevels} + templateParam, err := json.Marshal(params) + if err != nil { + conf.Logger.Error("序列化模板失败!", zap.Error(err)) + err = resp.FAIL.ErrorDetail(err) + return + } - return nil + request := dysmsapi.CreateSendSmsRequest() + request.Scheme = "https" + request.PhoneNumbers = strings.Join(phone, ",") + request.TemplateCode = conf.Options.SmsWorkOrderTemplate + request.SignName = conf.Options.SmsSignName + request.TemplateParam = string(templateParam) + req, err := smsClient.SendSms(request) + if err != nil { + err = resp.FAIL.ErrorDetail(err) + return + } + fmt.Printf("response is %#v\n", req) + return } -- 2.26.0