From 581fc441e0c7802f4eb0cc016dd127cdd36f2c03 Mon Sep 17 00:00:00 2001 From: zhangsz Date: Wed, 6 Aug 2025 12:03:03 +0800 Subject: [PATCH] fix: issue update event post old message to CBC --- .../network_data/repository/cbc_message.go | 36 ++++++++++++++----- .../network_data/service/cbc_message.go | 6 ++-- 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/src/modules/network_data/repository/cbc_message.go b/src/modules/network_data/repository/cbc_message.go index d7c09198..f37c9866 100644 --- a/src/modules/network_data/repository/cbc_message.go +++ b/src/modules/network_data/repository/cbc_message.go @@ -157,18 +157,36 @@ func (s *CBCMessage) SelectByEventName(eventName string) (*model.CBCMessage, err // @return error 错误信息 // @example // mfCBCMessageService.UpdateCBCMessage(msg) -func (s *CBCMessage) Update(id int64, messageJson json.RawMessage) error { +func (s *CBCMessage) Update(id int64, messageJson json.RawMessage) (*model.CBCMessage, error) { + var msg model.CBCMessage now := time.Now().UnixMilli() - if err := db.DB("").Table("cbc_message"). - Where("id = ?", id). - Updates(map[string]any{ - "message_json": messageJson, - "updated_at": now, - }).Error; err != nil { - return fmt.Errorf("failed to update CBC message: %w", err) + + err := db.DB("").Transaction(func(tx *gorm.DB) error { + // 在事务中更新 + if err := tx.Table("cbc_message"). + Where("id = ?", id). + Updates(map[string]any{ + "message_json": messageJson, + "updated_at": now, + }).Error; err != nil { + return fmt.Errorf("failed to update CBC message: %w", err) + } + + // 在事务中查询更新后的记录 + if err := tx.Table("cbc_message"). + Where("id = ?", id). + First(&msg).Error; err != nil { + return fmt.Errorf("failed to fetch updated CBC message: %w", err) + } + + return nil + }) + + if err != nil { + return nil, err } - return nil + return &msg, nil } // UpdateCBCMessage 更新CB消息 diff --git a/src/modules/network_data/service/cbc_message.go b/src/modules/network_data/service/cbc_message.go index 1772faa7..c5aad39c 100644 --- a/src/modules/network_data/service/cbc_message.go +++ b/src/modules/network_data/service/cbc_message.go @@ -90,8 +90,7 @@ func (s *CBCMessage) Update(id int64, messageJson json.RawMessage) error { // 检查是否已存在相同的eventName var err error - var msg *model.CBCMessage - if msg, err = s.cbcMessageRepository.SelectByEventName(eventName); err != nil { + if _, err = s.cbcMessageRepository.SelectByEventName(eventName); err != nil { if err == gorm.ErrRecordNotFound { return fmt.Errorf("no existing CBC message found with eventName: %s", eventName) } @@ -99,7 +98,8 @@ func (s *CBCMessage) Update(id int64, messageJson json.RawMessage) error { } // 如果存在,更新记录 - if err := s.cbcMessageRepository.Update(id, messageJson); err != nil { + var msg *model.CBCMessage + if msg, err = s.cbcMessageRepository.Update(id, messageJson); err != nil { return fmt.Errorf("failed to update CBC message: %w", err) }