diff --git a/comm/const.go b/comm/const.go index b8d9a4989..31836d65c 100644 --- a/comm/const.go +++ b/comm/const.go @@ -130,8 +130,8 @@ const ( // TableHunting = "hunting" // 维京远征排行榜 - TableHuntingRank = "huntingrank" - + TableHuntingRank = "huntingrank" + TableHuntingRankList = "huntingrankList" // 支线剧情任务 TableLinestory = "linestory" diff --git a/modules/hero/model_record.go b/modules/hero/model_record.go index 14f6904ae..5f386fc8e 100644 --- a/modules/hero/model_record.go +++ b/modules/hero/model_record.go @@ -3,7 +3,6 @@ package hero import ( "go_dreamfactory/comm" "go_dreamfactory/lego/core" - "go_dreamfactory/lego/sys/log" "go_dreamfactory/lego/sys/redis" "go_dreamfactory/modules" "go_dreamfactory/pb" @@ -21,16 +20,6 @@ func (this *ModelRecord) Init(service core.IService, module core.IModule, comp c return } -//获取用户 -func (this *ModelRecord) getUserSession(uid string) (cuser *pb.CacheUser) { - cuser = &pb.CacheUser{} - if err := this.Get(uid, cuser); err != nil { - log.Errorf("GetUserSession err:%v", err) - return - } - return -} - //获取用户通过扩展表 func (this *ModelRecord) GetHeroRecord(uid string) (result *pb.DBHeroRecord, err error) { result = &pb.DBHeroRecord{} diff --git a/modules/hunting/api_challenge.go b/modules/hunting/api_challenge.go index fd3e31254..e651f31e4 100644 --- a/modules/hunting/api_challenge.go +++ b/modules/hunting/api_challenge.go @@ -65,7 +65,7 @@ func (this *apiComp) Challenge(session comm.IUserSession, req *pb.HuntingChallen mapData["boss"] = hunting.Boss //hunting.BossTime[] = 0 // todo 耗时 mapData["challengeTime"] = hunting.BossTime - + this.module.modulerank.updatehuntingRankList(session, req.Difficulty, req.BossType) } // 耗时校验 当前战斗胜利时间消耗小于之前刷新数据 hunting.ChallengeCount++ @@ -77,15 +77,6 @@ func (this *apiComp) Challenge(session comm.IUserSession, req *pb.HuntingChallen return } - mapRankData := make(map[string]interface{}, 0) - mapRankData["difficulty"] = req.Difficulty - mapRankData["bosstype"] = req.BossType - mapRankData["uid"] = session.GetUserId() - userinfo := this.module.ModuleUser.GetUser(session.GetUserId()) - mapRankData["nickname"] = userinfo.Name - mapRankData["lv"] = userinfo.Lv - mapRankData["costTime"] = 120 - this.module.modulerank.ChangeUserRank(session.GetUserId(), mapRankData) for k := range hunting.Boss { hunting.Boss[k] += 1 } diff --git a/modules/hunting/model_rank.go b/modules/hunting/model_rank.go index 9a27f5946..7a3968639 100644 --- a/modules/hunting/model_rank.go +++ b/modules/hunting/model_rank.go @@ -3,30 +3,21 @@ package hunting import ( "go_dreamfactory/comm" "go_dreamfactory/lego/core" - "go_dreamfactory/lego/sys/redis" "go_dreamfactory/modules" "go_dreamfactory/pb" + + "go.mongodb.org/mongo-driver/bson/primitive" ) type ModelRank struct { modules.MCompModel - moduleUser *Hunting + moduleHunting *Hunting } func (this *ModelRank) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) { this.TableName = comm.TableHuntingRank err = this.MCompModel.Init(service, module, comp, options) - this.moduleUser = module.(*Hunting) - return -} - -//获取用户 -func (this *ModelRank) getUserSession(uid string) (cuser *pb.CacheUser) { - cuser = &pb.CacheUser{} - if err := this.Get(uid, cuser); err != nil { - this.moduleUser.Errorf("GetUserSession err:%v", err) - return - } + this.moduleHunting = module.(*Hunting) return } @@ -37,27 +28,66 @@ func (this *ModelRank) AddRank(uId string, data *pb.DBHuntingRank) (err error) { return nil } -func (this *ModelRank) GetUserRandData(uid string) (result *pb.DBHuntingRank, err error) { - result = &pb.DBHuntingRank{} - if err = this.Get(uid, result); err != nil && redis.RedisNil != err { - return - } - err = nil - return result, err -} +// func (this *ModelRank) GetUserRandData(uid string) (result *pb.DBHuntingRank, err error) { +// result = &pb.DBHuntingRank{} +// if err = this.Get(uid, result); err != nil && redis.RedisNil != err { +// return +// } +// err = nil +// return result, err +// } // 更新排行榜数据 -func (this *ModelRank) ChangeUserRank(uid 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 { return nil } - return this.Change(uid, value) + return this.ChangeList(uid, objId, value) } // 获取排行榜数据 func (this *ModelRank) GetRankData() (data []*pb.DBHuntingRank, err error) { data = make([]*pb.DBHuntingRank, 0) - err = this.Redis.LRange(comm.TableHuntingRank, 0, -1, &data) // 0 表示列表的第一个元素 -1 表示列表的最后一个元素 + err = this.Redis.LRange(comm.TableHuntingRankList, 0, -1, &data) // 0 表示列表的第一个元素 -1 表示列表的最后一个元素 return } + +func (this *ModelRank) getHuntingRankList(uid string) []*pb.DBHuntingRank { + ranks := make([]*pb.DBHuntingRank, 0) + err := this.GetList(uid, &ranks) + if err != nil { + return nil + } + return ranks +} +func (this *ModelRank) updatehuntingRankList(session comm.IUserSession, difficulty int32, boosType int32) { + // 查询是不是更新数据 + ranks := this.getHuntingRankList(session.GetUserId()) + bfind := false + for _, v := range ranks { + if v.Bosstype == boosType { + mapRankData := make(map[string]interface{}, 0) + mapRankData["difficulty"] = difficulty + mapRankData["bosstype"] = boosType + this.ChangeUserRank(session.GetUserId(), v.Id, mapRankData) + bfind = true + break + } + } + if !bfind { + userinfo := this.moduleHunting.ModuleUser.GetUser(session.GetUserId()) + new := &pb.DBHuntingRank{ + Id: primitive.NewObjectID().Hex(), + Uid: session.GetUserId(), + Difficulty: difficulty, + Bosstype: boosType, + Nickname: userinfo.Name, + Icon: "", + Lv: userinfo.Lv, + CostTime: 111, + } + this.AddList(session.GetUserId(), new.Id, new) + } + return +} diff --git a/modules/pagoda/model_rank.go b/modules/pagoda/model_rank.go index dd29112a2..6b601d389 100644 --- a/modules/pagoda/model_rank.go +++ b/modules/pagoda/model_rank.go @@ -20,16 +20,6 @@ func (this *ModelRank) Init(service core.IService, module core.IModule, comp cor return } -//获取用户 -func (this *ModelRank) getUserSession(uid string) (cuser *pb.CacheUser) { - cuser = &pb.CacheUser{} - if err := this.Get(uid, cuser); err != nil { - this.moduleUser.Errorf("GetUserSession err:%v", err) - return - } - return -} - func (this *ModelRank) AddRank(uId string, data *pb.DBPagodaRank) (err error) { if err = this.Add(uId, data); err != nil { //this.Errorf("err:%v", err) diff --git a/modules/timer/huntingrank.go b/modules/timer/huntingrank.go index 4badf1fde..2e62350d2 100644 --- a/modules/timer/huntingrank.go +++ b/modules/timer/huntingrank.go @@ -17,12 +17,13 @@ import ( type HuntingRank struct { modules.MCompModel service core.IService + DbName string } //组件初始化接口 func (this *HuntingRank) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) { - - this.TableName = comm.TableHuntingRank + this.DbName = comm.TableHuntingRank + this.TableName = comm.TableHuntingRankList this.MCompModel.Init(service, module, comp, options) this.service = service return @@ -38,7 +39,7 @@ func (this *HuntingRank) Start() (err error) { func (this *HuntingRank) Timer() { data := make([]interface{}, 0) // options.Find().SetLimit(comm.MaxRankList) for i := 1; i <= 4; i++ { // boss 类型 1 2 3 4 后面封装 // 时间参数战斗调完后再加进来 - if _data, err := this.DB.Find(core.SqlTable(this.TableName), bson.M{"bosstype": i}, options.Find().SetSort(bson.M{"difficulty": -1}).SetLimit(comm.MaxRankList)); err == nil { + if _data, err := this.DB.Find(core.SqlTable(this.DbName), bson.M{"bosstype": i}, options.Find().SetSort(bson.M{"difficulty": -1}).SetLimit(comm.MaxRankList)); err == nil { for _data.Next(context.TODO()) { temp := &pb.DBHuntingRank{} if err = _data.Decode(temp); err == nil { diff --git a/modules/viking/model_rank.go b/modules/viking/model_rank.go index 566db37c0..285cda738 100644 --- a/modules/viking/model_rank.go +++ b/modules/viking/model_rank.go @@ -10,26 +10,15 @@ import ( type ModelRank struct { modules.MCompModel - moduleUser *Viking + moduleViking *Viking } func (this *ModelRank) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) { this.TableName = comm.TableVikingRank err = this.MCompModel.Init(service, module, comp, options) - this.moduleUser = module.(*Viking) + this.moduleViking = module.(*Viking) return } - -//获取用户 -func (this *ModelRank) getUserSession(uid string) (cuser *pb.CacheUser) { - cuser = &pb.CacheUser{} - if err := this.Get(uid, cuser); err != nil { - this.moduleUser.Errorf("GetUserSession err:%v", err) - return - } - return -} - func (this *ModelRank) AddRank(uId string, data *pb.DBVikingRank) (err error) { if err = this.Add(uId, data); err != nil { return @@ -65,3 +54,13 @@ func (this *ModelRank) GetRankData(bossType int32) (data []*pb.DBVikingRank, err } return } + +// 获取排行榜数据 +func (this *ModelRank) GetUserRankData(bossType int32, uid string) (data *pb.DBVikingRank) { + data = &pb.DBVikingRank{} + if err := this.Get(uid, data); err != nil { + this.moduleViking.Debugf("get dbVikingRank data err:%v", err) + return + } + return +}