上一篇: 下一篇:

Discuz Ucenter短消息设计

2009年02月25日  |  10:00 下午分类:Develop  |  标签:  |  

UCenter中关于短消息这一块的数据表结构如下:

不大理解这里的delstatus/related二个字段的作用。
delstatus语义上应该是标识该消息的删除状态
related语义为关联,
现在试着以admin给yibin001发一件消息

所执行的SQL语句

SELECT count(*) FROM `ucenter`.uc_pms WHERE msgfromid='1' AND msgtoid='2' AND folder='inbox' AND related='0'
INSERT INTO `ucenter`.uc_pms (msgfrom,msgfromid,msgtoid,folder,new,subject,dateline,related,message,fromappid) VALUES ('admin','1','2','inbox','1','测试消息','1235570029','0','测试消息','1')
SELECT count(*) FROM `ucenter`.uc_pms WHERE msgfromid='2' AND msgtoid='1' AND folder='inbox' AND related='0'
INSERT INTO `ucenter`.uc_pms (msgfrom,msgfromid,msgtoid,folder,new,subject,dateline,related,message,fromappid) VALUES ('admin','2','1','inbox','0','测试消息','1235570029','0','测试消息','0')
INSERT INTO `ucenter`.uc_pms (msgfrom,msgfromid,msgtoid,folder,new,subject,dateline,related,message,fromappid) VALUES ('admin','1','2','inbox','1','测试消息','1235570029','1','测试消息','1')
REPLACE INTO `ucenter`.uc_newpm (uid) VALUES ('2')

以yibin001登录并回复短消息


sql语句

SELECT count(*) FROM `ucenter`.uc_pms WHERE msgfromid='2' AND msgtoid='1' AND folder='inbox' AND related='0'
UPDATE `ucenter`.uc_pms SET subject='回复', message='回复', dateline='1235570298', new='1', fromappid='1' WHERE msgfromid='2' AND msgtoid='1' AND folder='inbox' AND related='0'
SELECT count(*) FROM `ucenter`.uc_pms WHERE msgfromid='1' AND msgtoid='2' AND folder='inbox' AND related='0'
INSERT INTO `ucenter`.uc_pms (msgfrom,msgfromid,msgtoid,folder,new,subject,dateline,related,message,fromappid) VALUES ('yibin001','2','1','inbox','1','回复','1235570298','1','回复','1')
REPLACE INTO `ucenter`.uc_newpm (uid) VALUES ('1')

光看这部分有点晕,没看出delstatus/related二个字段的作用。

转载时务必以超链接形式标明文章原始出处和作者信息。

8 位领导已批示 关于 “Discuz Ucenter短消息设计”

  1. along 发表于: 二月 26th, 2009 12:38 上午

    删除状态 个人认为 是一个标识,因为现在的大部分系统中的删除,并不是实际意义的删除,只是改变了显示状态,在检索的时候不被检索而已,这样方便日后回档。

  2. 幻想曲 发表于: 二月 26th, 2009 8:58 上午

    @along:
    按发件人ID查询短消息是这样写的
    $arr1 = $this->db->fetch_all("SELECT * FROM ".UC_DBTABLEPRE."pms WHERE msgfromid=’$uid’ AND msgtoid=’$touid’ AND dateline>=’$starttime’ AND dateline<’$endtime’ AND related>’0′ AND delstatus IN (0,2) ORDER BY dateline");
    $arr2 = $this->db->fetch_all("SELECT * FROM ".UC_DBTABLEPRE."pms WHERE msgfromid=’$touid’ AND msgtoid=’$uid’ AND dateline>=’$starttime’ AND dateline<’$endtime’ AND related>’0′ AND delstatus IN (0,1) ORDER BY dateline");
    $arr = array_merge($arr1, $arr

  3. 幻想曲 发表于: 二月 26th, 2009 8:58 上午

    $arr = array_merge($arr1, $arr2);
    这里的delstatus有三个标志位0/1/2
    有时间接着看删除短消息部分

  4. 幻想曲 发表于: 二月 26th, 2009 8:59 上午

    @along:
    另外,就现在的Discuz! 7.0来讲的话,短消息删除后就无法恢复了

  5. blue 发表于: 三月 8th, 2009 3:30 下午

    这个你得分析一下 1.0 和 1.5 版本
    1.0 是
    delstatus 删除状态,甲删除为1,乙删除为2 甲乙都删除,才从数据库里删除。
    related 是发起的悄悄话pmid ,即以事件为线索,可以列成帖子状。

    1.5
    delstatus 基本没有用了,短消息是分开发的,而且那个fromuid 什么的都有了新的功能
    related 是不是子pm 。这是为了向下兼容使用 1.0 的应用,所以没有改字段名。

    新的1.5的悄悄话,是以人为线索的,类似QQ聊天记录。
    总结:1.5 的悄悄话,那叫一个乱字。

  6. 幻想曲 发表于: 三月 8th, 2009 8:53 下午

    @blue:
    嗯,的确1.5中的悄悄话是以人为单位,同一人发送的短消息在短消息列表中只会显示最新的一条,查看信息时才会显示对方与自己的历史记录,类似于聊天记录。
    没有与1.0对比,还真看不出某此字段的意义。

  7. zwws 发表于: 三月 28th, 2009 8:32 下午

    这是哪个GUI tool来着?

  8. Kampanye Damai 2009 发表于: 四月 1st, 2009 12:20 上午

    Thanks for sharing your thought. Wish you good luck for your future endeavors.


发表您的评论

1410168172122013183195114157619