zoukankan      html  css  js  c++  java
  • 有关站内信的数据库设计

    站内信:网站运营人员可以向单个(单发)或多个(群发)用户推送消息,站内信其实就是向数据库中插入一条条记录。

    数据库设计:

    message【站内信发件箱表】{每次运营人员发送一条站内信(无论是单发或是群发)就会在发件箱表中添加一条记录}

     

     表字段:ID、SendID、RecID、MessageID、Statue、DateTime

    messagetext【站内信发件内容表】{每次运营人员发送站内信的内容就会保存到站内信发件内容表中}

    表字段:ID、Title、Message、PData

    messageuserinfo【站内信接收箱表】{用户站内信收件箱}

    表字段:ID、SendID、RecID、MessageID、Statue、DateTime

    业务逻辑:在运营人员发送了一条站内信后,当用户再次登录时就会刷新历史站内信,而那些不活跃的用户就不会更新站内信。

    场景:运营人员向某个(单发)或多个(群发)用户发送站内信

    1. 添加发件内容:向messagetext站内信发件内容表中添加一条内容记录 {这里先添加messagetext站内信发件内容表产生一条记录,后面message站内信发件箱表中才有MessageID可以关联}
    2. 添加发件人发件记录:向message站内信发件箱表中添加一条发送记录 {备注:如果是单发RecID则是指定用户的UserID,如果是群发RecID则是0。(0表示所有用户)}
    3. 用户登录时刷新与自己有关的站内信,并将数据添加到messageuserinfo站内信接收箱表
      1. 查询条件:【发件人不是自己】并且【收件人是自己或者收件人是所有人】并且【自己收件表中不存在的记录】

        select m.id from Message as m where (m.recid='所有人' or m.recid='自己的ID') and m.sendid!='自己的ID' and m.MessageID not in (select u.messageid from MessageUserInfo as u  where u.recid='自己的ID')
        

          

      2. 将相关的站内信消息添加到自己的收件表中,并标记未读。
        1.   将上面【查询条件】中查询出来的id信息用做查询message站内信发件箱表的条件
          select * from message  where id=上面的m.id
          

            

        2. 将获取到message站内信发件箱表数据添加到messageuserinfo站内信接收箱表
      3. 查询出自己的站内信记录
        select u.ID,u.RecID,m.Title,m.Message,u.Statue,m.PDate from messageuserinfo as u join messagetext as m on u.MessageID = m.ID where u.RecID='自己的ID'
        

          

  • 相关阅读:
    家庭网关
    linux -jdk 安装
    linux 常见命令--系统信息部分
    pyglet--EventLoop对象(主事件循环,用于从系统消息队列中取出消息,并派发给各个窗口)
    ATL com的dll文件与tlb文件
    MFC实现COM组件
    如何定义一个接口(接口Interface只在COM组件中定义了,MFC和C++都没有接口的概念)
    关于DLL调试的两个工具(dependency walker和dumpbin.exe)
    MFC工程名称与所包含文件名称的关系(工程名可以更改,输出的.dll.exe.lib都以最后工程名命名为准)
    关于c++中命名空间namespace
  • 原文地址:https://www.cnblogs.com/2018clg/p/9247564.html
Copyright © 2011-2022 走看看