fix: issue update event post old message to CBC

This commit is contained in:
zhangsz
2025-08-06 12:03:03 +08:00
parent fc4309136e
commit 581fc441e0
2 changed files with 30 additions and 12 deletions

View File

@@ -157,18 +157,36 @@ func (s *CBCMessage) SelectByEventName(eventName string) (*model.CBCMessage, err
// @return error 错误信息 // @return error 错误信息
// @example // @example
// mfCBCMessageService.UpdateCBCMessage(msg) // 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() now := time.Now().UnixMilli()
if err := db.DB("").Table("cbc_message").
Where("id = ?", id). err := db.DB("").Transaction(func(tx *gorm.DB) error {
Updates(map[string]any{ // 在事务中更新
"message_json": messageJson, if err := tx.Table("cbc_message").
"updated_at": now, Where("id = ?", id).
}).Error; err != nil { Updates(map[string]any{
return fmt.Errorf("failed to update CBC message: %w", err) "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消息 // UpdateCBCMessage 更新CB消息

View File

@@ -90,8 +90,7 @@ func (s *CBCMessage) Update(id int64, messageJson json.RawMessage) error {
// 检查是否已存在相同的eventName // 检查是否已存在相同的eventName
var err error var err error
var msg *model.CBCMessage if _, err = s.cbcMessageRepository.SelectByEventName(eventName); err != nil {
if msg, err = s.cbcMessageRepository.SelectByEventName(eventName); err != nil {
if err == gorm.ErrRecordNotFound { if err == gorm.ErrRecordNotFound {
return fmt.Errorf("no existing CBC message found with eventName: %s", eventName) 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) return fmt.Errorf("failed to update CBC message: %w", err)
} }