高级图书管理系统 详细设计说明书
用词说明:以下说明文档中的 输入,对于 Web后端模块,均指通过 URL Query String 、Cookie 或以 HTML application/x-www-form-urlencoded
或 multipart/form-data
形式提交的表单;对于 API,则指通过 API 请求,配合所需 HTTP 谓词提交的 application/x-www-form-urlencoded
或 multipart/form-data
表单 。以下说明文档中的 输出,对于Web后端模块,均指通过模板变量向前端传送的对象;对于 API,则指 JSON 对象。
以上说明中的名词均是链接,可点击查看详细。URI
说明:以下所有变量表中,类型后面带有问号 ?
表示这个变量的值可能为 null
,不带有问号表示不可能为 null
。Any
类型表示可以为任何值,但是不可为 null
,Any?
类型表示可以为任何值,也可为 null
。输入变量表的类型有问号还意味着这个输入是可选的。
变量名 | 类型 | 说明 |
---|---|---|
public | String | 公共静态资源文件所在路径,值一般为 /public |
siteName | String | 站点名称,取决于数据库中 Setting 表同名项的值 |
user | User? | 当用户登录后,此变量指向包含当前用户所有基本信息的对象。若未登录则为 null 。完整名称为 com.kenvix.bookmgr.orm.tables.pojos.User |
msg | String? | 原样包含用户通过 URL Query String 传入的 msg 变量( i.e. /user/login?msg=密码错误 )。一般用于展示某个信息,例如登录页面上通知用户密码错误。此字段已经经过编码确保不会发生 XSS。此处展示的信息应简洁易懂,只允许纯文本,不允许超过 256 个字。 |
page | Int? | 原样包含用户通过 URL Query String 传入的 page 变量,表示当前页码 ( i.e. /book?page=3 )。一般在包含多页的信息时出现,例如展示图书列表时 |
备注:包 com.kenvix.bookmgr.orm.tables.pojos
下的所有类的均为对数据库对象的直接映射,命名和数据类型均和数据库对应,只是将 小写和下划线 的命名替换为 驼峰命名(表为大驼峰,字段为小驼峰)。此外,所有 POJO 和数据对象的访问都应该通过 getXXX()
, setXXX(value)
进行
命名风格:本模块中,URI 以 /action
结尾的一般表示对应功能的动作部分;不带 /action
的则为展示部分,用于展示前端页面。为防止用户重复执行操作,以 /action
结尾的动作部分没有前端页面,也不会停留,始终会通过跳转或JSON的形式转到展示部分。
登录页面 URI:/user/login
页面模板路径:home/user/login.ftl
登录过程 URI:/user/login/action
输入方式:HTTP POST /user/login/action
(MIME application/x-www-form-urlencoded
)
输入变量表
变量名 | 类型 | 说明 |
---|---|---|
username | String | 学号或邮箱 |
password | String | 密码 |
remember | Any? | 是否保持登录 30 天,这个字段非 Null 则视为保持登录 |
输出行为:当登录失败时,跳转回 登录页面,并附加 msg
参数告知原因;当登录成功时,将会命令浏览器设置一个名为 Token
的 Cookie,并直接跳转到首页
变量名 | 形式 | 类型 | 说明 |
---|---|---|---|
msg | URL Query String | String | 用户登录失败说明 |
Token | Cookie | String | 当用户登录成功时由服务器命令客户端设置。用户登录凭证,由后端签名颁发。凭此凭证可以证明用户已经登录 |
登出过程 URI:/user/logout/action
输入方式:HTTP POST /user/logout/action
输入变量表:无
输出行为:当登出成功时,转 登录页面 并带有 msg
提示登出成功
注册页面 URI:/user/register
页面模板路径:home/user/register.ftl
注册过程 URI:/user/register/action
输入方式:HTTP POST /user/register/action
(MIME application/x-www-form-urlencoded
)
输入变量表
变量名 | 类型 | 说明 |
---|---|---|
username | String | 学号 |
realName | String | 真实姓名 |
String | 邮箱地址 | |
password | String | 密码 |
输出行为:当注册失败时,跳转回 注册页面,并附加 msg
参数告知原因;当注册成功时,转 登录页面,并附加 msg
参数告知注册成功
变量名 | 形式 | 类型 | 说明 |
---|---|---|---|
msg | URL Query String | String | 用户注册结果说明 |
资料页面 URI:/user/profile
页面模板路径:home/user/profile.ftl
资料修改过程 URI:/user/profile/action
输入方式:HTTP POST /user/profile/action
(MIME application/x-www-form-urlencoded
)
输入变量表
变量名 | 类型 | 说明 |
---|---|---|
String | 新邮箱地址 | |
password | String | 新密码 |
输出行为:始终跳转到 资料页面,并附加 msg
参数告知结果
变量名 | 形式 | 类型 | 说明 |
---|---|---|---|
msg | URL Query String | String | 用户操作结果说明 |
个性化页面 URI:/user/personalize
页面模板路径:home/user/personalize.ftl
此功能没有 /action
动作后端
以下功能都需要登录使用。因此对未登录用户完全隐藏
页面 URI:/reader/book
页面模板路径:home/reader/book_list.ftl
输入方式: URL Query String
输入变量表
变量名 | 类型 | 说明 |
---|---|---|
filter_title | String? | 按标题过滤图书 |
filter_publisher | String? 或 Long? | 按出版社名称或者出版社ID过滤图书 |
filter_description | String? | 按图书描述过滤图书 |
filter_available | Any? | 按图书是否可以借阅过滤图书,非 Null 表示只显示可借阅图书 |
filter_type | String? | 按图书类型名过滤图书 |
filter_author | String? 或 Long? | 按作者名或作者ID过滤图书 |
page | Int? | 图书列表页码 |
输出变量表
变量名 | 类型 | 说明 |
---|---|---|
books | List<BookForUser> | 符合条件的图书列表。完整名称为 com.kenvix.bookmgr.orm.tables.pojos.BookForUser |
页面 URI:/reader/book/search
页面模板路径:home/reader/book_search.ftl
无输入
说明:这个页面应提供搜索表单,其表单动作目标就是 列出所有图书(用户视角),动作方式为 GET
页面 URI:/reader/book/{bookId}
(注: {bookId}
表示此处为变量 bookId)
页面模板路径:home/reader/book_detail.ftl
输入方式:URL Path
输入变量表
变量名 | 形式 | 类型 | 说明 |
---|---|---|---|
bookId | URL Path | Long | 图书 ID |
输出变量表
变量名 | 类型 | 说明 |
---|---|---|
book | BookForUserAndAuthors | 图书和作者信息,完整名称为 com.kenvix.bookmgr.contacts.generic.BookForUserAndAuthors |
数据对象 BookForUserAndAuthors
字段 | 类型 | 说明 |
---|---|---|
book | BookForUser | 图书信息,完整名称为 com.kenvix.bookmgr.orm.tables.pojos.BookForUser |
authors | List<BookAuthor> | 所有作者信息,完整名称为 com.kenvix.bookmgr.orm.tables.pojos.generic.BookAuthor |
前端实现注意:此功能可以和读者图书借阅的列出所有图书共享同一套前端模板
页面 URI:/reader/book/borrow
无输入
输出变量表
变量名 | 类型 | 说明 |
---|---|---|
books | List<BookBorrowForAdmin> | 符合条件的图书列表,包含借书信息。完整名称为 com.kenvix.bookmgr.orm.tables.pojos.BookBorrowForAdmin |
URI:/reader/book/borrow/borrow
输入方式:HTTP POST /user/book/borrow/borrow (MIME application/x-www-form-urlencoded)
输入变量表
变量名 | 类型 | 说明 |
---|---|---|
borrow_id | Long | 借书 ID |
输出行为:始终跳转到 列出已借图书,并附加 msg
参数告知结果
变量名 | 形式 | 类型 | 说明 |
---|---|---|---|
msg | URL Query String | String | 用户操作结果说明 |
URI:/reader/book/borrow/return
输入方式:HTTP POST /user/book/borrow/return (MIME application/x-www-form-urlencoded)
输入变量表
变量名 | 类型 | 说明 |
---|---|---|
borrow_id | Long | 借书 ID |
输出行为:始终跳转到 列出已借图书,并附加 msg
参数告知结果
变量名 | 形式 | 类型 | 说明 |
---|---|---|---|
msg | URL Query String | String | 用户操作结果说明 |
URI:/reader/book/borrow/renew
输入方式:HTTP POST /user/book/borrow/renew (MIME application/x-www-form-urlencoded)
输入变量表
变量名 | 类型 | 说明 |
---|---|---|
borrow_id | Long | 借书 ID |
输出行为:始终跳转到 列出已借图书,并附加 msg
参数告知结果
变量名 | 形式 | 类型 | 说明 |
---|---|---|---|
msg | URL Query String | String | 用户操作结果说明 |
以下功能都需要登录且必须具有管理权限 (user.getAccessLevel() >= 100
) 使用。因此应对未登录用户和权限不足的用户完全隐藏
列出所有作者、列出所有出版社功能和上节一致,管理模块只是提供增删改功能。
前端实现注意:此功能可以和读者图书借阅的列出所有图书共享同一套前端模板
页面 URI:/admin/book
输入、输出变量表同读者图书借阅的 列出所有图书
API 模块用于系统和其他第三方程序交互