第4章 系统设计
4.1系统结构设计
系统设计主要是管理员登录后对整个系统相关操作进行处理,可进行管理员的添加和删除,系统用户管理、新闻数据管理、系统简介设置、用户注册管理、留言管理、友情链接管理、变幻图管理、科室信息管理、医生信息管理、预约挂号管理、就诊处方管理、科室预约统计管理、系统管理等操作管理。
系统的功能结构图如下图所示。
图4-1系统功能结构图
4.2功能模块设计
- 系统登录:系统登录是管理员访问系统的路口,设计了系统登录界面,包括管理员名、密码和验证码,然后对登录进来的管理员判断身份信息,判断是管理员管理员还是普通用户。
- 管理员管理:管理员可以管理系统的其他普通用户的账号,包括录入新管理员,删除现有的普通用户,修改现有的普通用户的信息,并可以通过管理员名和姓名等关键字搜索普通用户,打印管理员列表页面,导出管理员列表至excel中。
- 修改密码:系统所有管理员(管理员和普通用户)应该都要能修改自己的登录密码,修改后需要重新登录。
- 个人资料管理:由普通用户使用,普通用户登录系统后,可以修改个人原始信息,如修改电话号码、邮箱等,管理员的管理员名是无法修改的。
- 登录情况管理:系统每个管理员应该都能查看个人的历史登录情况,如登录IP、登录时间、登录地址等,防止管理员账号被盗,加强管理员账号安全。
4.3数据库设计
系统里尤为关键的部分是在数据库方面,需要十分清晰的思路,所以从开始的设计时需要做到确立模块之间的联系,从而可以很明确的建立表间的联系和表中所需的内容。设计数据库还有一点是减少表的繁杂的创建,所以联系很关键,可以大大的减少,数据表中重复的事项。由此可以保证数据的完整和统一,不会造成数据的错误和重复,并且可以使数据得到数据库安全的保护,会使用户更加的放心。
4.3.1 E-R图设计
概念设计是整个数据库设计的关键,在概念设计阶段,由需求分析得到了E-R模型。E-R图是识别功能模型与数据模型间关联关系的,在主题数据库的抽取和规范化的过程中,采用的是简化的E-R图表示方法,从而避免过繁过细的E-R图表示影响规划的直观和可用性。是对现实世界的抽象和概括,是数据库设计人员进行数据可设计的有力工具,能够方便直接地表达应用中的各种语义知识,令一方面它简单、清晰、易于用户理解。
管理员实体包括管理员名称、密码和权限三个属性。
装修材料信息ER图如下图所示。
图4-4装修材料信息ER图
用户信息ER图如下图所示。
图4-6 用户信息ER图
装修方案ER图如下图所示。
图4-7装修方案ER图
4.3.2表设计
数据库表是数据库重要的组成部分,其实数据库只是一个框架,数据库表才是数据库的本质,本系统数据库表如下:
表access_token (登陆访问时长)
编号
名称
数据类型
长度
小数位
允许空值
主键
默认值
说明
1
token_id
int
10
0
N
Y
临时访问牌ID
2
token
varchar
64
0
Y
N
临时访问牌
3
info
text
65535
0
Y
N
4
maxage
int
10
0
N
N
2
最大寿命:默认2小时
5
create_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
创建时间:
6
update_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
更新时间:
7
user_id
int
10
0
N
N
0
用户编号:
表article (文章:用于内容管理系统的文章)
编号
名称
数据类型
长度
小数位
允许空值
主键
默认值
说明
1
article_id
mediumint
8
0
N
Y
文章id:[0,]
2
title
varchar
125
0
N
Y
标题:[0,125]用于文章和html的title标签中
3
type
varchar
64
0
N
N
0
文章分类:[0,1000]用来搜索指定类型的文章
4
hits
int
10
0
N
N
0
点击数:[0,]访问这篇文章的人次
5
praise_len
int
10
0
N
N
0
点赞数
6
create_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
创建时间:
7
update_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
更新时间:
8
source
varchar
255
0
Y
N
来源:[0,255]文章的出处
9
url
varchar
255
0
Y
N
来源地址:[0,255]用于跳转到发布该文章的网站
10
tag
varchar
255
0
Y
N
标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开
11
content
longtext
0
Y
N
正文:文章的主体内容
12
img
varchar
255
0
Y
N
封面图
13
description
text
65535
0
Y
N
文章描述
表article_type (文章分类)
编号
名称
数据类型
长度
小数位
允许空值
主键
默认值
说明
1
type_id
smallint
5
0
N
Y
分类ID:[0,10000]
2
display
smallint
5
0
N
N
100
显示顺序:[0,1000]决定分类显示的先后顺序
3
name
varchar
16
0
N
N
分类名称:[2,16]
4
father_id
smallint
5
0
N
N
0
上级分类ID:[0,32767]
5
description
varchar
255
0
Y
N
描述:[0,255]描述该分类的作用
6
icon
text
65535
0
Y
N
分类图标:
7
url
varchar
255
0
Y
N
外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置
8
create_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
创建时间:
9
update_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
更新时间:
表auth (用户权限管理)
编号
名称
数据类型
长度
小数位
允许空值
主键
默认值
说明
1
auth_id
int
10
0
N
Y
授权ID:
2
user_group
varchar
64
0
Y
N
用户组:
3
mod_name
varchar
64
0
Y
N
模块名:
4
table_name
varchar
64
0
Y
N
表名:
5
page_title
varchar
255
0
Y
N
页面标题:
6
path
varchar
255
0
Y
N
路由路径:
7
position
varchar
32
0
Y
N
位置:
8
mode
varchar
32
0
N
N
_blank
跳转方式:
9
add
tinyint
3
0
N
N
1
是否可增加:
10
del
tinyint
3
0
N
N
1
是否可删除:
11
set
tinyint
3
0
N
N
1
是否可修改:
12
get
tinyint
3
0
N
N
1
是否可查看:
13
field_add
text
65535
0
Y
N
添加字段:
14
field_set
text
65535
0
Y
N
修改字段:
15
field_get
text
65535
0
Y
N
查询字段:
16
table_nav_name
varchar
500
0
Y
N
跨表导航名称:
17
table_nav
varchar
500
0
Y
N
跨表导航:
18
option
text
65535
0
Y
N
配置:
19
create_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
创建时间:
20
update_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
更新时间:
表collect (收藏)
编号
名称
数据类型
长度
小数位
允许空值
主键
默认值
说明
1
collect_id
int
10
0
N
Y
收藏ID:
2
user_id
int
10
0
N
N
0
收藏人ID:
3
source_table
varchar
255
0
Y
N
来源表:
4
source_field
varchar
255
0
Y
N
来源字段:
5
source_id
int
10
0
N
N
0
来源ID:
6
title
varchar
255
0
Y
N
标题:
7
img
varchar
255
0
Y
N
封面:
8
create_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
创建时间:
9
update_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
更新时间:
表comment (评论)
编号
名称
数据类型
长度
小数位
允许空值
主键
默认值
说明
1
comment_id
int
10
0
N
Y
评论ID:
2
user_id
int
10
0
N
N
0
评论人ID:
3
reply_to_id
int
10
0
N
N
0
回复评论ID:空为0
4
content
longtext
0
Y
N
内容:
5
nickname
varchar
255
0
Y
N
昵称:
6
avatar
varchar
255
0
Y
N
头像地址:[0,255]
7
create_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
创建时间:
8
update_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
更新时间:
9
source_table
varchar
255
0
Y
N
来源表:
10
source_field
varchar
255
0
Y
N
来源字段:
11
source_id
int
10
0
N
N
0
来源ID:
表decoration_materials (装修材料)
编号
名称
数据类型
长度
小数位
允许空值
主键
默认值
说明
1
decoration_materials_id
int
10
0
N
Y
装修材料ID
2
material_name
varchar
64
0
Y
N
材料名称
3
material_classification
varchar
64
0
Y
N
材料分类
4
material_specification
varchar
64
0
Y
N
材料规格
5
material_model
varchar
64
0
Y
N
材料型号
6
material_price
varchar
64
0
Y
N
材料价格
7
material_use
text
65535
0
Y
N
材料用途
8
details
longtext
0
Y
N
详情
9
hits
int
10
0
N
N
0
点击数
10
praise_len
int
10
0
N
N
0
点赞数
11
recommend
int
10
0
N
N
0
智能推荐
12
create_time
datetime
19
0
N
N
CURRENT_TIMESTAMP
创建时间
13
update_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
更新时间
表decoration_progress (装修进度)
编号
名称
数据类型
长度
小数位
允许空值
主键
默认值
说明
1
decoration_progress_id
int
10
0
N
Y
装修进度ID
2
decoration_company
varchar
64
0
Y
N
装修公司
3
scheme_name
varchar
64
0
Y
N
方案名称
4
decoration_style
varchar
64
0
Y
N
装修风格
5
decoration_method
varchar
64
0
Y
N
装修方式
6
user
int
10
0
Y
N
0
用户
7
user_name
varchar
64
0
Y
N
用户姓名
8
decoration_progress
text
65535
0
Y
N
装修进度
9
examine_state
varchar
16
0
N
N
未审核
审核状态
10
examine_reply
varchar
16
0
Y
N
审核回复
11
recommend
int
10
0
N
N
0
智能推荐
12
create_time
datetime
19
0
N
N
CURRENT_TIMESTAMP
创建时间
13
update_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
更新时间
表decoration_scheme (装修方案)
编号
名称
数据类型
长度
小数位
允许空值
主键
默认值
说明
1
decoration_scheme_id
int
10
0
N
Y
装修方案ID
2
decoration_company
varchar
64
0
Y
N
装修公司
3
company_address
varchar
64
0
Y
N
公司地址
4
consulting_telephone
varchar
64
0
Y
N
咨询电话
5
scheme_name
varchar
64
0
Y
N
方案名称
6
decoration_style
varchar
64
0
Y
N
装修风格
7
decoration_method
varchar
64
0
Y
N
装修方式
8
decoration_pictures
varchar
255
0
Y
N
装修图片
9
decoration_cost
int
10
0
Y
N
0
装修费用
10
decoration_days
varchar
64
0
Y
N
装修天数
11
decoration_materials
text
65535
0
Y
N
装修材料
12
specific_scheme
longtext
0
Y
N
具体方案
13
hits
int
10
0
N
N
0
点击数
14
praise_len
int
10
0
N
N
0
点赞数
15
recommend
int
10
0
N
N
0
智能推荐
16
create_time
datetime
19
0
N
N
CURRENT_TIMESTAMP
创建时间
17
update_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
更新时间
表forum (论坛)
编号
名称
数据类型
长度
小数位
允许空值
主键
默认值
说明
1
forum_id
mediumint
8
0
N
Y
论坛id
2
display
smallint
5
0
N
N
100
排序
3
user_id
mediumint
8
0
N
N
0
用户ID
4
nickname
varchar
16
0
Y
N
昵称:[0,16]
5
praise_len
int
10
0
Y
N
0
点赞数
6
hits
int
10
0
N
N
0
访问数
7
title
varchar
125
0
N
N
标题
8
keywords
varchar
125
0
Y
N
关键词
9
description
varchar
255
0
Y
N
描述
10
url
varchar
255
0
Y
N
来源地址
11
tag
varchar
255
0
Y
N
标签
12
img
text
65535
0
Y
N
封面图
13
content
longtext
0
Y
N
正文
14
create_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
创建时间:
15
update_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
更新时间:
16
avatar
varchar
255
0
Y
N
发帖人头像:
17
type
varchar
64
0
N
N
0
论坛分类:[0,1000]用来搜索指定类型的论坛帖
表forum_type (论坛分类)
编号
名称
数据类型
长度
小数位
允许空值
主键
默认值
说明
1
type_id
smallint
5
0
N
Y
分类ID:[0,10000]
2
name
varchar
16
0
N
N
分类名称:[2,16]
3
description
varchar
255
0
Y
N
描述:[0,255]描述该分类的作用
4
url
varchar
255
0
Y
N
外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置
5
father_id
smallint
5
0
N
N
0
上级分类ID:[0,32767]
6
icon
varchar
255
0
Y
N
分类图标:
7
create_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
创建时间:
8
update_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
更新时间:
表hits (用户点击)
编号
名称
数据类型
长度
小数位
允许空值
主键
默认值
说明
1
hits_id
int
10
0
N
Y
点赞ID:
2
user_id
int
10
0
N
N
0
点赞人:
3
create_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
创建时间:
4
update_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
更新时间:
5
source_table
varchar
255
0
Y
N
来源表:
6
source_field
varchar
255
0
Y
N
来源字段:
7
source_id
int
10
0
N
N
0
来源ID:
表material_classification (材料分类)
编号
名称
数据类型
长度
小数位
允许空值
主键
默认值
说明
1
material_classification_id
int
10
0
N
Y
材料分类ID
2
material_classification
varchar
64
0
Y
N
材料分类
3
recommend
int
10
0
N

