From 292f6f87e7de14e384e97cdd00a239e004ca5873 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B7=E5=8B=87?= Date: Thu, 26 Oct 2023 17:18:58 +0800 Subject: [PATCH] save --- server/mailserver/mail/mail.go | 21 +++++---------- server/mailserver/mail/mailmgr.go | 4 +-- server/mailserver/mail/mailstore.go | 8 +++--- server/mailserver/player/player.go | 42 +++++++++++++++++++++++++++-- 4 files changed, 51 insertions(+), 24 deletions(-) diff --git a/server/mailserver/mail/mail.go b/server/mailserver/mail/mail.go index b9eeda11..c0db124d 100644 --- a/server/mailserver/mail/mail.go +++ b/server/mailserver/mail/mail.go @@ -3,7 +3,7 @@ package mail import ( "main/common" "main/constant" - "strconv" + "q5" "strings" "time" ) @@ -14,7 +14,7 @@ type Attachments struct { } type Mail struct { - Gameid int `json:"-"` + GameId int `json:"-"` MailId int64 `json:"mailid"` From string `json:"from"` To string `json:"to"` @@ -24,7 +24,7 @@ type Mail struct { SendTime int32 `json:"sendtime"` ExpireTime int32 `json:"expiretime"` MailType int `json:"mailtype"` - Mailsubtype int `json:"mailsubtype"` + MailSubType int `json:"mailsubtype"` UserType int `json:"-"` CreateTime int32 `json:"-"` Ext string `json:"ext"` @@ -55,17 +55,9 @@ func (m *Mail) ParseAttachments(attachmentsStr string) { if len(parts) != 2 { continue } - itemID, err := strconv.Atoi(parts[0]) - if err != nil { - continue - } - itemNum, err := strconv.Atoi(parts[1]) - if err != nil { - continue - } attachment := &Attachments{ - ItemId: itemID, - ItemNum: itemNum, + ItemId: q5.ToInt(parts[0]), + ItemNum: q5.ToInt(parts[1]), } m.ATT = append(m.ATT, attachment) } @@ -93,8 +85,7 @@ func (m *Mail) IsReadableMail(accountObj common.Player) bool { } } nowUnixSec := int32(time.Now().Unix()) - if m.ExpireTime > nowUnixSec && - m.SendTime <= nowUnixSec && !accountObj.IsDeletedMail(m.MailId) { + if m.ExpireTime > nowUnixSec && m.SendTime <= nowUnixSec && !accountObj.IsDeletedMail(m.MailId) { return true } diff --git a/server/mailserver/mail/mailmgr.go b/server/mailserver/mail/mailmgr.go index fc028140..4c001a41 100644 --- a/server/mailserver/mail/mailmgr.go +++ b/server/mailserver/mail/mailmgr.go @@ -66,14 +66,14 @@ func (mm *MailMgr) LoadFromDB() { empty = false m := newMail() - m.Gameid = q5.ToInt(*rows.GetByName("gameid")) + m.GameId = q5.ToInt(*rows.GetByName("gameid")) m.MailId = q5.ToInt64(*rows.GetByName("mailid")) m.From = q5.ToString(*rows.GetByName("_from")) m.To = q5.ToString(*rows.GetByName("_to")) m.Subject = q5.ToString(*rows.GetByName("subject")) m.Content = q5.ToString(*rows.GetByName("content")) m.MailType = q5.ToInt(*rows.GetByName("mailtype")) - m.Mailsubtype = q5.ToInt(*rows.GetByName("mailsubtype")) + m.MailSubType = q5.ToInt(*rows.GetByName("mailsubtype")) m.UserType = q5.ToInt(*rows.GetByName("usertype")) m.SendTime = q5.ToInt32(*rows.GetByName("sendtime")) m.ExpireTime = q5.ToInt32(*rows.GetByName("expiretime")) diff --git a/server/mailserver/mail/mailstore.go b/server/mailserver/mail/mailstore.go index 11227aa7..ce2575ed 100644 --- a/server/mailserver/mail/mailstore.go +++ b/server/mailserver/mail/mailstore.go @@ -17,10 +17,10 @@ func (mm *MailMgr) AddMail(m *Mail) { mailId := m.MailId mm.allMailHash[mailId] = m if m.MailType == constant.MAIL_TYPE_GROUP { - if mm.gameMailHash[m.Gameid] == nil { - mm.gameMailHash[m.Gameid] = make(map[int64]*Mail) + if mm.gameMailHash[m.GameId] == nil { + mm.gameMailHash[m.GameId] = make(map[int64]*Mail) } - mm.gameMailHash[m.Gameid][mailId] = m + mm.gameMailHash[m.GameId][mailId] = m return } @@ -61,7 +61,6 @@ func (mm *MailMgr) GetMails(player common.Player) []*Mail { func (mm *MailMgr) GetUnreadMailCount(accountObj common.Player) int { mailCnt := 0 - if gameMails, ok := mm.gameMailHash[constant.GAMEID]; ok { for _, mailObj := range gameMails { if mailObj.IsReadableMail(accountObj) { @@ -69,7 +68,6 @@ func (mm *MailMgr) GetUnreadMailCount(accountObj common.Player) int { } } } - if playerMails, ok := mm.playerMailHash[accountObj.GetAccountId()]; ok { for _, mailObj := range playerMails { if mailObj.IsReadableMail(accountObj) { diff --git a/server/mailserver/player/player.go b/server/mailserver/player/player.go index aa8d42ef..2a0f30ce 100644 --- a/server/mailserver/player/player.go +++ b/server/mailserver/player/player.go @@ -1,6 +1,10 @@ package player import ( + "f5" + "fmt" + "google.golang.org/protobuf/proto" + "main/constant" "main/global" "main/mail" "main/ss" @@ -188,6 +192,40 @@ func (p *Player) Serialize(accountPB *ss.MFAccountData) { } } -func (p *Player) SaveToDB() {} +func (p *Player) SaveToDB() { + accountPB := ss.MFAccountData{} + p.Serialize(&accountPB) + blobData, err := proto.Marshal(&accountPB) + if err != nil { + f5.GetSysLog().Info("SaveToDB proto.Marshal Error:%v \n", err) + return + } + blobDataStr := string(blobData) + nowUnixSec := time.Now().Unix() + sql := fmt.Sprintf("INSERT INTO account_data (accountid, blobdata, createtime, modifytime) VALUES ('%s', '%s', %d, %d) ON DUPLICATE KEY UPDATE blobdata = '%s', modifytime = %d", + p.GetAccountId(), blobDataStr, nowUnixSec, nowUnixSec, blobDataStr, nowUnixSec) -func (p *Player) MarkDirty() {} + f5.GetGoStyleDb().SyncSelectCustomQuery( + constant.MAIL_DB, + sql, + func(err error, rows *f5.DataSet) { + if err != nil { + f5.GetSysLog().Info("SaveToDB Error:%v\n", err) + } else { + f5.GetSysLog().Info("SaveToDB OK\n") + } + }, + ) +} + +func (p *Player) MarkDirty() { + timer := f5.GetTimer() + timer.SetTimeout( + 1000*10, + func(e int32, args *q5.Args) { + if e == q5.TIMER_EXEC_EVENT { + p.SaveToDB() + } + }, + ) +}