|
|
@@ -209,7 +209,7 @@ func (s *SyncData) SyncTaskData() {
|
|
|
//global.GVA_DB.Where("task_id = ?", gameTask.TaskId).Where("create_date = ?", date).First(&gameTargetComplete)
|
|
|
var gameTarget task.GameTargetComplete
|
|
|
roomData, _ := s.SyncRoomData(date, gameTask.TaskId)
|
|
|
-
|
|
|
+ gameTarget.JfRetainedTarget = roomData.RetainedTarget
|
|
|
if gameTask.GameIdXmy != "" {
|
|
|
gameIdXmy, _ := strconv.Atoi(gameTask.GameIdXmy)
|
|
|
xmyGameInfo := xmyGameData[gameIdXmy]
|
|
|
@@ -296,12 +296,10 @@ func (s *SyncData) SyncTaskData() {
|
|
|
}
|
|
|
}
|
|
|
gameTarget.IsComplete = -1
|
|
|
- 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 {
|
|
|
+ if gameTarget.RetainedComplete+completeTaskData[gameTask.TaskId].HandRetainedComplete >= completeTaskData[gameTask.TaskId].JfRetainedTarget && gameTarget.PayComplete >= completeTaskData[gameTask.TaskId].PayTarget && gameTarget.NewComplete+completeTaskData[gameTask.TaskId].HandNewComplete >= completeTaskData[gameTask.TaskId].NewTarget {
|
|
|
gameTarget.IsComplete = 1
|
|
|
}
|
|
|
- //if completeTaskData[gameTask.TaskId].RetainedTarget == 0 || completeTaskData[gameTask.TaskId].RetainedTarget == 1 {
|
|
|
- // gameTarget.RetainedTarget = roomData.RetainedTarget
|
|
|
- //}
|
|
|
+
|
|
|
global.GVA_DB.Model(&task.GameTargetComplete{}).Where("task_id = ?", gameTask.TaskId).Where("create_date = ?", date).Omit("create_date", "update_time", "task_id").Updates(gameTarget)
|
|
|
}
|
|
|
go s.common.PaymentRatioErrSendMsg(paymentRatio)
|
|
|
@@ -373,7 +371,7 @@ func (s *SyncData) YesterdaySyncTaskData() {
|
|
|
for _, gameTask := range apiList {
|
|
|
var gameTarget task.GameTargetComplete
|
|
|
roomData, _ := s.SyncRoomData(date, gameTask.TaskId)
|
|
|
-
|
|
|
+ gameTarget.JfRetainedTarget = roomData.RetainedTarget
|
|
|
if gameTask.GameIdXmy != "" {
|
|
|
gameIdXmy, _ := strconv.Atoi(gameTask.GameIdXmy)
|
|
|
xmyGameInfo := xmyGameData[gameIdXmy]
|
|
|
@@ -1109,9 +1107,9 @@ func (s *SyncData) TaskMsgSendRetainedDataUpdate(ctx context.Context, completesI
|
|
|
_ = s.cache.SetCacheStr(ctx, lastNewCompletedUpdateTimeKey, ctime) //上次新增完成更新时间
|
|
|
}
|
|
|
// 处理留存
|
|
|
- if complete.RetainedTarget > currentRetainedCompleted {
|
|
|
+ if complete.JfRetainedTarget > currentRetainedCompleted {
|
|
|
lastRetainedCompleted, _ := s.cache.GetCacheNum(ctx, lastRetainedCompletedKey)
|
|
|
- alsoRetainedTarget := complete.RetainedTarget - currentRetainedCompleted
|
|
|
+ alsoRetainedTarget := complete.JfRetainedTarget - currentRetainedCompleted
|
|
|
retainedRate := 0
|
|
|
lastRetainedCompletedUpdateTime, _ := s.cache.GetCacheNum(ctx, lastRetainedCompletedUpdateTimeKey)
|
|
|
timeRate := int(ctime) - lastRetainedCompletedUpdateTime
|
|
|
@@ -1667,3 +1665,207 @@ func (s *SyncData) RequestControlBackend(requestData []request2.GetGameTargetCom
|
|
|
global.GVA_LOG.Warn(msg)
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+func (s SyncData) CheckControlCompleteData() {
|
|
|
+ db := global.GVA_DB.Model(&task.GameTask{})
|
|
|
+ var apiList []task.GameTask
|
|
|
+ db = db.Where("is_del = ?", -1)
|
|
|
+ db = db.Where("status = ?", 1)
|
|
|
+ err := db.Order("id desc").Find(&apiList).Error
|
|
|
+ if err != nil {
|
|
|
+ global.GVA_LOG.Error("查询任务数据失败", zap.Error(err))
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if len(apiList) == 0 {
|
|
|
+ global.GVA_LOG.Info("没有任务数据")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ date := time.Now().Format("2006-01-02")
|
|
|
+ for _, gameTask := range apiList {
|
|
|
+ roomData, _ := s.SyncRoomData(date, gameTask.TaskId)
|
|
|
+ xmyComplete := strings.Split(roomData.CompleteNum, "/")
|
|
|
+ if len(xmyComplete) < 3 {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ xmyNewComplete, _ := strconv.Atoi(xmyComplete[0])
|
|
|
+ xmyRetainedComplete, _ := strconv.Atoi(xmyComplete[1])
|
|
|
+ controlComplete := strings.Split(roomData.CompleteLocalNum, "/")
|
|
|
+ if len(controlComplete) < 3 {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ controlNewComplete, _ := strconv.Atoi(controlComplete[0])
|
|
|
+ controlRetainedComplete, _ := strconv.Atoi(controlComplete[1])
|
|
|
+ if xmyNewComplete > 1 && controlNewComplete == 0 {
|
|
|
+ // 新增异常,推送消息
|
|
|
+ content := s.CheckControlCompleteDataMsg(gameTask.TaskId, gameTask.TaskName, "新增")
|
|
|
+ s.SendMsg(content, gameTask.User)
|
|
|
+ }
|
|
|
+ if xmyRetainedComplete > 1 && controlRetainedComplete == 0 {
|
|
|
+ // 留存异常,推送消息
|
|
|
+ content := s.CheckControlCompleteDataMsg(gameTask.TaskId, gameTask.TaskName, "留存")
|
|
|
+ s.SendMsg(content, gameTask.User)
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func (s SyncData) CheckControlCompleteDataMsg(gameId int, gameName, typeStr string) string {
|
|
|
+ c := "# 群控数据异常"
|
|
|
+ c += fmt.Sprintf("<font color=\"warning\">%s</font>", time.Now().Format("2006-01-02 15:04:05"))
|
|
|
+ c += "\n"
|
|
|
+ c += typeStr
|
|
|
+ c += "\n"
|
|
|
+ ct := fmt.Sprintf("<font color=\"warning\"> %d, %s</font>", gameId, gameName)
|
|
|
+ ct = c + ct
|
|
|
+ return ct
|
|
|
+}
|
|
|
+
|
|
|
+func (s *SyncData) SendContent(content, url string) {
|
|
|
+ var sendMsg SendMsg
|
|
|
+ sendMsg.MsgType = "markdown"
|
|
|
+ sendMsg.Markdown.Content = content
|
|
|
+ s.SendMsgData(url, sendMsg)
|
|
|
+}
|
|
|
+
|
|
|
+func (s *SyncData) SendMsg(content string, operator string) {
|
|
|
+ mpsPerson, _ := s.Person.GetUserInfoData()
|
|
|
+ if operator != "" {
|
|
|
+ s.SendContent(content, mpsPerson[operator].Url)
|
|
|
+ url := global.GVA_CONFIG.SendUrl.ComputerSendUrl
|
|
|
+ s.SendContent(content, url)
|
|
|
+ var sendTextData SendTextMsg
|
|
|
+ sendTextData.MsgType = "text"
|
|
|
+ sendTextData.Text.MentionedMobileList = []string{mpsPerson[operator].MobilePhoneNumber}
|
|
|
+ s.SendMsgData(url, sendTextData)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+type RetainedRatioData struct {
|
|
|
+ Data map[int][]RatioData `json:"data"`
|
|
|
+ Status string `json:"status"`
|
|
|
+}
|
|
|
+
|
|
|
+type RatioData struct {
|
|
|
+ NewDate string `json:"NewDate"`
|
|
|
+ Duration int `json:"Duration"`
|
|
|
+ Total int `json:"Total"`
|
|
|
+}
|
|
|
+
|
|
|
+func (s *SyncData) SyncControlRetainedRatioData() {
|
|
|
+ requestData := s.getRatioData()
|
|
|
+ if requestData.Status != "OK" {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ db := global.GVA_DB.Model(&task.GameTask{})
|
|
|
+ var apiList []task.GameTask
|
|
|
+ db = db.Where("is_del = ?", -1)
|
|
|
+ db = db.Where("status = ?", 1)
|
|
|
+ err := db.Order("id desc").Find(&apiList).Error
|
|
|
+ if err != nil {
|
|
|
+ global.GVA_LOG.Error("查询任务数据失败", zap.Error(err))
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if len(apiList) == 0 {
|
|
|
+ global.GVA_LOG.Info("没有任务数据")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ var gameRDs []task.GameRetainedData
|
|
|
+ for _, gameTask := range apiList {
|
|
|
+ if _, ok := requestData.Data[gameTask.TaskId]; !ok {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ for _, data := range requestData.Data[gameTask.TaskId] {
|
|
|
+ var gameRD task.GameRetainedData
|
|
|
+ gameRD.GameId = gameTask.TaskId
|
|
|
+ gameRD.Total = data.Total
|
|
|
+ gameRD.Duration = data.Duration
|
|
|
+ gameRD.NewDate = data.NewDate
|
|
|
+ gameRD.RetainedDate = time.Now()
|
|
|
+ gameRDs = append(gameRDs, gameRD)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ global.GVA_DB.Create(&gameRDs)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func (s SyncData) getRatioData() (requestData RetainedRatioData) {
|
|
|
+ xmyUrl := "http://xjf.lianyou.fun:8099/v1/account/retained_rate"
|
|
|
+ params := map[string]string{}
|
|
|
+ xmyByteData, err := utils.HttpGet(xmyUrl, params)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ _ = json.Unmarshal(xmyByteData, &requestData)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+type GameRatio struct {
|
|
|
+ Id int `json:"id"`
|
|
|
+ GameId int `json:"game_id"`
|
|
|
+ Second int `json:"second"` // 次留
|
|
|
+ Third int `json:"third"` // 3留
|
|
|
+ Forth int `json:"forth"` // 4留
|
|
|
+ Fifth int `json:"fifth"` // 5留
|
|
|
+ Sixth int `json:"sixth"` // 6留
|
|
|
+ Seventh int `json:"seventh"` // 7留
|
|
|
+ Tenth int `json:"tenth"` // 10留
|
|
|
+ Fifteenth int `json:"fifteenth"` // 15留
|
|
|
+ Twentieth int `json:"twentieth"` // 20留
|
|
|
+ Thirtieth int `json:"thirtieth"` // 30留
|
|
|
+}
|
|
|
+
|
|
|
+func (s SyncData) getRatio(gameId int) (requestData GameRatio) {
|
|
|
+ xmyUrl := fmt.Sprintf("http://xjf.lianyou.fun:8099/v1/task_statistics/retained/%d", gameId)
|
|
|
+ params := map[string]string{}
|
|
|
+ xmyByteData, err := utils.HttpGet(xmyUrl, params)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ _ = json.Unmarshal(xmyByteData, &requestData)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func (s *SyncData) SyncControlRatio() {
|
|
|
+ db := global.GVA_DB.Model(&task.GameTask{})
|
|
|
+ var apiList []task.GameTask
|
|
|
+ db = db.Where("is_del = ?", -1)
|
|
|
+ db = db.Where("status = ?", 1)
|
|
|
+ err := db.Order("id desc").Find(&apiList).Error
|
|
|
+ if err != nil {
|
|
|
+ global.GVA_LOG.Error("查询任务数据失败", zap.Error(err))
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if len(apiList) == 0 {
|
|
|
+ global.GVA_LOG.Info("没有任务数据")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ var gameRDs []task.GameRatioData
|
|
|
+ for _, gameTask := range apiList {
|
|
|
+ requestData := s.getRatio(gameTask.TaskId)
|
|
|
+ if requestData.Id == 0 {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ var gameRD task.GameRatioData
|
|
|
+ global.GVA_DB.Where("game_id = ?", gameTask.TaskId).First(&gameRD)
|
|
|
+ gameRD.Second = requestData.Second
|
|
|
+ gameRD.Third = requestData.Third
|
|
|
+ gameRD.Forth = requestData.Forth
|
|
|
+ gameRD.Fifth = requestData.Fifth
|
|
|
+ gameRD.Sixth = requestData.Sixth
|
|
|
+ gameRD.Seventh = requestData.Seventh
|
|
|
+ gameRD.Tenth = requestData.Tenth
|
|
|
+ gameRD.Fifteenth = requestData.Fifteenth
|
|
|
+ gameRD.Twentieth = requestData.Twentieth
|
|
|
+ gameRD.Thirtieth = requestData.Thirtieth
|
|
|
+ if gameRD.GameId == 0 {
|
|
|
+ gameRD.GameId = gameTask.TaskId
|
|
|
+ gameRDs = append(gameRDs, gameRD)
|
|
|
+ } else {
|
|
|
+ global.GVA_DB.Where("game_id = ?", gameTask.TaskId).Updates(&gameRD)
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ if len(gameRDs) > 0 {
|
|
|
+ global.GVA_DB.Create(&gameRDs)
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|