这个是做中国电信天天生活助理的时候做的,还是大四实习的时候弄得,当时设计的时候想了半天,后来觉得这个思路还是不错的,所以记录下来,
一般的话就是用户表,消息表和用户消息表了,用户消息表主要就是记录用户是否已读或者是否删除从而使得用户表和消息表独立了起来,查的时候只需要关联查询就好了
消息表:
消息编号(message_id)、
消息标题(message_title)、
消息内容(message_content)
消息创建时间(message_createDate)、
是否审核通过(flag:通过:1,不通过:0,未审核:-1)(message_status)、
消息发送时间(message_date)、
管理员编号(admin_id);
T_Life_Umessage建立了索引 CREATE UNIQUE INDEX dm ON T_Life_UMessage(message_id,account); 删除索引 drop unique index on t_lilfe_umessage; 查询所有:SELECT * from T_Life_Message z WHERE z.message_id not in(SELECT u.message_id FROM T_Life_UMessage u WHERE u.account=‘18929563569‘ and u.isdelete = 1) and z.message_status=1 order by z.message_date desc; ================================ 20016=insert into T_Life_UMessage(message_id,account,isread,isdelete) values(?,?,1,0) ================================ 把isread查出来了:SELECT * FROM (SELECT * FROM T_Life_Message z WHERE z.message_id NOT IN(SELECT u.message_id FROM T_Life_UMessage u WHERE u.account=‘18922234293‘ AND u.isdelete=1) AND message_status=1) AS M LEFT JOIN (SELECT * FROM T_Life_UMessage u WHERE u.account=‘18922234293‘) AS N ON M.message_id=N.message_id ORDER BY M.message_date DESC ==================================== 加上时间限定: SELECT * FROM (SELECT * FROM T_Life_Message z WHERE z.message_id NOT IN(SELECT u.message_id FROM T_Life_UMessage u WHERE u.account=‘18027278186‘ AND u.isdelete=1) AND message_date>(SELECT create_time FROM T_Life_Admin WHERE account=‘‘ ) AND message_status=1) AS M LEFT JOIN (SELECT * FROM T_Life_UMessage u WHERE u.account=‘‘ ) AS N ON M.message_id=N.message_id ORDER BY M.message_date DESC ==================================== 查询未读消息:SELECT * FROM T_Life_Message z WHERE z.message_id NOT in(SELECT u.message_id FROM T_Life_UMessage u WHERE u.account=‘18929563569‘) AND z.message_status=1 ORDER BY z.message_date DESC ====================================
用户消息表:
消息编号(message_id)、
用户账号 (account)、
是否阅读(阅读:1,未阅读:0)(isread)、
是否删除(删除:1,未删除:0)(isdelete)
思路:WAP:管理员向message表中插入数据,用户登录之后遍历用户消息表和消息表,用户只遍历审核通过(flag=1)了的消息表。查出所有的消息,只显示未删除的消息,删除消息时设置消息为已阅,所以计算出所有消息之后减去用户已经阅读的消息则是用户的新消息数量
WEB:普通管理员可以编辑和保存消息,点击提交之后超级管理员才能审核否则不显示
超级管理员登陆之后会显示审核按钮,审核通过之后普通管理员编辑的消息flag设置为1;超级管理员没有编辑和删除普通管理员新增消息的权限。普通管理员只能看到自己新 增的所有消息。
时间: 2024-10-20 10:48:26