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