diff --git a/comm/imodule.go b/comm/imodule.go index 7500dd652..6845887c9 100644 --- a/comm/imodule.go +++ b/comm/imodule.go @@ -662,6 +662,6 @@ type ( QueryDragonById(uid string, dragonid string) (dragon *pb.DBDragon, err error) // 跨服接口 通过 服务器标签和唯一id 获取坐骑信息 - QueryDragonByTagAndOid(tag string, objId string) (dragon *pb.DBDragon, err error) + QueryDragonByTagAndOid(tag string, objId []string) (dragon []*pb.DBDragon, err error) } ) diff --git a/modules/dragon/module.go b/modules/dragon/module.go index 507ad7fef..8c55c2311 100644 --- a/modules/dragon/module.go +++ b/modules/dragon/module.go @@ -1,6 +1,7 @@ package dragon import ( + "context" "fmt" "go_dreamfactory/comm" "go_dreamfactory/lego/core" @@ -12,6 +13,7 @@ import ( "time" "go.mongodb.org/mongo-driver/bson" + "go.mongodb.org/mongo-driver/mongo" ) func NewModule() core.IModule { @@ -132,19 +134,34 @@ func (this *Dragon) QueryDragonById(uid string, dragonid string) (dragon *pb.DBD } // 通过区服id 和唯一id 查询坐骑信息 -func (this *Dragon) QueryDragonByTagAndOid(tag string, objId string) (dragon *pb.DBDragon, err error) { +func (this *Dragon) QueryDragonByTagAndOid(tag string, objId []string) (dragon []*pb.DBDragon, err error) { var ( - conn *db.DBConn - model *db.DBModel + conn *db.DBConn + model *db.DBModel + cursor *mongo.Cursor ) if conn, err = db.ServerDBConn(tag); err != nil { return } - dragon = &pb.DBDragon{} + dragon = make([]*pb.DBDragon, 0) model = db.NewDBModel(this.modelDragon.TableName, time.Hour, conn) - if model.DB.FindOne(comm.TableHero, bson.M{"_id": objId}).Decode(dragon); err != nil { + + result := make([]bson.M, 0) + + for _, v := range objId { + result = append(result, bson.M{"_id": v}) + } + if cursor, err = model.DB.Find(core.SqlTable(this.modelDragon.TableName), bson.M{"$or": result}); err != nil { + this.Errorln(err) return } - + for cursor.Next(context.Background()) { + temp := &pb.DBDragon{} + if err = cursor.Decode(temp); err != nil { + this.Errorln(err) + continue + } + dragon = append(dragon, temp) + } return }