黑马旅游第一天—编写开发文档

第一章 总体说明

1、引言

  此需求规格说明书对项目的背景、范围、验收标准和需求等信息进行说明,包括功能性需求和非功能性需求,确保对用户需求的理解一致,而概要设计是对项目中涉及的业务、技术总体架构、接口数量、数据库表的一个初步设计。详细设计会定义出项目模块、模块的依赖关系、数据库表字段、接口使用的约束条件、传入参数、返回参数的统一设计。

2、系统概述

  黑马旅游为用户提供一个方便的电子网络平台。该系统分前台官网部分和后台系统管理部分。旅行社通过后台管理系统将旅游信息发布在该平台上,并对整个旅游线路进行有效的控制、管理和统计、实施;消费者通过系统官网方便快捷的选择或关注需要的旅游方案,享受旅行社或平台提供的各种旅游服务。

3、用户特性

  • 本软件的最终用户将是官网用户(旅游者),旅行社管理人员
  • 官网用户:只要求有基本的电脑操作知识,互联网知识即可。
  • 旅行社管理人员:要求了解基本的电脑操作知识,经过一定时间的使用培训即可

 

第二章 需求文档

1、注册

【1】功能描述

  1. 用户填写完基本信息后,点击注册按钮时,可以为用户创建账号

  2. 注册页面上点击“立即登录”跳转登录页面

【2】加载方法

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

【3】页面操作

功能操作功能操作描述重要度
注册 点击【注册】,创建当前用户
立即登录 点击【立即登录】,跳转登录页面

【4】约束条件

  1. 注册页面,提交表单时,需要的约束条件

字段是否必须是否唯一
用户名 Y Y
密码 Y N
Email Y Y
姓名 Y N
手机 Y Y
性别 Y N
生日 Y N

【5】页面跳转

  1. 注册成功,自动完成登录功能,跳转到首页

  2. 注册失败,本页面不做跳转,返回错误提示信息

 

2、登录

【1】功能描述

  • 在登录页面上

用户填写完账号和密码后,点击登录按钮时,完成登录,跳转到首页

登录成功:在首页显示登录成功后的用户信息

登录失败:在登录页面回显对应的提示信息

【2】加载方法

  1. 首页中右上角,如果当前用户处于【未登录】状态,显示“登录”超链接,点击“登录”超链接时跳转到登录页面
  1. 用户点击“我的收藏”,"关注",如果当前用用户处于【未登录】状态,直接跳转到登录页面

【3】页面操作

功能操作功能操作描述重要度
登录 点击【登录】,提交后台
立刻注册 点击【立刻注册】,跳转注册页面

【4】约束条件

用户提交登录时,需要的表单约束条件

字段是否必须
用户名 Y
密码 Y
验证码 Y

【5】页面跳转

  1. 登录成功,跳转首页

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

 

3、退出

【1】功能描述

  1. 用户退出
  1. 切换账户

【2】加载方法

首页中右上角,如果当前用户处于【登录】状态,显示“退出”超链接,点击“退出”超链接时,退出当前账户并显示“登陆”的超链接

【3】页面操作

首页中右上角,如果当前用户处于【登录】状态,显示“退出”,点击“退出”,显示“登陆”

【4】约束条件

当前用户处于【登录】状态

【5】页面跳转

点击“退出”跳转到首页

 

4、我的收藏

【1】功能描述

首页中右上角,如果当前用户处于【登录】状态,显示“我的收藏”超链接,点击“我的收藏”跳转到收藏列表页面,显示当前用户收藏的线路信息

【2】加载方法

首页中右上角,如果当前用户处于【登录】状态,显示“我的收藏”,点击我的收藏超链接时,跳转到收藏页面,在收藏页面加载成功后,显示当前用户收藏的线路信息

【3】页面操作

当前用户处于【登录】状态,点击“我的收藏”跳转到收藏列表页面

【4】约束条件

当前用户处于【登录】状态

【5】页面跳转

跳转到myfavorite.html页面上展示信息

 

5、首页

【1】搜索

【1.1】功能描述

提供针对“线路名称”,“简介”等内容的搜索,搜索后跳转搜索结果页面

【1.2】加载方法

用户访问首页时,加载

【1.3】页面操作

搜索后跳转搜索结果页面

【1.4】约束条件

提供针对“线路名称”,“简介”等内容的搜索

【1.5】页面跳转

搜索后跳转搜索结果页面

【2】导航分类

【2.1】功能描述

  1. 显示当前系统中的一级菜单
  1. 跳转对应的功能模块

【2.2】加载方法

用户访问首页时,加载

【2.3】页面操作

跳转对应的功能模块

【2.4】约束条件

【2.5】页面跳转

跳转对应的功能模块

【3】线路分类加载

【3.1】功能描述

  1. 按分类“黑马精选”、“国内游”、“国外游”,分别展示数据
  2. 点击展现线路,跳转线路详情

【3.2】加载方法

用户访问首页时,加载

【3.3】页面操作

点击展现线路,跳转线路详情

【3.4】约束条件

【3.5】页面跳转

跳转线路详情

 

6、线路详情

【1】功能描述

  1. 展现线路详情,包括不限于:景点图片、景点简介、供应商、价格、关注、收藏、收藏次数
  1. 关注,如果当前用用户处于【登录】状态,为此用户添加关注记录,且修改此线路被关注的次数

【2】加载方法

  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、架构模块

【1】依赖关系

【2】模块职能

【travel-parent】

1、统一定义jar和plugin的插件版本

2、定义管理其他模块

3、定义依赖声明

4、定义deploy的私服信息

【travel-core】

1、redis的config配置

2、mybatis的配置支持

3、mybatis的主键生成策略interceptor的定义

4、mybatis的主键生成策略支持工具类

5、登录interceptors的定义

6、spring的配置文件

7、spring-mvc的配置文件

【travel-redis】

1、定义缓存结构

2、提供统一缓存工具类

3、支持spring-session的统一session管理

【travel-commons】

1、constant常量定义

2、exception异常定义

3、mybatis-plugin插件定义

4、返回结构类定义

5、工具类

6、vo父类定义

【travel-dao】

1、mapper层接口

2、pojo层对象

3、自定义mapperExt的支持

【travel-service】

1、主体业务的实现

2、网关路由实现类

【travel-web-admin】

后台项目-管理平台

1、projectInitCofing的初始化配置文件
2、统一响应网关路由web层

【travel-web-platform】

1、projectInitCofing的初始化配置文件

2、统一响应网关路由web层

 

2、数据库

【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 生日
email 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
Email 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
email 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】请求参数
在header中传递下列参数
字段类型长度注释是否为空
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】请求参数
在header中传递下列参数
字段类型长度注释是否为空
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、首页在访问时候,用于判定是否显示“登录”、“我的收藏”链接

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2020-09-16 19:42  w小伙  阅读(159)  评论(0)    收藏  举报