fix: issue update event post old message to CBC
This commit is contained in:
@@ -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消息
|
||||||
|
|||||||
@@ -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)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user