This commit is contained in:
殷勇 2023-10-26 17:18:58 +08:00
parent e234527ac1
commit 292f6f87e7
4 changed files with 51 additions and 24 deletions

View File

@ -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
}

View File

@ -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"))

View File

@ -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) {

View File

@ -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()
}
},
)
}