571
社区成员
发帖
与我相关
我的任务
分享
此Todolist应用本着less is more的思想,突出备忘录软件本身应该具有的功能,尽可能剔除其它冗余的功能,让用户能够快速上手使用、高效管理时间。此系统采用目前主流的前后端分离的设计模式进行开发,前端主要负责与用户的互动,后端主要负责数据的处理和业务的实现。



用户模块处理用户相关业务,包括注册、登录、用户信息管理等功能。其中用户有登录、未登录、密码锁定、账户锁定、用户不存在等状态,其状态变化如下图所示。

通过用户在此界面输入用户名、密码和确认密码信息,完成用户名与密码在数据库中的录入,并由此获得一个可进入系统的用户名和密码。其中,不同用户的用户名不能重复。用户输入用户名和密码信息后,系统建立用户数据。若输入信息不合法或用户名已存在,则向用户返回错误信息。

用户输入用户名和密码后,系统检查数据库中是否存在相应的用户数据,如果存在,则用户登录成功,数据库更新用户登录记录;如果不存在,则向用户返回错误信息。

若用户在一周内登录过系统,则在相同设备上可直接进入系统,无需登录。用户登录时前端自动向服务器发送Cookie,Cookie包含用户名和密码信息。服务器正确校验Cookie后,用户登录成功,数据库更新用户登录记录。如果校验不通过,则转入密码登录。

用户信息包括用户名、密码、昵称、性别、手机号、QQ号、微信号、电子邮箱、用户头像。

用户可以修改密码、昵称、性别、手机号、QQ号、微信号、电子邮箱、用户头像。

待办事项模块处理待办事项相关业务,包括分类信息的管理、待办事项信息的管理和统计。4.1 待办事项信息包括:事项内容、分类、优先级、状态(待办、失败、完成等)、开始时间、闹钟提醒时间等。

用户可以创建分类,系统将分类信息保存至数据库。添加分类时必须必须输入分类名。如果没有填写分类名,则添加失败并告知用户。

用户可以删除分类,系统从数据库中删除相应分类信息。

用户可以修改分类信息,并将修改后的分类信息保存至数据库。

用户可以添加待办事项,添加待办事项时必填项有事项内容、优先级、开始时间、截止时间;选填项内容有分类、闹钟提醒时间。其中截止时间要晚于开始时间。如果没有填写分类,则将待办事项加入“未分类”分类中。如果某些必填项没有填写,则添加失败并告知用户。系统将新创建的待办事项信息保存至数据库。若待办事项没有设置重复,则只产生一条待办事项;若待办事项设置为重复,需要根据重复周期和重复次数产生多条待办事项并插入数据库。

用户可以删除待办事项,系统从数据库中删除此待办事项以及它的所有子待办事项。

用户可以修改待办事项信息,系统将修改后的待办信息保存至数据库。

用户可以按照列表模式查看当天或者将来某天的待办事项,用户也可以选择按照日历模式查看某周或者某月份的待办事项。

用户可以查看过去某天、某周、某月、某年的待办总体完成情况的统计信息,包括某段时间内设置的待办事项个数、完成的待办事项个数、没有完成的待办事项个数。系统从数据库中查询用户的待办事项完成情况,汇总后发送给前端页面进行展示。

专注模块处理专注相关的业务,包括专注模式、软件白名单管理、专注统计等功能。其中专注有专注中、专注暂停、专注结束等状态,其状态变化如下图所示。
用户开启专注模式后,设备将进入锁定状态。锁定状态期间,用户不能使用除白名单以外的所有软件。专注结束后,系统将专注时间记录到数据库。

用户可以编辑白名单中的软件信息,并将白名单内容保存到用户设备上。

用户可以查看过去某天、某周、某月、某年的专注时间。用户既可以查看总专注时间,也可以查看某个分类的专注时间。系统从数据库中查询用户的专注情况,汇总后发送给前端页面进行展示。


这个部分说明后端为前端提供的服务调用接口,包括接口地址、接口功能、输入参数、返回结果。如果没有特别说明,所有消息通过 HTTP 协议传送,请求方式为 Post,请求参数放入 RequestBody 里,返回结果均为 JsonResult 类型。所有接口都可能返回参数相关错误、权限不够错误。为了叙述方便,下面接口说明中的返回结果不再写出此类错误。



后端业务处理架构如下图所示。图中自下而上分别是数据访问层、业务层、控制层,其中,下层为上层提供服务调用接口,上层通过调用下层提供的接口完成服务。此外,业务层内部的各个类可以相互调用接口。控制层为前端提供接口调用,数据访问层接口由Mybatis-generator 库根据数据库表自动生成,也不再具体说明。所以这个小节只说明业务层提供的接口。





本项目用到的设计模式有单例模式、抽象工厂模式、观察者模式。
学号尾号:386