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 错误信息
|
||||
// @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消息
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user