基于springboot+vue实现的Cosplay论坛系统 (源码+L文+ppt)4-066
2.3 系统功能分析
Cosplay论坛系统中采用了Java的springboot框架进行开发,在数据库上选择MYSQL,在功能上Cosplay论坛系统我划分为了普通用户管理模块和管理员模块这两大部分。
普通用户管理模块:
(1)用户注册登录:游客可以随时进入到系统中,对系统中的信息浏览,但是想要实现商品信息的收藏评论等,就必须有这个系统的账号,如果没有账号的话,可以注册成会员用户进行相关的操作,同时用户还可以对个人信息以及操作的信息进行管控。
(2)查看Cosplay论坛系统的首页信息:Cosplay论坛系统的首页信息包含了首页、帖子信息、通知公告、留言反馈。
(3)通知公告:用户点击“通知公告”菜单显示管理员在后台发布的所有的通知公告信息,可以查看通知公告详情。
(4)留言反馈:在此界面用户可以收藏、点赞和评论。
(6)个人中心:用户点击“我的账户”可以对个人资料以及密码进行更新。
(7)购物车:用户可以将感兴趣的商品加入购物车,方便后续的批量购买。用户可以在购物车中查看已添加的商品,修改商品数量、删除商品,预览订单总价等。
(8)在线客服用户可以通过在线客服功能与系统管理员或客服人员进行实时的沟通和交流。用户可以提出问题、咨询商品信息、提交退换货申请等。管理员或客服人员可以即时回复用户的消息。
(9)商品信息:用户可以浏览、搜索并查看商品的详细信息,包括商品名称、价格、库存、描述、评价等。用户可以按照商品分类进行筛选和排序,方便浏览和购买。
管理员模块:
(1)登录:管理员在后台可以输入用户名+密码进行登录,管理员的用户名和密码是在数据库中直接设定好的。
(2)系统管理:管理员点击“系统管理”菜单可以对首页展示的轮播图以及敏感词进行增删改查。
(3)通知公告:管理员点击“通知公告”菜单可以查看到系统中的所有通知公告信息,对已经存在的通知公告,管理员可以修改,也可以添加新的通知公告或者删除通知公告。
(4)资源管理:管理员点击“资源管理”菜单能够对其下子菜单帖子信息和帖子信息的分类进行增删改查。
(5)系统用户:管理员点击“系统用户”菜单可以对系统中存在的用户进行管理,包含了管理员用户和普通用户。
(6)帖子分类:管理员可以管理帖子的分类,包括添加、编辑、删除帖子分类。可以设定每个分类的名称、描述、图标等信息,以方便用户浏览和分类帖子。
(7)帖子信息:赞情况等。可以审核帖子、删除违规内容或标记帖子为置顶、精华等特殊属性。
(8)商品分类:管理员可以管理商品的分类,包括添加、编辑、删除商品分类。可以设定每个分类的名称、描述、图标等信息,以方便用户浏览和分类商品。
(9)商品信息:管理员可以查看商品的详细信息、库存、价格等。可以上架、下架商品,编辑商品信息,处理用户的订单。
(10)留言反馈:管理员可以查看用户的留言反馈,包括问题、建议、投诉等。可以回复用户的反馈并进行管理。
(11)订单信息:管理员可以查看用户的订单信息,包括订单状态、付款情况等。可以处理用户的退款、发货等操作。
(12)用户签到:管理员可以查看用户的签到情况,包括历史签到记录、连续签到天数等。可以补签、重置签到信息等。
3 Cosplay论坛系统总体设计
本章主要讨论的内容包括Cosplay论坛系统的功能模块设计、数据库系统设计。
3.1 系统功能模块设计
3.1.1整体功能模块设计
本Cosplay论坛系统是一个集信息查询、发布、管理为一体的平台,在功能上实现了前台和后台两部分的功能,根据第三章的系统功能分析,得出本Cosplay论坛系统的功能模块图,如图3-1所示。
图3-1 Cosplay论坛系统功能模块图
3.1.2用户管理模块设计
本Cosplay论坛系统是一个通过浏览器自主查询、交流的平台,用户想要参与进来,必须有账号和密码,登录后方可交流,管理员则实现对用户的管控,如下图:
3.2 数据库设计
3.2.1 数据库概念结构设计
在数据库概念模型设计的时候,一般都采用E-R实体图进行展示,在实体图中可以展示出数据库表中的所有字段名称,本Cosplay论坛系统中的主要的数据库E-R模型图如下图所示。
图3-5普通用户E-R关系图
图3-6 cosplay论坛信息E-R关系图
图3-7 帖子资讯信息E-R关系图
图3-8 公告信息E-R关系图
3.2.2 数据库逻辑结构设计
通过上一小节中Cosplay论坛系统中总E-R关系图上得出一共需要创建很多个数据表。在此我主要罗列几个主要的数据库表结构设计。
表名:cart
功能:购物车表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint |
| 主键 | 主键 |
|
addtime | timestamp |
| 创建时间 |
| CURRENT_TIMESTAMP |
tablename | varchar | 200 | 商品表名 |
| shangpinxinxi |
userid | bigint |
| 用户id |
|
|
goodid | bigint |
| 商品id |
|
|
goodname | varchar | 200 | 商品名称 |
|
|
picture | longtext | 4294967295 | 图片 |
|
|
buynumber | int |
| 购买数量 |
|
|
price | double |
| 单价 |
|
|
goodtype | varchar | 200 | 商品类型 |
|
|
表名:shangpinxinxi
功能:商品信息
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint |
| 主键 | 主键 |
|
addtime | timestamp |
| 创建时间 |
| CURRENT_TIMESTAMP |
shangpinbianhao | varchar | 200 | 商品编号 |
|
|
shangpinmingcheng | varchar | 200 | 商品名称 |
|
|
shangpinfenlei | varchar | 200 | 商品分类 |
|
|
pinpai | varchar | 200 | 品牌 |
|
|
guige | varchar | 200 | 规格 |
|
|
shangpinxiangqing | longtext | 4294967295 | 商品详情 |
|
|
tupian | longtext | 4294967295 | 图片 |
|
|
onelimittimes | int |
| 单限 |
|
|
alllimittimes | int |
| 库存 |
|
|
thumbsupnum | int |
| 赞 |
| 0 |
crazilynum | int |
| 踩 |
| 0 |
clicktime | datetime |
| 最近点击时间 |
|
|
discussnum | int |
| 评论数 |
| 0 |
price | double |
| 价格 |
|
|
storeupnum | int |
| 收藏数 |
| 0 |
表名:systemintro
功能:关于我们
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint |
| 主键 | 主键 |
|
addtime | timestamp |
| 创建时间 |
| CURRENT_TIMESTAMP |
title | varchar | 200 | 标题 |
|
|
subtitle | varchar | 200 | 副标题 |
|
|
content | longtext | 4294967295 | 内容 |
|
|
picture1 | longtext | 4294967295 | 图片1 |
|
|
picture2 | longtext | 4294967295 | 图片2 |
|
|
picture3 | longtext | 4294967295 | 图片3 |
|
|
表名:address
功能:地址
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint |
| 主键 | 主键 |
|
addtime | timestamp |
| 创建时间 |
| CURRENT_TIMESTAMP |
userid | bigint |
| 用户id |
|
|
address | varchar | 200 | 地址 |
|
|
name | varchar | 200 | 收货人 |
|
|
phone | varchar | 200 | 电话 |
|
|
isdefault | varchar | 200 | 是否默认地址[是/否] |
|
|
表名:shangpinfenlei
功能:商品分类
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint |
| 主键 | 主键 |
|
addtime | timestamp |
| 创建时间 |
| CURRENT_TIMESTAMP |
shangpinfenlei | varchar | 200 | 商品分类 |
|
|
image | longtext | 4294967295 | 图片 |
|
|
表名:aboutus
功能:关于我们
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint |
| 主键 | 主键 |
|
addtime | timestamp |
| 创建时间 |
| CURRENT_TIMESTAMP |
title | varchar | 200 | 标题 |
|
|
subtitle | varchar | 200 | 副标题 |
|
|
content | longtext | 4294967295 | 内容 |
|
|
picture1 | longtext | 4294967295 | 图片1 |
|
|
picture2 | longtext | 4294967295 | 图片2 |
|
|
picture3 | longtext | 4294967295 | 图片3 |
|
|
表名:orders
功能:订单
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint |
| 主键 | 主键 |
|
addtime | timestamp |
| 创建时间 |
| CURRENT_TIMESTAMP |
orderid | varchar | 200 | 订单编号 |
|
|
tablename | varchar | 200 | 商品表名 |
| shangpinxinxi |
userid | bigint |
| 用户id |
|
|
goodid | bigint |
| 商品id |
|
|
goodname | varchar | 200 | 商品名称 |
|
|
picture | longtext | 4294967295 | 商品图片 |
|
|
buynumber | int |
| 购买数量 |
|
|
price | double |
| 价格 |
| 0 |
total | double |
| 总价格 |
| 0 |
type | int |
| 支付类型 |
| 1 |
status | varchar | 200 | 状态 |
|
|
address | varchar | 200 | 地址 |
|
|
tel | varchar | 200 | 电话 |
|
|
consignee | varchar | 200 | 收货人 |
|
|
logistics | longtext | 4294967295 | 物流 |
|
|
remark | varchar | 200 | 备注 |
|
|
goodtype | varchar | 200 | 商品类型 |
|
|
sfsh | varchar | 200 | 是否审核 |
|
|
shhf | longtext | 4294967295 | 审核回复 |
|
|
role | varchar | 200 | 用户角色 |
|
|
表名:newstype
功能:通知公告分类
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint |
| 主键 | 主键 |
|
addtime | timestamp |
| 创建时间 |
| CURRENT_TIMESTAMP |
typename | varchar | 200 | 分类名称 |
|
|
表名:news
功能:通知公告
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint |
| 主键 | 主键 |
|
addtime | timestamp |
| 创建时间 |
| CURRENT_TIMESTAMP |
title | varchar | 200 | 标题 |
|
|
introduction | longtext | 4294967295 | 简介 |
|
|
typename | varchar | 200 | 分类名称 |
|
|
name | varchar | 200 | 发布人 |
|
|
headportrait | longtext | 4294967295 | 头像 |
|
|
clicknum | int |
| 点击次数 |
| 0 |
clicktime | datetime |
| 最近点击时间 |
|
|
thumbsupnum | int |
| 赞 |
| 0 |
crazilynum | int |
| 踩 |
| 0 |
storeupnum | int |
| 收藏数 |
| 0 |
picture | longtext | 4294967295 | 图片 |
|
|
content | longtext | 4294967295 | 内容 |
|
|
表名:messages
功能:留言反馈
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint |
| 主键 | 主键 |
|
addtime | timestamp |
| 创建时间 |
| CURRENT_TIMESTAMP |
userid | bigint |
| 留言人id |
|
|
username | varchar | 200 | 用户名 |
|
|
avatarurl | longtext | 4294967295 | 头像 |
|
|
content | longtext | 4294967295 | 留言内容 |
|
|
cpicture | longtext | 4294967295 | 留言图片 |
|
|
reply | longtext | 4294967295 | 回复内容 |
|
|
rpicture | longtext | 4294967295 | 回复图片 |
|
|
表名:yonghu
功能:用户
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint |
| 主键 | 主键 |
|
addtime | timestamp |
| 创建时间 |
| CURRENT_TIMESTAMP |
yonghuzhanghao | varchar | 200 | 用户账号 |
|
|
mima | varchar | 200 | 密码 |
|
|
yonghuxingming | varchar | 200 | 用户姓名 |
|
|
touxiang | longtext | 4294967295 | 头像 |
|
|
xingbie | varchar | 200 | 性别 |
|
|
nianling | int |
| 年龄 |
|
|
shouji | varchar | 200 | 手机 |
|
|
money | double |
| 余额 |
| 0 |
表名:discusstiezixinxi
功能:帖子信息评论表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint |
| 主键 | 主键 |
|
addtime | timestamp |
| 创建时间 |
| CURRENT_TIMESTAMP |
refid | bigint |
| 关联表id |
|
|
userid | bigint |
| 用户id |
|
|
avatarurl | longtext | 4294967295 | 头像 |
|
|
nickname | varchar | 200 | 用户名 |
|
|
content | longtext | 4294967295 | 评论内容 |
|
|
reply | longtext | 4294967295 | 回复内容 |
|
|
表名:users
功能:用户表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint |
| 主键 | 主键 |
|
username | varchar | 100 | 用户名 |
|
|
password | varchar | 100 | 密码 |
|
|
image | varchar | 200 | 头像 |
|
|
role | varchar | 100 | 角色 |
| 管理员 |
addtime | timestamp |
| 新增时间 |
| CURRENT_TIMESTAMP |
表名:discussshangpinxinxi
功能:商品信息评论表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint |
| 主键 | 主键 |
|
addtime | timestamp |
| 创建时间 |
| CURRENT_TIMESTAMP |
refid | bigint |
| 关联表id |
|
|
userid | bigint |
| 用户id |
|
|
avatarurl | longtext | 4294967295 | 头像 |
|
|
nickname | varchar | 200 | 用户名 |
|
|
content | longtext | 4294967295 | 评论内容 |
|
|
reply | longtext | 4294967295 | 回复内容 |
|
|
表名:token
功能:token表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint |
| 主键 | 主键 |
|
userid | bigint |
| 用户id |
|
|
username | varchar | 100 | 用户名 |
|
|
tablename | varchar | 100 | 表名 |
|
|
role | varchar | 100 | 角色 |
|
|
token | varchar | 200 | 密码 |
|
|
addtime | timestamp |
| 新增时间 |
| CURRENT_TIMESTAMP |
expiratedtime | timestamp |
| 过期时间 |
| CURRENT_TIMESTAMP |
表名:config
功能:配置文件
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint |
| 主键 | 主键 |
|
name | varchar | 100 | 配置参数名称 |
|
|
value | varchar | 100 | 配置参数值 |
|
|
url | varchar | 500 | url |
|
|
表名:tiezixinxi
功能:帖子信息
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint |
| 主键 | 主键 |
|
addtime | timestamp |
| 创建时间 |
| CURRENT_TIMESTAMP |
zhuti | varchar | 200 | 主题 |
|
|
jianjie | varchar | 200 | 简介 |
|
|
tiezifenlei | varchar | 200 | 帖子分类 |
|
|
neirong | longtext | 4294967295 | 内容 |
|
|
fengmian | longtext | 4294967295 | 封面 |
|
|
yonghuzhanghao | varchar | 200 | 用户账号 |
|
|
yonghuxingming | varchar | 200 | 用户姓名 |
|
|
faburiqi | date |
| 发布日期 |
|
|
beizhu | varchar | 200 | 备注 |
|
|
sfsh | varchar | 200 | 是否审核 |
| 待审核 |
shhf | longtext | 4294967295 | 审核回复 |
|
|
thumbsupnum | int |
| 赞 |
| 0 |
crazilynum | int |
| 踩 |
| 0 |
clicktime | datetime |
| 最近点击时间 |
|
|
clicknum | int |
| 点击次数 |
| 0 |
discussnum | int |
| 评论数 |
| 0 |
表名:chat
功能:在线客服
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint |
| 主键 | 主键 |
|
addtime | timestamp |
| 创建时间 |
| CURRENT_TIMESTAMP |
userid | bigint |
| 用户id |
|
|
adminid | bigint |
| 管理员id |
|
|
ask | longtext | 4294967295 | 提问 |
|
|
reply | longtext | 4294967295 | 回复 |
|
|
isreply | int |
| 是否回复 |
|
|
表名:tiezifenlei
功能:帖子分类
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint |
| 主键 | 主键 |
|
addtime | timestamp |
| 创建时间 |
| CURRENT_TIMESTAMP |
tiezifenlei | varchar | 200 | 帖子分类 |
|
|
image | longtext | 4294967295 | 图片 |
|
|
表名:storeup
功能:收藏表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint |
| 主键 | 主键 |
|
addtime | timestamp |
| 创建时间 |
| CURRENT_TIMESTAMP |
userid | bigint |
| 用户id |
|
|
refid | bigint |
| 商品id |
|
|
tablename | varchar | 200 | 表名 |
|
|
name | varchar | 200 | 名称 |
|
|
picture | longtext | 4294967295 | 图片 |
|
|
type | varchar | 200 | 类型(1:收藏,21:赞,22:踩,31:竞拍参与,41:关注) |
| 1 |
inteltype | varchar | 200 | 推荐类型 |
|
|
remark | varchar | 200 | 备注 |
|
|
4 Cosplay论坛系统主要详细设计与实现
4.1用户功能模块
4.1.1 前台首页界面
当进入Cosplay论坛系统的时候,可以看到系统中的导航栏,搜索框,轮播图等信息,其主界面展示如下图4-1所示。
图4-1 首页界面图
/**
4.1.2登录界面
当注册完成后就可以登录了,输入用户名+密码,通过滑动图片验证后,点击“登录”按钮进行登录,登录界面如下图4-2所示。
图4-2管理员登录界面图
登录关键代码如下:
/**
* 登录
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Maplogin(@RequestBody Mapdata, 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,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,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, "账号或密码不正确");
}
}
4.1.3通知公告界面
用户点击“通知公告”菜单显示管理员在后台发布的所有的通知公告信息,可以查看通知公告详情。界面如下图4-3所示。
图4-3通知公告界面图
4.1.4帖子信息界面
用户可以发布帖子、评论其他用户的帖子、点赞、收藏等。用户可以参与讨论、分享心得、展示自己的Cosplay作品。用户可以关注其他用户,查看他们的动态和帖子。在此界面用户可以收藏、点赞和评论。界面如下图4-5所示。
图4-4帖子信息界面图
4.2管理员功能模块
4.2.1通知公告管理界面
管理员点击“通知公告管理”菜单可以查看到系统中的所有通知公告信息,对已经存在的通知公告,管理员可以修改,也可以添加新的通知公告或者删除通知公告。界面如下图4-5所示。
图4-5通知公告管理界面图
通知公告管理关键代码如下:
@RequestMapping("/get_obj")
public Mapobj(HttpServletRequest request) {
List resultList = service.selectBaseList(service.select(service.readQuery(request), service.readConfig(request)));
if (resultList.size() > 0) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("obj",resultList.get(0));
return success(jsonObject);
} else {
return success(null);
}
}
4.2.2 用户签到管理界面
管理员可以查看用户的签到情况,包括历史签到记录、连续签到天数等。可以补签、重置签到信息等。界面如下图4-6所示。
图4-6用户签到管理界面图
4.2.3商品信息管理界面
管理员可以查看商品的详细信息、库存、价格等。可以上架、下架商品,编辑商品信息,处理用户的订单。界面如下图4-10所示。
图4-7商品信息管理界面图