From 489395ebb159fd5692b054f4594ea225e929abc2 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Tue, 21 May 2024 15:56:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=AF=94=E8=B5=9B=E5=9C=BA?= =?UTF-8?q?=E6=AE=B5=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mgrsrv/api/webapi_actthrsrv.go | 203 -------------- mgrsrv/api/webapi_ranksrv.go | 186 ------------- worldsrv/action_game.go | 8 +- worldsrv/matchseasonmgr.go | 393 --------------------------- worldsrv/matchseasonrankmgr.go | 379 -------------------------- worldsrv/player.go | 1 - worldsrv/scene.go | 12 +- worldsrv/thirdPlatformGameMapping.go | 129 --------- worldsrv/thirdplatformmgr.go | 252 ----------------- worldsrv/tmmatch.go | 10 +- worldsrv/tournament.go | 7 +- worldsrv/trascate_webapi.go | 197 -------------- 12 files changed, 7 insertions(+), 1770 deletions(-) delete mode 100644 mgrsrv/api/webapi_actthrsrv.go delete mode 100644 mgrsrv/api/webapi_ranksrv.go delete mode 100644 worldsrv/matchseasonmgr.go delete mode 100644 worldsrv/matchseasonrankmgr.go delete mode 100644 worldsrv/thirdPlatformGameMapping.go delete mode 100644 worldsrv/thirdplatformmgr.go diff --git a/mgrsrv/api/webapi_actthrsrv.go b/mgrsrv/api/webapi_actthrsrv.go deleted file mode 100644 index 3971212..0000000 --- a/mgrsrv/api/webapi_actthrsrv.go +++ /dev/null @@ -1,203 +0,0 @@ -package api - -// -//import ( -// "encoding/json" -// "io/ioutil" -// "net/http" -// "time" -// -// "crypto/md5" -// "encoding/hex" -// "fmt" -// "mongo.games.com/game/common" -// "mongo.games.com/game/model" -// "mongo.games.com/game/webapi" -// "mongo.games.com/goserver/core" -// "mongo.games.com/goserver/core/admin" -// "mongo.games.com/goserver/core/logger" -// "mongo.games.com/goserver/core/netlib" -// "mongo.games.com/goserver/core/transact" -// "mongo.games.com/goserver/core/utils" -// "io" -// "sync/atomic" -//) -// -//// API -//// http://127.0.0.1:9595/api/Report/QueryOnlineReportList?ts=20141024000000&sign=41cc8cee8dd93f7dc70b6426cfd1029d -// -//func ActThrSrvApi(rw http.ResponseWriter, req *http.Request) { -// defer utils.DumpStackIfPanic("api.ActThrSrvApi") -// logger.Logger.Info("ActThrSrvApi receive:", req.URL.Path, req.URL.RawQuery) -// -// if common.RequestCheck(req, model.GameParamData.WhiteHttpAddr) == false { -// logger.Logger.Info("RemoteAddr [%v] require api.", req.RemoteAddr) -// return -// } -// data, err := io.ReadAll(req.Body) -// if err != nil { -// logger.Logger.Info("Body err.", err) -// webApiResponse(rw, map[string]interface{}{webapi.RESPONSE_STATE: webapi.STATE_ERR, webapi.RESPONSE_ERRMSG: "Post data is null!"}) -// return -// } -// m := req.URL.Query() -// timestamp := m.Get("nano") -// if timestamp == "" { -// logger.Logger.Info(req.RemoteAddr, " ActThrSrvApi param error: nano not allow null") -// return -// } -// sign := m.Get("sign") -// if sign == "" { -// logger.Logger.Info(req.RemoteAddr, " ActThrSrvApi param error: sign not allow null") -// return -// } -// startTime := time.Now().UnixNano() -// args := fmt.Sprintf("%v;%v;%v;%v", common.Config.AppId, req.URL.Path, string(data), timestamp) -// h := md5.New() -// io.WriteString(h, args) -// realSign := hex.EncodeToString(h.Sum(nil)) -// if realSign != sign && !common.Config.IsDevMode { -// logger.Logger.Info(req.RemoteAddr, " srvCtrlMain sign error: expect ", realSign, " ; but get ", sign, " raw=", args) -// webApiResponse(rw, map[string]interface{}{webapi.RESPONSE_STATE: webapi.STATE_ERR, webapi.RESPONSE_ERRMSG: "Sign error!"}) -// return -// } -// -// var stats *ApiStats -// if v, exist := WebApiStats.Load(req.URL.Path); exist { -// stats = v.(*ApiStats) -// } else { -// stats = &ApiStats{} -// WebApiStats.Store(req.URL.Path, stats) -// } -// var rep map[string]interface{} -// start := time.Now() -// res := make(chan map[string]interface{}, 1) -// core.CoreObject().SendCommand(&WebApiEvent{req: req, path: req.URL.Path, h: HandlerWrapper(func(event *WebApiEvent, data []byte) bool { -// logger.Logger.Trace("ActThrSrvApi start transcate") -// tnp := &transact.TransNodeParam{ -// Tt: common.TransType_ActThrSrvWebApi, -// Ot: transact.TransOwnerType(common.GetSelfSrvType()), -// Oid: common.GetSelfSrvId(), -// AreaID: common.GetSelfAreaId(), -// } -// tNode := transact.DTCModule.StartTrans(tnp, event, transact.DefaultTransactTimeout) //超时时间30秒 -// if tNode != nil { -// tNode.TransEnv.SetField(WEBAPI_TRANSACTE_EVENT, event) -// tNode.Go(core.CoreObject()) -// } -// return true -// }), body: data, rawQuery: req.URL.RawQuery, res: res}, false) -// select { -// case rep = <-res: -// if rep != nil { -// webApiResponse(rw, rep) -// } -// case <-time.After(ApiDefaultTimeout): -// rep = make(map[string]interface{}) -// rep[webapi.RESPONSE_STATE] = webapi.STATE_ERR -// rep[webapi.RESPONSE_ERRMSG] = "proccess timeout!" -// webApiResponse(rw, rep) -// if stats != nil { -// atomic.AddInt64(&stats.TimeoutTimes, 1) -// } -// } -// ps := int64(time.Now().Sub(start) / time.Millisecond) -// if stats != nil { -// atomic.AddInt64(&stats.RunTimes, 1) -// atomic.AddInt64(&stats.TotalRuningTime, ps) -// if atomic.LoadInt64(&stats.MaxRuningTime) < ps { -// atomic.StoreInt64(&stats.MaxRuningTime, ps) -// } -// } -// result, err := json.Marshal(rep) -// if err == nil { -// log := model.NewAPILog(req.URL.Path, req.URL.RawQuery, string(data[:]), req.RemoteAddr, string(result[:]), startTime, ps) -// APILogChannelSington.Write(log) -// } -// return -//} -// -////-------------------------------------------------------------------------------------- -//func init() { -// transact.RegisteHandler(common.TransType_ActThrSrvWebApi, &transact.TransHanderWrapper{ -// OnExecuteWrapper: transact.OnExecuteWrapper(func(tNode *transact.TransNode, ud interface{}) transact.TransExeResult { -// logger.Logger.Trace("ActThrSrvApi start TransType_WebApi OnExecuteWrapper ") -// tnp := &transact.TransNodeParam{ -// Tt: common.TransType_ActThrSrvWebApi, -// Ot: transact.TransOwnerType(common.ActThrServerType), -// Oid: common.ActThrServerID, -// AreaID: common.GetSelfAreaId(), -// Tct: transact.TransactCommitPolicy_TwoPhase, -// } -// if event, ok := ud.(*WebApiEvent); ok { -// userData := &common.M2GWebApiRequest{Path: event.path, RawQuery: event.rawQuery, Body: event.body, ReqIp: event.req.RemoteAddr} -// tNode.StartChildTrans(tnp, userData, transact.DefaultTransactTimeout) -// -// pid := tNode.MyTnp.TId -// cid := tnp.TId -// logger.Logger.Tracef("ActThrSrvApi start TransType_WebApi OnExecuteWrapper tid:%x childid:%x", pid, cid) -// return transact.TransExeResult_Success -// } -// return transact.TransExeResult_Failed -// }), -// OnCommitWrapper: transact.OnCommitWrapper(func(tNode *transact.TransNode) transact.TransExeResult { -// logger.Logger.Trace("ActThrSrvApi start TransType_WebApi OnCommitWrapper") -// event := tNode.TransEnv.GetField(WEBAPI_TRANSACTE_EVENT).(*WebApiEvent) -// resp := tNode.TransEnv.GetField(WEBAPI_TRANSACTE_RESPONSE) -// if userData, ok := resp.(*common.M2GWebApiResponse); ok { -// if len(userData.Body) > 0 { -// m := make(map[string]interface{}) -// err := json.Unmarshal(userData.Body, &m) -// if err == nil { -// event.Response(m) -// return transact.TransExeResult_Success -// } -// } -// } -// event.Response(map[string]interface{}{webapi.RESPONSE_STATE: webapi.STATE_ERR, webapi.RESPONSE_ERRMSG: "execute failed!"}) -// return transact.TransExeResult_Success -// }), -// OnRollBackWrapper: transact.OnRollBackWrapper(func(tNode *transact.TransNode) transact.TransExeResult { -// logger.Logger.Trace("ActThrSrvApi start TransType_WebApi OnRollBackWrapper") -// event := tNode.TransEnv.GetField(WEBAPI_TRANSACTE_EVENT).(*WebApiEvent) -// resp := tNode.TransEnv.GetField(WEBAPI_TRANSACTE_RESPONSE) -// if userData, ok := resp.(*common.M2GWebApiResponse); ok { -// if len(userData.Body) > 0 { -// m := make(map[string]interface{}) -// err := json.Unmarshal(userData.Body, &m) -// if err == nil { -// event.Response(m) -// return transact.TransExeResult_Success -// } -// } -// return transact.TransExeResult_Success -// } -// event.Response(map[string]interface{}{webapi.RESPONSE_STATE: webapi.STATE_ERR, webapi.RESPONSE_ERRMSG: "execute failed!"}) -// return transact.TransExeResult_Success -// }), -// OnChildRespWrapper: transact.OnChildRespWrapper(func(tNode *transact.TransNode, hChild transact.TransNodeID, retCode int, ud interface{}) transact.TransExeResult { -// logger.Logger.Tracef("ActThrSrvApi start TransType_WebApi OnChildRespWrapper ret:%v childid:%x", retCode, hChild) -// userData := &common.M2GWebApiResponse{} -// err := netlib.UnmarshalPacketNoPackId(ud.([]byte), userData) -// if err == nil { -// tNode.TransEnv.SetField(WEBAPI_TRANSACTE_RESPONSE, userData) -// } else { -// logger.Logger.Trace("trascate.OnChildRespWrapper err:", err) -// } -// return transact.TransExeResult(retCode) -// }), -// }) -// -// //测试 -// admin.MyAdminApp.Route("/api/ActThr/Test", ActThrSrvApi) -// -// //增加自动黑白名单控制 -// admin.MyAdminApp.Route("/api/ActThr/Upsert", ActThrSrvApi) -// -// //删除自动黑白名单控制 -// admin.MyAdminApp.Route("/api/ActThr/Delete", ActThrSrvApi) -// -// //删除所有添加的黑名单 -// admin.MyAdminApp.Route("/api/ActThr/ResetBW", ActThrSrvApi) -// -//} diff --git a/mgrsrv/api/webapi_ranksrv.go b/mgrsrv/api/webapi_ranksrv.go deleted file mode 100644 index e0adcc9..0000000 --- a/mgrsrv/api/webapi_ranksrv.go +++ /dev/null @@ -1,186 +0,0 @@ -package api - -// -//import ( -// "crypto/md5" -// "encoding/hex" -// "encoding/json" -// "fmt" -// "mongo.games.com/game/common" -// "mongo.games.com/game/model" -// "mongo.games.com/game/webapi" -// "mongo.games.com/goserver/core" -// "mongo.games.com/goserver/core/admin" -// "mongo.games.com/goserver/core/logger" -// "mongo.games.com/goserver/core/netlib" -// "mongo.games.com/goserver/core/transact" -// "mongo.games.com/goserver/core/utils" -// "io" -// "io/ioutil" -// "net/http" -// "time" -//) -// -//const ( -// RANKSRVAPI_TRANSACTE_EVENT = "GAMESRVAPI_TRANSACTE_EVENT" -// RANKSRVAPI_TRANSACTE_RESPONSE = "RANKSRVAPI_TRANSACTE_RESPONSE" -//) -// -//// 处理 web 请求 rank server 相关的配置协议, 转发至 rank server 处理 -// -//func RankSrvApi(rw http.ResponseWriter, req *http.Request) { -// defer utils.DumpStackIfPanic("api.RankSrvApi") -// logger.Logger.Info("RankSrvApi receive:", req.URL.Path, req.URL.RawQuery) -// -// if common.RequestCheck(req, model.GameParamData.WhiteHttpAddr) == false { -// logger.Logger.Info("RemoteAddr [%v] require api.", req.RemoteAddr) -// return -// } -// data, err := io.ReadAll(req.Body) -// if err != nil { -// logger.Logger.Info("Body err.", err) -// webApiResponse(rw, map[string]interface{}{ -// webapi.RESPONSE_STATE: webapi.STATE_ERR, -// webapi.RESPONSE_ERRMSG: "Post data is null!", -// }) -// return -// } -// logger.Logger.Info(string(data)) -// m := req.URL.Query() -// timestamp := m.Get("nano") -// if timestamp == "" { -// logger.Logger.Info(req.RemoteAddr, " RankSrvApi param error: nano not allow null") -// return -// } -// sign := m.Get("sign") -// if sign == "" { -// logger.Logger.Info(req.RemoteAddr, " RankSrvApi param error: sign not allow null") -// return -// } -// startTime := time.Now().UnixNano() -// args := fmt.Sprintf("%v;%v;%v;%v", common.Config.AppId, req.URL.Path, string(data), timestamp) -// h := md5.New() -// io.WriteString(h, args) -// realSign := hex.EncodeToString(h.Sum(nil)) -// if realSign != sign && !common.Config.IsDevMode { -// logger.Logger.Info(req.RemoteAddr, " srvCtrlMain sign error: expect ", realSign, " ; but get ", sign, " raw=", args) -// webApiResponse(rw, map[string]interface{}{webapi.RESPONSE_STATE: webapi.STATE_ERR, webapi.RESPONSE_ERRMSG: "Sign error!"}) -// return -// } -// var rep map[string]interface{} -// start := time.Now() -// res := make(chan map[string]interface{}, 1) -// core.CoreObject().SendCommand(&WebApiEvent{req: req, path: req.URL.Path, h: HandlerWrapper(func(event *WebApiEvent, data []byte) bool { -// logger.Logger.Trace("RankSrvApi start transcate") -// tnp := &transact.TransNodeParam{ -// Tt: common.TransType_WebApi_ForRank, -// Ot: transact.TransOwnerType(common.GetSelfSrvType()), -// Oid: common.GetSelfSrvId(), -// AreaID: common.GetSelfAreaId(), -// } -// logger.Info("call info:", common.GetSelfAreaId(), common.GetSelfSrvType(), common.GetSelfSrvId()) -// tNode := transact.DTCModule.StartTrans(tnp, event, transact.DefaultTransactTimeout) //超时时间30秒 -// if tNode != nil { -// tNode.TransEnv.SetField(RANKSRVAPI_TRANSACTE_EVENT, event) -// tNode.Go(core.CoreObject()) -// } -// return true -// }), body: data, rawQuery: req.URL.RawQuery, res: res}, false) -// select { -// case rep = <-res: -// if rep != nil { -// webApiResponse(rw, rep) -// } -// case <-time.After(ApiDefaultTimeout): -// rep = make(map[string]interface{}) -// rep[webapi.RESPONSE_STATE] = webapi.STATE_ERR -// rep[webapi.RESPONSE_ERRMSG] = "proccess timeout!" -// webApiResponse(rw, rep) -// } -// ps := int64(time.Now().Sub(start) / time.Millisecond) -// result, err := json.Marshal(rep) -// if err == nil { -// log := model.NewAPILog(req.URL.Path, req.URL.RawQuery, string(data[:]), req.RemoteAddr, string(result[:]), startTime, ps) -// APILogChannelSington.Write(log) -// } -// return -//} -// -//func init() { -// transact.RegisteHandler(common.TransType_WebApi_ForRank, &transact.TransHanderWrapper{ -// OnExecuteWrapper: transact.OnExecuteWrapper(func(tNode *transact.TransNode, ud interface{}) transact.TransExeResult { -// logger.Logger.Trace("RankSrvApi start TransType_WebApi_ForRank OnExecuteWrapper ") -// tnp := &transact.TransNodeParam{ -// Tt: common.TransType_WebApi_ForRank, -// Ot: transact.TransOwnerType(common.RankServerType), -// Oid: common.GetRankSrvId(), -// AreaID: common.GetSelfAreaId(), -// Tct: transact.TransactCommitPolicy_TwoPhase, -// } -// logger.Infof("params: %+v", tnp) -// if event, ok := ud.(*WebApiEvent); ok { -// userData := &common.M2GWebApiRequest{Path: event.path, RawQuery: event.rawQuery, Body: event.body, ReqIp: event.req.RemoteAddr} -// tNode.StartChildTrans(tnp, userData, transact.DefaultTransactTimeout) -// -// pid := tNode.MyTnp.TId -// cid := tnp.TId -// logger.Logger.Tracef("RankSrvApi start TransType_WebApi_ForRank OnExecuteWrapper tid:%x childid:%x", pid, cid) -// return transact.TransExeResult_Success -// } -// return transact.TransExeResult_Failed -// }), -// OnCommitWrapper: transact.OnCommitWrapper(func(tNode *transact.TransNode) transact.TransExeResult { -// logger.Logger.Trace("RankSrvApi start TransType_WebApi_ForRank OnCommitWrapper") -// event := tNode.TransEnv.GetField(RANKSRVAPI_TRANSACTE_EVENT).(*WebApiEvent) -// resp := tNode.TransEnv.GetField(RANKSRVAPI_TRANSACTE_RESPONSE) -// if userData, ok := resp.(*common.M2GWebApiResponse); ok { -// if len(userData.Body) > 0 { -// m := make(map[string]interface{}) -// err := json.Unmarshal(userData.Body, &m) -// if err == nil { -// event.Response(m) -// return transact.TransExeResult_Success -// } -// } -// } -// event.Response(map[string]interface{}{webapi.RESPONSE_STATE: webapi.STATE_ERR, webapi.RESPONSE_ERRMSG: "execute failed!"}) -// return transact.TransExeResult_Success -// }), -// OnRollBackWrapper: transact.OnRollBackWrapper(func(tNode *transact.TransNode) transact.TransExeResult { -// logger.Logger.Trace("RankSrvApi start TransType_WebApi_ForRank OnRollBackWrapper") -// event := tNode.TransEnv.GetField(RANKSRVAPI_TRANSACTE_EVENT).(*WebApiEvent) -// resp := tNode.TransEnv.GetField(RANKSRVAPI_TRANSACTE_RESPONSE) -// if userData, ok := resp.(*common.M2GWebApiResponse); ok { -// if len(userData.Body) > 0 { -// m := make(map[string]interface{}) -// err := json.Unmarshal(userData.Body, &m) -// if err == nil { -// event.Response(m) -// return transact.TransExeResult_Success -// } -// } -// return transact.TransExeResult_Success -// } -// event.Response(map[string]interface{}{webapi.RESPONSE_STATE: webapi.STATE_ERR, webapi.RESPONSE_ERRMSG: "execute failed!"}) -// return transact.TransExeResult_Success -// }), -// OnChildRespWrapper: transact.OnChildRespWrapper(func(tNode *transact.TransNode, hChild transact.TransNodeID, retCode int, ud interface{}) transact.TransExeResult { -// logger.Logger.Tracef("RankSrvApi start TransType_WebApi_ForRank OnChildRespWrapper ret:%v childid:%x", retCode, hChild) -// userData := &common.M2GWebApiResponse{} -// err := netlib.UnmarshalPacketNoPackId(ud.([]byte), userData) -// if err == nil { -// tNode.TransEnv.SetField(RANKSRVAPI_TRANSACTE_RESPONSE, userData) -// } else { -// logger.Logger.Trace("trascate.OnChildRespWrapper err:", err) -// } -// return transact.TransExeResult(retCode) -// }), -// }) //RegisteHandler -// -// admin.MyAdminApp.Route("/api/rank/getConfig", RankSrvApi) -// admin.MyAdminApp.Route("/api/rank/updateConfig", RankSrvApi) -// admin.MyAdminApp.Route("/api/rank/debug/settings", RankSrvApi) -// admin.MyAdminApp.Route("/api/rank/debug/board", RankSrvApi) -// admin.MyAdminApp.Route("/api/rank/reset", RankSrvApi) -// admin.MyAdminApp.Route("/api/rank/syncUser", RankSrvApi) // 同步主库玩家信息 -//} diff --git a/worldsrv/action_game.go b/worldsrv/action_game.go index 5e94a25..250d930 100644 --- a/worldsrv/action_game.go +++ b/worldsrv/action_game.go @@ -142,11 +142,6 @@ func (this *CSEnterRoomHandler) Process(s *netlib.Session, packetid int, data in if scene.IsMatchScene() && p.IsRob { grade := int32(1000) snid := p.SnId - ms := MatchSeasonMgrSington.GetMatchSeason(snid) // 玩家赛季信息 - lv := MatchSeasonRankMgrSington.CreateRobotLv() // - if ms != nil { - lv = ms.Lv - } roleId := int32(2000001) if p.Roles != nil { roleId = p.Roles.ModId @@ -159,12 +154,11 @@ func (this *CSEnterRoomHandler) Process(s *netlib.Session, packetid int, data in randIndex := rand.Intn(len(tm.copyRobotGrades)) grade = tm.copyRobotGrades[randIndex].grade snid = tm.copyRobotGrades[randIndex].copySnid - lv = tm.copyRobotGrades[randIndex].copyLv roleId = tm.copyRobotGrades[randIndex].copyRoleId tm.copyRobotGrades = append(tm.copyRobotGrades[:randIndex], tm.copyRobotGrades[randIndex+1:]...) } } - mc := NewMatchContext(p, tm, grade, snid, lv, roleId, 0) + mc := NewMatchContext(p, tm, grade, snid, 1, roleId, 0) if mc != nil { mc.gaming = true p.matchCtx = mc diff --git a/worldsrv/matchseasonmgr.go b/worldsrv/matchseasonmgr.go deleted file mode 100644 index b8422d0..0000000 --- a/worldsrv/matchseasonmgr.go +++ /dev/null @@ -1,393 +0,0 @@ -package main - -import ( - "github.com/globalsign/mgo/bson" - "mongo.games.com/game/model" - "mongo.games.com/game/proto" - "mongo.games.com/game/protocol/tournament" - "mongo.games.com/game/srvdata" - "mongo.games.com/goserver/core/basic" - "mongo.games.com/goserver/core/logger" - "mongo.games.com/goserver/core/module" - "mongo.games.com/goserver/core/task" - "sort" - "strconv" - "time" -) - -var MatchSeasonMgrSington = &MatchSeasonMgr{ - MatchSeasonList: make(map[int32]*MatchSeason), - MatchSeasonId: make(map[string]*MatchSeasonId), -} - -type MatchSeasonMgr struct { - BaseClockSinker - MatchSeasonList map[int32]*MatchSeason // snid:玩家赛季信息 - MatchSeasonId map[string]*MatchSeasonId // platform:平台赛季信息 -} - -// MatchSeason 玩家赛季信息 -type MatchSeason struct { - Id bson.ObjectId `bson:"_id"` - Platform string - SnId int32 - Name string - SeasonId int32 //赛季id - Lv int32 //段位 - LastLv int32 //上赛季段位 - IsAward bool //上赛季是否领奖 - AwardTs int64 //领奖时间 - UpdateTs int64 - dirty bool -} - -// MatchSeasonId 赛季信息 -type MatchSeasonId struct { - Id bson.ObjectId `bson:"_id"` - Platform string - SeasonId int32 //赛季id - StartStamp int64 //开始时间戳 - EndStamp int64 //结束时间戳 - UpdateTs int64 //更新时间戳 -} - -func (this *MatchSeasonMgr) exchangeModel2Cache(mms *model.MatchSeason) *MatchSeason { - if mms == nil { - return nil - } - ms := &MatchSeason{ - Id: mms.Id, - Platform: mms.Platform, - SnId: mms.SnId, - Name: mms.Name, - Lv: mms.Lv, - LastLv: mms.LastLv, - IsAward: mms.IsAward, - AwardTs: mms.AwardTs, - SeasonId: mms.SeasonId, - UpdateTs: mms.UpdateTs, - } - return ms -} - -func (this *MatchSeasonMgr) GetMatchSeason(snid int32) *MatchSeason { - return this.MatchSeasonList[snid] -} - -// GetAllMatchSeason 获取所有玩家赛季信息 -func (this *MatchSeasonMgr) GetAllMatchSeason() map[int32]*MatchSeason { - return this.MatchSeasonList -} - -func (this *MatchSeasonMgr) SetMatchSeason(ms *MatchSeason) { - if ms == nil { - return - } - this.MatchSeasonList[ms.SnId] = ms -} - -func (this *MatchSeasonMgr) DelMatchSeasonCache(snid int32) { - if this.MatchSeasonList[snid] == nil { - return - } - delete(this.MatchSeasonList, snid) -} - -// UpdateMatchSeasonLv 修改玩家段位 -// 通知段位变更 -// 更新排行榜 -func (this *MatchSeasonMgr) UpdateMatchSeasonLv(p *Player, addlv int32, dirty bool) { - logger.Logger.Trace("(this *MatchSeasonMgr) UpdateMatchSeasonLv: SnId: ", p.SnId, " addlv: ", addlv) - if p == nil || p.IsRob { - return - } - platform := p.Platform - if platform == DefaultPlatform { - return - } - ms := this.GetMatchSeason(p.SnId) - if ms != nil { - ms.Lv = ms.Lv + addlv - ms.dirty = true - ms.UpdateTs = time.Now().Unix() - msid := this.GetMatchSeasonId(platform) - if msid != nil { - if addlv != 0 || dirty { //段位有变化或者需要继承 - //通知客户端段位更新 - pack := &tournament.SCTMSeasonInfo{ - Id: msid.SeasonId, - SeasonTimeStamp: []int64{msid.StartStamp, msid.EndStamp}, - Lv: ms.Lv, - LastLv: ms.LastLv, - IsAward: ms.IsAward, - } - proto.SetDefaults(pack) - ok := p.SendToClient(int(tournament.TOURNAMENTID_PACKET_TM_SCTMSeasonInfo), pack) - logger.Logger.Trace("SCTMSeasonInfoHandler: ok: ", ok, pack) - } - //更新排行榜 - logger.Logger.Trace("更新排行榜!!!") - msrs := MatchSeasonRankMgrSington.GetMatchSeasonRank(platform) - if msrs == nil { //排行榜没有数据 去缓存中取 - ams := MatchSeasonMgrSington.GetAllMatchSeason() - mss := []*model.MatchSeason{} - if ams != nil { - for _, season := range ams { - if season.Platform == platform { - mms := &model.MatchSeason{ - Id: season.Id, - Platform: season.Platform, - SnId: season.SnId, - Name: season.Name, - SeasonId: season.SeasonId, - Lv: season.Lv, - LastLv: season.LastLv, - IsAward: season.IsAward, - AwardTs: season.AwardTs, - } - mss = append(mss, mms) - } - } - } - if mss != nil && len(mss) > 0 { - cmsrs := []*MatchSeasonRank{} - sort.Slice(mss, func(i, j int) bool { - return mss[i].Lv > mss[j].Lv - }) - if len(mss) > model.GameParamData.MatchSeasonRankMaxNum { - mss = append(mss[:model.GameParamData.MatchSeasonRankMaxNum]) - } - for i := 0; i < len(mss); i++ { - season := mss[i] - msr := &MatchSeasonRank{ - Id: season.Id, - Platform: season.Platform, - SnId: season.SnId, - Name: season.Name, - Lv: season.Lv, - UpdateTs: season.UpdateTs, - } - cmsrs = append(cmsrs, msr) - } - MatchSeasonRankMgrSington.SetMatchSeasonRank(platform, cmsrs) - } - } - MatchSeasonRankMgrSington.UpdateMatchSeasonRank(p, ms.Lv) - } - } -} - -// MatchSeasonInherit 查询段位继承 -func (this *MatchSeasonMgr) MatchSeasonInherit(lv int32) int32 { - logger.Logger.Trace("(this *MatchSeasonMgr) MatchSeasonInherit: lv: ", lv) - destLv := int32(1) - for _, v := range srvdata.PBDB_GamMatchLVMgr.Datas.GetArr() { - if v.Star != nil && len(v.Star) > 1 { - startStar := v.Star[0] - endStar := v.Star[1] - if lv >= startStar && lv <= endStar { //匹配段位 - destLv = v.Star2 //继承后段位 - } - } - } - return destLv -} - -// UpdateMatchSeasonAward 更新领奖时间 -func (this *MatchSeasonMgr) UpdateMatchSeasonAward(snid int32) { - logger.Logger.Trace("(this *MatchSeasonMgr) UpdateMatchSeasonAward ", snid) - ms := this.GetMatchSeason(snid) - if ms != nil { - ms.IsAward = true - ms.AwardTs = time.Now().Unix() - ms.UpdateTs = time.Now().Unix() - ms.dirty = true - } -} - -// SaveMatchSeasonData 保存玩家段位信息 -// logout 删除缓存 -func (this *MatchSeasonMgr) SaveMatchSeasonData(snid int32, logout bool) { - logger.Logger.Trace("(this *MatchSeasonMgr) SaveMatchSeasonData ", snid) - ms := this.MatchSeasonList[snid] - if ms != nil && ms.dirty { - ms.dirty = false - mms := &model.MatchSeason{ - Id: ms.Id, - Platform: ms.Platform, - SnId: ms.SnId, - Name: ms.Name, - Lv: ms.Lv, - LastLv: ms.LastLv, - IsAward: ms.IsAward, - AwardTs: ms.AwardTs, - SeasonId: ms.SeasonId, - UpdateTs: ms.UpdateTs, - } - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - return model.UpsertMatchSeason(mms) - }), task.CompleteNotifyWrapper(func(data interface{}, tt task.Task) { - logger.Logger.Info("SaveMatchSeasonData!!!") - if logout { - this.DelMatchSeasonCache(snid) - } - })).StartByFixExecutor("SnId:" + strconv.Itoa(int(snid))) - } -} - -// SaveAllMatchSeasonData 保存所有玩家段位信息 -func (this *MatchSeasonMgr) SaveAllMatchSeasonData() { - for _, msl := range this.MatchSeasonList { - this.SaveMatchSeasonData(msl.SnId, false) - } -} - -// UpdateMatchSeasonId 更新比赛场赛季配置 -// 更新赛季配置 -// 更新在线玩家段位 -// 更新排行榜 -func (this *MatchSeasonMgr) UpdateMatchSeasonId(platform string) { - logger.Logger.Info("(this *MatchSeasonMgr) UpdateMatchSeasonId") - if platform == DefaultPlatform { - return - } - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - ret, err := model.QueryMatchSeasonId(platform) - if err != nil { - return nil - } - return ret - }), task.CompleteNotifyWrapper(func(data interface{}, tt task.Task) { - var ret *model.MatchSeasonId - if data == nil || data.(*model.MatchSeasonId) == nil { - sstamp, estamp := this.getNowMonthStartAndEnd() - ret = model.NewMatchSeasonId(platform, int32(1), sstamp, estamp) //初始化赛季 - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - return model.UpsertMatchSeasonId(ret) - }), nil).StartByFixExecutor("UpsertMatchSeasonId") - } else { - ret = data.(*model.MatchSeasonId) - } - logger.Logger.Info("UpdateMatchSeasonId!!!", ret) - if ret != nil { - nowStamp := time.Now().Unix() - if nowStamp < ret.StartStamp { - logger.Logger.Error("赛季开始时间错误!!!") - } - if nowStamp >= ret.EndStamp { //新赛季 - logger.Logger.Info("新赛季!!!", ret) - sstamp, estamp := this.getNowMonthStartAndEnd() - ret.SeasonId++ - ret.StartStamp = sstamp - ret.EndStamp = estamp - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - return model.UpsertMatchSeasonId(ret) - }), nil).StartByFixExecutor("UpsertMatchSeasonId") - //排行榜内的段位继承 - MatchSeasonRankMgrSington.MatchSeasonRankInherit(platform) - //通知平台玩家继承后的段位数据 - players := PlayerMgrSington.playerOfPlatform[platform] - for _, p := range players { - if p != nil && p.IsOnLine() && !p.IsRob { - ms := MatchSeasonMgrSington.GetMatchSeason(p.SnId) - if ms != nil { - if ms.SeasonId < ret.SeasonId { //不同赛季段位继承 - num := ret.SeasonId - ms.SeasonId - finalLv := ms.Lv - for i := 0; i < int(num); i++ { //继承几次 - if i == int(num)-1 { //上个赛季 - ms.LastLv = finalLv - } - finalLv = MatchSeasonMgrSington.MatchSeasonInherit(finalLv) - } - ms.Lv = finalLv - ms.SeasonId = ret.SeasonId - ms.IsAward = false - ms.UpdateTs = time.Now().Unix() - ms.dirty = true - MatchSeasonMgrSington.SetMatchSeason(ms) //更新缓存 - pack := &tournament.SCTMSeasonInfo{ - Id: ret.SeasonId, - SeasonTimeStamp: []int64{ret.StartStamp, ret.EndStamp}, - Lv: ms.Lv, - LastLv: ms.LastLv, - IsAward: ms.IsAward, - } - proto.SetDefaults(pack) - logger.Logger.Trace("SCTMSeasonInfo:", p.SnId, " pack: ", pack) - p.SendToClient(int(tournament.TOURNAMENTID_PACKET_TM_SCTMSeasonInfo), pack) - } - } - } - } - } - this.MatchSeasonId[platform] = &MatchSeasonId{ - Id: ret.Id, - Platform: ret.Platform, - SeasonId: ret.SeasonId, - StartStamp: ret.StartStamp, - EndStamp: ret.EndStamp, - UpdateTs: ret.UpdateTs, - } - } - })).StartByFixExecutor("platform: " + platform) -} - -// GetMatchSeasonId 获取比赛场赛季配置 -func (this *MatchSeasonMgr) GetMatchSeasonId(platform string) *MatchSeasonId { - logger.Logger.Info("(this *MatchSeasonMgr) GetMatchSeasonId", platform) - return this.MatchSeasonId[platform] -} - -// 获取当月初和月末时间戳 -func (this *MatchSeasonMgr) getNowMonthStartAndEnd() (int64, int64) { - now := time.Now() - first := now.Format("2006-01") + "-01" - start, _ := time.ParseInLocation("2006-01-02", first, time.Local) - last := start.AddDate(0, 1, 0).Format("2006-01-02") - end, _ := time.ParseInLocation("2006-01-02", last, time.Local) - return start.Unix(), end.Unix() - 1 -} - -func (this *MatchSeasonMgr) ModuleName() string { - return "MatchSeasonMgr" -} - -func (this *MatchSeasonMgr) Init() { - for _, platform := range PlatformMgrSingleton.GetPlatforms() { - if platform.IdStr == DefaultPlatform { - continue - } - this.UpdateMatchSeasonId(platform.IdStr) - } -} - -func (this *MatchSeasonMgr) Update() { - this.SaveAllMatchSeasonData() -} - -func (this *MatchSeasonMgr) Shutdown() { - this.SaveAllMatchSeasonData() - module.UnregisteModule(this) -} - -func (this *MatchSeasonMgr) InterestClockEvent() int { - //TODO implement me - //panic("implement me") - return 1 << CLOCK_EVENT_MONTH -} - -func (this *MatchSeasonMgr) OnMonthTimer() { - logger.Logger.Info("(this *MatchSeasonMgr) OnMonthTimer") - for _, platform := range PlatformMgrSingleton.GetPlatforms() { - if platform.IdStr == DefaultPlatform { - continue - } - this.UpdateMatchSeasonId(platform.IdStr) - } -} - -func init() { - module.RegisteModule(MatchSeasonMgrSington, time.Minute*1, 0) - ClockMgrSington.RegisteSinker(MatchSeasonMgrSington) -} diff --git a/worldsrv/matchseasonrankmgr.go b/worldsrv/matchseasonrankmgr.go deleted file mode 100644 index d570bf8..0000000 --- a/worldsrv/matchseasonrankmgr.go +++ /dev/null @@ -1,379 +0,0 @@ -package main - -import ( - "github.com/globalsign/mgo/bson" - "math/rand" - "mongo.games.com/game/model" - "mongo.games.com/game/srvdata" - "mongo.games.com/goserver/core/basic" - "mongo.games.com/goserver/core/logger" - "mongo.games.com/goserver/core/module" - "mongo.games.com/goserver/core/task" - "sort" - "time" -) - -var MatchSeasonRankMgrSington = &MatchSeasonRankMgr{ - MatchSeasonRank: make(map[string][]*MatchSeasonRank), - MatchSeasonRankDirty: make(map[string]bool), - RobotMatchSeasonRankInit: make(map[string]bool), - RobotMatchSeasonRank: make(map[string][]*MatchSeasonRank), -} - -type MatchSeasonRankMgr struct { - BaseClockSinker - MatchSeasonRank map[string][]*MatchSeasonRank //平台 - MatchSeasonRankDirty map[string]bool - RobotMatchSeasonRankInit map[string]bool - RobotMatchSeasonRank map[string][]*MatchSeasonRank //平台 -} - -type MatchSeasonRank struct { - Id bson.ObjectId `bson:"_id"` - Platform string - SnId int32 - Name string - Lv int32 //段位 - UpdateTs int64 -} - -func (this *MatchSeasonRankMgr) UpdateMatchSeasonRank(p *Player, lv int32) { - logger.Logger.Trace("(this *MatchSeasonRankMgr) UpdateMatchSeasonRank: SnId: ", p.SnId, " lv: ", lv) - platform := p.Platform - msrs := this.GetMatchSeasonRank(platform) - if msrs == nil { - msrs = []*MatchSeasonRank{} - } - have := false - for _, msr := range msrs { - if msr.SnId == p.SnId { - msr.Lv = lv - msr.UpdateTs = time.Now().Unix() - have = true - break - } - } - if !have { - msr := &MatchSeasonRank{ - Id: bson.NewObjectId(), - Platform: platform, - SnId: p.SnId, - Name: p.Name, - Lv: lv, - UpdateTs: time.Now().Unix(), - } - msrs = append(msrs, msr) - } - - sort.Slice(msrs, func(i, j int) bool { - return msrs[i].Lv > msrs[j].Lv - }) - if len(msrs) > model.GameParamData.MatchSeasonRankMaxNum { - if msrs[len(msrs)-1].SnId != p.SnId { //上榜玩家有变化 - this.MatchSeasonRankDirty[platform] = true - } - msrs = append(msrs[:model.GameParamData.MatchSeasonRankMaxNum]) - } else { - this.MatchSeasonRankDirty[platform] = true - } - this.MatchSeasonRank[platform] = msrs -} - -func (this *MatchSeasonRankMgr) GetMatchSeasonRank(platform string) []*MatchSeasonRank { - logger.Logger.Trace("(this *MatchSeasonRankMgr) GetMatchSeasonRank: platform = ", platform) - return this.MatchSeasonRank[platform] -} - -func (this *MatchSeasonRankMgr) SetMatchSeasonRank(platform string, mss []*MatchSeasonRank) { - logger.Logger.Trace("(this *MatchSeasonRankMgr) SetMatchSeasonRank: mss = ", mss) - this.MatchSeasonRank[platform] = mss - this.MatchSeasonRankDirty[platform] = true -} - -// MatchSeasonRankInherit 段位继承 -func (this *MatchSeasonRankMgr) MatchSeasonRankInherit(platform string) { - msr := this.GetMatchSeasonRank(platform) - logger.Logger.Trace("(this *MatchSeasonRankMgr) MatchSeasonRankInherit: msr = ", msr) - if msr == nil { - return - } - for _, rank := range msr { - rank.Lv = MatchSeasonMgrSington.MatchSeasonInherit(rank.Lv) - } - this.SetMatchSeasonRank(platform, msr) -} - -func (this *MatchSeasonRankMgr) InitMatchSeasonRank(platform string) { - logger.Logger.Trace("(this *MatchSeasonRankMgr) InitMatchSeasonRank: ", platform) - if platform == DefaultPlatform { - return - } - if this.MatchSeasonRank[platform] != nil { - return - } - if this.MatchSeasonRank[platform] == nil { - logger.Logger.Trace("(this *MatchSeasonRankMgr) InitMatchSeasonRank: ", this.MatchSeasonRank[platform]) - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - ret, err := model.QueryMatchSeasonRank(platform) - logger.Logger.Trace("(this *MatchSeasonRankMgr) 1 QueryMatchSeasonRank: ", ret) - if err != nil { - return nil - } - return ret - }), task.CompleteNotifyWrapper(func(data interface{}, tt task.Task) { - var ret []*model.MatchSeasonRank - if data == nil || data.([]*model.MatchSeasonRank) == nil { //初始数据去log_matchseason里面取段位前n名 - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - retRank, err := model.QueryMatchSeason(platform) - logger.Logger.Trace("(this *MatchSeasonRankMgr) 1 QueryMatchSeason: ", ret) - if err != nil { - return nil - } - return retRank - }), task.CompleteNotifyWrapper(func(data interface{}, tt task.Task) { - var retRank []*model.MatchSeason - logger.Logger.Trace("(this *MatchSeasonRankMgr) 2 QueryMatchSeason: ", ret) - if data == nil || data.([]*model.MatchSeason) == nil { - ams := MatchSeasonMgrSington.GetAllMatchSeason() - if ams != nil { - for _, season := range ams { - if season.Platform == platform { - mms := &model.MatchSeason{ - Id: season.Id, - Platform: season.Platform, - SnId: season.SnId, - Name: season.Name, - SeasonId: season.SeasonId, - Lv: season.Lv, - LastLv: season.LastLv, - IsAward: season.IsAward, - AwardTs: season.AwardTs, - } - retRank = append(retRank, mms) - } - } - } - } else { - retRank = data.([]*model.MatchSeason) - } - if retRank != nil { - this.MatchSeasonRank[platform] = []*MatchSeasonRank{} - sort.Slice(retRank, func(i, j int) bool { - return retRank[i].Lv > retRank[j].Lv - }) - if len(retRank) > model.GameParamData.MatchSeasonRankMaxNum { - retRank = append(retRank[:model.GameParamData.MatchSeasonRankMaxNum]) - } - for i := 0; i < len(retRank); i++ { - season := retRank[i] - msr := &MatchSeasonRank{ - Id: season.Id, - Platform: season.Platform, - SnId: season.SnId, - Name: season.Name, - Lv: season.Lv, - UpdateTs: season.UpdateTs, - } - this.MatchSeasonRank[platform] = append(this.MatchSeasonRank[platform], msr) - this.MatchSeasonRankDirty[platform] = true - } - logger.Logger.Trace("(this *MatchSeasonRankMgr) 3 QueryMatchSeason: ", this.MatchSeasonRank[platform]) - } - })).StartByFixExecutor("platform:" + platform) - } else { - ret = data.([]*model.MatchSeasonRank) - this.MatchSeasonRank[platform] = []*MatchSeasonRank{} - for _, rank := range ret { - msr := &MatchSeasonRank{ - Id: rank.Id, - Platform: rank.Platform, - SnId: rank.SnId, - Name: rank.Name, - Lv: rank.Lv, - UpdateTs: rank.UpdateTs, - } - this.MatchSeasonRank[platform] = append(this.MatchSeasonRank[platform], msr) - } - logger.Logger.Trace("(this *MatchSeasonRankMgr) 3 QueryMatchSeasonRank: ", this.MatchSeasonRank[platform]) - } - })).StartByFixExecutor("platform:" + platform) - } -} - -// SaveMatchSeasonRank 保存排行榜 -func (this *MatchSeasonRankMgr) SaveMatchSeasonRank(platform string) { - logger.Logger.Trace("(this *MatchSeasonRankMgr) SaveMatchSeasonRank: ", platform) - msrp := this.MatchSeasonRank[platform] - if msrp != nil && this.MatchSeasonRankDirty[platform] { - this.MatchSeasonRankDirty[platform] = false - dirtyMsrs := []*model.MatchSeasonRank{} - for _, rank := range msrp { - msr := &model.MatchSeasonRank{ - Id: rank.Id, - Platform: rank.Platform, - SnId: rank.SnId, - Name: rank.Name, - Lv: rank.Lv, - UpdateTs: rank.UpdateTs, - } - dirtyMsrs = append(dirtyMsrs, msr) - } - if dirtyMsrs != nil && len(dirtyMsrs) > 0 { - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - model.UpsertMatchSeasonRank(platform, dirtyMsrs) - return nil - }), task.CompleteNotifyWrapper(func(data interface{}, tt task.Task) { - })).StartByFixExecutor("platform:" + platform) - } - } -} - -func (this *MatchSeasonRankMgr) SaveAllMatchSeasonRank() { - for _, platform := range PlatformMgrSingleton.GetPlatforms() { - if platform.IdStr == DefaultPlatform { - continue - } - this.SaveMatchSeasonRank(platform.IdStr) - } -} - -func (this *MatchSeasonRankMgr) CreateRobotLv() int32 { - Lv := int32(1) - now := time.Now() - first := now.Format("2006-01") + "-01" - start, _ := time.ParseInLocation("2006-01-02", first, time.Local) - diffUnix := now.Unix() - start.Unix() - diffDay := diffUnix/int64(24*60*60) + 1 - data := srvdata.PBDB_MatchRankMgr.GetData(int32(diffDay)) - if data != nil && data.RankStar != nil && len(data.RankStar) > 0 { - diff := data.RankStar[1] - data.RankStar[0] - min := data.RankStar[0] - if data.RankStar[0] > data.RankStar[1] { - diff = data.RankStar[0] - data.RankStar[1] - min = data.RankStar[1] - } - Lv = rand.Int31n(diff) + min - } - return Lv -} - -func (this *MatchSeasonRankMgr) CreateRobotMatchSeasonRank(platform string) { - if this.RobotMatchSeasonRankInit[platform] { - return - } - this.RobotMatchSeasonRank[platform] = []*MatchSeasonRank{} - for _, player := range PlayerMgrSington.snidMap { - if player != nil && player.IsRob { - msr := &MatchSeasonRank{ - Platform: platform, - SnId: player.SnId, - Name: player.Name, - Lv: this.CreateRobotLv(), - } - this.RobotMatchSeasonRank[platform] = append(this.RobotMatchSeasonRank[platform], msr) - } - if len(this.RobotMatchSeasonRank[platform]) >= model.GameParamData.MatchSeasonRankMaxNum { - break - } - } - if len(this.RobotMatchSeasonRank[platform]) < model.GameParamData.MatchSeasonRankMaxNum { - localSnids := []int32{102917700, 61096000, 21058800, 47291500, 58562600, 22127000, 80639700, 49475400, 60569500, 54746600, 46797900, 88659800, 61118200, 68773200, 92010700, 13305900, 68143500, 86379100, 76177100, 95050900, 23954400, 52524000, 63618100, 31808400, 26929400, 108083700, 50751500, 92179900, 60327700, 69582700, 80156500, 30808000, 53806700, 53235700, 50049200, 30465400, 76672700, 69638500, 12351800, 48705200, 98920500, 32158900, 33519000, 42915300, 30811200, 77037600, 65779800, 22148100, 59819100, 46374600} - pool := srvdata.PBDB_NameMgr.Datas.GetArr() - cnt := int32(len(pool)) - for _, snid := range localSnids { - msr := &MatchSeasonRank{ - Platform: platform, - SnId: snid, - Name: "Guest", - Lv: this.CreateRobotLv(), - } - if cnt > 0 { - msr.Name = pool[rand.Int31n(cnt)].GetName() - } - this.RobotMatchSeasonRank[platform] = append(this.RobotMatchSeasonRank[platform], msr) - if len(this.RobotMatchSeasonRank[platform]) >= model.GameParamData.MatchSeasonRankMaxNum { - break - } - } - } - this.RobotMatchSeasonRankInit[platform] = true -} - -func (this *MatchSeasonRankMgr) GetRobotMatchSeasonRank(platform string) []*MatchSeasonRank { - logger.Logger.Trace("GetRobotMatchSeasonRank: ", platform) - if !this.RobotMatchSeasonRankInit[platform] { - this.CreateRobotMatchSeasonRank(platform) - } - if this.RobotMatchSeasonRank == nil || this.RobotMatchSeasonRank[platform] == nil || len(this.RobotMatchSeasonRank[platform]) < model.GameParamData.MatchSeasonRankMaxNum { - this.CreateRobotMatchSeasonRank(platform) - } - return this.RobotMatchSeasonRank[platform] -} - -func (this *MatchSeasonRankMgr) UpdateRobotMatchSeasonRank(platform string) { - logger.Logger.Trace("UpdateRobotMatchSeasonRank: ", platform) - rmsr := this.GetRobotMatchSeasonRank(platform) - if rmsr != nil { - for _, rank := range rmsr { - diff := rand.Int31n(7) - 3 - rank.Lv += diff - } - } -} - -func (this *MatchSeasonRankMgr) ModuleName() string { - return "MatchSeasonRankMgr" -} - -func (this *MatchSeasonRankMgr) Init() { - for _, platform := range PlatformMgrSingleton.GetPlatforms() { - if platform.IdStr == DefaultPlatform { - continue - } - this.InitMatchSeasonRank(platform.IdStr) - this.RobotMatchSeasonRankInit[platform.IdStr] = false - } -} - -func (this *MatchSeasonRankMgr) Update() { - this.SaveAllMatchSeasonRank() -} - -func (this *MatchSeasonRankMgr) Shutdown() { - this.SaveAllMatchSeasonRank() - module.UnregisteModule(this) -} - -func (this *MatchSeasonRankMgr) InterestClockEvent() int { - //TODO implement me - //panic("implement me") - return 1< thr.NextCoin { - thr.Coin = thr.NextCoin - } else { - thr.NextCoin = thr.Coin - } - } - } - } - } - - this.SaveAll(false) -} - -func (this *ThirdPlatformMgr) SaveAll(bImm bool) { - for _, p := range this.Platforms { - if p != nil && p.dirty { - pCopy := p.Clone() - if pCopy != nil { - if bImm { - err := model.UpdateThirdPlatform(pCopy.PlatformOfThirdPlatform) - if err != nil { - logger.Logger.Warnf("UpdateThirdPlatform err:%v", err) - } else { - p.dirty = false - } - } else { - p.dirty = false - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - return model.UpdateThirdPlatform(pCopy.PlatformOfThirdPlatform) - }), nil, "UpdateThirdPlatform").StartByFixExecutor("ThirdPlatform") - } - } - } - } -} - -func init() { - //module.RegisteModule(ThirdPlatformMgrSington, time.Minute*5, 0) - //ClockMgrSington.RegisteSinker(ThirdPlatformMgrSington) -} diff --git a/worldsrv/tmmatch.go b/worldsrv/tmmatch.go index ab745a0..0676ae0 100644 --- a/worldsrv/tmmatch.go +++ b/worldsrv/tmmatch.go @@ -142,12 +142,7 @@ func (tm *TmMatch) CreateRobotGrades(round int) { } if player != nil && player.IsRob { snids = append(snids, player.SnId) - ms := MatchSeasonMgrSington.GetMatchSeason(player.SnId) - lv := MatchSeasonRankMgrSington.CreateRobotLv() - if ms != nil { - lv = ms.Lv - } - lvs = append(lvs, lv) + lvs = append(lvs, 1) roleId := int32(2000001) if player.Roles != nil && player.Roles.ModId != 0 { roleId = player.Roles.ModId @@ -167,8 +162,7 @@ func (tm *TmMatch) CreateRobotGrades(round int) { tmpSnid = rand.Int31n(max-min) + min } snids = append(snids, tmpSnid) - lv := MatchSeasonRankMgrSington.CreateRobotLv() - lvs = append(lvs, lv) + lvs = append(lvs, 1) roleIds = append(roleIds, int32(2000001)) } } diff --git a/worldsrv/tournament.go b/worldsrv/tournament.go index 4b51d27..c3dddeb 100644 --- a/worldsrv/tournament.go +++ b/worldsrv/tournament.go @@ -728,17 +728,12 @@ func (this *Tournament) GetTm(sortId int64) *TmMatch { // CreatePlayerMatchContext 创建玩家比赛信息 func (this *Tournament) CreatePlayerMatchContext(p *Player, m *TmMatch, seq int) *PlayerMatchContext { - ms := MatchSeasonMgrSington.GetMatchSeason(p.SnId) - var lv int32 - if ms != nil { - lv = ms.Lv - } roleId := int32(2000001) if p.Roles != nil { roleId = p.Roles.ModId } - mc := NewMatchContext(p, m, 1000, p.SnId, lv, roleId, seq) + mc := NewMatchContext(p, m, 1000, p.SnId, 1, roleId, seq) if mc != nil { if this.players[m.SortId] == nil { this.players[m.SortId] = make(map[int32]*PlayerMatchContext) diff --git a/worldsrv/trascate_webapi.go b/worldsrv/trascate_webapi.go index 58dad72..eb8979d 100644 --- a/worldsrv/trascate_webapi.go +++ b/worldsrv/trascate_webapi.go @@ -26,7 +26,6 @@ import ( "mongo.games.com/game/model" "mongo.games.com/game/proto" "mongo.games.com/game/protocol/bag" - "mongo.games.com/game/protocol/gamehall" loginproto "mongo.games.com/game/protocol/login" playerproto "mongo.games.com/game/protocol/player" "mongo.games.com/game/protocol/qpapi" @@ -34,7 +33,6 @@ import ( "mongo.games.com/game/protocol/telegramapi" webapiproto "mongo.games.com/game/protocol/webapi" "mongo.games.com/game/srvdata" - "mongo.games.com/game/webapi" ) const ( @@ -4024,202 +4022,7 @@ func init() { return common.ResponseTag_TransactYield, pack } })) - //更新用户三方的金币到游戏服务器 - WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/thd/UpdatePlayerCoin", WebAPIHandlerWrapper( - func(tNode *transact.TransNode, params []byte) (int, proto.Message) { - msg := &webapiproto.ASThdUpdatePlayerCoin{} - pack := &webapiproto.SAThdUpdatePlayerCoin{} - err := proto.Unmarshal(params, msg) - if err != nil { - pack.Tag = webapiproto.TagCode_FAILED - pack.Msg = "数据序列化失败" + err.Error() - return common.ResponseTag_ParamError, pack - } - member_snid := msg.Snid - BaseGameId := int(msg.BaseGameID) - platform := msg.Platform - plt := webapi.ThridPlatformMgrSington.FindPlatformByPlatformBaseGameId(BaseGameId) - if plt == nil { - pack.Tag = webapiproto.TagCode_FAILED - pack.Msg = "三方不存在" - return common.ResponseTag_ParamError, pack - } - - p := PlayerMgrSington.GetPlayerBySnId(int32(member_snid)) - - if p != nil { - if len(platform) > 0 && p.Platform != platform { - pack.Tag = webapiproto.TagCode_FAILED - pack.Msg = "Platform is err." - return common.ResponseTag_ParamError, pack - } - //请求太快,不做处理,给API减轻一些压力 - if p.thridBalanceRefreshReqing { - pack.Tag = webapiproto.TagCode_FAILED - pack.Msg = "刷新频率太高,稍等" - return common.ResponseTag_ParamError, pack - } - - p.thridBalanceRefreshReqing = true - gainway := common.GainWay_Transfer_Thrid2System - //isSucces := true - timeout := false - timeStamp := time.Now().UnixNano() - noBaseGameId := false - pfConfig := PlatformMgrSingleton.GetPlatform(p.Platform) - if pfConfig != nil { - if pfConfig.ThirdGameMerchant == nil || pfConfig.ThirdGameMerchant[int32(plt.GetPlatformBase().BaseGameID)] == 0 { - // noBaseGameId = true - } - } - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - var err error - var coinLog *model.PayCoinLog - var coinlogex *model.CoinLog - //var apiHasTransfer = false - remark := "手动刷新" + plt.GetPlatformBase().Name + "转出到系统" - amount := int64(0) - - if pfConfig == nil { - return int64(-2) - } - - if noBaseGameId { - return int64(-3) - } - - oper := plt.GetPlatformBase().Name + "2System" - err, amount = plt.ReqLeaveGame(p.SnId, fmt.Sprintf("%v", BaseGameId), p.Ip, p.Platform, p.Channel) - if err != nil { - goto Rollback - } - if amount <= 0 { - return int64(-4) - } - if plt.GetPlatformBase().TransferInteger { - amount = (amount / 100) * 100 - if amount <= 0 { - return int64(-4) - } - } - - //apiHasTransfer = true - coinLog = model.NewPayCoinLog(time.Now().UnixNano(), int32(p.SnId), amount, int32(gainway), oper, model.PayCoinLogType_Coin, 0) - - // err = model.InsertPayCoinLogs(coinLog) - err = model.InsertPayCoinLogs(p.Platform, coinLog) - if err != nil { - logger.Logger.Tracef("player snid=%v at %v model.InsertPayCoinLogs() err: %v", p.SnId, plt.GetPlatformBase().Name, err) - goto Rollback - } - timeStamp = coinLog.TimeStamp - coinlogex = model.NewCoinLogEx(&model.CoinLogParam{ - Platform: p.Platform, - SnID: p.SnId, - ChangeType: common.BillTypeCoin, - ChangeNum: amount, - RemainNum: p.Coin + amount, - Add: 0, - LogType: int32(gainway), - GameID: 0, - GameFreeID: 0, - BaseCoin: 0, - Operator: oper, - Remark: remark, - }) - err = model.InsertCoinLog(coinlogex) - if err != nil { - logger.Logger.Tracef("player snid=%v at %v model.InsertCoinLogs() err: %v", p.SnId, plt.GetPlatformBase().Name, err) - goto Rollback - } - return amount - Rollback: - if coinLog != nil { - - model.RemovePayCoinLog(p.Platform, coinLog.LogId) - } - if coinlogex != nil { - model.RemoveCoinLogOne(coinlogex.Platform, coinlogex.LogId) - } - if timeout { - logger.Logger.Errorf("web player snid=%v CSThridBalanceRefreshHandler transfer %v to %v timeout!", p.SnId, -amount, plt.GetPlatformBase().Name) - return int64(-1) - } - //if apiHasTransfer { - // err, timeout = plt.ReqTransfer(p.SnId, thirdBalance, strconv.FormatInt(time.Now().UnixNano(), 10), p.Platform, p.Channel) - // if timeout { - // logger.Logger.Errorf("web player snid=%v CSThridBalanceRefreshHandler transfer rollback %v to %v timeout!", p.SnId, thirdBalance, plt.GetPlatformBase().Name) - // } - //} - return int64(-1) - }), task.CompleteNotifyWrapper(func(data interface{}, tt task.Task) { - amount := data.(int64) - statePack := &gamehall.SCThridGameBalanceUpdateState{} - if amount < 0 { - pack.Tag = webapiproto.TagCode_FAILED - // return common.ResponseTag_ParamError, pack - pack.Msg = "刷新金币失败" - if amount == -3 { - pack.Msg = "三方关闭中" - } - statePack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Error_Game - p.thridBalanceReqIsSucces = false - //isSucces = false - logger.Logger.Tracef("player snid=%v at platform=%v CSThridBalanceRefreshHandler third->system transfer fail", p.SnId, plt.GetPlatformBase().Name) - } else if amount > 0 { - pack.Tag = webapiproto.TagCode_SUCCESS - pack.Msg = "刷新金币成功" - statePack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Sucess_Game - p.thridBalanceReqIsSucces = true - - p.Coin += amount - p.SetPayTs(timeStamp) - ThirdPlatformMgrSington.AddThirdPlatformCoin(p.Platform, plt.GetPlatformBase().Tag, amount) - p.dirty = true - logger.Logger.Tracef("player snid=%v at platform=%v CSThridBalanceRefreshHandler third->system transfer succes", p.SnId, plt.GetPlatformBase().Name) - //if !model.GameParamData.CloseOftenSavePlayerData { - // p.Time2Save() - //} - } - - p.diffData.Coin = -1 - p.SendDiffData() - //statePack := &protocol.SCThridGameBalanceUpdateState{} - //pack := &protocol.SCThridGameBalanceUpdate{} - //if isSucces { - // pack.OpRetCode = protocol.OpResultCode_OPRC_Sucess.Enum() - // p.thridBalanceReqIsSucces = true - // statePack.OpRetCode = protocol.OpResultCode_OPRC_Sucess.Enum() - //} - - p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_THRIDGAMEBALANCEUPDATESTATE), statePack) - p.dirty = true - - //pack.Coin = proto.Int64(p.Coin) - //p.SendToClient(int(protocol.MmoPacketID_PACKET_SC_THRIDGAMEBALANCEUPDATE), pack) - if p.thrscene != 0 { - p.thrscene = 0 - p.scene = nil - } - p.thridBalanceRefreshReqing = false - logger.Logger.Tracef("SendToClient() player snid=%v at CSThridBalanceRefreshHandler() pack:%v", p.SnId, pack.String()) - - //dataResp := &common.M2GWebApiResponse{} - //dataResp.Body, _ = resp.Marshal() - tNode.TransRep.RetFiels = pack - tNode.Resume() - - }), "ThrUpdatePlayerCoin").Start() - - } else { - pack.Tag = webapiproto.TagCode_FAILED - pack.Msg = "暂不支持用户不在线刷新" - return common.ResponseTag_ParamError, pack - } - return common.ResponseTag_TransactYield, pack - })) - //支付回调 WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/pay/CallbackPayment", WebAPIHandlerWrapper( func(tNode *transact.TransNode, params []byte) (int, proto.Message) { msg := &webapiproto.ASCallbackPayment{}