From ccee20582a535bb0bf060c820ef4e5da34860ca9 Mon Sep 17 00:00:00 2001 From: meixiongfeng <766881921@qq.com> Date: Tue, 15 Nov 2022 18:44:21 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=A5=BD=E5=8F=8B?= =?UTF-8?q?=E6=88=98=E6=96=97=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/viking/api_ranklist.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/modules/viking/api_ranklist.go b/modules/viking/api_ranklist.go index e50352fef..14d4bbd1e 100644 --- a/modules/viking/api_ranklist.go +++ b/modules/viking/api_ranklist.go @@ -51,6 +51,14 @@ func (this *apiComp) RankList(session comm.IUserSession, req *pb.VikingRankListR } } } + } else { + uids := this.friend.GetFriendList(session.GetUserId()) + for _, id := range uids { + rankData := this.module.modulerank.getVikingRankListByBossType(id, req.BoosType) + if rankData != nil { + szRank = append(szRank, rankData) + } + } } session.SendMsg(string(this.module.GetType()), VikingRankListResp, &pb.VikingRankListResp{Ranks: szRank}) From f9d974a6c3e810282748e55b6ee2b6ff0e945428 Mon Sep 17 00:00:00 2001 From: meixiongfeng <766881921@qq.com> Date: Tue, 15 Nov 2022 18:44:32 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=A5=BD=E5=8F=8B?= =?UTF-8?q?=E6=88=98=E6=96=97=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/viking/api_challengeover.go | 49 +++++++++++----------- modules/viking/model_rank.go | 65 +---------------------------- 2 files changed, 26 insertions(+), 88 deletions(-) diff --git a/modules/viking/api_challengeover.go b/modules/viking/api_challengeover.go index f96ab494d..e91fa32e7 100644 --- a/modules/viking/api_challengeover.go +++ b/modules/viking/api_challengeover.go @@ -71,7 +71,9 @@ func (this *apiComp) ChallengeOver(session comm.IUserSession, req *pb.VikingChal } mapData["boss"] = viking.Boss } - + if req.Report != nil { + costTime = req.Report.Costtime + } // 耗时校验 当前战斗胜利时间消耗小于之前刷新数据 code, _ = this.module.battle.CheckBattleReport(session, req.Report) if code != pb.ErrorCode_Success { @@ -88,11 +90,9 @@ func (this *apiComp) ChallengeOver(session comm.IUserSession, req *pb.VikingChal mapData["leftCount"] = viking.LeftCount viking.ChallengeCount++ mapData["challengeCount"] = viking.ChallengeCount - - // 时间写入 key := strconv.Itoa(int(req.BossId)) + "_" + strconv.Itoa(int(req.Difficulty)) - //if t, ok := viking.BossTime[key]; ok { - if viking.BossTime[key] > costTime || viking.BossTime[key] == 0 { // 刷新记录 + + if viking.BossTime[key] > costTime || viking.BossTime[key] == 0 && req.Difficulty >= viking.Boss[req.BossId] { // 刷新记录 viking.BossTime[key] = costTime szLine := make([]*pb.LineUp, 5) Leadpos := 0 @@ -111,7 +111,23 @@ func (this *apiComp) ChallengeOver(session comm.IUserSession, req *pb.VikingChal } // 写入排行榜 objID := "" - if newChallenge { // 插入 + bFind := false + ranks := this.module.modulerank.getVikingRankList(session.GetUserId()) + for _, v := range ranks { + if v.Bosstype == req.BossId { + mapRankData := make(map[string]interface{}, 0) + mapRankData["difficulty"] = req.Difficulty + mapRankData["bosstype"] = req.BossId + mapRankData["Leadpos"] = Leadpos + mapRankData["line"] = szLine + mapRankData["costTime"] = costTime + this.module.modulerank.ChangeUserRank(session.GetUserId(), v.Id, mapRankData) + objID = v.Id + bFind = true + break + } + } + if !bFind { userinfo := this.module.ModuleUser.GetUser(session.GetUserId()) new := &pb.DBVikingRank{ Id: primitive.NewObjectID().Hex(), @@ -126,33 +142,16 @@ func (this *apiComp) ChallengeOver(session comm.IUserSession, req *pb.VikingChal CostTime: costTime, } objID = new.Id - this.module.modulerank.AddList(session.GetUserId(), new.Id, new) - } else { // 更新数据 - ranks := this.module.modulerank.getVikingRankList(session.GetUserId()) - for _, v := range ranks { - if v.Bosstype == req.BossId && v.Difficulty == req.Difficulty { - mapRankData := make(map[string]interface{}, 0) - mapRankData["difficulty"] = req.Difficulty - mapRankData["bosstype"] = req.BossId - mapRankData["Leadpos"] = Leadpos - mapRankData["line"] = szLine - mapRankData["costTime"] = costTime - this.module.modulerank.ChangeUserRank(session.GetUserId(), v.Id, mapRankData) - objID = v.Id - break - } - } + this.module.modulerank.AddRankList(session.GetUserId(), new.Id, new) } this.module.modulerank.SetRankListData("vikingRank"+strconv.Itoa(int(req.BossId)), req.Difficulty<<16+costTime, objID) } - //} mapData["bossTime"] = viking.BossTime // 更新时间 if newChallenge { // 新关卡挑战通过 发放首通奖励 if code = this.module.DispenseRes(session, cfg.Firstprize, true); code != pb.ErrorCode_Success { return } - viking.Boss[req.BossId] += 1 - mapData["boss"] = viking.Boss + for _, v := range cfg.Firstprize { asset = append(asset, &pb.UserAssets{ A: v.A, diff --git a/modules/viking/model_rank.go b/modules/viking/model_rank.go index 381153dbb..3feda53cf 100644 --- a/modules/viking/model_rank.go +++ b/modules/viking/model_rank.go @@ -9,7 +9,6 @@ import ( "go_dreamfactory/pb" "github.com/go-redis/redis/v8" - "go.mongodb.org/mongo-driver/bson/primitive" ) type ModelRank struct { @@ -23,22 +22,13 @@ func (this *ModelRank) Init(service core.IService, module core.IModule, comp cor this.moduleViking = module.(*Viking) return } -func (this *ModelRank) AddRank(uId string, data *pb.DBVikingRank) (err error) { - if err = this.Add(uId, data); err != nil { +func (this *ModelRank) AddRankList(uId string, id string, data *pb.DBVikingRank) (err error) { + if err = this.AddList(uId, id, data); err != nil { return } return nil } -func (this *ModelRank) GetUserRandData(uid string) (result *pb.DBVikingRank, err error) { - result = &pb.DBVikingRank{} - if err = this.Get(uid, result); err != nil { - return - } - err = nil - return result, err -} - // 更新排行榜数据 func (this *ModelRank) ChangeUserRank(uid string, objId string, value map[string]interface{}) (err error) { if len(value) == 0 { @@ -47,21 +37,6 @@ func (this *ModelRank) ChangeUserRank(uid string, objId string, value map[string return this.ChangeList(uid, objId, value) } -func (this *ModelRank) GetRankData(bossType int32) (data []*pb.DBVikingRank, err error) { - tmpdata := make([]*pb.DBVikingRank, 0) - data = make([]*pb.DBVikingRank, 0) - err = this.Redis.LRange(comm.TableVikingRankList, 0, -1, &tmpdata) - if err == nil { - for _, v := range tmpdata { - if v.Bosstype == bossType { - data = append(data, v) - } - } - } - - return -} - // 获取排行榜数据 func (this *ModelRank) getVikingRankList(uid string) []*pb.DBVikingRank { ranks := make([]*pb.DBVikingRank, 0) @@ -72,42 +47,6 @@ func (this *ModelRank) getVikingRankList(uid string) []*pb.DBVikingRank { return ranks } -func (this *ModelRank) updateVikingRankList(session comm.IUserSession, difficulty int32, boosType int32, Leadpos int32, line []*pb.LineUp, costTime int32) { - // 查询是不是更新数据 - ranks := this.getVikingRankList(session.GetUserId()) - bfind := false - for _, v := range ranks { - if v.Bosstype == boosType && v.Difficulty == difficulty { - mapRankData := make(map[string]interface{}, 0) - mapRankData["difficulty"] = difficulty - mapRankData["bosstype"] = boosType - mapRankData["Leadpos"] = Leadpos - mapRankData["line"] = line - mapRankData["costTime"] = costTime - this.ChangeUserRank(session.GetUserId(), v.Id, mapRankData) - bfind = true - break - } - } - - if !bfind { - userinfo := this.moduleViking.ModuleUser.GetUser(session.GetUserId()) - new := &pb.DBVikingRank{ - Id: primitive.NewObjectID().Hex(), - Uid: session.GetUserId(), - Difficulty: difficulty, - Bosstype: boosType, - Nickname: userinfo.Name, - Icon: "", - Lv: userinfo.Lv, - Leadpos: Leadpos, - Line: line, - CostTime: costTime, - } - this.AddList(session.GetUserId(), new.Id, new) - } - return -} func (this *ModelRank) getVikingRankListByBossType(uid string, bossType int32) *pb.DBVikingRank { ranks := make([]*pb.DBVikingRank, 0) err := this.GetList(uid, &ranks)