N
0
智能推荐
4
create_time
datetime
19
0
N
N
CURRENT_TIMESTAMP
创建时间
5
update_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
更新时间
表notice (公告)
编号
名称
数据类型
长度
小数位
允许空值
主键
默认值
说明
1
notice_id
mediumint
8
0
N
Y
公告id:
2
title
varchar
125
0
N
N
标题:
3
content
longtext
0
Y
N
正文:
4
create_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
创建时间:
5
update_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
更新时间:
表personal_sharing (个人分享)
编号
名称
数据类型
长度
小数位
允许空值
主键
默认值
说明
1
personal_sharing_id
int
10
0
N
Y
个人分享ID
2
user
int
10
0
Y
N
0
用户
3
user_name
varchar
64
0
Y
N
用户姓名
4
theme
varchar
64
0
Y
N
主题
5
share_time
date
10
0
Y
N
分享时间
6
share_content
longtext
0
Y
N
分享内容
7
hits
int
10
0
N
N
0
点击数
8
praise_len
int
10
0
N
N
0
点赞数
9
recommend
int
10
0
N
N
0
智能推荐
10
create_time
datetime
19
0
N
N
CURRENT_TIMESTAMP
创建时间
11
update_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
更新时间
表plan_formulation (方案制定)
编号
名称
数据类型
长度
小数位
允许空值
主键
默认值
说明
1
plan_formulation_id
int
10
0
N
Y
方案制定ID
2
decoration_company
varchar
64
0
Y
N
装修公司
3
scheme_name
varchar
64
0
Y
N
方案名称
4
decoration_style
varchar
64
0
Y
N
装修风格
5
decoration_method
varchar
64
0
Y
N
装修方式
6
decoration_cost
varchar
64
0
Y
N
装修费用
7
user
int
10
0
Y
N
0
用户
8
user_name
varchar
64
0
Y
N
用户姓名
9
completion_time
date
10
0
Y
N
完成时间
10
decoration_specification
text
65535
0
Y
N
装修规格
11
decoration_demand
text
65535
0
Y
N
装修需求
12
examine_state
varchar
16
0
N
N
未审核
审核状态
13
examine_reply
varchar
16
0
Y
N
审核回复
14
recommend
int
10
0
N
N
0
智能推荐
15
create_time
datetime
19
0
N
N
CURRENT_TIMESTAMP
创建时间
16
update_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
更新时间
表praise (点赞)
编号
名称
数据类型
长度
小数位
允许空值
主键
默认值
说明
1
praise_id
int
10
0
N
Y
点赞ID:
2
user_id
int
10
0
N
N
0
点赞人:
3
create_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
创建时间:
4
update_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
更新时间:
5
source_table
varchar
255
0
Y
N
来源表:
6
source_field
varchar
255
0
Y
N
来源字段:
7
source_id
int
10
0
N
N
0
来源ID:
8
status
bit
1
0
N
N
1
点赞状态:1为点赞,0已取消
表programme_evaluation (方案评价)
编号
名称
数据类型
长度
小数位
允许空值
主键
默认值
说明
1
programme_evaluation_id
int
10
0
N
Y
方案评价ID
2
decoration_company
varchar
64
0
Y
N
装修公司
3
scheme_name
varchar
64
0
Y
N
方案名称
4
decoration_style
varchar
64
0
Y
N
装修风格
5
decoration_method
varchar
64
0
Y
N
装修方式
6
user
int
10
0
Y
N
0
用户
7
evaluation_score
varchar
64
0
Y
N
评价分数
8
evaluation_content
text
65535
0
Y
N
评价内容
9
hits
int
10
0
N
N
0
点击数
10
praise_len
int
10
0
N
N
0
点赞数
11
recommend
int
10
0
N
N
0
智能推荐
12
create_time
datetime
19
0
N
N
CURRENT_TIMESTAMP
创建时间
13
update_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
更新时间
表registered_users (注册用户)
编号
名称
数据类型
长度
小数位
允许空值
主键
默认值
说明
1
registered_users_id
int
10
0
N
Y
注册用户ID
2
user_name
varchar
64
0
Y
N
用户姓名
3
gender
varchar
64
0
Y
N
性别
4
examine_state
varchar
16
0
N
N
已通过
审核状态
5
recommend
int
10
0
N
N
0
智能推荐
6
user_id
int
10
0
N
N
0
用户ID
7
create_time
datetime
19
0
N
N
CURRENT_TIMESTAMP
创建时间
8
update_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
更新时间
表slides (轮播图)
编号
名称
数据类型
长度
小数位
允许空值
主键
默认值
说明
1
slides_id
int
10
0
N
Y
轮播图ID:
2
title
varchar
64
0
Y
N
标题:
3
content
varchar
255
0
Y
N
内容:
4
url
varchar
255
0
Y
N
链接:
5
img
varchar
255
0
Y
N
轮播图:
6
hits
int
10
0
N
N
0
点击量:
7
create_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
创建时间:
8
update_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
更新时间:
表upload (文件上传)
编号
名称
数据类型
长度
小数位
允许空值
主键
默认值
说明
1
upload_id
int
10
0
N
Y
上传ID
2
name
varchar
64
0
Y
N
文件名
3
path
varchar
255
0
Y
N
访问路径
4
file
varchar
255
0
Y
N
文件路径
5
display
varchar
255
0
Y
N
显示顺序
6
father_id
int
10
0
Y
N
0
父级ID
7
dir
varchar
255
0
Y
N
文件夹
8
type
varchar
32
0
Y
N
文件类型
表user (用户账户:用于保存用户登录信息)
编号
名称
数据类型
长度
小数位
允许空值
主键
默认值
说明
1
user_id
mediumint
8
0
N
Y
用户ID:[0,]用户获取其他与用户相关的数据
2
state
smallint
5
0
N
N
1
账户状态:[0,10](1可用|2异常|3已冻结|4已注销)
3
user_group
varchar
32
0
Y
N
所在用户组:[0,32767]决定用户身份和权限
4
login_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
上次登录时间:
5
phone
varchar
11
0
Y
N
手机号码:[0,11]用户的手机号码,用于找回密码时或登录时
6
phone_state
smallint
5
0
N
N
0
手机认证:[0,1](0未认证|1审核中|2已认证)
7
username
varchar
16
0
N
N
用户名:[0,16]用户登录时所用的账户名称
8
nickname
varchar
16
0
Y
N
昵称:[0,16]
9
password
varchar
64
0
N
N
密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成
10
varchar
64
0
Y
N
邮箱:[0,64]用户的邮箱,用于找回密码时或登录时
11
email_state
smallint
5
0
N
N
0
邮箱认证:[0,1](0未认证|1审核中|2已认证)
12
avatar
varchar
255
0
Y
N
头像地址:[0,255]
13
create_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
创建时间:
表user_group (用户组:用于用户前端身份和鉴权)
编号
名称
数据类型
长度
小数位
允许空值
主键
默认值
说明
1
group_id
mediumint
8
0
N
Y
用户组ID:[0,]
2
display
smallint
5
0
N
N
100
显示顺序:[0,1000]
3
name
varchar
16
0
N
N
名称:[0,16]
4
description
varchar
255
0
Y
N
描述:[0,255]描述该用户组的特点或权限范围
5
source_table
varchar
255
0
Y
N
来源表:
6
source_field
varchar
255
0
Y
N
来源字段:
7
source_id
int
10
0
N
N
0
来源ID:
8
register
smallint
5
0
Y
N
0
注册位置:
9
create_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
创建时间:
10
update_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
更新时间:
表user_report (用户举报)
编号
名称
数据类型
长度
小数位
允许空值
主键
默认值
说明
1
user_report_id
int
10
0
N
Y
用户举报ID
2
user
int
10
0
Y
N
0
用户
3
user_name
varchar
64
0
Y
N
用户姓名
4
title
varchar
64
0
Y
N
标题
5
relevant_documents
varchar
255
0
Y
N
相关凭证
6
report_content
text
65535
0
Y
N
举报内容
7
examine_state
varchar
16
0
N
N
未审核
审核状态
8
examine_reply
varchar
16
0
Y
N
审核回复
9
recommend
int
10
0
N
N
0
智能推荐
10
create_time
datetime
19
0
N
N
CURRENT_TIMESTAMP
创建时间
11
update_time
timestamp
19
0
N
N
CURRENT_TIMESTAMP
更新时间
第5章 系统实现
5.1 系统功能模块
在系统首页可查看首页功能分为网站首页、公告、装修资讯、装修方案、装修材料、个人分享、用户举报等功能 如图5-1
图5-1系统首页界面图
首页代码如下:
server:
port: 5000
servlet:
context-path: /api
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/CS_736?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
jackson:
property-naming-strategy: CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES
default-property-inclusion: ALWAYS
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss
servlet:
multipart:
max-file-size: 100MB
max-request-size: 100MB
在用户注册页面填写注册内容用户名、密码、姓名、性别、邮箱、手机、身份证、头像、地址、备注等信息完成注册,如下图5-2所示。
图5-2 用户注册界面图
用户注册代码如下:
/
* 注册
* @param user
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(@RequestBody User user) {
// 查询用户
Map<String, String> query = new HashMap<>();
query.put("username",user.getUsername());
List list = service.select(query, new HashMap<>()).getResultList();
if (list.size()>0){
return error(30000, "用户已存在");
}
user.setUserId(null);
user.setPassword(service.encryption(user.getPassword()));
service.save(user);
return success(1);
}
/
* 用户ID:[0,]用户获取其他与用户相关的数据
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id")
private Integer userId;
/
* 账户状态:[0,10](1可用|2异常|3已冻结|4已注销)
*/
@Basic
@Column(name = "state")
private Integer state;
/
* 所在用户组:[0,32767]决定用户身份和权限
*/
@Basic
@Column(name = "user_group")
private String userGroup;
/
* 上次登录时间:
*/
@Basic
@Column(name = "login_time")
private Timestamp loginTime;
/
* 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时
*/
@Basic
@Column(name = "phone")
private String phone;
/
* 手机认证:[0,1](0未认证|1审核中|2已认证)
*/
@Basic
@Column(name = "phone_state")
private Integer phoneState;
/
* 用户名:[0,16]用户登录时所用的账户名称
*/
@Basic
@Column(name = "username")
private String username;
/
* 昵称:[0,16]
*/
@Basic
@Column(name = "nickname")
private String nickname;
/
* 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成
*/
@Basic
@Column(name = "password")
private String password;
/
* 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时
*/
@Basic
@Column(name = "email")
private String email;
/
* 邮箱认证:[0,1](0未认证|1审核中|2已认证)
*/
@Basic
@Column(name = "email_state")
private Integer emailState;
/
* 头像地址:[0,255]
*/
@Basic
@Column(name = "avatar")
private String avatar;
/
* 创建时间:
*/
@Basic
@Column(name = "create_time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Timestamp createTime;
@Basic
@Transient
private String code;
}
5.2 用户功能模块
在登录页面输入用户名、密码、权限以及验证码等信息登录系统,如图5-3所示。
图5-3用户登录界面图
登录代码如下:
/
* 登录
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
log.info("[执行登录接口]");
String username = data.get("username");
String email = data.get("email");
String phone = data.get("phone");
String password = data.get("password");
List resultList = null;
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.select(map, new HashMap<>()).getResultList();
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.select(map, new HashMap<>()).getResultList();
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.select(map, new HashMap<>()).getResultList();
}else{
return error(30000, "账号或密码不能为空");
}
if (resultList == null || password == null) {
return error(30000, "账号或密码不能为空");
}
//判断是否有这个用户
if (resultList.size()<=0){
return error(30000,"用户不存在");
}
User byUsername = (User) resultList.get(0);
Map<String, String> groupMap = new HashMap<>();
groupMap.put("name",byUsername.getUserGroup());
List groupList = userGroupService.select(groupMap, new HashMap<>()).getResultList();
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();
String res = String.valueOf(service.runCountSql(sql).getSingleResult());
if (res==null){
return error(30000,"用户不存在");
}
if (!res.equals("已通过")){
return error(30000,"该用户审核未通过");
}
}
//查询用户状态
if (byUsername.getState()!=1){
return error(30000,"用户非可用状态,不能登录");
}
String md5password = service.encryption(password);
if (byUsername.getPassword().equals(md5password)) {
// 存储Token到数据库
AccessToken accessToken = new AccessToken();
accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
accessToken.setUser_id(byUsername.getUserId());
tokenService.save(accessToken);
// 返回用户信息
JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
user.put("token", accessToken.getToken());
JSONObject ret = new JSONObject();
ret.put("obj",user);
return success(ret);
} else {
return error(30000, "账号或密码不正确");
}
}
在装修资讯页面可以查看装修资讯信息,可对喜欢的资讯进行点赞、收藏、评论等操作,如图5-4所示。
图5-4 装修资讯界面图
在装修材料页面可以查看材料名称、材料分类、材料规格、材料型号等详细信息,可进行点赞、收藏、评论等操作,如图5-5所示。
图5-5 装修材料界面图
在装修方案页面可以查看装修公司、公司地址、咨询电话、方案名称、装修风格、装修方式、装修费用、装修天数等详细信息,可进行点赞、收藏、评论或直接编辑装修方案信息进行提交等操作,如图5-6所示。
图5-6 装修方案界面图
在我的页面查看个人资料管理、密码修改、管理等功能,如图5-7所示。
图5-7 个人资料界面图
在医生后台管理可查看医生功能为首页、预约挂号、预约记录、结算记录,如图5-7所示。
5.3 管理员功能模块
管理员登录进入装修选购网站之后,就可以对所有的信息进行查看,可以查看到首页、轮播图、公告栏、资源管理(装修资讯、资讯分类)系统用户(管理员、注册用户)交流管理(交流互通、交流分类)模块管理(材料分类、装修材料、装修方案、方案定制、装修进度、方案评价、个人分享、用户举报)等,并且还可以对其进行相应的操作管理,如图5-8所示。
图5-8管理员功能界面图
在轮播图页面中管理员标题各轮播图片进行添加轮播图详细信息,还可以根据需要在轮播图页面进行修改或删除等操作,如图5-9所示。
图5-9 轮播图界面
在用户管理页面中可以对账号、密码、昵称、性别、邮箱、电话、身份证、头像、地址、备注等信息进行审核、修改或删除等操作,如图5-10所示。
图5-10 用户管理界面图
在方案制定页面中可以编辑装修公司、方案名称、装修风格、装修方式、装修费用、用户、用户姓名、完成时间、装修需求、装修规格、等信息进行审核或回复等操作,如下图5-11所示。
图5-11方案制定界面图
第6章 系统测试
6.1 程序测试基本概念
程序测试是很重要的一个环节,当自身的程序已经完成时,仍需要测试来保证程序的正确性和可靠性,因为往往此时出现的错误就是用户可能会出现的错误,所以调试变得至关重要。唯有经过多次的调试才能够使系统达到完美的状态,使得用户可以安全,放心的使用程序,保障用户信息的安全是每个系统最基本的需求,因而调试也就是系统的最基本的要求。但是为了保证说最大程度减少开发者的工作量,应当分三个阶段来测试,初期,中期和最终期。前期:主要调试模块间的关系部分,看看是否是正确的,合理的,否则到后面会造成难以修改和总是出错的现象。中期:插入部分数据,看看是否数据库方面连接和设计得当,有些时候理念存在的是不能够在现实中完美实现的,并且调试界面找到最优的布局。最终期:插入全部数据,看是否正确,修改页面看是否能达到最初预期效果,检查功能是否完全实现。
6.2 程序测试具体内容
6.2.1 测试的重要性及目的
1.测试的重要性
只有经过反复的测试,才能够使系统得到最稳定的状态,才能把最好的一面展现给使用的用户,是极为关键的一个步骤。但是往往也是大家极容易忽视的一个部分,因为绝大部分的人认为这个部分是不重要的,但事实并非如此,任何系统不管怎样做都不可能完全去除错误,所以需要测试来最大程度的降低和减少错误。要在多环境下进行测试,以保证用户能够在不同环境配置下都能够正常使用。大多数,用户的需求是不断更新的,所以测试具有十分重要的意义,能够及时的把握到用户的最新动态,做出对系统的修改。
- 测试的目的
测试是为了让用户能够使用到系统的最好一面,能够充分利用到系统内的跟自己相关的部分。另一方面,从系统开发者的角度来说,这个举措有助于开发者在开发系统的同时能够与用户保持有好的关系,能够使开发的系统减少最多的错误和误差,并且有助于开发,边测试边开发,能够及时解决用户的需求,而开发者也能够减少返工的工作量,保证开发是朝着正确的道路前进的,并且对于用户来说能够定期看到一定的工作成果,也是更有助于提出更好的意见,而不是到末期突然提出大量的工作需求。这样可以使得用户和开发者之间的关系得到一定程度的改善,而开发者也从中得到更多改善系统的方向。
6.2.2登录测试
登录及管理员添加模块是对各个系统中不可缺少的功能之一,为了对在运行过程能正常的操作本项目就要对此进行测试。
1. 使用不同浏览器访问服务器的IP地址。
2. 输入特殊的信息登录系统,例如边界值等。
3. 查看登录及管理员添加之后登录系统所返回的结果。
无论系统管理员还是用户登录时都需要用户名和密码进行登录,当输入正确的用户名和密码观察是否正常登录。登录测试表如下表6-1所示:
0基础自学java网站
表6-1登录测试表
名称
功能名称
操作阐述
期盼结果
测试结果
登录信息管理
登录
系统管理员登录时输入
账号:admin密码:admin
进入后台主页面
成功
添加用户登录时输入
账号:zhangchao密码:000000
进入系统首页
成功
管理员可以管理添加用户的信息。添加测试表如下表6-2所示:
表6-2添加测试表
名称
功能名称
操作阐述
期盼结果
测试结果
添加信息管理
添加
管理员进入添加用户管理页面
成功显示所有添加用户列表
成功
管理员进入添加用户管理页面,点击删除按钮
删除成功,出现删除成功的提示
成功
用户进入添加页面,按提示输入添加用户信息
添加成功,出现添加成功的提示
成功
6.2.3用户管理模块测试
用户管理信息模块对本界面中的数据和信息进行相对应得基本操作,主要有查看用户,删除用户等。
管理员在可以查看并删除用户。用户管理如表6-3所示:
表6-3用户管理测试表
模块名称
功能名称
操作描述
预期结果
测试结果
用户信息管理
查看
管理员进入用户管理页面,查看用户
所有用户均显示
成功
删除
管理员进入用户管理页面,点击删除按钮
弹窗提示,删除成功
成功
6.3 系统的优点
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/1541.html