| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- package db
- import (
- "errors"
- capp "f1-game/internal/cherry_app"
- dbFacade "f1-game/internal/component/db/facade"
- nameDB "f1-game/internal/name/db"
- dbCharge "f1-game/nodes/game/internal/db/data/charge"
- "go.mongodb.org/mongo-driver/v2/bson"
- "go.mongodb.org/mongo-driver/v2/mongo"
- clog "github.com/cherry-game/cherry/logger"
- )
- // ChargeTable 玩家充值信息表
- type (
- ChargeTable struct {
- PlayerID int64 `bson:"PlayerID,omitempty"`
- NodeID string `bson:"NodeID,omitempty"`
- dbCharge.Data `bson:"Data,omitempty"`
- dbFacade.TableBase `bson:",inline"`
- }
- )
- func (*ChargeTable) TableName() string {
- return nameDB.Table_Charge
- }
- func (p *ChargeTable) PrimaryValue() any {
- return p.PlayerID
- }
- func (p *ChargeTable) CheckField() {
- p.Data.CheckField()
- }
- func (p *ChargeTable) Save2Queue() {
- save2Queue(p)
- }
- func GetChargeTable(playerID int64) *ChargeTable {
- if val, ok := chargeTableCache.GetIfPresent(playerID); ok {
- return val.(*ChargeTable)
- }
- chargeTable, found := GetChargeTableFromDB(playerID)
- if found {
- chargeTableCache.Put(playerID, chargeTable)
- }
- return chargeTable
- }
- func GetChargeTableFromDB(playerID int64) (*ChargeTable, bool) {
- chargeTable := newChargeTable(playerID)
- filter := bson.M{
- nameDB.Field_NodeID: chargeTable.NodeID,
- nameDB.Field_PlayerID: chargeTable.PlayerID,
- }
- err := dbComponent.FindOne(chargeTable, filter)
- if err != nil {
- if errors.Is(err, mongo.ErrNoDocuments) {
- clog.Warnf("[playerID = %d] not found, create new one", playerID)
- chargeTable.CheckField()
- return chargeTable, true
- }
- clog.Errorf("[playerID = %d] db error = %v", playerID, err)
- return chargeTable, false
- }
- chargeTable.CheckField()
- return chargeTable, true
- }
- func newChargeTable(playerID int64) *ChargeTable {
- return &ChargeTable{
- PlayerID: playerID,
- NodeID: capp.NodeID(),
- Data: dbCharge.NewData(),
- }
- }
|