This commit is contained in:
liwei1dao 2022-11-15 19:13:05 +08:00
commit 2ab6d09c06
3 changed files with 34 additions and 88 deletions

View File

@ -71,7 +71,9 @@ func (this *apiComp) ChallengeOver(session comm.IUserSession, req *pb.VikingChal
} }
mapData["boss"] = viking.Boss mapData["boss"] = viking.Boss
} }
if req.Report != nil {
costTime = req.Report.Costtime
}
// 耗时校验 当前战斗胜利时间消耗小于之前刷新数据 // 耗时校验 当前战斗胜利时间消耗小于之前刷新数据
code, _ = this.module.battle.CheckBattleReport(session, req.Report) code, _ = this.module.battle.CheckBattleReport(session, req.Report)
if code != pb.ErrorCode_Success { if code != pb.ErrorCode_Success {
@ -88,11 +90,9 @@ func (this *apiComp) ChallengeOver(session comm.IUserSession, req *pb.VikingChal
mapData["leftCount"] = viking.LeftCount mapData["leftCount"] = viking.LeftCount
viking.ChallengeCount++ viking.ChallengeCount++
mapData["challengeCount"] = viking.ChallengeCount mapData["challengeCount"] = viking.ChallengeCount
// 时间写入
key := strconv.Itoa(int(req.BossId)) + "_" + strconv.Itoa(int(req.Difficulty)) 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 viking.BossTime[key] = costTime
szLine := make([]*pb.LineUp, 5) szLine := make([]*pb.LineUp, 5)
Leadpos := 0 Leadpos := 0
@ -111,7 +111,23 @@ func (this *apiComp) ChallengeOver(session comm.IUserSession, req *pb.VikingChal
} }
// 写入排行榜 // 写入排行榜
objID := "" 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()) userinfo := this.module.ModuleUser.GetUser(session.GetUserId())
new := &pb.DBVikingRank{ new := &pb.DBVikingRank{
Id: primitive.NewObjectID().Hex(), Id: primitive.NewObjectID().Hex(),
@ -126,33 +142,16 @@ func (this *apiComp) ChallengeOver(session comm.IUserSession, req *pb.VikingChal
CostTime: costTime, CostTime: costTime,
} }
objID = new.Id objID = new.Id
this.module.modulerank.AddList(session.GetUserId(), new.Id, new) this.module.modulerank.AddRankList(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.SetRankListData("vikingRank"+strconv.Itoa(int(req.BossId)), req.Difficulty<<16+costTime, objID) this.module.modulerank.SetRankListData("vikingRank"+strconv.Itoa(int(req.BossId)), req.Difficulty<<16+costTime, objID)
} }
//}
mapData["bossTime"] = viking.BossTime // 更新时间 mapData["bossTime"] = viking.BossTime // 更新时间
if newChallenge { // 新关卡挑战通过 发放首通奖励 if newChallenge { // 新关卡挑战通过 发放首通奖励
if code = this.module.DispenseRes(session, cfg.Firstprize, true); code != pb.ErrorCode_Success { if code = this.module.DispenseRes(session, cfg.Firstprize, true); code != pb.ErrorCode_Success {
return return
} }
viking.Boss[req.BossId] += 1
mapData["boss"] = viking.Boss
for _, v := range cfg.Firstprize { for _, v := range cfg.Firstprize {
asset = append(asset, &pb.UserAssets{ asset = append(asset, &pb.UserAssets{
A: v.A, A: v.A,

View File

@ -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}) session.SendMsg(string(this.module.GetType()), VikingRankListResp, &pb.VikingRankListResp{Ranks: szRank})

View File

@ -9,7 +9,6 @@ import (
"go_dreamfactory/pb" "go_dreamfactory/pb"
"github.com/go-redis/redis/v8" "github.com/go-redis/redis/v8"
"go.mongodb.org/mongo-driver/bson/primitive"
) )
type ModelRank struct { type ModelRank struct {
@ -23,22 +22,13 @@ func (this *ModelRank) Init(service core.IService, module core.IModule, comp cor
this.moduleViking = module.(*Viking) this.moduleViking = module.(*Viking)
return return
} }
func (this *ModelRank) AddRank(uId string, data *pb.DBVikingRank) (err error) { func (this *ModelRank) AddRankList(uId string, id string, data *pb.DBVikingRank) (err error) {
if err = this.Add(uId, data); err != nil { if err = this.AddList(uId, id, data); err != nil {
return return
} }
return nil 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) { func (this *ModelRank) ChangeUserRank(uid string, objId string, value map[string]interface{}) (err error) {
if len(value) == 0 { 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) 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 { func (this *ModelRank) getVikingRankList(uid string) []*pb.DBVikingRank {
ranks := make([]*pb.DBVikingRank, 0) ranks := make([]*pb.DBVikingRank, 0)
@ -72,42 +47,6 @@ func (this *ModelRank) getVikingRankList(uid string) []*pb.DBVikingRank {
return ranks 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 { func (this *ModelRank) getVikingRankListByBossType(uid string, bossType int32) *pb.DBVikingRank {
ranks := make([]*pb.DBVikingRank, 0) ranks := make([]*pb.DBVikingRank, 0)
err := this.GetList(uid, &ranks) err := this.GetList(uid, &ranks)