Skip to content

Latest commit

 

History

History
104 lines (57 loc) · 3.64 KB

设计规范.md

File metadata and controls

104 lines (57 loc) · 3.64 KB

家校通设计规范

角色

家校通业务中的角色有四种:管理员、教师、家长、学生。 考虑到本产品的目标用户集中在小学校,因此学生角色不能登录客户端。

教师、家长主要登录客户端使用业务。 管理员主要使用 web 端发布通知。

功能

  1. 教室可以发布通知
  2. 布置作业
  3. 交流**(正在做)**
  4. 公布成绩

待讨论:

  1. 学生安全签到系统

设计

1. 消息推送

jpush(极光推送) 推送限制为 1K,因此想要靠推送实现发送消息的想法不能实现。

为了解决该问题,我们使用推送来告诉客户端有新消息通知,当然这个消息可能是聊天消息、好友添加消息、通知消息等。

推送中包含该消息的id,凭借此 id,客户端可以从接口获取到具体的 Message。然后判断该消息类型,进一步处理该消息。

2. 客户端数据库

客户端数据库保存好友列表、历史聊天记录,暂时不保存公告,想要查看公告,需要使用服务端提供的接口获取

  1. ChatMessageDao 用于获取保存历史聊天记录

3. 角色

  1. 数据库中角色的设计。

我们的系统中存在 学生、家长、老师 三种角色。其中 学生是不能登录的,只是连接老师与家长的媒介。

经过商定,决定仅仅使用 Person 类, person 类中有个 type 标志,指明了是学生还是老师或者是家长。

难点攻克

1. 消息的时效期

极光推送消息的最长等待时间为 10 天,也就是说超过这个时间,即使客户端上线,也不会推送消息。

解决方案:

讨论中

2. 消息队列

为了能够实现添加好友的功能,服务端必须有一个消息队列。

** 讨论中**

3. 老师与家长的关系

老师与家长采用的是一种订阅关系,家长可以根据学生来订阅老师。

当订阅成功后,家长就会成功进入到老师的圈子中。

本设计以老师为中心,每个老师一个圈子,如果老师教多个班级,则多个班级都会在同一个圈子。

老师可以统一发给所有家长,也可以给统一发给指定班级,更甚者,可以指定发给具体家长。

当发送消息给指定家长,老师与家长的关系就变成了同等级的聊天。

家长不可以在圈子中发送消息,只可以私信老师,如果老师觉得之前的通知有不妥,可以补充发送。

4. alias 不在线

目前想要的设计是,注销后,删除android 客户端所在的 jpush alias,但是如果找不到 alias时,server调用jpush sdk发送message 会报错。

**讨论中**

5. 头像

6. 会话列表不能显示

在一台 android 机上测试, 2 发给3, 因为使用2发,所以3不在线,导致消息发送不到3,即使再使用3登录(详见问题 4) 但为什么能显示聊天记录呢,因为 2发送给3时保存了一份,由于使用 fromAccount和 toAccount 的 or 方法查询,因此换另一个号也能查询到。

**讨论中**

7. 为了能让修改信息后,立刻在会话列表显示

决定每次更新会话 listview 时,在 adapter 中从数据库加载 nick 等信息。

8. 会话列表信息的显示

为了效率,只有在第一次创建历史会话时,加载好友 nick等信息,而之后不会变。 如果需要更新,需要更新客户端中的 RecentChat 数据库。

由于本应用的特殊性,不需要加好友就可以直接发送消息这时:

接受方: nick 设置为帐号, 其他的信息就是空
发送方: 发送前需要保证对方的信息已经获取

9. Spring Rest 中路径参数不支持中文