|
@@ -302,13 +302,25 @@ func (c *Client) persistenceMessage(ctx context.Context, message *Message) error
|
|
|
return eris.New("unknown message type")
|
|
|
}
|
|
|
|
|
|
- err := c.repos.SessionRepository.CreateMessage(c.ctx, &mod)
|
|
|
+ err := c.repos.Transaction(ctx, func(ctx context.Context, repos *repositories.Repositories) error {
|
|
|
+ err := c.repos.SessionRepository.CreateMessage(c.ctx, &mod)
|
|
|
+ if err != nil {
|
|
|
+ zap.L().Error("[persistence] unable to message",
|
|
|
+ zap.Error(err),
|
|
|
+ zap.String("user_id", c.UserId),
|
|
|
+ zap.String("request_id", requestId))
|
|
|
+ return eris.Wrap(err, "unable to persistence message")
|
|
|
+ }
|
|
|
+
|
|
|
+ // 将自己设置为已读
|
|
|
+ err = c.repos.MessageReadLogRepository.CreateMessageReadLog(ctx, &models.MessageReadLog{
|
|
|
+ MessageId: mod.ID,
|
|
|
+ Reader: mod.Sender,
|
|
|
+ })
|
|
|
+ return err
|
|
|
+ })
|
|
|
if err != nil {
|
|
|
- zap.L().Error("[persistence] unable to message",
|
|
|
- zap.Error(err),
|
|
|
- zap.String("user_id", c.UserId),
|
|
|
- zap.String("request_id", requestId))
|
|
|
- return eris.Wrap(err, "unable to persistence message")
|
|
|
+ return err
|
|
|
}
|
|
|
|
|
|
zap.L().Info("[persistence] save database end",
|