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 错误信息
// @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消息

View File

@@ -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)
}