信箱优化
This commit is contained in:
parent
1b51313cf0
commit
f9d33219f5
@ -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,11 +907,13 @@ 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条,超过则丢弃最早的消息
|
||||
if len(messages.Messages) > 2000 {
|
||||
excess := len(messages.Messages) - 2000
|
||||
|
||||
Loading…
Reference in New Issue
Block a user