|
@@ -175,6 +175,7 @@ func (s *SyncData) SyncTaskData() {
|
|
|
for _, gameTask := range apiList {
|
|
for _, gameTask := range apiList {
|
|
|
var gameTarget task.GameTargetComplete
|
|
var gameTarget task.GameTargetComplete
|
|
|
roomData, _ := s.SyncRoomData(date, gameTask.TaskId)
|
|
roomData, _ := s.SyncRoomData(date, gameTask.TaskId)
|
|
|
|
|
+
|
|
|
if gameTask.GameIdXmy != "" {
|
|
if gameTask.GameIdXmy != "" {
|
|
|
gameIdXmy, _ := strconv.Atoi(gameTask.GameIdXmy)
|
|
gameIdXmy, _ := strconv.Atoi(gameTask.GameIdXmy)
|
|
|
xmyGameInfo := xmyGameData[gameIdXmy]
|
|
xmyGameInfo := xmyGameData[gameIdXmy]
|
|
@@ -186,7 +187,12 @@ func (s *SyncData) SyncTaskData() {
|
|
|
num, _ := s.SyncXmyFreeData(date, gameIdXmy)
|
|
num, _ := s.SyncXmyFreeData(date, gameIdXmy)
|
|
|
if num != 0 {
|
|
if num != 0 {
|
|
|
gameTarget.PayTarget = num
|
|
gameTarget.PayTarget = num
|
|
|
|
|
+ if gameTarget.PayTarget > completeTaskData[gameTask.TaskId].PayTarget {
|
|
|
|
|
+ lastPayAddUpdateTimeKey := fmt.Sprintf(LastPayAddUpdateTimeKey, date, gameTask.TaskId)
|
|
|
|
|
+ _ = s.cache.SetCacheStr(context.Background(), lastPayAddUpdateTimeKey, time.Now().Unix())
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
} else {
|
|
} else {
|
|
|
gameTarget.NewComplete = roomData.NewCompleteLocal
|
|
gameTarget.NewComplete = roomData.NewCompleteLocal
|
|
|
gameTarget.PayComplete = roomData.PayCompleteLocal
|
|
gameTarget.PayComplete = roomData.PayCompleteLocal
|
|
@@ -195,16 +201,21 @@ func (s *SyncData) SyncTaskData() {
|
|
|
if gameTarget.RetainedComplete < roomData.RetainedComplete {
|
|
if gameTarget.RetainedComplete < roomData.RetainedComplete {
|
|
|
gameTarget.RetainedComplete = roomData.RetainedComplete
|
|
gameTarget.RetainedComplete = roomData.RetainedComplete
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
gameTarget.GameRate = roomData.GameRate
|
|
gameTarget.GameRate = roomData.GameRate
|
|
|
if gameTask.GamePortId == 5 && gameTask.LoginMethod == 2 {
|
|
if gameTask.GamePortId == 5 && gameTask.LoginMethod == 2 {
|
|
|
mzGameId := gameTask.MzGameId + "-" + gameTask.MzChannel
|
|
mzGameId := gameTask.MzGameId + "-" + gameTask.MzChannel
|
|
|
if _, ok := wslData[mzGameId]; ok {
|
|
if _, ok := wslData[mzGameId]; ok {
|
|
|
gameTarget.PayTarget = wslData[mzGameId]
|
|
gameTarget.PayTarget = wslData[mzGameId]
|
|
|
|
|
+ if gameTarget.PayTarget > completeTaskData[gameTask.TaskId].PayTarget {
|
|
|
|
|
+ lastPayAddUpdateTimeKey := fmt.Sprintf(LastPayAddUpdateTimeKey, date, gameTask.TaskId)
|
|
|
|
|
+ _ = s.cache.SetCacheStr(context.Background(), lastPayAddUpdateTimeKey, time.Now().Unix())
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
gameTarget.IsComplete = -1
|
|
gameTarget.IsComplete = -1
|
|
|
- if gameTarget.RetainedComplete+completeTaskData[gameTask.TaskId].HandRetainedComplete >= completeTaskData[gameTask.TaskId].RetainedTarget && gameTarget.PayComplete+completeTaskData[gameTask.TaskId].HandPayComplete >= completeTaskData[gameTask.TaskId].PayTarget && gameTarget.NewComplete+completeTaskData[gameTask.TaskId].HandNewComplete >= completeTaskData[gameTask.TaskId].NewTarget {
|
|
|
|
|
|
|
+ if gameTarget.RetainedComplete+completeTaskData[gameTask.TaskId].HandRetainedComplete >= completeTaskData[gameTask.TaskId].RetainedTarget && gameTarget.PayComplete >= completeTaskData[gameTask.TaskId].PayTarget && gameTarget.NewComplete+completeTaskData[gameTask.TaskId].HandNewComplete >= completeTaskData[gameTask.TaskId].NewTarget {
|
|
|
gameTarget.IsComplete = 1
|
|
gameTarget.IsComplete = 1
|
|
|
}
|
|
}
|
|
|
global.GVA_DB.Model(&task.GameTargetComplete{}).Where("task_id = ?", gameTask.TaskId).Where("create_date = ?", date).Omit("create_date", "update_time", "task_id").Updates(gameTarget)
|
|
global.GVA_DB.Model(&task.GameTargetComplete{}).Where("task_id = ?", gameTask.TaskId).Where("create_date = ?", date).Omit("create_date", "update_time", "task_id").Updates(gameTarget)
|
|
@@ -233,10 +244,10 @@ func (s *SyncData) DayTargetDataStatistics() {
|
|
|
gameTargetDate.PayTarget = gameTarget.PayTarget
|
|
gameTargetDate.PayTarget = gameTarget.PayTarget
|
|
|
gameTargetDate.NewTarget = gameTarget.NewTarget
|
|
gameTargetDate.NewTarget = gameTarget.NewTarget
|
|
|
gameTargetDate.RetainedTarget = gameTarget.RetainedTarget
|
|
gameTargetDate.RetainedTarget = gameTarget.RetainedTarget
|
|
|
- gameTargetDate.PayComplete = gameTarget.PayComplete + gameTarget.HandPayComplete
|
|
|
|
|
|
|
+ gameTargetDate.PayComplete = gameTarget.PayComplete
|
|
|
gameTargetDate.NewComplete = gameTarget.NewComplete + gameTarget.HandNewComplete
|
|
gameTargetDate.NewComplete = gameTarget.NewComplete + gameTarget.HandNewComplete
|
|
|
gameTargetDate.RetainedComplete = gameTarget.RetainedComplete + gameTarget.HandRetainedComplete
|
|
gameTargetDate.RetainedComplete = gameTarget.RetainedComplete + gameTarget.HandRetainedComplete
|
|
|
- gameTargetDate.Amount = gameTarget.Amount + gameTarget.HandAmountTotal
|
|
|
|
|
|
|
+ gameTargetDate.Amount = gameTarget.Amount
|
|
|
gameTargetDate.GamePortId = gameTarget.GamePortId
|
|
gameTargetDate.GamePortId = gameTarget.GamePortId
|
|
|
gameTargetDate.User = gameTarget.User
|
|
gameTargetDate.User = gameTarget.User
|
|
|
gameTargetDate.TaskDate = gameTarget.CreateDate
|
|
gameTargetDate.TaskDate = gameTarget.CreateDate
|
|
@@ -297,7 +308,7 @@ func (s *SyncData) TaskMsgSendInitData(ctx context.Context, completesInfo []task
|
|
|
lastPayCompletedUpdateTimeKey := fmt.Sprintf(LastPayCompletedUpdateTimeKey, date, complete.TaskId)
|
|
lastPayCompletedUpdateTimeKey := fmt.Sprintf(LastPayCompletedUpdateTimeKey, date, complete.TaskId)
|
|
|
lastNewCompletedUpdateTimeKey := fmt.Sprintf(LastNewCompletedUpdateTimeKey, date, complete.TaskId)
|
|
lastNewCompletedUpdateTimeKey := fmt.Sprintf(LastNewCompletedUpdateTimeKey, date, complete.TaskId)
|
|
|
lastRetainedCompletedUpdateTimeKey := fmt.Sprintf(LastRetainedCompletedUpdateTimeKey, date, complete.TaskId)
|
|
lastRetainedCompletedUpdateTimeKey := fmt.Sprintf(LastRetainedCompletedUpdateTimeKey, date, complete.TaskId)
|
|
|
- lastPayAddUpdateTimeKey := fmt.Sprintf(LastPayAddUpdateTimeKey, date, complete.TaskId)
|
|
|
|
|
|
|
+
|
|
|
lastNewCompleted := complete.NewComplete + complete.HandNewComplete //上次新增完成数
|
|
lastNewCompleted := complete.NewComplete + complete.HandNewComplete //上次新增完成数
|
|
|
_ = s.cache.SetCacheStr(ctx, lastNewCompletedKey, lastNewCompleted)
|
|
_ = s.cache.SetCacheStr(ctx, lastNewCompletedKey, lastNewCompleted)
|
|
|
lastPayCompleted := complete.PayComplete + complete.HandPayComplete //上次支付完成数
|
|
lastPayCompleted := complete.PayComplete + complete.HandPayComplete //上次支付完成数
|
|
@@ -311,7 +322,7 @@ func (s *SyncData) TaskMsgSendInitData(ctx context.Context, completesInfo []task
|
|
|
//lastRetainedCompletedUpdateTime := complete.NewComplete //上次留存完成更新时间
|
|
//lastRetainedCompletedUpdateTime := complete.NewComplete //上次留存完成更新时间
|
|
|
_ = s.cache.SetCacheStr(ctx, lastRetainedCompletedUpdateTimeKey, ctime)
|
|
_ = s.cache.SetCacheStr(ctx, lastRetainedCompletedUpdateTimeKey, ctime)
|
|
|
//lastPayAddUpdateTime := complete.NewComplete //上次付费增加更新时间
|
|
//lastPayAddUpdateTime := complete.NewComplete //上次付费增加更新时间
|
|
|
- _ = s.cache.SetCacheStr(ctx, lastPayAddUpdateTimeKey, ctime)
|
|
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
_ = s.cache.SetCacheStr(ctx, taskCompletedStatusKey, -1)
|
|
_ = s.cache.SetCacheStr(ctx, taskCompletedStatusKey, -1)
|
|
|
_ = s.cache.SetCacheStr(ctx, lastMsgSendTimeKey, time.Now().Unix())
|
|
_ = s.cache.SetCacheStr(ctx, lastMsgSendTimeKey, time.Now().Unix())
|
|
@@ -382,11 +393,12 @@ func (s *SyncData) TaskMsgSendRetainedData(ctx context.Context, completesInfo []
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
var taskStatistics = "%s:taskStatistics"
|
|
var taskStatistics = "%s:taskStatistics"
|
|
|
- var retained = "活跃播报 " + time.Now().Format("2006-01-02 15:04:05")
|
|
|
|
|
|
|
+ var retained = "# 测试活跃播报 "
|
|
|
if len(mps) == 0 {
|
|
if len(mps) == 0 {
|
|
|
global.GVA_LOG.Warn(retained)
|
|
global.GVA_LOG.Warn(retained)
|
|
|
}
|
|
}
|
|
|
- var errMsg = "以下游戏目标效率为零:"
|
|
|
|
|
|
|
+ retained += fmt.Sprintf("<font color=\"warning\">%s</font>", time.Now().Format("2006-01-02 15:04:05"))
|
|
|
|
|
+ var errMsg = "**以下游戏目标效率为零:**"
|
|
|
var errMsgZ = ""
|
|
var errMsgZ = ""
|
|
|
var sendMsg = map[string]string{}
|
|
var sendMsg = map[string]string{}
|
|
|
var m int // 时间内
|
|
var m int // 时间内
|
|
@@ -416,7 +428,8 @@ func (s *SyncData) TaskMsgSendRetainedData(ctx context.Context, completesInfo []
|
|
|
sendMsg[name] += "\n"
|
|
sendMsg[name] += "\n"
|
|
|
sendMsg[name] += taskStatistics.GameName
|
|
sendMsg[name] += taskStatistics.GameName
|
|
|
sendMsg[name] += ",新增差"
|
|
sendMsg[name] += ",新增差"
|
|
|
- sendMsg[name] += strconv.Itoa(info.AlsoTarget)
|
|
|
|
|
|
|
+ //sendMsg[name] += strconv.Itoa(info.AlsoTarget)
|
|
|
|
|
+ sendMsg[name] += fmt.Sprintf("<font color=\"warning\">%d</font>", info.AlsoTarget)
|
|
|
isNew = true
|
|
isNew = true
|
|
|
if info.TimeRate > 60*60*24 {
|
|
if info.TimeRate > 60*60*24 {
|
|
|
lastNewCompletedUpdateTimeKey := fmt.Sprintf(LastNewCompletedUpdateTimeKey, date, info.TaskId)
|
|
lastNewCompletedUpdateTimeKey := fmt.Sprintf(LastNewCompletedUpdateTimeKey, date, info.TaskId)
|
|
@@ -448,7 +461,8 @@ func (s *SyncData) TaskMsgSendRetainedData(ctx context.Context, completesInfo []
|
|
|
rm = info.TimeRate / 60
|
|
rm = info.TimeRate / 60
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- sendMsg[name] += strconv.Itoa(info.AlsoTarget)
|
|
|
|
|
|
|
+ //sendMsg[name] += strconv.Itoa(info.AlsoTarget)
|
|
|
|
|
+ sendMsg[name] += fmt.Sprintf("<font color=\"warning\">%d</font>", info.AlsoTarget)
|
|
|
if info.Rate == 0 {
|
|
if info.Rate == 0 {
|
|
|
retainedErr = true
|
|
retainedErr = true
|
|
|
}
|
|
}
|
|
@@ -493,21 +507,31 @@ func (s *SyncData) TaskMsgSendRetainedData(ctx context.Context, completesInfo []
|
|
|
sendMsg[name] += strconv.Itoa(m)
|
|
sendMsg[name] += strconv.Itoa(m)
|
|
|
sendMsg[name] += "分钟内完成"
|
|
sendMsg[name] += "分钟内完成"
|
|
|
}
|
|
}
|
|
|
- sendMsg[name] += rate
|
|
|
|
|
|
|
+ //sendMsg[name] += rate
|
|
|
|
|
+ sendMsg[name] += fmt.Sprintf("<font color=\"warning\">%s</font>", rate)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ if len(sendMsg) == 0 {
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
for name, msg := range sendMsg {
|
|
for name, msg := range sendMsg {
|
|
|
retained += "\n"
|
|
retained += "\n"
|
|
|
- retained += name
|
|
|
|
|
|
|
+ retained += "**" + name + "**"
|
|
|
retained += msg
|
|
retained += msg
|
|
|
}
|
|
}
|
|
|
msg := retained
|
|
msg := retained
|
|
|
if errMsgZ != "" {
|
|
if errMsgZ != "" {
|
|
|
msg += "\n"
|
|
msg += "\n"
|
|
|
- msg += errMsg + errMsgZ
|
|
|
|
|
|
|
+ //msg += errMsg + errMsgZ
|
|
|
|
|
+ msg += fmt.Sprintf("<font color=\"warning\">%s</font>", errMsg+errMsgZ)
|
|
|
}
|
|
}
|
|
|
global.GVA_LOG.Warn(msg)
|
|
global.GVA_LOG.Warn(msg)
|
|
|
_ = s.cache.SetCacheStr(ctx, lastMsgSendTimeKey, time.Now().Unix())
|
|
_ = s.cache.SetCacheStr(ctx, lastMsgSendTimeKey, time.Now().Unix())
|
|
|
|
|
+ url := "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=7d095d5b-8240-45fd-a68c-baff3628d83b"
|
|
|
|
|
+ var sendData SendMsg
|
|
|
|
|
+ sendData.MsgType = "markdown"
|
|
|
|
|
+ sendData.Markdown.Content = msg
|
|
|
|
|
+ s.SendMsgData(url, sendData)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func (s *SyncData) TaskMsgSendFreeData(ctx context.Context, completesInfo []task.GameTargetComplete, ctime int64, date, lastFreeMsgSendTimeKey string, isOne bool) {
|
|
func (s *SyncData) TaskMsgSendFreeData(ctx context.Context, completesInfo []task.GameTargetComplete, ctime int64, date, lastFreeMsgSendTimeKey string, isOne bool) {
|
|
@@ -552,8 +576,9 @@ func (s *SyncData) TaskMsgSendFreeData(ctx context.Context, completesInfo []task
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
var taskStatistics = "%s:taskStatistics"
|
|
var taskStatistics = "%s:taskStatistics"
|
|
|
- var retained = "付费播报 " + time.Now().Format("2006-01-02 15:04:05")
|
|
|
|
|
- var errMsg = "以下游戏付费效率为零:"
|
|
|
|
|
|
|
+ var retained = "测试付费播报 "
|
|
|
|
|
+ retained += fmt.Sprintf("<font color=\"warning\">%s</font>", time.Now().Format("2006-01-02 15:04:05"))
|
|
|
|
|
+ var errMsg = "**以下游戏付费效率为零:**"
|
|
|
var errMsgZ = ""
|
|
var errMsgZ = ""
|
|
|
var sendMsg = map[string]string{}
|
|
var sendMsg = map[string]string{}
|
|
|
var m int //时间内
|
|
var m int //时间内
|
|
@@ -580,11 +605,13 @@ func (s *SyncData) TaskMsgSendFreeData(ctx context.Context, completesInfo []task
|
|
|
sendMsg[name] += "\n"
|
|
sendMsg[name] += "\n"
|
|
|
sendMsg[name] += taskStatistics.GameName
|
|
sendMsg[name] += taskStatistics.GameName
|
|
|
sendMsg[name] += ",付费差"
|
|
sendMsg[name] += ",付费差"
|
|
|
- sendMsg[name] += strconv.Itoa(data.AlsoTarget)
|
|
|
|
|
|
|
+ //sendMsg[name] += strconv.Itoa(data.AlsoTarget)
|
|
|
|
|
+ sendMsg[name] += fmt.Sprintf("<font color=\"warning\">%d</font>", data.AlsoTarget)
|
|
|
|
|
|
|
|
if data.TimeRate > 60*60*24 {
|
|
if data.TimeRate > 60*60*24 {
|
|
|
lastPayCompletedUpdateTimeKey := fmt.Sprintf(LastPayCompletedUpdateTimeKey, date, data.TaskId)
|
|
lastPayCompletedUpdateTimeKey := fmt.Sprintf(LastPayCompletedUpdateTimeKey, date, data.TaskId)
|
|
|
_ = s.cache.SetCacheStr(ctx, lastPayCompletedUpdateTimeKey, ctime) //上次付费更新时间
|
|
_ = s.cache.SetCacheStr(ctx, lastPayCompletedUpdateTimeKey, ctime) //上次付费更新时间
|
|
|
|
|
+ data.TimeRate = 60 * 60 * 2
|
|
|
}
|
|
}
|
|
|
// 5分钟数据没动报异常数据
|
|
// 5分钟数据没动报异常数据
|
|
|
if data.TimeRate/60 >= 4 {
|
|
if data.TimeRate/60 >= 4 {
|
|
@@ -613,7 +640,11 @@ func (s *SyncData) TaskMsgSendFreeData(ctx context.Context, completesInfo []task
|
|
|
sendMsg[name] += strconv.Itoa(m)
|
|
sendMsg[name] += strconv.Itoa(m)
|
|
|
sendMsg[name] += "分钟内完成"
|
|
sendMsg[name] += "分钟内完成"
|
|
|
}
|
|
}
|
|
|
- sendMsg[name] += strconv.Itoa(data.Rate)
|
|
|
|
|
|
|
+ //sendMsg[name] += strconv.Itoa(data.Rate)
|
|
|
|
|
+ sendMsg[name] += fmt.Sprintf("<font color=\"warning\">%d</font>", data.Rate)
|
|
|
|
|
+ }
|
|
|
|
|
+ if len(sendMsg) == 0 {
|
|
|
|
|
+ return
|
|
|
}
|
|
}
|
|
|
for name, msg := range sendMsg {
|
|
for name, msg := range sendMsg {
|
|
|
retained += "\n"
|
|
retained += "\n"
|
|
@@ -623,10 +654,21 @@ func (s *SyncData) TaskMsgSendFreeData(ctx context.Context, completesInfo []task
|
|
|
msg := retained
|
|
msg := retained
|
|
|
if errMsgZ != "" {
|
|
if errMsgZ != "" {
|
|
|
msg += "\n"
|
|
msg += "\n"
|
|
|
- msg += errMsg + errMsgZ
|
|
|
|
|
|
|
+ //msg += errMsg + errMsgZ
|
|
|
|
|
+ msg += fmt.Sprintf("<font color=\"warning\">%s</font>", errMsg+errMsgZ)
|
|
|
}
|
|
}
|
|
|
global.GVA_LOG.Warn(msg)
|
|
global.GVA_LOG.Warn(msg)
|
|
|
_ = s.cache.SetCacheStr(ctx, lastFreeMsgSendTimeKey, time.Now().Unix())
|
|
_ = s.cache.SetCacheStr(ctx, lastFreeMsgSendTimeKey, time.Now().Unix())
|
|
|
|
|
+ url := "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=7d095d5b-8240-45fd-a68c-baff3628d83b"
|
|
|
|
|
+ var sendData SendMsg
|
|
|
|
|
+ sendData.MsgType = "markdown"
|
|
|
|
|
+ sendData.Markdown.Content = msg
|
|
|
|
|
+ s.SendMsgData(url, sendData)
|
|
|
|
|
+ return
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func (s *SyncData) SendMsgData(url string, params interface{}) {
|
|
|
|
|
+ _, _ = utils.HttpPost(url, params)
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -701,13 +743,27 @@ func (s *SyncData) CheckTaskCompletedInfo() {
|
|
|
ctx := context.Background()
|
|
ctx := context.Background()
|
|
|
taskCompletedStatusKey := fmt.Sprintf(TaskCompletedStatusKey, date)
|
|
taskCompletedStatusKey := fmt.Sprintf(TaskCompletedStatusKey, date)
|
|
|
completesInfo, err := s.TaskNoCompleteDate(date)
|
|
completesInfo, err := s.TaskNoCompleteDate(date)
|
|
|
-
|
|
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
global.GVA_LOG.Error("CheckTaskCompletedInfo查询任务数据报错", zap.Error(err))
|
|
global.GVA_LOG.Error("CheckTaskCompletedInfo查询任务数据报错", zap.Error(err))
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ status, _ := s.cache.GetCacheNum(ctx, taskCompletedStatusKey)
|
|
|
|
|
+ if status == 1 {
|
|
|
|
|
+ global.GVA_LOG.Info("任务已完成")
|
|
|
|
|
+ return
|
|
|
}
|
|
}
|
|
|
if len(completesInfo) == 0 {
|
|
if len(completesInfo) == 0 {
|
|
|
global.GVA_LOG.Info("TaskMsgSend没有查询到未完成数据")
|
|
global.GVA_LOG.Info("TaskMsgSend没有查询到未完成数据")
|
|
|
- time.Sleep(time.Minute * 1)
|
|
|
|
|
|
|
+ time.Sleep(time.Second * 10)
|
|
|
_ = s.cache.SetCacheStr(ctx, taskCompletedStatusKey, 1)
|
|
_ = s.cache.SetCacheStr(ctx, taskCompletedStatusKey, 1)
|
|
|
|
|
+ msg := "# 测试监控报警 "
|
|
|
|
|
+ msg += fmt.Sprintf("<font color=\"warning\">%s</font>", time.Now().Format("2006-01-02 15:04:05"))
|
|
|
|
|
+ msg += "\n"
|
|
|
|
|
+ msg += "今日任务目标已完成"
|
|
|
|
|
+ url := "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=7d095d5b-8240-45fd-a68c-baff3628d83b"
|
|
|
|
|
+ var sendData SendMsg
|
|
|
|
|
+ sendData.MsgType = "markdown"
|
|
|
|
|
+ sendData.Markdown.Content = msg
|
|
|
|
|
+ s.SendMsgData(url, sendData)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|