排行榜支持多类型放同一张表

This commit is contained in:
meixiongfeng 2022-09-08 15:48:26 +08:00
parent 9209f23b14
commit 3c5b1ea290
7 changed files with 73 additions and 73 deletions

View File

@ -130,8 +130,8 @@ const (
//
TableHunting = "hunting"
// 维京远征排行榜
TableHuntingRank = "huntingrank"
TableHuntingRank = "huntingrank"
TableHuntingRankList = "huntingrankList"
// 支线剧情任务
TableLinestory = "linestory"

View File

@ -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{}

View File

@ -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
}

View File

@ -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
}

View File

@ -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)

View File

@ -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 {

View File

@ -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
}