mirror of
https://github.com/FlourishingWorld/hk4e.git
synced 2026-03-01 00:35:36 +08:00
玩家管理模块接入redis,已完整实现好友、多人世界的跨服交互功能
This commit is contained in:
109
gs/dao/player_mongo.go
Normal file
109
gs/dao/player_mongo.go
Normal file
@@ -0,0 +1,109 @@
|
||||
package dao
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"hk4e/gs/model"
|
||||
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/mongo"
|
||||
)
|
||||
|
||||
func (d *Dao) InsertPlayer(player *model.Player) error {
|
||||
db := d.db.Collection("player")
|
||||
_, err := db.InsertOne(context.TODO(), player)
|
||||
return err
|
||||
}
|
||||
|
||||
func (d *Dao) InsertPlayerList(playerList []*model.Player) error {
|
||||
if len(playerList) == 0 {
|
||||
return nil
|
||||
}
|
||||
db := d.db.Collection("player")
|
||||
modelOperateList := make([]mongo.WriteModel, 0)
|
||||
for _, player := range playerList {
|
||||
modelOperate := mongo.NewInsertOneModel().SetDocument(player)
|
||||
modelOperateList = append(modelOperateList, modelOperate)
|
||||
}
|
||||
_, err := db.BulkWrite(context.TODO(), modelOperateList)
|
||||
return err
|
||||
}
|
||||
|
||||
func (d *Dao) DeletePlayer(playerID uint32) error {
|
||||
db := d.db.Collection("player")
|
||||
_, err := db.DeleteOne(context.TODO(), bson.D{{"playerID", playerID}})
|
||||
return err
|
||||
}
|
||||
|
||||
func (d *Dao) DeletePlayerList(playerIDList []uint32) error {
|
||||
if len(playerIDList) == 0 {
|
||||
return nil
|
||||
}
|
||||
db := d.db.Collection("player")
|
||||
modelOperateList := make([]mongo.WriteModel, 0)
|
||||
for _, playerID := range playerIDList {
|
||||
modelOperate := mongo.NewDeleteOneModel().SetFilter(bson.D{{"playerID", playerID}})
|
||||
modelOperateList = append(modelOperateList, modelOperate)
|
||||
}
|
||||
_, err := db.BulkWrite(context.TODO(), modelOperateList)
|
||||
return err
|
||||
}
|
||||
|
||||
func (d *Dao) UpdatePlayer(player *model.Player) error {
|
||||
db := d.db.Collection("player")
|
||||
_, err := db.UpdateOne(
|
||||
context.TODO(),
|
||||
bson.D{{"playerID", player.PlayerID}},
|
||||
bson.D{{"$set", player}},
|
||||
)
|
||||
return err
|
||||
}
|
||||
|
||||
func (d *Dao) UpdatePlayerList(playerList []*model.Player) error {
|
||||
if len(playerList) == 0 {
|
||||
return nil
|
||||
}
|
||||
db := d.db.Collection("player")
|
||||
modelOperateList := make([]mongo.WriteModel, 0)
|
||||
for _, player := range playerList {
|
||||
modelOperate := mongo.NewUpdateOneModel().SetFilter(bson.D{{"playerID", player.PlayerID}}).SetUpdate(bson.D{{"$set", player}})
|
||||
modelOperateList = append(modelOperateList, modelOperate)
|
||||
}
|
||||
_, err := db.BulkWrite(context.TODO(), modelOperateList)
|
||||
return err
|
||||
}
|
||||
|
||||
func (d *Dao) QueryPlayerByID(playerID uint32) (*model.Player, error) {
|
||||
db := d.db.Collection("player")
|
||||
result := db.FindOne(
|
||||
context.TODO(),
|
||||
bson.D{{"playerID", playerID}},
|
||||
)
|
||||
item := new(model.Player)
|
||||
err := result.Decode(item)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return item, nil
|
||||
}
|
||||
|
||||
func (d *Dao) QueryPlayerList() ([]*model.Player, error) {
|
||||
db := d.db.Collection("player")
|
||||
find, err := db.Find(
|
||||
context.TODO(),
|
||||
bson.D{},
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
result := make([]*model.Player, 0)
|
||||
for find.Next(context.TODO()) {
|
||||
item := new(model.Player)
|
||||
err = find.Decode(item)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
result = append(result, item)
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
Reference in New Issue
Block a user