mirror of
https://github.com/FlourishingWorld/hk4e.git
synced 2026-03-01 00:35:36 +08:00
优化架构
This commit is contained in:
34
gs/dao/dao.go
Normal file
34
gs/dao/dao.go
Normal file
@@ -0,0 +1,34 @@
|
||||
package dao
|
||||
|
||||
import (
|
||||
"context"
|
||||
"go.mongodb.org/mongo-driver/mongo"
|
||||
"go.mongodb.org/mongo-driver/mongo/options"
|
||||
"hk4e/common/config"
|
||||
"hk4e/logger"
|
||||
)
|
||||
|
||||
type Dao struct {
|
||||
client *mongo.Client
|
||||
db *mongo.Database
|
||||
}
|
||||
|
||||
func NewDao() (r *Dao) {
|
||||
r = new(Dao)
|
||||
clientOptions := options.Client().ApplyURI(config.CONF.Database.Url)
|
||||
client, err := mongo.Connect(context.TODO(), clientOptions)
|
||||
if err != nil {
|
||||
logger.LOG.Error("mongo connect error: %v", err)
|
||||
return nil
|
||||
}
|
||||
r.client = client
|
||||
r.db = client.Database("game_hk4e")
|
||||
return r
|
||||
}
|
||||
|
||||
func (d *Dao) CloseDao() {
|
||||
err := d.client.Disconnect(context.TODO())
|
||||
if err != nil {
|
||||
logger.LOG.Error("mongo close error: %v", err)
|
||||
}
|
||||
}
|
||||
107
gs/dao/player_dao.go
Normal file
107
gs/dao/player_dao.go
Normal file
@@ -0,0 +1,107 @@
|
||||
package dao
|
||||
|
||||
import (
|
||||
"context"
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/mongo"
|
||||
"hk4e/gs/model"
|
||||
)
|
||||
|
||||
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