通过区服id 和唯一id 查询坐骑信息

This commit is contained in:
meixiongfeng 2023-09-05 16:48:35 +08:00
parent ddc9d6d1e3
commit b102f80188
4 changed files with 58 additions and 35 deletions

View File

@ -660,5 +660,8 @@ type (
QueryBigDragonList(uid string) (dragon []*pb.DBDragon, err error)
// 通过ID 查询龙的信息
QueryDragonById(uid string, dragonid string) (dragon *pb.DBDragon, err error)
// 跨服接口 通过 服务器标签和唯一id 获取坐骑信息
QueryDragonByTagAndOid(tag string, objId string) (dragon *pb.DBDragon, err error)
}
)

View File

@ -82,10 +82,19 @@ func (this *ModelDragon) CreateDragon(session comm.IUserSession, dragons map[str
return
}
}
bFound := false
dragon = &pb.DBDragon{
Id: primitive.NewObjectID().Hex(),
Uid: uid,
Dragonid: dragonCfgId,
Lv: lv,
Exp: 0,
Property: map[string]int32{},
Play: map[int32]*pb.PlayData{},
Rtime: configure.Now().Unix(),
}
for _, obj := range dragonList {
if obj.Dragonid == dragonCfgId { // 重复获得 直接返回
bFound = true
dragon.Id = obj.Id
update := make(map[string]interface{}, 0)
update["lv"] = lv // 更新等级
if err = this.UpdateDragonData(session.GetUserId(), obj.Id, update); err != nil {
@ -99,40 +108,29 @@ func (this *ModelDragon) CreateDragon(session comm.IUserSession, dragons map[str
break
}
}
if !bFound {
dragon = &pb.DBDragon{
Id: primitive.NewObjectID().Hex(),
Uid: uid,
Dragonid: dragonCfgId,
Lv: lv,
Exp: 0,
Property: map[string]int32{},
Play: map[int32]*pb.PlayData{},
Rtime: configure.Now().Unix(),
}
if conf, err := this.module.configure.GetDragonConfById(dragonCfgId, lv); err == nil {
if c, err := this.module.configure.GetDragonMount(dragonCfgId, conf.Type); err == nil {
dragon.Property["stime"] = c.Stime
dragon.Property["etime"] = c.Etime
dragon.Property["hp"] = c.Hp
dragon.Property["moderate"] = c.Moderate
dragon.Property["sprint"] = c.Sprint
dragon.Property["acceleration"] = c.Acceleration
dragon.Property["deceleration"] = c.Deceleration
// dragon.Property["itemsprint"] = c.Itemsprint
dragon.Property["caddtime"] = c.Caddtime
dragon.Property["csubtime"] = c.Csubtime
}
}
if dbModel != nil {
if dbModel, err1 := this.module.GetDBModelByUid(uid, this.TableName); err1 == nil {
err = dbModel.AddList(uid, dragonCfgId, dragon)
}
} else {
err = this.AddList(uid, dragonCfgId, dragon)
if conf, err := this.module.configure.GetDragonConfById(dragonCfgId, lv); err == nil {
if c, err := this.module.configure.GetDragonMount(dragonCfgId, conf.Type); err == nil {
dragon.Property["stime"] = c.Stime
dragon.Property["etime"] = c.Etime
dragon.Property["hp"] = c.Hp
dragon.Property["moderate"] = c.Moderate
dragon.Property["sprint"] = c.Sprint
dragon.Property["acceleration"] = c.Acceleration
dragon.Property["deceleration"] = c.Deceleration
// dragon.Property["itemsprint"] = c.Itemsprint
dragon.Property["caddtime"] = c.Caddtime
dragon.Property["csubtime"] = c.Csubtime
}
}
if dbModel != nil {
if dbModel, err1 := this.module.GetDBModelByUid(uid, this.TableName); err1 == nil {
err = dbModel.AddList(uid, dragonCfgId, dragon)
}
} else {
err = this.AddList(uid, dragonCfgId, dragon)
}
}
chanegList = append(chanegList, dragon)
session.SendMsg(string(this.module.GetType()), "change", &pb.DragonChangePush{

View File

@ -8,6 +8,10 @@ import (
"go_dreamfactory/pb"
"go_dreamfactory/sys/configure"
cfg "go_dreamfactory/sys/configure/structs"
"go_dreamfactory/sys/db"
"time"
"go.mongodb.org/mongo-driver/bson"
)
func NewModule() core.IModule {
@ -126,3 +130,21 @@ func (this *Dragon) QueryDragonById(uid string, dragonid string) (dragon *pb.DBD
err = fmt.Errorf("not found dragon dragonid:%s", dragonid)
return
}
// 通过区服id 和唯一id 查询坐骑信息
func (this *Dragon) QueryDragonByTagAndOid(tag string, objId string) (dragon *pb.DBDragon, err error) {
var (
conn *db.DBConn
model *db.DBModel
)
if conn, err = db.ServerDBConn(tag); err != nil {
return
}
dragon = &pb.DBDragon{}
model = db.NewDBModel(this.modelDragon.TableName, time.Hour, conn)
if model.DB.FindOne(comm.TableHero, bson.M{"_id": objId}).Decode(dragon); err != nil {
return
}
return
}

View File

@ -469,7 +469,7 @@ func (this *ModuleBase) DispenseRes(session comm.IUserSession, res []*cfg.Gameat
case comm.PandaType:
panda[v.T] = 1
case comm.MountsType:
mts[v.T] = 1
mts[v.T] = v.N // N 表示等级
case comm.PerType:
per[v.T] = 1
default:
@ -691,7 +691,7 @@ func (this *ModuleBase) DispenseAtno(session comm.IUserSession, res []*cfg.Gamea
case comm.PandaType:
panda[v.T] = 1
case comm.MountsType:
mts[v.T] = 1
mts[v.T] += v.N
case comm.PerType:
per[v.T] = 1
default: