黑马旅游第一天—编写开发文档
1、引言
此需求规格说明书对项目的背景、范围、验收标准和需求等信息进行说明,包括功能性需求和非功能性需求,确保对用户需求的理解一致,而概要设计是对项目中涉及的业务、技术总体架构、接口数量、数据库表的一个初步设计。详细设计会定义出项目模块、模块的依赖关系、数据库表字段、接口使用的约束条件、传入参数、返回参数的统一设计。
2、系统概述
3、用户特性
- 本软件的最终用户将是官网用户(旅游者),旅行社管理人员
- 官网用户:只要求有基本的电脑操作知识,互联网知识即可。
- 旅行社管理人员:要求了解基本的电脑操作知识,经过一定时间的使用培训即可
1、注册
【1】功能描述
-
用户填写完基本信息后,点击注册按钮时,可以为用户创建账号
-
注册页面上点击“立即登录”跳转登录页面
【2】加载方法
-
首页中右上角,如果当前用户处于【未登录】状态,显示“注册”,点击“注册”可以跳转到注册页面
【3】页面操作
| 功能操作 | 功能操作描述 | 重要度 |
|---|---|---|
| 注册 | 点击【注册】,创建当前用户 | 高 |
| 立即登录 | 点击【立即登录】,跳转登录页面 | 高 |
【4】约束条件
-
注册页面,提交表单时,需要的约束条件
| 字段 | 是否必须 | 是否唯一 |
|---|---|---|
| 用户名 | Y | Y |
| 密码 | Y | N |
| Y | Y | |
| 姓名 | Y | N |
| 手机 | Y | Y |
| 性别 | Y | N |
| 生日 | Y | N |
【5】页面跳转
-
注册成功,自动完成登录功能,跳转到首页
-
注册失败,本页面不做跳转,返回错误提示信息
2、登录
- 在登录页面上
用户填写完账号和密码后,点击登录按钮时,完成登录,跳转到首页
登录成功:在首页显示登录成功后的用户信息
登录失败:在登录页面回显对应的提示信息
【2】加载方法
- 首页中右上角,如果当前用户处于【未登录】状态,显示“登录”超链接,点击“登录”超链接时跳转到登录页面
- 用户点击“我的收藏”,"关注",如果当前用用户处于【未登录】状态,直接跳转到登录页面
【3】页面操作
| 功能操作 | 功能操作描述 | 重要度 |
|---|---|---|
| 登录 | 点击【登录】,提交后台 | 高 |
| 立刻注册 | 点击【立刻注册】,跳转注册页面 | 高 |
【4】约束条件
用户提交登录时,需要的表单约束条件
| 字段 | 是否必须 |
|---|---|
| 用户名 | Y |
| 密码 | Y |
| 验证码 | Y |
【5】页面跳转
-
登录成功,跳转首页
-
登录失败,本页面不做跳转,返回错误提示信息
3、退出
【1】功能描述
- 用户退出
- 切换账户
【2】加载方法
首页中右上角,如果当前用户处于【登录】状态,显示“退出”超链接,点击“退出”超链接时,退出当前账户并显示“登陆”的超链接
首页中右上角,如果当前用户处于【登录】状态,显示“退出”,点击“退出”,显示“登陆”
【4】约束条件
当前用户处于【登录】状态
【5】页面跳转
点击“退出”跳转到首页
【1】功能描述
首页中右上角,如果当前用户处于【登录】状态,显示“我的收藏”超链接,点击“我的收藏”跳转到收藏列表页面,显示当前用户收藏的线路信息
【2】加载方法
首页中右上角,如果当前用户处于【登录】状态,显示“我的收藏”,点击我的收藏超链接时,跳转到收藏页面,在收藏页面加载成功后,显示当前用户收藏的线路信息
【3】页面操作
当前用户处于【登录】状态,点击“我的收藏”跳转到收藏列表页面
【4】约束条件
当前用户处于【登录】状态
【5】页面跳转
跳转到myfavorite.html页面上展示信息
5、首页
【1】搜索
【1.1】功能描述
提供针对“线路名称”,“简介”等内容的搜索,搜索后跳转搜索结果页面
【1.2】加载方法
用户访问首页时,加载
【1.3】页面操作
搜索后跳转搜索结果页面
【1.4】约束条件
提供针对“线路名称”,“简介”等内容的搜索
【1.5】页面跳转
搜索后跳转搜索结果页面
【2】导航分类
【2.1】功能描述
- 显示当前系统中的一级菜单
- 跳转对应的功能模块
【2.2】加载方法
用户访问首页时,加载
【2.3】页面操作
跳转对应的功能模块
【2.4】约束条件
无
【2.5】页面跳转
跳转对应的功能模块
【3】线路分类加载
【3.1】功能描述
- 按分类“黑马精选”、“国内游”、“国外游”,分别展示数据
- 点击展现线路,跳转线路详情
【3.2】加载方法
用户访问首页时,加载
【3.3】页面操作
点击展现线路,跳转线路详情
【3.4】约束条件
无
【3.5】页面跳转
跳转线路详情
6、线路详情
【1】功能描述
- 展现线路详情,包括不限于:景点图片、景点简介、供应商、价格、关注、收藏、收藏次数
- 关注,如果当前用用户处于【登录】状态,为此用户添加关注记录,且修改此线路被关注的次数
【2】加载方法
- 首页点击线路图标
- 搜索后点击线路图标
【4】页面操作
关注,如果当前用用户处于【登录】状态,为此用户添加关注记录,且修改此线路被关注的次数
【3】约束条件
1、点击“关注”,如果当前用用户处于【未登录】状态,直接跳转到登录页面
【5】页面跳转
1、业务架构

层级划分
- 控制层:此处的getway网关只要负责响应、返回、session控制的统一管理
- 业务层:主体业务分为后台管理中心与官方网站,其中后台管理主要负责商家及电商用户管理、角色管理、资源管理和线路管理,官方网站:主要负责主体业务对客户的呈现
- 基础模块:图片服务、日志服务、数据服务
2、技术架构

3、网络架构


4、接口概要设计
【1】用户模块
将跟用户相关的功能划分到一个模块中叫做---用户模块
| 接口名称 | 接口描述 |
|---|---|
| registerUser | 注册接口 |
| loginUser | 登录接口 |
| logoutUser | 退出接口 |
| isLogin | 是否登录接口 |
【2】收藏模块
将跟线路收藏相关的功能划分到一个模块中叫做---收藏模块
但是收藏模块关联的表: 用户表 线路表
| 接口名称 | 接口描述 |
|---|---|
| findMyFavorite | 我的收藏 |
| addFavorited | 添加收藏 |
| isFavorited | 是否收藏 |
【3】分类模块
| 接口名称 | 接口描述 |
|---|---|
| findAllCategory | 查询所有分类 |
【4】线路模块
| 接口名称 | 接口描述 |
|---|---|
| findRouteByPage | 多条件线路查询分页 |
| findRouteById | 线路详情 |
| findSellerById | 查询商家发布的线路信息 |
5、数据库概要设计
【1】业务表
| 表名 | 描述 |
|---|---|
| tab_affix | 图片表【附件】 |
| tab_category | 分类表 |
| tab_favorite | 收藏表 |
| tab_route | 路线表 |
| tab_seller | 商家表 |
| tab_user | 用户表 |
【2】业务表关系

| 表名 | 描述 |
|---|---|
| tab_affix | 多个图片属于同一个线路 |
| tab_category | 一个分类下面可以有多条线路 |
| tab_favorite | 多条收藏属于同一个用户 |
| tab_route | 一条线路有多个图片、被关注多次、属于某个商家、属于某个分类 |
| tab_seller | 一个商家可以发布多条线路 |
| tab_user | 一个用户可以关注多条线路 |
第四章 详细设计
1、架构模块
【2】模块职能
1、统一定义jar和plugin的插件版本
2、定义管理其他模块
3、定义依赖声明
4、定义deploy的私服信息
1、redis的config配置
2、mybatis的配置支持
3、mybatis的主键生成策略interceptor的定义
4、mybatis的主键生成策略支持工具类
5、登录interceptors的定义
6、spring的配置文件
7、spring-mvc的配置文件

1、定义缓存结构
2、提供统一缓存工具类
3、支持spring-session的统一session管理

1、constant常量定义
2、exception异常定义
3、mybatis-plugin插件定义
4、返回结构类定义
5、工具类
6、vo父类定义
1、mapper层接口
2、pojo层对象
3、自定义mapperExt的支持

1、主体业务的实现
2、网关路由实现类

后台项目-管理平台
1、projectInitCofing的初始化配置文件
2、统一响应网关路由web层
1、projectInitCofing的初始化配置文件
2、统一响应网关路由web层

【1】业务表总目录
| 表名 | 描述 |
|---|---|
| tab_affix | 图片表【附件】 |
| tab_category | 分类表 |
| tab_favorite | 关注表 |
| tab_route | 路线表 |
| tab_seller | 商家表 |
| tab_user | 用户表 |
【2】tab_affix
功能:负责整个系统的所有图片的上传信息的存储
| 字段 | 类型 | 长度 | 是否为空 | 注释 |
|---|---|---|---|---|
| id | bigint | 18 | N | 主键 |
| business_id | bigint | 18 | Y | 业务主键 |
| business_type | varchar | 36 | Y | 业务类型 |
| suffix | varchar | 10 | Y | 后缀 |
| file_name | varchar | 200 | Y | 文件名称 |
| path_url | varchar | 200 | Y | 文件访问路径 |
【3】tab_category
功能:负责首页导航条的分类管理
| 字段 | 类型 | 长度 | 是否为空 | 注释 |
|---|---|---|---|---|
| id | bigint | 18 | N | 主键 |
| category_name | varchar | 100 | N | 分类名称 |
| category_url | varchar | 255 | N | 分类链接 |
【4】tab_favorite
功能:用户收藏的线路关联表,需要注意的是路线信息需要关联查询出来
| 字段 | 类型 | 长度 | 是否为空 | 注释 |
|---|---|---|---|---|
| id | bigint | 18 | N | 主键 |
| user_id | bigint | 18 | N | 用户Id |
| route_id | bigint | 18 | N | 路线Id |
【5】tab_route
功能:路线信息表,用于商家定义路线信息,及路线信息的展现,需要注意的是对于的图片信息需要从文件附件表中查询出来,商家信息需要从商家表中关联查询出来
| 字段 | 类型 | 长度 | 是否为空 | 注释 |
|---|---|---|---|---|
| id | bigint | 18 | N | 主键 |
| route_name | varchar | 200 | N | 线路名称 |
| price | decimal | (12,4) | N | 分类链接 |
| route_Introduce | varchar | 2000 | Y | 线路描述 |
| flag | char | 1 | N | 标记 |
| is_theme_tour | char | 1 | N | 是否主题之旅 |
| attention_count | int | 11 | N | 关注数 |
| category_id | bigint | 18 | N | 分类ID |
| seller_id | bigint | 18 | N | 商家ID |
【6】tab_seller
功能:商家信息的定义,商家登录后台时的账户信息
| 字段 | 类型 | 长度 | 是否为空 | 注释 |
|---|---|---|---|---|
| id | bigint | 18 | N | 主键 |
| seller_name | varchar | 200 | N | 商家姓名 |
| telephone | varchar | 12 | N | 电话 |
| address | varchar | 200 | Y | 地址 |
| username | varchar | 100 | N | 账户 |
| password | varchar | 32 | N | 密码 |
| birthday | datetime | 0 | Y | 生日 |
【7】tab_user
功能:用户信息的定义,商家登录商城时的账户信息
| 字段 | 类型 | 长度 | 是否为空 | 注释 |
|---|---|---|---|---|
| id | bigint | 18 | N | 主键 |
| real_name | varchar | 200 | N | 姓名 |
| telephone | varchar | 12 | N | 电话 |
| sex | char | 200 | Y | 地址 |
| username | varchar | 100 | N | 账户 |
| password | varchar | 32 | N | 密码 |
| birthday | datetime | 0 | Y | 生日 |
| varchar | 100 | Y | 邮箱 |
3、用户模块
整个接口设计中,除注册接口、登录接口接口外,交互时候都需要在header中传递下列参数
| 字段 | 类型 | 长度 | 注释 | 是否为空 |
|---|---|---|---|---|
| accessToken | String | 36 | 登录成功后返回的token令牌 | N |
【1】注册接口
【1.1】功能描述
1、在register.html页面上,当用户填写完基本信息后,点击注册按钮时,为用户创建账号
2、注册页面点击“立即登录”跳转login.html页面

