diff --git a/server/gameservice/app/app.go b/server/gameservice/app/app.go index f7680598..7b4fd037 100644 --- a/server/gameservice/app/app.go +++ b/server/gameservice/app/app.go @@ -62,6 +62,14 @@ func (this *app) registerDataSources() { mt.Table.GameDb.GetById(0).GetPasswd(), mt.Table.GameDb.GetById(0).GetDatabase(), 30) + f5.GetGoStyleDb().RegisterDataSource( + constant.GAME_DB, + mt.Table.GameDb.GetById(0).GetHost(), + mt.Table.GameDb.GetById(0).GetPort(), + mt.Table.GameDb.GetById(0).GetUser(), + mt.Table.GameDb.GetById(0).GetPasswd(), + mt.Table.GameDb.GetById(0).GetDatabase(), + 30) f5.GetJsStyleDb().RegisterDataSource( constant.FRIEND_DB, mt.Table.FriendDb.GetById(0).GetHost(), diff --git a/server/gameservice/task/seasonRanking.go b/server/gameservice/task/seasonRanking.go index e8f40202..9f96468b 100644 --- a/server/gameservice/task/seasonRanking.go +++ b/server/gameservice/task/seasonRanking.go @@ -32,11 +32,9 @@ type userDb struct { } type SeasonRankMgr struct { - userData map[int64]*userDb } func (this *SeasonRankMgr) Init() { - this.userData = make(map[int64]*userDb) this.CalcRanking() fmt.Println("Task init success") } @@ -46,50 +44,58 @@ func (this *SeasonRankMgr) UnInit() { } func (this *SeasonRankMgr) CalcRanking() { - lastIdx := int64(0) - this.getUsersRecords(lastIdx, 100) - //for !done { - // this.getUsersRecords(lastIdx, 10) - //} - this.pushRankingResult() + go this.goGetUsersRecords() } -func (this *SeasonRankMgr) getUsersRecords(lastIdx int64, limit int64) { - sql := fmt.Sprintf("SELECT * FROM t_user WHERE score > %d and idx > %d limit %d", - constant.BASE_SCORE, lastIdx, limit) - f5.GetJsStyleDb().SelectCustomQuery( - constant.GAME_DB, - sql, - func(err error, rows *f5.DataSet) { - if err != nil { - f5.GetSysLog().Info("getUsersRecords Error:%v \n", err) - return - } - empty := true - for rows.Next() { - empty = false - user := userDb{} - user.idx = q5.ToInt64(rows.GetByName("idx")) - user.account_id = q5.ToString(rows.GetByName("account_id")) - user.address = q5.ToString(rows.GetByName("address")) - user.channel = q5.ToInt32(rows.GetByName("channel")) - user.rank = q5.ToInt32(rows.GetByName("rank")) - user.score = q5.ToInt32(rows.GetByName("score")) - user.score_modifytime = q5.ToInt64(rows.GetByName("score_modifytime")) - this.userData[user.idx] = &user - lastIdx = q5.ToInt64(rows.GetByName("idx")) - f5.GetSysLog().Info("get User:%s \n", user.channel) - } - if empty { - //done = true - } - fmt.Println(this.userData) - }, - ) - //return userDbs +func (this *SeasonRankMgr) goGetUsersRecords() { + userData := make(map[int64]*userDb) + var lastIdx int64 = 0 + sucess := true + done := false + for !done { + sql := fmt.Sprintf("SELECT * FROM t_user WHERE idx > %d AND score > %d limit %d", + lastIdx, + constant.BASE_SCORE, + 1000) + f5.GetGoStyleDb().SyncSelectCustomQuery( + constant.GAME_DB, + sql, + func(err error, rows *f5.DataSet) { + if err != nil { + sucess = false + done = true + f5.GetSysLog().Info("getUsersRecords Error:%v \n", err) + return + } + for rows.Next() { + user := userDb{} + user.idx = q5.ToInt64(rows.GetByName("idx")) + user.account_id = q5.ToString(rows.GetByName("account_id")) + user.address = q5.ToString(rows.GetByName("address")) + user.channel = q5.ToInt32(rows.GetByName("channel")) + user.rank = q5.ToInt32(rows.GetByName("rank")) + user.score = q5.ToInt32(rows.GetByName("score")) + user.score_modifytime = q5.ToInt64(rows.GetByName("score_modifytime")) + userData[user.idx] = &user + if user.idx > lastIdx { + lastIdx = user.idx + } + f5.GetSysLog().Info("get User:%s \n", user.idx) + } + if rows.NumOfReaded() <= 0 { + sucess = true; + done = true + } + }, + ) + } + if sucess { + + } } func (this *SeasonRankMgr) pushRankingResult() { + /* for _, v := range this.userData { fields := [][]string{ {"account_id", v.account_id}, @@ -113,4 +119,5 @@ func (this *SeasonRankMgr) pushRankingResult() { }, ) } + */ } diff --git a/third_party/f5 b/third_party/f5 index 30a7e2a6..2d79f0c4 160000 --- a/third_party/f5 +++ b/third_party/f5 @@ -1 +1 @@ -Subproject commit 30a7e2a6ea30e98772c16e28d3be8b2bec440bb8 +Subproject commit 2d79f0c481291b077a532690399bf5571654345d