邮件功能优化

This commit is contained in:
hahwu 2025-02-08 15:52:01 +08:00
parent c464275763
commit 18e40fa78e
6 changed files with 57 additions and 4 deletions

View File

@ -481,6 +481,7 @@ type SqlServerMailStruct struct {
End_time int64 `db:"end_time"`
Mail_type int `db:"mail_type"`
To_uids string `db:"to_uids"`
CreateTime int64 `db:"create_time"`
}
type SqlChargeOrderStruct struct {

View File

@ -9,6 +9,11 @@ import (
"strings"
)
const (
MAIL_TYPE_SERVER = 1
MAIL_TYPE_USER = 2
)
type MailMgr struct {
*ServerMod
list map[int]*ServerMail
@ -39,6 +44,13 @@ func (m *MailMgr) Init() {
// 注册处理函数
m.init()
m.LoadMail()
m.RegisterHandler(msg.HANDLE_TYPE_MAIL_ADD, m.AddMail)
}
func (m *MailMgr) AddMail(msg *msg.Msg) error {
ServerMail := msg.Extra.(*ServerMail)
m.list[ServerMail.Id] = ServerMail
return nil
}
func (r *MailMgr) LoadMail() {
@ -67,6 +79,27 @@ func (r *MailMgr) LoadMail() {
}
}
func (r *MailMgr) Sync() {
G_GameLogicPtr.NotifyAll(&msg.Msg{Type: msg.HANDLE_TYPE_MAIL, Extra: r.list[1]})
func (r *MailMgr) Sync(Uid int, Register int64) []ServerMail {
// 同步邮件
Now := GoUtil.Now()
list := make([]ServerMail, 0)
for _, v := range r.list {
if v.Start_time > 0 && v.Start_time > Now {
continue
}
if v.End_time > 0 && v.End_time < Now {
continue
}
if v.Register_time > 0 && v.Register_time < Register {
continue
}
if v.Mail_type == MAIL_TYPE_SERVER { //全服邮件
list = append(list, *v)
} else {
if GoUtil.InArray(Uid, v.To_uids) {
list = append(list, *v)
}
}
}
return list
}

View File

@ -426,6 +426,10 @@ func (p *PlayerBaseData) ClearData() bool {
return true
}
func (p *PlayerBaseData) GetRegisterTime() int64 {
return int64(p.Data.Rolecreatetime)
}
// 增加减少体力
func (p *PlayerBaseData) AddEnergy(player *Player, cnt int) error {
BaseMod := p.p.PlayMod.getBaseMod()

View File

@ -322,6 +322,18 @@ func SyncFriendMsg(p *Player) {
p.PlayMod.save()
}
func SyncMailMsg(p *Player) {
ServerMailList := G_GameLogicPtr.MailMgr.Sync(int(p.M_DwUin), p.GetPlayerBaseMod().GetRegisterTime())
MailMod := p.PlayMod.getMailMod()
for _, v := range ServerMailList {
if GoUtil.InArray(v.Id, MailMod.ServerMail) {
continue
}
MailMod.ServerMail = append(MailMod.ServerMail, v.Id)
MailMod.Send(v.Title, v.Content, v.Items)
}
}
// 返回好友信息
func FriendListBackData(p *Player) {
FriendMod := p.PlayMod.getFriendMod()

View File

@ -10,6 +10,7 @@ import (
type MailMod struct {
List map[int]*MailInfo // 邮件列表
AutoId int // 自增id
ServerMail []int
}
const (

View File

@ -67,6 +67,8 @@ const (
SERVER_NOON_UPDATE // 12点更新
FRIEND_TREASURE_HANDLE //好友宝藏操作
HANDLE_TYPE_MAIL_ADD //添加邮件
)
const (