diff --git a/modules/hero/module.go b/modules/hero/module.go index 0c29cb2c9..d6304dae5 100644 --- a/modules/hero/module.go +++ b/modules/hero/module.go @@ -344,19 +344,33 @@ func (this *Hero) CreateMonster(heroCid string, star, lv int32) (hero *pb.DBHero // 只通过唯一id 查询英雄信息 func (this *Hero) QueryCrossHeroinfo(oid string) (hero *pb.DBHero, err error) { - for _, tag := range db.GetServerTags() { - conn, err1 := db.ServerDBConn(tag) // 遍历连接对象 - if err1 != nil { - continue + + if this.modelHero.moduleHero.IsCross() { + for _, tag := range db.GetServerTags() { + conn, err1 := db.ServerDBConn(tag) // 遍历连接对象 + if err1 != nil { + continue + } + + sr := conn.Mgo.FindOne(comm.TableHero, bson.M{ + "_id": oid, + }) + hero = &pb.DBHero{} + if err = sr.Decode(hero); err != nil { + if err != mongo.ErrNoDocuments { + return + } + } } - filter := bson.M{ + } else { // 不是跨服就查本服 + if res := this.modelHero.DB.FindOne(comm.TableHero, bson.M{ "_id": oid, - } - sr := conn.Mgo.FindOne(comm.TableHero, filter) - hero = &pb.DBHero{} - if err = sr.Decode(hero); err != nil { - if err != mongo.ErrNoDocuments { - return + }); res == nil { + hero = &pb.DBHero{} + if err = res.Decode(hero); err != nil { + if err != mongo.ErrNoDocuments { + return + } } } }