优化架构

This commit is contained in:
huangxiaolei
2022-11-23 18:05:11 +08:00
parent 3efed3defe
commit 43403202b5
6760 changed files with 33748 additions and 554768 deletions

34
gs/dao/dao.go Normal file
View 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
View 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
}