信箱优化

This commit is contained in:
hahwu 2026-02-25 11:05:03 +08:00
parent 1b51313cf0
commit f9d33219f5

View File

@ -136,16 +136,21 @@ func FixBug() {
defer messageMgrData.mu.Unlock()
now := GoUtil.Now()
for k, v := range messageMgrData.MessageList {
if k < 100000 || CheckPlayerLose(int(k)) {
if k < 100000 {
delete(messageMgrData.MessageList, k)
continue
}
isLose := CheckPlayerLose(int(k))
// 反向遍历以安全删除元素
for i := len(v.Messages) - 1; i >= 0; i-- {
if v.Messages[i].Type == msg.HANDLE_TYPE_CHAMPSHIP_NOTIFY || (v.Messages[i].End != 0 && v.Messages[i].End < now) {
// 删除消息
v.Messages = append(v.Messages[:i], v.Messages[i+1:]...)
}
if isLose && v.Messages[i].Type == msg.HANDLE_TYPE_CHAMPSHIP_RESULT {
// 删除消息
v.Messages = append(v.Messages[:i], v.Messages[i+1:]...)
}
}
if len(v.Messages) == 0 {
delete(messageMgrData.MessageList, k)
@ -886,9 +891,6 @@ func sendMessageSync(m *msg.Msg, node int) (*msg.Msg, error) {
// 保存消息到本地
func saveMessage(m *msg.Msg) error {
if CheckPlayerLose(m.To) {
return nil
}
data := getMessageData()
data.mu.Lock()
defer data.mu.Unlock()
@ -896,6 +898,7 @@ func saveMessage(m *msg.Msg) error {
messages := getMessgeUnsafe(int64(m.To))
messages.mu.Lock()
defer messages.mu.Unlock()
now := GoUtil.Now()
for _, msgItem := range messages.Messages {
if msgItem == nil {
continue
@ -904,9 +907,11 @@ func saveMessage(m *msg.Msg) error {
// 已存在相同消息,直接返回
return nil
}
if msgItem.End != 0 && msgItem.End < now {
// 删除过期消息
messages.Messages = append(messages.Messages[:0], messages.Messages[1:]...)
}
}
// 添加消息
messages.Messages = append(messages.Messages, m)
// 添加消息
messages.Messages = append(messages.Messages, m)
// 设置上限为2000条超过则丢弃最早的消息