一个星期没写进度,除了在看Java修炼内功,一直被各种事情缠着。临近期末,又到了要写各种大作业复习期末考试的忙碌时段了。最先的计划是在这个月(12月)中旬将这个毕业设计完成,但是显而易见,计划泡汤了。目前为止出了一个雏形,另有一个核心模块“留言/私信”没有开做。不过上个星期基本解决了“添加好友”这个功能的实现。

  先跟着截图看“加好友”的步骤。首先是在“好友”页面上方的文本框中输入对方的Email地址,点击“添加新好友”按钮。

photo1356443556611(1)

  如果有此用户,则显示相关信息在页面上。如果对方已经是您的好友或者他已经向您发出好友请求或者您已经向对方发出好友请求,会分别显示不同的信息。如果数据库中没有此用户名,目前还没有写处理此问题的代码。如下图所示,成功返回用户信息。
photo1356443556748(1)

点击上图的“加为好友”按钮,将显示如下内容。
photo1356443556851(1)

  与“添加好友”操作相关的数据库表有两个,一个是“好友表”,一个是“通知”表。好友关系是通过“好友表”确立的。表结构类似于uid,fuid,status等。每对好友需要两条记录来维持。比如我的uid是1,对方的uid是2,如果我们是好友,那么好友表中有这样两条记录:uid=1,fuid=2……;以及,uid=2,fuid=1……这样两条记录。status是状态的意思,我设定的是:'0'发出加好友请求,'1'双方已经是好友,‘2’收到加好友请求。另外的“通知表”,从字面很容易理解是用来做通知的。通知表的结构大致这样:id,uid,type,new,authorid,note,date等。uid是接受者,authorid是发起者,new用来判断是新消息还是已读消息,type是消息类型。用户登录时,后台会定时扫描“通知表”来确定是否有人想加我为好友,以及其他的消息。

  当点击“加为好友”按钮是,后台向数据库一共插入三条记录,分别是:好友表两条记录,通知表一条记录。好友表的记录上面已经说过了,通知表插入的记录为:uid为对方的uid,authorid为我的uid,type为“friend”,new为“1”,note为“XXX请求加您为好友”。

  对方在线时,窗口顶部会显示新消息提示。这是因为后台定时扫描通知表发现有uid为自己uid以及new==1的记录。
photo1356443556961(1)

点击消息提示栏,将显示所有新消息预览,如下图所示。
photo1356443557079(1)

点击一条消息,将显示具体消息内容,如下图所示。
photo1356443557192(1)

  页面显示信息发起者相关信息,有“接受”个“拒绝”选项。

  点击“接受”时对数据库的操作为:改变“好友表”两条数据(status状态变为1),更新“通知表”原先的那条记录(uid和authorid对换,type为accessfriend,new=1,note为“XXX接受了您的加好友请求”)。

  点击“拒绝”时对数据库的操作为:删除“好友表”两条数据,更新“通知表”原先的记录(uid和authorid对换,type为refusefriend,new=1,note为“XXX拒绝了您的加好友请求”)。

  点击“接受”按钮之后,显示如下图所示。
photo1356443557464(1)

对方接受请求或者拒绝请求,都会收到新消息提醒。
photo1356443557746(1)

接受请求的提示如下图所示。界面上的两个按钮还有待处理。
photo1356443557887(1)

至此,添加好友的整个流程完成了。对方点击“好友”显示的好友列表中出现刚才添加的好友,如下图所示。
photo1356443558028(1)

  现在只是非常粗略的将“添加好友”的功能基本实现,各种逻辑以及界面还有待进一步优化完善。鉴于快要期末考试,自己不再对此做计划。唯一的计划是,一月份结束前,将此网站的功能基本做完整,之后不断优化界面和交互。

(2012-12-25 昆工)