【1.2】加载方法
1、首页中右上角,如果当前用户处于【未登录】状态,显示“注册”,点击“注册”可以跳转到注册页面

2、用户登录页面,右下方点击立刻注册可以跳转到注册页面

【1.3】页面操作
| 功能操作 | 功能操作描述 | 重要度 |
|---|---|---|
| 注册 | 点击【注册】,创建当前用户 | 高 |
| 立即登录 | 点击【立即登录】,跳转登录页面 | 高 |
【1.4】约束条件
1、注册页面,提交表单时,需要的约束条件
| 字段 | 是否必须 | 是否唯一 |
|---|---|---|
| 用户名 | Y | Y |
| 密码 | Y | N |
| Y | Y | |
| 姓名 | Y | N |
| 手机 | Y | Y |
| 性别 | Y | N |
| 生日 | Y | N |
【1.5】页面跳转
1、注册成功,自动完成登录过程,跳转首页

2、注册失败,本页面不做跳转,返回错误提示信息
【1.6】接口详情
【1.6.1】请求路径
http://127.0.0.1:8080/platform/api-platform/userService/registerUser
网关: 配置访问的网关,所有的请求都需要通过这个网关访问我们的服务(service)
http://127.0.0.1:8080 定位服务器
/platform 项目名称
/api-platform 定位处理器类
/userService 需要调用的service层对象是什么
/registerUser 需要完成的功能
【1.6.2】请求方式
请求方式:post
Content-Type : application/json
【1.6.3】方法信息
接口类信息:com.itheima.travel.service.UserService
方法名:registerUser
【1.6.4】请求参数
| 字段 | 类型 | 长度 | 注释 | 是否为空 |
|---|---|---|---|---|
| realName | String | 200 | 真实姓名 | Y |
| telephone | String | 12 | 电话 | N |
| sex | String | 200 | 性别 | N |
| username | String | 100 | 用户名称 | N |
| password | String | 32 | 密码 | N |
| birthday | Date | 0 | 生日 | Y |
| String | 100 | 邮箱 | N |
请求json字符串
{ "moduleName":"用户注册", "operationType":"register", "data":{ "realName":"束XX", "telephone":"15156408888", "sex":1, "username":"admin_test", "password":"pass", "birthday":"1984-02-03", "email":"15156408888@qq.com" } }
【1.6.5】返回信息
类型:布尔类型
{
"code": "200",
"msg": "操作成功",
"userId": null,
"userName": null,
"operationTime": null,
"data": true
}
备注:如果返回的编码不为200,则在页面上显示对于的提示信息即可
【1.6.6】业务逻辑
1、保存用户信息到数据库
2、注册成功后,自动登录,把用户信息放入session中,并且跳转首页
【2】登录接口
【2.1】功能描述
在login.html页面上,用户填写完账号和密码后,点击登录按钮时,发送登录的请求,完成登录并跳转首页

【2.2】加载方法
1、首页中右上角,如果当前用户处于【未登录】状态,显示“登录”,点击“登录”可以跳转到登录页面

2、用户点击“我的收藏”,"点击收藏",如果当前用用户处于【未登录】状态,直接跳转到登录页面

【2.3】页面操作
| 功能操作 | 功能操作描述 | 重要度 |
|---|---|---|
| 登录 | 点击【登录】,提交后台 | 高 |
| 立刻注册 | 点击【立刻注册】,跳转注册页面 | 高 |
【2.4】约束条件
用户提交登录时,需要的表单约束条件
| 字段 | 是否必须 |
|---|---|
| 用户名 | Y |
| 密码 | Y |
【2.5】页面跳转
1、登录成功,跳转首页

2、登录失败,本页面不做跳转,返回错误提示信息

