# **数据** ### 相关表 - forum (论坛分区) - subject (帖子) - subject_hot (热门帖子) - subject_media (帖子附件上传) - subject_share_count (帖子分享统计) - subject_tag (帖子标签) - subject_user_collection (收集发帖的用户ID,方便统计) - subject_view_count (帖子访问数) - forum_date_view_record (论坛按日访问次数) - forum_top (论坛置顶帖) - forum_user_collection (收集论坛访问用户ID,方便统计) - forum_date_view_record (论坛按日访问流水) - game_subject (游戏介绍页评论区的专属帖子) - comment (评论) - comment_share_count (评论分享数) - comment_user_collection (收集发表评论用户ID,方便统计) - like_record (点赞) - likerecord_user_collection(收集点赞用户ID,方便统计) - message (私信) - notice (通知) - user_block (用户自己的屏蔽数据) - user_follow_`*` (用户关注, 粉丝/订阅者) - user_follow_group_`*` (用户关注分组,实际没用到) - user_friend (好友,即相互关注) - user_report (用户举报) - user_subject_top (用户个人主页置顶的帖子) ---
# **相关的队列消费** > 以前由于时间关系,采用了非常简易的分批队列,基于redis。 > > 基础代码位于extensions/DwMultiQueue.php > > 业务代码 > - QueueCommentChild (子评论的队列) > - QueueCommentLike (评论的点赞队列) > - QueueCommentReply (评论的回复队列) > - QueueCommentShare (评论的分享队列) > - QueueGameLike (游戏点赞队列) > - QueueSubjectCmt (帖子的评论队列) > - QueueSubjectLike (帖子点赞队列) > - QueueSubjectPost (帖子发布后的后续处理队列) > - QueueSubjectShare (帖子的分享队列) > - QueueSubjectView (帖子的浏览队列) ### 前台使用方法(生产) 1. 继承DwMultiQueue,设置队列分批数,默认10。 2. 调用report方法,插入数据到队列。 > 例如 > > (new QueueSubjectPost)->report(['subjectId' => $subjectId]); ### 后台使用方法(消费) 1. 继承DwMultiQueue,设置队列分批数,默认10。 2. 实现handleOne方法,其中$elem参数由前台入队数据结构决定。 > 例如 > > QueueSubjectLike.php ---
### 社区业务概览 - 帖子 - 评论 - 子评论 - 父评论 - @评论 - 操作 - 点赞 - 举报 - 屏蔽 (可针对user,subject,comment) - 删除 (用户自删/后台删) - 操作 - 点赞 - 举报 - 屏蔽 (可针对user,subject,comment) - 删除 (用户自删/后台删) - 操作 - 私信 - 用户 - 用户关注 - 关系 - 被关注 (粉丝) - 关注 (订阅) - 互关 (好友) - 途径 - 线上关注 - 线下扫码 (完成后直接互关) - 用户主页 - 用户主页置顶帖 - 用户屏蔽数据 - 屏蔽用户列表 - 屏蔽帖子列表 - 屏蔽评论列表 - 社区综合 - 列表 - 置顶帖 - 热门帖 - 关注人的帖 - 最新更新帖 - 公告(在后台打了"公告"标签的帖子) - 数据 - 按日访问量 - 帖子发表数 - 评论发表数 ### 一些特殊注意事项 - 公告 > 最初开发以inform存储系统公告,在APP也有专门的位置展示系统公告,而非帖子形式 > > 之后为了灵活运营,就有了帖子形式的公告,在后台发布打了"公告"标签的帖子,也算是公告。 - 后台检索帖子 > 注意官帖和非官帖的区别。 > > 有时经常查不到内容,就要注意搜索条件顶部有没有切换`[官帖/非官帖]` - 用户关注表深度解析 - 首先理清双方的技术角度称呼 > uid-本人;to_uid-对方 - 再理解两者关系的方向性 > 这里采用`is_fans`表示,意为`[是否为对方的粉丝]`,请仔细、慢慢理解这几个字的意思,再往下看。 > 当is_fans=0,意思即`[不是对方的粉丝]`,用技术语言来讲,就是`uid被to_uid关注`。(既然不是对方粉丝,为什么要存这条数据?那是因为对方关注了自己,于是自己这一方,就必须存储了对方的逆向数据) > 当is_fans=1,意思即`[是对方的粉丝]`,用技术语言来讲,就是`uid关注了to_uid`。 > 设置is_fans字段的原因:在以uid分表后,支持逆向查询。 - 粉丝与好友的联系和区别 > 粉丝即单向关注,从表user_follow_*上看,只有一对互逆关系数据(2条) > > 好友即互相关注,从user_follow_*上看,会有两对互逆关系数据(4条) - A与B关系的记录形式初始值约定 > - uid=A, toUid=B, isFans=1, isIgnore=1 (A方的正向记录,A关注了B) > - uid=B, toUid=A, isFans=0, isIgnore=0 (A方的反向记录,B被A关注) > - uid=B, toUid=A, isFans=1, isIgnore=1 (B方的正向记录,B关注了A) > - uid=A, toUid=B, isFans=0, isIgnore=0 (B方的反向记录,A被B关注) - isIgnore值变化的约定 > `isIgnore`用于突出显示最近关注自己,但自己还没处理的人; > > 在点击`[忽略关注]`后,值从0变1。但当再次被他人强行重新关注(二维码发起关注)时,值再次变为0,按钮“忽略”再现。 - A 发起关注 B 时 > - uid=A, toUid=B, isFans=1, isIgnore=1 (A方正向记录,不需要"忽略"按钮) > - uid=B, toUid=A, isFans=0, isIgnore=0 (A方反向记录,需要"忽略"按钮,此按钮只能由B使用) - A 被 B 忽略时: > - uid=A, toUid=B, isFans=1, isIgnore=1 (A方正向记录,不需要"忽略"按钮。即不需要变更任何字段) > - uid=B, toUid=A, isFans=0, isIgnore=1 (A方反向记录,被B点了"忽略"按钮,此后在B的fanslist中,不显示此记录的"忽略"按钮) - A 被 B 回关 时,两人建立"互关"关系: > - uid=A, toUid=B, isFans=1, isIgnore=1 (A方正向记录,不需要"忽略"按钮。即不需要变更任何字段) > - uid=B, toUid=A, isFans=0, isIgnore=1 (A方反向记录,由于被B回关,故此后在B的fanslist中,不显示此记录的"忽略"按钮) > - uid=B, toUid=A, isFans=1, isIgnore=1 (B方的正向记录,B回关了A。此记录字段没有变化) > - uid=A, toUid=B, isFans=0, isIgnore=1 (B方的反向记录,A被B回关,故此后在A的fanslist中,不显示此记录的"忽略"按钮) > > **可见,互关关系下,四条记录的isIgnore值都是1**