打算做一个站内信 又不想做成那种 查询所有用户 每一个用户发送一条消息
就建立了 两个数据表 进行了一下简单的优化 也不是很完善 大家 有好的方案 请多指教
CREATE TABLE `system_message` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '文档id',
`user_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '指定接收人ID',
`content` varchar(256) NOT NULL DEFAULT '' COMMENT '消息内容',
`is_read` enum('0','1') NOT NULL DEFAULT '0' COMMENT '是否到达:0=否,1=是',
`event` varchar(128) NOT NULL DEFAULT '' COMMENT '事件',
`is_all` enum('0','1') NOT NULL DEFAULT '0' COMMENT '是否是群发消息:0=否,1=是',
`msgtype` tinyint(1) NOT NULL DEFAULT '1' COMMENT '消息类型',
`create_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COMMENT='系统消息模型扩展表';
这个是信息的 主表 记录所有的信息
CREATE TABLE `user_system_message_read` (
`aid` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '文档id',
`model` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '数据模型',
`sys_msg_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '系统消息ID',
`user_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '会员ID',
`status` enum('-1','1') NOT NULL DEFAULT '0' COMMENT '状态:1=已读,-1=已删',
`create_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '读取时间',
PRIMARY KEY (`aid`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COMMENT='系统消息读阅读状态表模型扩展表';
这个是用户的读取状态 信息表 进行 用户对系统消息的操作 其他的就是 你的逻辑代码了