【2.6】接口详情
【2.6.1】请求路径
http://127.0.0.1:8080/platform/api-platform/userService/loginUser
【2.6.2】请求方式
请求方式:post
Content-Type : application/json
【2.6.3】方法信息
接口类信息:com.itheima.travel.service.UserService
方法名:loginUser
【2.6.4】请求参数
| 字段 | 类型 | 长度 | 注释 | 是否为空 |
|---|---|---|---|---|
| username | String | 100 | 用户名称 | N |
| password | String | 32 | 密码 | N |
请求json字符串
{
"moduleName":"用户登录",
"operationType":"login",
"data":{
"username":"admin",
"password":"pass"
}
}
【2.6.5】返回信息
{
"code": "200",
"msg": "操作成功",
"userId": null,
"userName": null,
"operationTime": "2020-08-29 11:53:20",
"data": {
"id": 1,
"username": "admin",
"password": "1a1dc91c907325c69271ddf0c944bc72",
"realName": "束XX",
"birthday": "2020-08-28 09:53:53",
"sex": "1",
"telephone": "15156408888",
"email": "15156408888@qq.com",
"token": "637eb64f-1a65-473f-b7bf-e9e5310e835f"
}
}
备注:如果返回的编码不为200,则在页面上显示对于的提示信息即可
【2.6.6】业务逻辑
1、使用MD5加密用户传入的password字段,根据用户名和密码去数据库中查询用户信息,查到则认为登录成功,查不到则认为登录失败
2、登录后,把用户信息放入session中,并且跳转首页
【3】退出接口
【3.1】功能描述
1、用户退出
2、切换账户

【3.2】加载方法
首页中右上角,如果当前用户处于【登录】状态,显示“退出”,点击“退出”,显示“登陆”
【3.3】页面操作
首页中右上角,如果当前用户处于【登录】状态,显示“退出”,点击“退出”,显示“登陆”
【3.4】约束条件
当前用户处于【登录】状态
【3.5】页面跳转
无
【3.6】接口详情
【2.6.1】请求路径
http://127.0.0.1:8080/platform/api-platform/userService/loginOutUser
【2.6.2】请求方式
请求方式:post
Content-Type : application/json
【2.6.3】方法信息
接口类信息:com.itheima.travel.service.impl.UserService
方法名:logoutUser
【2.6.4】请求参数
| 字段 | 类型 | 长度 | 注释 | 是否为空 |
|---|---|---|---|---|
| accessToken | String | 36 | 登录成功后返回的token令牌 | N |
json请求格式
{
"moduleName":"用户退出",
"operationType":"loginOut"
}
【2.6.5】返回信息
类型:布尔类型
{
"code": "200",
"msg": "操作成功",
"userId": 1,
"userName": "admin",
"operationTime": "2020-08-30 03:34:35",
"data": true
}
备注:如果返回的编码不为200,则在页面上显示对于的提示信息即可
【2.6.6】业务逻辑
1、用户处于【登录】状态,显示“退出”,点击“退出”,显示“登陆”
2、后台中从session中清除对应的用户信息
【4】是否登录接口
【4.1】功能描述
1、判断当前用户是否登录

【4.2】加载方法
无
【4.3】页面操作
无
【4.4】约束条件
当前用户处于【登录】状态
【4.5】页面跳转
无
【4.6】接口详情
【4.6.1】请求路径
http://127.0.0.1:8080/platform/api-platform/userService/isLogin
【4.6.2】请求方式
请求方式:post
Content-Type : application/json
【4.6.3】方法信息
接口类信息:com.itheima.travel.service.UserService
方法名:isLogin
【4.6.4】请求参数
| 字段 | 类型 | 长度 | 注释 | 是否为空 |
|---|---|---|---|---|
| accessToken | String | 36 | 登录成功后返回的token令牌 | N |
json请求格式
{
"moduleName":"是否登录",
"operationType":"isLogin"
}
【4.6.5】返回信息
类型:布尔类型
{
"msg": "请求成功",
"code": "200",
"userId": "",
"userName": "",
"data":{
true
}
}
备注:如果返回的编码不为200,则在页面上显示对于的提示信息即可
【4.6.6】业务逻辑
1、后台中从session中获得对应的用户信息,获取到则为登录,获取不到则为未登录
2、首页在访问时候,用于判定是否显示“登录”、“我的收藏”链接

浙公网安备 33010602011771号