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

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" TableHunting = "hunting"
// 维京远征排行榜 // 维京远征排行榜
TableHuntingRank = "huntingrank" TableHuntingRank = "huntingrank"
TableHuntingRankList = "huntingrankList"
// 支线剧情任务 // 支线剧情任务
TableLinestory = "linestory" TableLinestory = "linestory"

View File

@ -3,7 +3,6 @@ package hero
import ( import (
"go_dreamfactory/comm" "go_dreamfactory/comm"
"go_dreamfactory/lego/core" "go_dreamfactory/lego/core"
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/lego/sys/redis" "go_dreamfactory/lego/sys/redis"
"go_dreamfactory/modules" "go_dreamfactory/modules"
"go_dreamfactory/pb" "go_dreamfactory/pb"
@ -21,16 +20,6 @@ func (this *ModelRecord) Init(service core.IService, module core.IModule, comp c
return 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) { func (this *ModelRecord) GetHeroRecord(uid string) (result *pb.DBHeroRecord, err error) {
result = &pb.DBHeroRecord{} result = &pb.DBHeroRecord{}

View File

@ -65,7 +65,7 @@ func (this *apiComp) Challenge(session comm.IUserSession, req *pb.HuntingChallen
mapData["boss"] = hunting.Boss mapData["boss"] = hunting.Boss
//hunting.BossTime[] = 0 // todo 耗时 //hunting.BossTime[] = 0 // todo 耗时
mapData["challengeTime"] = hunting.BossTime mapData["challengeTime"] = hunting.BossTime
this.module.modulerank.updatehuntingRankList(session, req.Difficulty, req.BossType)
} }
// 耗时校验 当前战斗胜利时间消耗小于之前刷新数据 // 耗时校验 当前战斗胜利时间消耗小于之前刷新数据
hunting.ChallengeCount++ hunting.ChallengeCount++
@ -77,15 +77,6 @@ func (this *apiComp) Challenge(session comm.IUserSession, req *pb.HuntingChallen
return 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 { for k := range hunting.Boss {
hunting.Boss[k] += 1 hunting.Boss[k] += 1
} }

View File

@ -3,30 +3,21 @@ package hunting
import ( import (
"go_dreamfactory/comm" "go_dreamfactory/comm"
"go_dreamfactory/lego/core" "go_dreamfactory/lego/core"
"go_dreamfactory/lego/sys/redis"
"go_dreamfactory/modules" "go_dreamfactory/modules"
"go_dreamfactory/pb" "go_dreamfactory/pb"
"go.mongodb.org/mongo-driver/bson/primitive"
) )
type ModelRank struct { type ModelRank struct {
modules.MCompModel modules.MCompModel
moduleUser *Hunting moduleHunting *Hunting
} }
func (this *ModelRank) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) { func (this *ModelRank) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
this.TableName = comm.TableHuntingRank this.TableName = comm.TableHuntingRank
err = this.MCompModel.Init(service, module, comp, options) err = this.MCompModel.Init(service, module, comp, options)
this.moduleUser = module.(*Hunting) this.moduleHunting = 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
}
return return
} }
@ -37,27 +28,66 @@ func (this *ModelRank) AddRank(uId string, data *pb.DBHuntingRank) (err error) {
return nil return nil
} }
func (this *ModelRank) GetUserRandData(uid string) (result *pb.DBHuntingRank, err error) { // func (this *ModelRank) GetUserRandData(uid string) (result *pb.DBHuntingRank, err error) {
result = &pb.DBHuntingRank{} // result = &pb.DBHuntingRank{}
if err = this.Get(uid, result); err != nil && redis.RedisNil != err { // if err = this.Get(uid, result); err != nil && redis.RedisNil != err {
return // return
} // }
err = nil // err = nil
return result, err // 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 { if len(value) == 0 {
return nil return nil
} }
return this.Change(uid, value) return this.ChangeList(uid, objId, value)
} }
// 获取排行榜数据 // 获取排行榜数据
func (this *ModelRank) GetRankData() (data []*pb.DBHuntingRank, err error) { func (this *ModelRank) GetRankData() (data []*pb.DBHuntingRank, err error) {
data = make([]*pb.DBHuntingRank, 0) 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 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 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) { func (this *ModelRank) AddRank(uId string, data *pb.DBPagodaRank) (err error) {
if err = this.Add(uId, data); err != nil { if err = this.Add(uId, data); err != nil {
//this.Errorf("err:%v", err) //this.Errorf("err:%v", err)

View File

@ -17,12 +17,13 @@ import (
type HuntingRank struct { type HuntingRank struct {
modules.MCompModel modules.MCompModel
service core.IService service core.IService
DbName string
} }
//组件初始化接口 //组件初始化接口
func (this *HuntingRank) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) { func (this *HuntingRank) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
this.DbName = comm.TableHuntingRank
this.TableName = comm.TableHuntingRank this.TableName = comm.TableHuntingRankList
this.MCompModel.Init(service, module, comp, options) this.MCompModel.Init(service, module, comp, options)
this.service = service this.service = service
return return
@ -38,7 +39,7 @@ func (this *HuntingRank) Start() (err error) {
func (this *HuntingRank) Timer() { func (this *HuntingRank) Timer() {
data := make([]interface{}, 0) // options.Find().SetLimit(comm.MaxRankList) data := make([]interface{}, 0) // options.Find().SetLimit(comm.MaxRankList)
for i := 1; i <= 4; i++ { // boss 类型 1 2 3 4 后面封装 // 时间参数战斗调完后再加进来 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()) { for _data.Next(context.TODO()) {
temp := &pb.DBHuntingRank{} temp := &pb.DBHuntingRank{}
if err = _data.Decode(temp); err == nil { if err = _data.Decode(temp); err == nil {

View File

@ -10,26 +10,15 @@ import (
type ModelRank struct { type ModelRank struct {
modules.MCompModel modules.MCompModel
moduleUser *Viking moduleViking *Viking
} }
func (this *ModelRank) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) { func (this *ModelRank) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
this.TableName = comm.TableVikingRank this.TableName = comm.TableVikingRank
err = this.MCompModel.Init(service, module, comp, options) err = this.MCompModel.Init(service, module, comp, options)
this.moduleUser = module.(*Viking) this.moduleViking = module.(*Viking)
return 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) { func (this *ModelRank) AddRank(uId string, data *pb.DBVikingRank) (err error) {
if err = this.Add(uId, data); err != nil { if err = this.Add(uId, data); err != nil {
return return
@ -65,3 +54,13 @@ func (this *ModelRank) GetRankData(bossType int32) (data []*pb.DBVikingRank, err
} }
return 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
}