*************************************************
** 本教程基于版本:Discuz! X 2.0 **
*************************************************
一、私人消息 发表私人消息时,先去 pm_lists 表中根据 min_max 字段检查收发双方之前有没有短消息记录。如果不存在,视为首次发送短消息;如果存在,获取收发双方 uid 和记录 id 对。
1、首次发新消息:如果之前双方无消息记录 1)向pm_lists表中插入一条数据,作为双方发送短消息的索引关系,并获取索引关系id。 2)向pm_indexes表中插入数据,获取新的pmid,建立pmid和索引的关联。 3)向pm的内容表pm_message_X里插入此次短消息的内容。(这里存在分表的情况。) 4)向pm_members表中插入收发双方两条信息。
2、回复短消息:根据之前获取的索引id 1)向pm_indexes表中插入数据,获取新的pmid,建立pmid和索引的关联。 2)向pm的内容表pm_message_X里插入此次短消息的内容。(存在分表的情况) 3)向pm_members表中插入收发双方两条信息。如果插入失败,则更新已有的会员短消息信息。
二、群聊 1、向pm_lists表里插入一条群聊记录,作为群聊的索引,并获取id。(min_max此时为0) 2、向pm_indexes表中插入数据,获取新的pmid,建立pmid和索引的关联。 3、向pm的内容表pm_message_X里插入群聊短消息的内容。(存在分表的情况) 4、向pm_members表中插入逐条收发双方人员的信息。
所有短消息的接收方都更新其在newpm表中的记录。 |