|
|
@@ -13,6 +13,7 @@ import (
|
|
|
"log-server/model/task"
|
|
|
"log-server/model/task/control"
|
|
|
request2 "log-server/model/task/request"
|
|
|
+ "log-server/model/typeManage"
|
|
|
"log-server/service/cache"
|
|
|
"log-server/utils"
|
|
|
"strconv"
|
|
|
@@ -22,6 +23,8 @@ import (
|
|
|
type SyncData struct {
|
|
|
GameTask GameTask
|
|
|
cache cache.Cache
|
|
|
+ common Common
|
|
|
+ Person typeManage.ResponsiblePerson
|
|
|
}
|
|
|
|
|
|
func (s *SyncData) SyncXmyGameData(date string) (mps map[int]control.XmyPayRequestReplyData, err error) {
|
|
|
@@ -190,6 +193,20 @@ func (s *SyncData) SyncTaskData() {
|
|
|
if gameTarget.PayTarget > completeTaskData[gameTask.TaskId].PayTarget {
|
|
|
lastPayAddUpdateTimeKey := fmt.Sprintf(LastPayAddUpdateTimeKey, date, gameTask.TaskId)
|
|
|
_ = s.cache.SetCacheStr(context.Background(), lastPayAddUpdateTimeKey, time.Now().Unix())
|
|
|
+ // 本次加付费目标数据
|
|
|
+ lastPayAddNumKey := fmt.Sprintf(LastPayAddNumKey, date, gameTask.TaskId)
|
|
|
+ _ = s.cache.SetCacheStr(context.Background(), lastPayAddNumKey, gameTarget.PayTarget-completeTaskData[gameTask.TaskId].PayTarget)
|
|
|
+ payErrAddNumKey := fmt.Sprintf(PayErrAddNumKey, date, gameTask.TaskId)
|
|
|
+ s.common.SaveGameAddFee(gameTarget.PayTarget-completeTaskData[gameTask.TaskId].PayTarget, gameTarget.PayTarget, gameTask.TaskName)
|
|
|
+ // 如果当前付费目标完成,加入一下逻辑
|
|
|
+ if completeTaskData[gameTask.TaskId].PayTarget <= completeTaskData[gameTask.TaskId].PayComplete {
|
|
|
+ lastPayCompletedUpdateTimeKey := fmt.Sprintf(LastPayCompletedUpdateTimeKey, date, gameTask.TaskId)
|
|
|
+ _ = s.cache.SetCacheStr(context.Background(), lastPayCompletedUpdateTimeKey, time.Now().Unix())
|
|
|
+ _ = s.cache.SetCacheStr(context.Background(), payErrAddNumKey, gameTarget.PayTarget-completeTaskData[gameTask.TaskId].PayTarget)
|
|
|
+ } else {
|
|
|
+ n, _ := s.cache.GetCacheNum(context.Background(), payErrAddNumKey)
|
|
|
+ _ = s.cache.SetCacheStr(context.Background(), payErrAddNumKey, gameTarget.PayTarget-completeTaskData[gameTask.TaskId].PayTarget+n)
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -197,11 +214,10 @@ func (s *SyncData) SyncTaskData() {
|
|
|
gameTarget.NewComplete = roomData.NewCompleteLocal
|
|
|
gameTarget.PayComplete = roomData.PayCompleteLocal
|
|
|
gameTarget.RetainedComplete = roomData.NewCompleteLocal + roomData.RetainedCompleteLocal
|
|
|
- gameTarget.Amount = 6 * roomData.PayCompleteLocal
|
|
|
+ gameTarget.Amount = gameTask.PayPrice * roomData.PayCompleteLocal
|
|
|
if gameTarget.RetainedComplete < roomData.RetainedComplete {
|
|
|
gameTarget.RetainedComplete = roomData.RetainedComplete
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
gameTarget.GameRate = roomData.GameRate
|
|
|
if gameTask.GamePortId == 5 && gameTask.LoginMethod == 2 {
|
|
|
@@ -211,6 +227,20 @@ func (s *SyncData) SyncTaskData() {
|
|
|
if gameTarget.PayTarget > completeTaskData[gameTask.TaskId].PayTarget {
|
|
|
lastPayAddUpdateTimeKey := fmt.Sprintf(LastPayAddUpdateTimeKey, date, gameTask.TaskId)
|
|
|
_ = s.cache.SetCacheStr(context.Background(), lastPayAddUpdateTimeKey, time.Now().Unix())
|
|
|
+ // 本次加付费目标数据
|
|
|
+ lastPayAddNumKey := fmt.Sprintf(LastPayAddNumKey, date, gameTask.TaskId)
|
|
|
+ _ = s.cache.SetCacheStr(context.Background(), lastPayAddNumKey, gameTarget.PayTarget-completeTaskData[gameTask.TaskId].PayTarget)
|
|
|
+ payErrAddNumKey := fmt.Sprintf(PayErrAddNumKey, date, gameTask.TaskId)
|
|
|
+ s.common.SaveGameAddFee(gameTarget.PayTarget-completeTaskData[gameTask.TaskId].PayTarget, gameTarget.PayTarget, gameTask.TaskName)
|
|
|
+ // 如果当前付费目标完成,加入一下逻辑
|
|
|
+ if completeTaskData[gameTask.TaskId].PayTarget <= completeTaskData[gameTask.TaskId].PayComplete {
|
|
|
+ lastPayCompletedUpdateTimeKey := fmt.Sprintf(LastPayCompletedUpdateTimeKey, date, gameTask.TaskId)
|
|
|
+ _ = s.cache.SetCacheStr(context.Background(), lastPayCompletedUpdateTimeKey, time.Now().Unix())
|
|
|
+ _ = s.cache.SetCacheStr(context.Background(), payErrAddNumKey, gameTarget.PayTarget-completeTaskData[gameTask.TaskId].PayTarget)
|
|
|
+ } else {
|
|
|
+ n, _ := s.cache.GetCacheNum(context.Background(), payErrAddNumKey)
|
|
|
+ _ = s.cache.SetCacheStr(context.Background(), payErrAddNumKey, gameTarget.PayTarget-completeTaskData[gameTask.TaskId].PayTarget+n)
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -269,16 +299,18 @@ func (s *SyncData) DayTargetDataStatistics() {
|
|
|
global.GVA_DB.Omit("update_time").Create(gameTargetDates)
|
|
|
}
|
|
|
|
|
|
-var LastMsgSendTimeKey = "%s:lastMsgSendTime"
|
|
|
-var LastNewCompletedKey = "%s:msgSendInfo:%d:lastNewCompleted"
|
|
|
-var LastPayCompletedKey = "%s:msgSendInfo:%d:lastPayCompleted"
|
|
|
-var LastRetainedCompletedKey = "%s:msgSendInfo:%d:lastRetainedCompleted"
|
|
|
-var LastNewCompletedUpdateTimeKey = "%s:msgSendInfo:%d:lastNewCompletedUpdateTime"
|
|
|
-var LastPayCompletedUpdateTimeKey = "%s:msgSendInfo:%d:lastPayCompletedUpdateTime"
|
|
|
-var LastRetainedCompletedUpdateTimeKey = "%s:msgSendInfo:%d:lastRetainedCompletedUpdateTime"
|
|
|
-var LastPayAddUpdateTimeKey = "%s:msgSendInfo:%d:lastPayAddUpdateTime"
|
|
|
-var TaskCompletedStatusKey = "%s:taskCompletedStatus"
|
|
|
-var LastFreeMsgSendTimeKey = "%s:lastFreeMsgSendTime"
|
|
|
+var LastMsgSendTimeKey = "%s:lastMsgSendTime" // 上次活跃发送消息时间
|
|
|
+var LastNewCompletedKey = "%s:msgSendInfo:%d:lastNewCompleted" // 最后新增完成数量
|
|
|
+var LastPayCompletedKey = "%s:msgSendInfo:%d:lastPayCompleted" // 最后支付完成数量
|
|
|
+var LastRetainedCompletedKey = "%s:msgSendInfo:%d:lastRetainedCompleted" // 最后留存完成数量
|
|
|
+var LastNewCompletedUpdateTimeKey = "%s:msgSendInfo:%d:lastNewCompletedUpdateTime" // 最后新增完成更新时间
|
|
|
+var LastPayCompletedUpdateTimeKey = "%s:msgSendInfo:%d:lastPayCompletedUpdateTime" // 最后支付完成更新时间
|
|
|
+var LastRetainedCompletedUpdateTimeKey = "%s:msgSendInfo:%d:lastRetainedCompletedUpdateTime" // 最后留存完成更新时间
|
|
|
+var LastPayAddUpdateTimeKey = "%s:msgSendInfo:%d:lastPayAddUpdateTime" // 最后加付费时间
|
|
|
+var LastPayAddNumKey = "%s:msgSendInfo:%d:lastPayAddNum" // 最后加付费数量
|
|
|
+var PayErrAddNumKey = "%s:msgSendInfo:%d:PayErrAddNum" // 支付异常累加数量
|
|
|
+var TaskCompletedStatusKey = "%s:taskCompletedStatus" // 任务完成状态-1,1
|
|
|
+var LastFreeMsgSendTimeKey = "%s:lastFreeMsgSendTime" // 上次付费发送消息时间
|
|
|
|
|
|
type CompletedInfo struct {
|
|
|
AlsoTarget int //剩余数量
|
|
|
@@ -393,7 +425,7 @@ func (s *SyncData) TaskMsgSendRetainedData(ctx context.Context, completesInfo []
|
|
|
}
|
|
|
|
|
|
var taskStatistics = "%s:taskStatistics"
|
|
|
- var retained = "# 测试活跃播报 "
|
|
|
+ var retained = "# 活跃播报 "
|
|
|
if len(mps) == 0 {
|
|
|
global.GVA_LOG.Warn(retained)
|
|
|
}
|
|
|
@@ -401,6 +433,7 @@ func (s *SyncData) TaskMsgSendRetainedData(ctx context.Context, completesInfo []
|
|
|
var errMsg = "**以下游戏目标效率为零:**"
|
|
|
var errMsgZ = ""
|
|
|
var sendMsg = map[string]string{}
|
|
|
+ var errSendMsg = map[string]string{}
|
|
|
var m int // 时间内
|
|
|
m = (int(ctime) - lastMsgSendTime) / 60
|
|
|
for taskId, data := range mps {
|
|
|
@@ -417,6 +450,7 @@ func (s *SyncData) TaskMsgSendRetainedData(ctx context.Context, completesInfo []
|
|
|
}
|
|
|
var taskStatistics request.TaskStatistics
|
|
|
_ = json.Unmarshal([]byte(gameTask), &taskStatistics)
|
|
|
+ var eMsg = "" //单条异常数据
|
|
|
var isNew = false
|
|
|
var nm int //新增时间内
|
|
|
var rm int //存时间内
|
|
|
@@ -470,35 +504,39 @@ func (s *SyncData) TaskMsgSendRetainedData(ctx context.Context, completesInfo []
|
|
|
|
|
|
// 5分钟数据没动报异常数据
|
|
|
if newErr && nm > 4 {
|
|
|
- errMsgZ += "\n"
|
|
|
- errMsgZ += taskStatistics.GameName
|
|
|
- errMsgZ += ",新增"
|
|
|
+ eMsg += "\n"
|
|
|
+ eMsg += taskStatistics.GameName
|
|
|
+ eMsg += ",新增"
|
|
|
if nm >= 60 {
|
|
|
- errMsgZ += "("
|
|
|
- errMsgZ += strconv.Itoa(nm / 60)
|
|
|
- errMsgZ += "小时内)"
|
|
|
+ eMsg += "("
|
|
|
+ eMsg += strconv.Itoa(nm / 60)
|
|
|
+ eMsg += "小时内)"
|
|
|
} else {
|
|
|
- errMsgZ += "("
|
|
|
- errMsgZ += strconv.Itoa(nm)
|
|
|
- errMsgZ += "分钟内)"
|
|
|
+ eMsg += "("
|
|
|
+ eMsg += strconv.Itoa(nm)
|
|
|
+ eMsg += "分钟内)"
|
|
|
}
|
|
|
}
|
|
|
if retainedErr && rm > 4 {
|
|
|
if !newErr {
|
|
|
- errMsgZ += "\n"
|
|
|
- errMsgZ += taskStatistics.GameName
|
|
|
+ eMsg += "\n"
|
|
|
+ eMsg += taskStatistics.GameName
|
|
|
}
|
|
|
- errMsgZ += ",活跃"
|
|
|
+ eMsg += ",活跃"
|
|
|
if rm >= 60 {
|
|
|
- errMsgZ += "("
|
|
|
- errMsgZ += strconv.Itoa(rm / 60)
|
|
|
- errMsgZ += "小时内)"
|
|
|
+ eMsg += "("
|
|
|
+ eMsg += strconv.Itoa(rm / 60)
|
|
|
+ eMsg += "小时内)"
|
|
|
} else {
|
|
|
- errMsgZ += "("
|
|
|
- errMsgZ += strconv.Itoa(rm)
|
|
|
- errMsgZ += "分钟内)"
|
|
|
+ eMsg += "("
|
|
|
+ eMsg += strconv.Itoa(rm)
|
|
|
+ eMsg += "分钟内)"
|
|
|
}
|
|
|
}
|
|
|
+ if eMsg != "" {
|
|
|
+ errMsgZ += eMsg
|
|
|
+ errSendMsg[name] += eMsg
|
|
|
+ }
|
|
|
sendMsg[name] += ","
|
|
|
if m >= 60 {
|
|
|
sendMsg[name] += strconv.Itoa(m / 60)
|
|
|
@@ -510,28 +548,68 @@ func (s *SyncData) TaskMsgSendRetainedData(ctx context.Context, completesInfo []
|
|
|
//sendMsg[name] += rate
|
|
|
sendMsg[name] += fmt.Sprintf("<font color=\"warning\">%s</font>", rate)
|
|
|
}
|
|
|
+ hour := time.Now().Hour()
|
|
|
+ msg := ""
|
|
|
+ mpsPerson, _ := s.Person.GetUserInfo()
|
|
|
+ //b1 ,_ := json.Marshal(mpsPerson)
|
|
|
+ //global.GVA_LOG.Warn(string(b1))
|
|
|
+ var mobile []string
|
|
|
+ if hour >= 16 {
|
|
|
+ if len(sendMsg) == 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if len(mps) != 0 && len(errSendMsg) != 0 {
|
|
|
+ for name, _ := range errSendMsg {
|
|
|
+ mobile = append(mobile, mpsPerson[name])
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for name, msg := range sendMsg {
|
|
|
+ retained += "\n"
|
|
|
+ retained += "**" + name + "**"
|
|
|
+ retained += msg
|
|
|
+ }
|
|
|
+ msg = retained
|
|
|
+ if errMsgZ != "" {
|
|
|
+ msg += "\n"
|
|
|
+ //msg += errMsg + errMsgZ
|
|
|
+ msg += fmt.Sprintf("<font color=\"warning\">%s</font>", errMsg+errMsgZ)
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if errMsgZ != "" {
|
|
|
|
|
|
- if len(sendMsg) == 0 {
|
|
|
- return
|
|
|
- }
|
|
|
- for name, msg := range sendMsg {
|
|
|
- retained += "\n"
|
|
|
- retained += "**" + name + "**"
|
|
|
- retained += msg
|
|
|
- }
|
|
|
- msg := retained
|
|
|
- if errMsgZ != "" {
|
|
|
- msg += "\n"
|
|
|
- //msg += errMsg + errMsgZ
|
|
|
- msg += fmt.Sprintf("<font color=\"warning\">%s</font>", errMsg+errMsgZ)
|
|
|
+ //msg += errMsg + errMsgZ
|
|
|
+
|
|
|
+ }
|
|
|
+ if len(mps) != 0 && len(errSendMsg) != 0 {
|
|
|
+ msg += "# 活跃播报 "
|
|
|
+ msg += errMsg
|
|
|
+ for name, m := range errSendMsg {
|
|
|
+ mobile = append(mobile, mpsPerson[name])
|
|
|
+ msg += "\n"
|
|
|
+ msg += "**" + name + "**"
|
|
|
+ msg += fmt.Sprintf("<font color=\"warning\">%s</font>", m)
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- global.GVA_LOG.Warn(msg)
|
|
|
+ //global.GVA_LOG.Warn(msg)
|
|
|
_ = s.cache.SetCacheStr(ctx, lastMsgSendTimeKey, time.Now().Unix())
|
|
|
- url := "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=7d095d5b-8240-45fd-a68c-baff3628d83b"
|
|
|
+ if msg == "" {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ url := global.GVA_CONFIG.SendUrl.ComputerSendUrl
|
|
|
var sendData SendMsg
|
|
|
sendData.MsgType = "markdown"
|
|
|
sendData.Markdown.Content = msg
|
|
|
s.SendMsgData(url, sendData)
|
|
|
+
|
|
|
+ if len(mobile) != 0 {
|
|
|
+ var sendTextData SendTextMsg
|
|
|
+ sendTextData.MsgType = "text"
|
|
|
+ sendTextData.Text.MentionedMobileList = mobile
|
|
|
+ //b ,_ := json.Marshal(sendTextData)
|
|
|
+ //global.GVA_LOG.Warn(string(b))
|
|
|
+ s.SendMsgData(url, sendTextData)
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
func (s *SyncData) TaskMsgSendFreeData(ctx context.Context, completesInfo []task.GameTargetComplete, ctime int64, date, lastFreeMsgSendTimeKey string, isOne bool) {
|
|
|
@@ -576,13 +654,15 @@ func (s *SyncData) TaskMsgSendFreeData(ctx context.Context, completesInfo []task
|
|
|
return
|
|
|
}
|
|
|
var taskStatistics = "%s:taskStatistics"
|
|
|
- var retained = "测试付费播报 "
|
|
|
+ var retained = "付费播报 "
|
|
|
retained += fmt.Sprintf("<font color=\"warning\">%s</font>", time.Now().Format("2006-01-02 15:04:05"))
|
|
|
var errMsg = "**以下游戏付费效率为零:**"
|
|
|
var errMsgZ = ""
|
|
|
var sendMsg = map[string]string{}
|
|
|
var m int //时间内
|
|
|
m = (int(ctime) - lastFreeMsgSendTime) / 60
|
|
|
+ mpsPerson, _ := s.Person.GetUserInfo()
|
|
|
+ var mobile []string
|
|
|
for taskId, data := range RateMp {
|
|
|
if data.AlsoTarget <= 0 {
|
|
|
continue
|
|
|
@@ -614,22 +694,30 @@ func (s *SyncData) TaskMsgSendFreeData(ctx context.Context, completesInfo []task
|
|
|
data.TimeRate = 60 * 60 * 2
|
|
|
}
|
|
|
// 5分钟数据没动报异常数据
|
|
|
- if data.TimeRate/60 >= 4 {
|
|
|
+ if data.TimeRate/60 >= 2 {
|
|
|
if data.Rate == 0 {
|
|
|
+ lastPayAddNumKey := fmt.Sprintf(LastPayAddNumKey, date, data.TaskId)
|
|
|
+ payErrAddNumKey := fmt.Sprintf(PayErrAddNumKey, date, data.TaskId)
|
|
|
+ numErr, _ := s.cache.GetCacheNum(context.Background(), payErrAddNumKey)
|
|
|
+ lastAddFeeNumErr, _ := s.cache.GetCacheNum(context.Background(), lastPayAddNumKey)
|
|
|
errMsgZ += "\n"
|
|
|
errMsgZ += taskStatistics.GameName
|
|
|
errMsgZ += "("
|
|
|
if data.TimeRate/60 >= 60 {
|
|
|
errMsgZ += strconv.Itoa(data.TimeRate / 60 / 60)
|
|
|
- errMsgZ += "小时内)"
|
|
|
+ errMsgZ += "小时内(+" + strconv.Itoa(numErr) + "))"
|
|
|
} else {
|
|
|
errMsgZ += strconv.Itoa(data.TimeRate / 60)
|
|
|
- errMsgZ += "分钟内)"
|
|
|
+ errMsgZ += "分钟内(+" + strconv.Itoa(numErr) + "))"
|
|
|
}
|
|
|
errMsgZ += ","
|
|
|
errMsgZ += "最后加付费时间 "
|
|
|
t := time.Unix(int64(data.AddPayUpdateTime), 0)
|
|
|
errMsgZ += t.Format("15:04:05")
|
|
|
+ errMsgZ += "(+" + strconv.Itoa(lastAddFeeNumErr) + ")"
|
|
|
+ if _, ok := mpsPerson[name]; ok {
|
|
|
+ mobile = append(mobile, mpsPerson[name])
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
sendMsg[name] += ","
|
|
|
@@ -659,11 +747,17 @@ func (s *SyncData) TaskMsgSendFreeData(ctx context.Context, completesInfo []task
|
|
|
}
|
|
|
global.GVA_LOG.Warn(msg)
|
|
|
_ = s.cache.SetCacheStr(ctx, lastFreeMsgSendTimeKey, time.Now().Unix())
|
|
|
- url := "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=7d095d5b-8240-45fd-a68c-baff3628d83b"
|
|
|
+ url := global.GVA_CONFIG.SendUrl.ComputerSendUrl
|
|
|
var sendData SendMsg
|
|
|
sendData.MsgType = "markdown"
|
|
|
sendData.Markdown.Content = msg
|
|
|
s.SendMsgData(url, sendData)
|
|
|
+ if len(mobile) != 0 {
|
|
|
+ var sendTextData SendTextMsg
|
|
|
+ sendTextData.MsgType = "text"
|
|
|
+ sendTextData.Text.MentionedMobileList = mobile
|
|
|
+ s.SendMsgData(url, sendTextData)
|
|
|
+ }
|
|
|
return
|
|
|
}
|
|
|
|
|
|
@@ -756,11 +850,11 @@ func (s *SyncData) CheckTaskCompletedInfo() {
|
|
|
global.GVA_LOG.Info("TaskMsgSend没有查询到未完成数据")
|
|
|
time.Sleep(time.Second * 10)
|
|
|
_ = s.cache.SetCacheStr(ctx, taskCompletedStatusKey, 1)
|
|
|
- msg := "# 测试监控报警 "
|
|
|
+ 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"
|
|
|
+ url := global.GVA_CONFIG.SendUrl.ComputerSendUrl
|
|
|
var sendData SendMsg
|
|
|
sendData.MsgType = "markdown"
|
|
|
sendData.Markdown.Content = msg
|