创建论坛系统

前言

业务实现过程中主要的包和⽬录及主要功能:
• model 包:实体对象
• dao 包:数据库访问
• services 包:业务处理相关的接⼝与实现,所有业务都在Services中实现
• controller 包:提供URL映射,⽤来接收参数并做校验,调⽤Service中的业务代码,返回执⾏结

• src/main/resources/mapper ⽬录:Mybaits映射⽂件,配置数据库实体与类之间的映射关系
• src/main/resources/static ⽬录:前端资源

1.技术需求

• 后端使⽤ Spring 实现
• 数据库使⽤ MySQL
• 最终部署到 Linux 服务器上.

2.功能实现

• 注册,登录,退出
• 帖⼦列表, 发布帖⼦, 删除帖⼦, 回复帖⼦、点赞等功能.
• ⽀持个⼈主⻚的展示/编辑,修改密码.
• ⽀持帖⼦按版块分类.
• ⽀持站内私信

3.效果展示

3.1 注册页面

用户名为登录时的账户,昵称是页面展示出来的名字,用户名与昵称不能相同
实现逻辑:
1.用户输入注册信息
2.数据库根据服务器发送过来的用户名查询并返回查询结果
3.服务器判断用户是否已存在
4.用户不存在时新增用户
5.注册成功时,跳转到登录页面

用户密码存入数据库是通过加密过的密文:

  • 1.原密码
  • 2.生成盐值,由UUID.randomUUID()方法随机生成盐值
  • 3.原密码进行MD5加密=密文1
  • 4.密文1+盐值=密文2
  • 5.对密文2进行MD5加密

在这里插入图片描述

3.2 登录页面

输入的密码通过加密后,与数据库中的密码密文比对
实现逻辑:

  1. 用户输入登录信息
  2. 数据库根据服务器发送过来的用户名查询并返回查询结果
  3. 数据校验:用户名存在,密码正确
  4. 登录成功时跳转到主页

在这里插入图片描述

3.3 退出登录

实现逻辑:

  1. ⽤户访问退出接⼝
  2. 服务器注销Session
  3. 返回成功或失败
  4. 如果返回成功浏览器跳转到相应⻚⾯
  5. 结束
    在这里插入图片描述

3.4 主页

展示所有的帖子

实现逻辑:
对应版块中显⽰的帖⼦列表以发布时间降序排列
不传⼊版块Id返回所有帖⼦

  1. ⽤户点击某个版块或⾸⻚时,将版块Id做为参数向服务器发送请求
  2. 服务器接收请求,并获取版块Id,查询对应版块下的所有帖⼦
  3. 返回查询结果

在这里插入图片描述
在这里插入图片描述

3.5帖子详情页

访问他人的帖子可以实现点赞功能,点击作者名称可以查看作者的帖子列表,可以给作者发送私信
实现逻辑:

  1. ⽤户点击帖⼦,将帖⼦Id做为参数向服务器发送请求
  2. 服务器根据帖子id查询帖⼦信息
  3. 帖⼦访问次数加1
  4. 返回查询结果
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

3.6帖子编辑页

标题和内容不能为空值,
实现逻辑:

  1. ⽤户点击发新帖按钮,进⼊发帖⻚⾯
  2. 选择版块,填⼊标题、正⽂后提交服务器
  3. 服务器校验信息并写⼊数据库
  4. 更新⽤户发帖数与版块帖⼦数
  5. 返回结果

在这里插入图片描述
在这里插入图片描述

帖子修改编辑:
实现逻辑:

  1. 当发帖⼈为当前⽤户时,显⽰编辑接钮,⽤户点击编辑接钮,进⼊编辑⻚⾯
  2. 获取帖子信息,并在对应的位置显⽰在
  3. ⽤户修改帖⼦标题和内容
  4. 提交到服务器,服务器检验当前⽤户是否为发帖⼈,并更新数据库
  5. 返回更新结果

注意:帖子的状态和用户的状态(即有没有被禁言)

在这里插入图片描述

3.7个人中心页

进行个人信息修改以及修改密码
个人信息修改实现逻辑:

  1. ⽤户打开找修改个⼈信息⻚⾯
  2. 填⼊要修改的内容并提交服务器
  3. 服务器获取登录⽤户的Id,并根据提交的内容修改数据
  4. 返回成功或失败,如果成功返回更新后的个⼈信息
  5. 浏览器刷新个⼈信息

注意:及时刷新个人信息

用户密码修改实现逻辑:
7. ⽤户打开修改密码⻚⾯
8. 输⼊原密码、新密码、重复新密码并提交服务器
9. 服务器校验原密码是否正确
10. 原密码校验通过更新密码
11. 返回成功或失败
12. 修改成功后跳转到登录页面查询登录
在这里插入图片描述在这里插入图片描述

3.8发送私信页

实现逻辑:

  1. 在⽬录⽤户详情界⾯,点击发送站内信接钮,进⼊编辑⻚⾯
  2. 编写站内信内容,点击发送按钮
  3. 提⽰发送结果

注意:不能给自己发送私信,接收用户必须存在,不能为禁言状态
在这里插入图片描述

3.9私信列表页

实现逻辑:
根据用户id查询所有私信
更新状态:
实现逻辑

  1. ⽤户点击站内信,显⽰详情⻚⾯
  2. 更新未读状态的站内信为已读

回复私信:

  1. ⽤户在站内信详情⻚⾯点击回复按钮,显⽰回复区
  2. 填写回复内容并提交到服务器
  3. ⽤户不能回复接收者不是⾃⼰的站内信
  4. 站内信状态置为已回复

用户在有未读私信时,有小红点提示用户有未读私信
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.10回复帖子页

实现逻辑:

  1. 帖⼦在正常状态下允许⽤户回复
  2. 填写回复内容,点击提交按钮后发送请求到服务器
  3. 服务器校验回复内容、帖⼦与⽤户状态(不能为禁言),通过后写⼊数据库
  4. 帖⼦回复数量加1
  5. 返回结果

帖⼦回复列表:
在帖⼦详情⻚显⽰当前帖⼦下的回复列表以发布时间降序排列

在这里插入图片描述

3.11用户帖子列表

在⽤户详情⻚显⽰当前⽤户发布的帖⼦列表以发布时间降序排列
实现逻辑:

  1. ⽤户访问⽤户详情⻚时发送请求到服务器
  2. 服务器按发帖时间降序排列返回帖⼦列表

在这里插入图片描述

3.12点赞帖子

点击点赞按钮,数据库点赞数量加一,页面点赞数加一
实现逻辑:

  1. 用户点击点赞按钮,给服务器发送请求
  2. 获取用户信息并校验信息
  3. 获取帖子信息,更新点赞数量

注意:用户状态不能为禁言,帖子必须存在且没有禁言
在这里插入图片描述
更新点赞数量
在这里插入图片描述

3.13删除帖子

用户只能删除自己的帖子,数据库中将帖子状态更新为删除状态,前端不再展示帖子,并更新相关帖子数
实现逻辑:

  1. ⽤户点击删除帖⼦按钮,并进⾏确定
  2. 服务器校验⽤户状态,帖⼦状态,当前⽤户是否为作者
  3. 更新⽤户发帖数与版块帖⼦数
  4. 返回结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值