[关闭]
@Zjmainstay 2017-03-06T17:07:00.000000Z 字数 1310 阅读 3342

站内信功能设计

功能


站内信内容表

  1. CREATE TABLE `tb_notice` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '站内信内容表',
  3. `title` char(50) NOT NULL DEFAULT '' COMMENT '标题',
  4. `user_id` int(11) NOT NULL COMMENT '接收站内信用户id,值为0表示系统站内信',
  5. `status` smallint(3) NOT NULL COMMENT ' 发布状态(100:未发布 200:发布)',
  6. `message` text NOT NULL COMMENT '内容',
  7. `create_by` int(11) NOT NULL COMMENT '创建人',
  8. `create_time` datetime NOT NULL COMMENT '创建时间',
  9. `modify_time` datetime NOT NULL COMMENT '修改时间',
  10. `publish_time` datetime NOT NULL COMMENT '发布时间',
  11. `is_read` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否已读(发给单独用户记录)',
  12. PRIMARY KEY (`id`),
  13. KEY `key_user_id_is_read` (`user_id`,`is_read`)
  14. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

系统消息阅读表

  1. CREATE TABLE `tb_notice_read` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '系统站内信阅读记录表',
  3. `user_id` int(11) NOT NULL COMMENT '系统站内信阅读用户id',
  4. `notice_id` int(11) NOT NULL COMMENT '站内信id',
  5. `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
  6. PRIMARY KEY (`id`),
  7. KEY `key_user_id` (`user_id`),
  8. KEY `key_notice_id` (`notice_id`)
  9. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

未读信息

  1. explain select * from tb_notice where user_id = 1 and is_read = 0
  2. union
  3. select * from tb_notice where user_id = 0 and is_read=0 and id not in (
  4. select notice_id from tb_notice_read where user_id = 1 #1 如果结果集为空,not in 判断不需要
  5. )

已读信息

  1. explain select * from tb_notice where user_id = 1 and is_read = 1
  2. union
  3. select * from tb_notice where id in (
  4. select notice_id from tb_notice_read where user_id = 1 #1 如果结果集为空,not in 判断不需要
  5. )
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注