package realarena import ( "go_dreamfactory/comm" "go_dreamfactory/lego/core" "go_dreamfactory/lego/sys/mgo" "go_dreamfactory/modules" "go_dreamfactory/pb" "go_dreamfactory/sys/db" "go.mongodb.org/mongo-driver/bson/primitive" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/x/bsonx" ) // /装备 数据组件 type modelComp struct { modules.MCompModel module *RealArena } // 组件初始化接口 func (this *modelComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, opt core.IModuleOptions) (err error) { this.TableName = comm.TableExclusive this.MCompModel.Init(service, module, comp, opt) this.module = module.(*RealArena) //创建uid索引 _, err = this.DB.CreateIndex(core.SqlTable(this.TableName), mongo.IndexModel{ Keys: bsonx.Doc{{Key: "uid", Value: bsonx.Int32(1)}}, }) return } // 更新埋点数据到db中 func (this *modelComp) getmodel(uid string) (model *realArenaModel, err error) { var m *db.DBModel if db.IsCross() { if m, err = this.module.GetDBModelByUid(uid, this.TableName); err != nil { return } model = &realArenaModel{module: this.module, model: m} } else { model = &realArenaModel{module: this.module, model: this.DBModel} } return } // /查询用户的武器背包 func (this *modelComp) getinfo(session comm.IUserSession) (info *pb.DBRealArena, err error) { var ( model *realArenaModel ) if model, err = this.getmodel(session.GetUserId()); err != nil { return } info, err = model.getinfo(session) return } // 埋点专属模型 会封装特殊的数据转换接口 type realArenaModel struct { module *RealArena model *db.DBModel } // /查询用户的武器背包 func (this *realArenaModel) getExclusives(uId string) (list []*pb.DB_Exclusive, err error) { list = make([]*pb.DB_Exclusive, 0) if err = this.model.GetList(uId, &list); err != nil { this.module.Errorf("err:%v", err) } return } // /查询用户的武器背包 func (this *realArenaModel) getinfo(session comm.IUserSession) (info *pb.DBRealArena, err error) { var ( user *pb.DBUser ) info = &pb.DBRealArena{} if err = this.model.Get(session.GetUserId(), info); err != nil && err != mgo.MongodbNil { this.module.Errorf("err:%v", err) } if user, err = this.module.GetUserForSession(session); err != nil { return } info = &pb.DBRealArena{ Id: primitive.NewObjectID().Hex(), Uid: session.GetUserId(), Uinfo: comm.GetUserBaseInfo(user), } err = this.model.Add(session.GetUserId(), info) return } // /查询用户的武器背包 func (this *realArenaModel) getExclusivesByIds(uId string, oid []string) (list []*pb.DB_Exclusive, err error) { list = make([]*pb.DB_Exclusive, 0) if err = this.model.GetListObjs(uId, oid, &list); err != nil { this.module.Errorf("err:%v", err) } return }