站内信(系统消息) 发送给所有用户

打算做一个站内信 又不想做成那种 查询所有用户 每一个用户发送一条消息 

就建立了 两个数据表 进行了一下简单的优化 也不是很完善 大家 有好的方案 请多指教 

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='系统消息读阅读状态表模型扩展表';

这个是用户的读取状态 信息表 进行 用户对系统消息的操作  其他的就是 你的逻辑代码了

你可能感兴趣的:(php)