go_dreamfactory/modules/realarena/model.go
2024-03-06 17:56:26 +08:00

136 lines
3.4 KiB
Go

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
}
// /查询用户的武器背包
func (this *modelComp) getinfobyuid(uid string) (info *pb.DBRealArena, err error) {
var (
model *realArenaModel
)
if model, err = this.getmodel(uid); err != nil {
return
}
info, err = model.getinfobyuid(uid)
return
}
// /查询用户的武器背包
func (this *modelComp) change(uid string, update map[string]interface{}) (err error) {
var (
model *realArenaModel
)
if model, err = this.getmodel(uid); err != nil {
return
}
err = model.change(uid, update)
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) getinfobyuid(uid string) (info *pb.DBRealArena, err error) {
info = &pb.DBRealArena{}
if err = this.model.Get(uid, info); err != nil {
this.module.Errorf("err:%v", err)
}
return
}
// /查询用户的武器背包
func (this *realArenaModel) change(uid string, update map[string]interface{}) (err error) {
if err = this.model.Change(uid, update); err != nil {
this.module.Errorf("err:%v", err)
}
return
}