关于message表,消息的发送方和接收方如何确定
GODVvVZzz opened this issue · comments
非常感谢作者的开源 !有问题想请教一下~
-- Table structure for message
DROP TABLE IF EXISTS message
;
CREATE TABLE message
(
id
bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增主键',
user_id
bigint(20) unsigned NOT NULL COMMENT '所属类型的id',
request_id
bigint(20) NOT NULL COMMENT '请求id',
code
tinyint(4) NOT NULL COMMENT '消息类型',
content
blob NOT NULL COMMENT '消息内容',
seq
bigint(20) unsigned NOT NULL COMMENT '消息序列号',
send_time
datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP (3) COMMENT '消息发送时间',
status
tinyint(255) NOT NULL DEFAULT '0' COMMENT '消息状态,0:未处理1:消息撤回',
create_time
datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time
datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (id
),
UNIQUE KEY uk_user_id_seq
(user_id
, seq
) USING BTREE
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_bin COMMENT ='消息';
这个表,只有一个userId,如何确定每条消息的发送方和接收方呢?
user_id是接受方的,发送方在content里面
哦好的,我看到了,content中存的是下面格式的数据。感谢解答!
push := pb.UserMessagePush{
Sender: sender,
ReceiverId: req.ReceiverId,
Content: req.Content,
}
还想问下 这个request_id是用来追踪会话的吗
一个request_id代表一个会话记录?
是用来追踪消息的,一个消息一个request_id
那request_id一般什么时候传呢?这点不太理解,有点迷
目前我看代码中发消息时候是从ctx中取的,如下:
internal/logic/domain/message/service/message_service.go 84-92行
selfMessage := model.Message{
UserId: toUserID,
RequestId: grpclib.GetCtxRequestId(ctx),
Code: message.Code,
Content: message.Content,
Seq: seq,
SendTime: util.UnunixMilliTime(message.SendTime),
Status: int32(pb.MessageStatus_MS_NORMAL),
}