diff --git a/comm/const.go b/comm/const.go index c3d4ffff2..db2252854 100644 --- a/comm/const.go +++ b/comm/const.go @@ -347,6 +347,9 @@ const ( TableStoryline = "storyline" TableGameMiner = "miner" + + // 迷宫图鉴 + TableStonehengeBook = "stonehengebook" ) // RPC服务接口定义处 diff --git a/modules/stonehenge/api_bookaward.go b/modules/stonehenge/api_bookaward.go new file mode 100644 index 000000000..1fc1f9848 --- /dev/null +++ b/modules/stonehenge/api_bookaward.go @@ -0,0 +1,32 @@ +package stonehenge + +import ( + "go_dreamfactory/comm" + "go_dreamfactory/pb" +) + +//参数校验 +func (this *apiComp) BookAwardCheck(session comm.IUserSession, req *pb.StonehengeBookAwardReq) (errdata *pb.ErrorData) { + + return +} + +func (this *apiComp) BookAward(session comm.IUserSession, req *pb.StonehengeBookAwardReq) (errdata *pb.ErrorData) { + var ( + info *pb.DBStonehengeBook + err error + ) + if errdata = this.BookAwardCheck(session, req); errdata != nil { + return + } + if info, err = this.module.modelStonehengeBook.getStonehengeBook(session.GetUserId()); err != nil { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_DBError, + Title: pb.ErrorCode_DBError.String(), + Message: err.Error(), + } + return + } + session.SendMsg(string(this.module.GetType()), "bookinfo", &pb.StonehengeBookInfoResp{Info: info}) + return +} diff --git a/modules/stonehenge/api_bookinfo.go b/modules/stonehenge/api_bookinfo.go new file mode 100644 index 000000000..1f2bbc522 --- /dev/null +++ b/modules/stonehenge/api_bookinfo.go @@ -0,0 +1,32 @@ +package stonehenge + +import ( + "go_dreamfactory/comm" + "go_dreamfactory/pb" +) + +//参数校验 +func (this *apiComp) BookInfoCheck(session comm.IUserSession, req *pb.StonehengeBookInfoReq) (errdata *pb.ErrorData) { + + return +} + +func (this *apiComp) BookInfo(session comm.IUserSession, req *pb.StonehengeBookInfoReq) (errdata *pb.ErrorData) { + var ( + info *pb.DBStonehengeBook + err error + ) + if errdata = this.BookInfoCheck(session, req); errdata != nil { + return + } + if info, err = this.module.modelStonehengeBook.getStonehengeBook(session.GetUserId()); err != nil { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_DBError, + Title: pb.ErrorCode_DBError.String(), + Message: err.Error(), + } + return + } + session.SendMsg(string(this.module.GetType()), "bookinfo", &pb.StonehengeBookInfoResp{Info: info}) + return +} diff --git a/modules/stonehenge/configure.go b/modules/stonehenge/configure.go index 50f6c3904..a143bc1c7 100644 --- a/modules/stonehenge/configure.go +++ b/modules/stonehenge/configure.go @@ -12,16 +12,17 @@ import ( ) const ( - game_bufflottery = "game_bufflottery.json" - game_eventlottery = "game_eventlottery.json" - game_roomlottery = "game_roomlottery.json" - game_roomconf = "game_stoneroom.json" - game_stageconf = "game_stonestage.json" - game_buffconf = "game_stonebuff.json" - game_eventconf = "game_stoneevent.json" - game_bossconf = "game_stoneboss.json" - game_battleconf = "game_stonebattle.json" - game_stonetalent = "game_stonetalent.json" + game_bufflottery = "game_bufflottery.json" + game_eventlottery = "game_eventlottery.json" + game_roomlottery = "game_roomlottery.json" + game_roomconf = "game_stoneroom.json" + game_stageconf = "game_stonestage.json" + game_buffconf = "game_stonebuff.json" + game_eventconf = "game_stoneevent.json" + game_bossconf = "game_stoneboss.json" + game_battleconf = "game_stonebattle.json" + game_stonetalent = "game_stonetalent.json" + game_stoneillustrated = "game_stoneillustrated.json" ) ///背包配置管理组件 diff --git a/modules/stonehenge/modelStonehengeBook.go b/modules/stonehenge/modelStonehengeBook.go new file mode 100644 index 000000000..ac890c146 --- /dev/null +++ b/modules/stonehenge/modelStonehengeBook.go @@ -0,0 +1,50 @@ +package stonehenge + +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 ModelStonehengeBook struct { + modules.MCompModel + module *Stonehenge +} + +//组件初始化接口 +func (this *ModelStonehengeBook) Init(service core.IService, module core.IModule, comp core.IModuleComp, opt core.IModuleOptions) (err error) { + this.TableName = comm.TableStonehengeBook + this.MCompModel.Init(service, module, comp, opt) + this.module = module.(*Stonehenge) + + //创建uid索引 + this.DB.CreateIndex(core.SqlTable(this.TableName), mongo.IndexModel{ + Keys: bsonx.Doc{{Key: "uid", Value: bsonx.Int32(1)}}, + }) + return +} + +//获取图鉴 +func (this *ModelStonehengeBook) getStonehengeBook(uid string) (info *pb.DBStonehengeBook, err error) { + info = &pb.DBStonehengeBook{} + if err = this.Get(uid, info); err != nil && mgo.MongodbNil != err { // 创建一条初始的数据 + return + } + if mgo.MongodbNil == err { + info = &pb.DBStonehengeBook{ + Id: primitive.NewObjectID().Hex(), + Uid: uid, + Books: make([]int32, 0), + Award: make(map[int32]*pb.DBStonehengeBookAward), + } + err = this.Add(uid, info) + } + return +} diff --git a/modules/stonehenge/module.go b/modules/stonehenge/module.go index 88c9eb2c9..90f3bd287 100644 --- a/modules/stonehenge/module.go +++ b/modules/stonehenge/module.go @@ -18,11 +18,12 @@ func NewModule() core.IModule { type Stonehenge struct { modules.ModuleBase - service base.IRPCXService - battle comm.IBattle - api_comp *apiComp - configure *configureComp - modelStonehenge *MStonehenge + service base.IRPCXService + battle comm.IBattle + api_comp *apiComp + configure *configureComp + modelStonehenge *MStonehenge + modelStonehengeBook *ModelStonehengeBook } //模块名 @@ -53,6 +54,7 @@ func (this *Stonehenge) OnInstallComp() { this.ModuleBase.OnInstallComp() this.api_comp = this.RegisterComp(new(apiComp)).(*apiComp) this.modelStonehenge = this.RegisterComp(new(MStonehenge)).(*MStonehenge) + this.modelStonehengeBook = this.RegisterComp(new(ModelStonehengeBook)).(*ModelStonehengeBook) this.configure = this.RegisterComp(new(configureComp)).(*configureComp) }