From 0fa47d4da04658291be401d8a57d9b2986257d27 Mon Sep 17 00:00:00 2001 From: meixiongfeng <766881921@qq.com> Date: Mon, 10 Jul 2023 14:24:21 +0800 Subject: [PATCH] =?UTF-8?q?=E9=98=B5=E8=90=A5=E5=A1=94=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- comm/const.go | 2 ++ modules/pagoda/api_getrace.go | 29 ++++++++++++++++ modules/pagoda/comp_configure.go | 11 +++++- modules/pagoda/model_pagoda.go | 2 +- modules/pagoda/model_race.go | 58 ++++++++++++++++++++++++++++++++ modules/pagoda/module.go | 16 +++++---- 6 files changed, 109 insertions(+), 9 deletions(-) create mode 100644 modules/pagoda/api_getrace.go create mode 100644 modules/pagoda/model_race.go diff --git a/comm/const.go b/comm/const.go index 7cb32383b..03474fce5 100644 --- a/comm/const.go +++ b/comm/const.go @@ -278,6 +278,8 @@ const ( TableGuidance = "guidance" //传功房 TablePasson = "passon" + // 阵营塔 循环塔 + TableRacePagoda = "racepagoda" ) // RPC服务接口定义处 diff --git a/modules/pagoda/api_getrace.go b/modules/pagoda/api_getrace.go new file mode 100644 index 000000000..48c778042 --- /dev/null +++ b/modules/pagoda/api_getrace.go @@ -0,0 +1,29 @@ +package pagoda + +import ( + "go_dreamfactory/comm" + "go_dreamfactory/pb" +) + +//参数校验 +func (this *apiComp) GetRaceCheck(session comm.IUserSession, req *pb.PagodaGetRaceReq) (errdata *pb.ErrorData) { + + return +} + +///获取阵营爬塔信息 +func (this *apiComp) GetRace(session comm.IUserSession, req *pb.PagodaGetRaceReq) (errdata *pb.ErrorData) { + + list, err := this.module.modelRacePagoda.getPagodaRaceList(session.GetUserId()) + if err != nil { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_DBError, + Title: pb.ErrorCode_DBError.ToString(), + Message: err.Error(), + } + return + } + + session.SendMsg(string(this.module.GetType()), PagodaGetListResp, &pb.PagodaGetRaceResp{Race: list.Race}) + return +} diff --git a/modules/pagoda/comp_configure.go b/modules/pagoda/comp_configure.go index aa962a1a7..861504362 100644 --- a/modules/pagoda/comp_configure.go +++ b/modules/pagoda/comp_configure.go @@ -206,7 +206,7 @@ func (this *configureComp) LoadCirculate() { defer this.hlock.Unlock() this._mapRace = make(map[int32]*cfg.GameCirculateData) for _, value := range configure.GetDataList() { - this._mapRace[value.Restriction] = value + this._mapRace[value.Restriction<<16+value.Floors] = value } return } @@ -214,3 +214,12 @@ func (this *configureComp) LoadCirculate() { return } + +// 获取阵营塔数据 +func (this *configureComp) GetPagodaCirculateConf(restriction int32, floor int32) (data *cfg.GamePagoda, err error) { + if _, ok := this._mapRace[restriction<<16+floor]; ok { + return + } + err = comm.NewNotFoundConfErr("pagoda", game_circulate, fmt.Errorf("tab %d ,ly %d not found", restriction, floor)) + return +} diff --git a/modules/pagoda/model_pagoda.go b/modules/pagoda/model_pagoda.go index 76daa0653..ecf92d9d8 100644 --- a/modules/pagoda/model_pagoda.go +++ b/modules/pagoda/model_pagoda.go @@ -38,7 +38,7 @@ func (this *ModelPagoda) getPagodaList(uid string) (result *pb.DBPagoda, err err result.Reward = make(map[int32]bool, 0) result.Data = make(map[int32]int32, 0) result.Type = comm.PagodaType - err = this.module.modelPagoda.addNewPagoda(uid, result) + err = this.addNewPagoda(uid, result) return } diff --git a/modules/pagoda/model_race.go b/modules/pagoda/model_race.go new file mode 100644 index 000000000..beb195f90 --- /dev/null +++ b/modules/pagoda/model_race.go @@ -0,0 +1,58 @@ +package pagoda + +import ( + "go_dreamfactory/comm" + "go_dreamfactory/lego/core" + "go_dreamfactory/lego/sys/mgo" + "go_dreamfactory/modules" + "go_dreamfactory/pb" + + "go.mongodb.org/mongo-driver/bson/primitive" + "go.mongodb.org/mongo-driver/mongo" + "go.mongodb.org/mongo-driver/x/bsonx" +) + +type ModelRace struct { + modules.MCompModel + module *Pagoda +} + +func (this *ModelRace) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) { + this.TableName = string(comm.TableRacePagoda) + err = this.MCompModel.Init(service, module, comp, options) + this.module = module.(*Pagoda) + //创建uid索引 + this.DB.CreateIndex(core.SqlTable(this.TableName), mongo.IndexModel{ + Keys: bsonx.Doc{{Key: "uid", Value: bsonx.Int32(1)}}, + }) + return +} + +// 获取爬塔信息 +func (this *ModelRace) getPagodaRaceList(uid string) (result *pb.DBPagodaRace, err error) { + result = &pb.DBPagodaRace{} + if err = this.Get(uid, result); err != nil && err == mgo.MongodbNil { // 初始一条数据 + result.Id = primitive.NewObjectID().Hex() + result.Uid = uid + result.Race = make(map[int32]*pb.RaceData) + err = this.addPagodaRace(uid, result) + + return + } + + return result, err +} + +// 修改爬塔数据信息 +func (this *ModelRace) modifyPagodaRaceDataByObjId(uid string, data map[string]interface{}) error { + return this.Change(uid, data) +} + +// 创建一个新的塔数据 +func (this *ModelRace) addPagodaRace(uId string, data *pb.DBPagodaRace) (err error) { + if err = this.Add(uId, data); err != nil { + this.module.Errorf("err:%v", err) + return + } + return nil +} diff --git a/modules/pagoda/module.go b/modules/pagoda/module.go index 8927db281..4a0d11e62 100644 --- a/modules/pagoda/module.go +++ b/modules/pagoda/module.go @@ -18,13 +18,14 @@ type Pagoda struct { modules.ModuleBase modelPagoda *ModelPagoda //modelSeasonPagoda *ModelSeasonPagoda - api *apiComp - modulerank *ModelRank - configure *configureComp - battle comm.IBattle - service base.IRPCXService - mail comm.Imail - friend comm.IFriend + api *apiComp + modulerank *ModelRank + configure *configureComp + battle comm.IBattle + service base.IRPCXService + mail comm.Imail + friend comm.IFriend + modelRacePagoda *ModelRace } func NewModule() core.IModule { @@ -48,6 +49,7 @@ func (this *Pagoda) OnInstallComp() { //this.modelSeasonPagoda = this.RegisterComp(new(ModelSeasonPagoda)).(*ModelSeasonPagoda) this.modulerank = this.RegisterComp(new(ModelRank)).(*ModelRank) this.configure = this.RegisterComp(new(configureComp)).(*configureComp) + this.modelRacePagoda = this.RegisterComp(new(ModelRace)).(*ModelRace) } // 接口信息