排行榜支持多类型放同一张表
This commit is contained in:
parent
9209f23b14
commit
3c5b1ea290
@ -130,8 +130,8 @@ const (
|
||||
//
|
||||
TableHunting = "hunting"
|
||||
// 维京远征排行榜
|
||||
TableHuntingRank = "huntingrank"
|
||||
|
||||
TableHuntingRank = "huntingrank"
|
||||
TableHuntingRankList = "huntingrankList"
|
||||
// 支线剧情任务
|
||||
TableLinestory = "linestory"
|
||||
|
||||
|
@ -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{}
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -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 {
|
||||
|
@ -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
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user