言思集交流社区(SpringBoot)
文章目录
- 一、公共代码
- 1.1 使用MyBatis Generator帮我们生成类和映射文件
- 1.2 定义状态码
- 1.3 定义统一数据返回
- 1.4 异常处理
- 遇到自定义异常
- 统一异常
- 1.5 集成API自动生成
- 1.6 编写工具类
- 编写MD5加密工具类
- 编写UUID工具类
- 编写String工具类
- 二、业务功能实现
- 2.1 实现注册功能
- 2.2 实现登录功能
- 2.3 获取用户信息
- 2.4 退出登录
- 2.5 登录拦截器
- 2.6 导航栏
- 2.7 发布帖子
- 2.8 帖子列表
- 首页帖子
- 板块帖子列表
- 2.9 显示板块信息
- 2.10 显示帖子详情
- 2.11 编辑帖子
- 2.12 点赞操作
- 2.13 删除帖子
- 2.14 回复帖子
- 2.15 回复列表
- 2.16 获取用户详情
- 2.17 用户帖子列表
- 2.18 修改基本的个人信息
- 2.19 修改密码
- 2.20 发送站内信
- 2.21 站内信未读数
- 2.22 展示所有的未读信
- 2.23 把未读信标记为已读
- 2.24 回复站内信
- 三、发布部署
一、公共代码
1.1 使用MyBatis Generator帮我们生成类和映射文件
- 关于Mybatis Generator:和我们的项目没什么关系,只是作为一个插件被集成了进来
- 配置pom.xml
- 配置generatorConfig.xml:
- 使用生成器去生成代码:
- 修改生成的代码:
- 关于MyBatisX:
1.2 定义状态码
- 关于状态码:根据需求分析阶段可以预见的成功和失败状态做针对性描述,后续如果出现新的,可以再定义
- 实现方式:因为状态码是不变且全局的,故可以用变量或枚举定义
- 实现方式:因为状态码是不变且全局的,故可以用变量或枚举定义
1.3 定义统一数据返回
- 关于统一返回结果:此处我们统一返回JSON格式的字符串
1.4 异常处理
遇到自定义异常
统一异常
1.5 集成API自动生成
- 场景:我们要测试的接口很多,如果每个都用postman输入太麻烦了,此时我们可以借助Swagger帮我们自动生成测试的接口
- 关于Swagger:是一套API定义的规范,按照该规范去定义接口及接口相关信息,再借助可以解析这套规则的工具,就可以生成各种格式的接口文档以及在线接口调试页面
- Springfox:Spring这么实现了Swagger规范,可以帮我们生成文档,是个第三方框架
- 如何生成:
- 修改pom.xml:
- 编写配置类:
- 配置application.yml:处理兼容性问题
- 使用API注解描述:
- 注意点:
- 修改pom.xml:
- 如何使用生成的API列表:通过http://127.0.0.1:8080/swagger-ui/index.html这个固定的地址直接去访问
- 如何把生成的API列表导入到postman里:
1.6 编写工具类
- 关于工具类:主要是对我们业务中常用的方法进行一个封装,比如对于字符串进行非空校验,随机生成一个字符串之类的
编写MD5加密工具类
- MD5加密工具类:用户登录和注册都会对用户密码进行加密
- pom.xml:项目中使用commons-codec,它是Apache提供的用于摘要计算、编码解码的工具包,常见的编码解码工具为Base64、MD5、Hex、SHA1、DES等
- pom.xml:项目中使用commons-codec,它是Apache提供的用于摘要计算、编码解码的工具包,常见的编码解码工具为Base64、MD5、Hex、SHA1、DES等
- 编写方法:
编写UUID工具类
编写String工具类
二、业务功能实现
2.1 实现注册功能
- 后端代码编写:
- 后端代码编写流程:
- 从前往后:从Controller层开始,调用相关方法时如果没有就再去创建
- 从后往前:把需要的类和方法都提前写好,后续 Controller层 直接调用
- 工程中推荐这种方法,写完后,Service层 和 Controller层 都需要单元测试
- 代码:
- 后端代码编写流程:
2.2 实现登录功能
- 操作步骤:
2.3 获取用户信息
- 效果:
- 效果1:登录后能显示当前用户的信息
- 效果2:点击用户头像后,会来到对应用户的详情页
- 实现方式:用户提交请求,服务器根据是否有传入id决定返回哪个用户的详情
- 如果没传,返回当前登录用户详情,可从Session中获取
- 如果传了,返回指定id的用户详情,可从数据库中查询
- 代码:
2.4 退出登录
- 实现逻辑:用户发送请求,服务器接收把存储的Session销毁 + 解绑保存在Session里的信息,如果成功就跳转到相应界面
- 代码:
2.5 登录拦截器
2.6 导航栏
- 实现方式:
- 首页是写死的
- 其他导航栏数据则是从数据库中获得,然后动态拼接到前端上。注意一次能够展示的导航栏是有限的,查询数据库时需要使用 limit来控制
- 代码:
2.7 发布帖子
- 实现逻辑:
- 用户填入要发布的内容后发送请求,服务器将其写入到文章表中
- 更新用户发帖数和板块帖子数(更新用户表和板块表)
- 这些SQL操作要求是原子性的,需要用事务管理起来
- 代码:
2.8 帖子列表
- 效果及实现方式:板块帖子以发布时间降序排列
- 效果1:首页里显示所有的帖子
- 效果2:其他板块里切换只显示当前板块的帖子
- 实现方式:请求中如果不传入 板块id 实现 “效果1”,传入了实现 “效果2”
- 代码:
首页帖子
板块帖子列表
2.9 显示板块信息
2.10 显示帖子详情
2.11 编辑帖子
2.12 点赞操作
- 实现逻辑:对数据库中的文章表中的likeCount字段+1
- 代码:
2.13 删除帖子
- 逻辑:
- 用户点击删除删除,发送请求
- 服务器校验【用户状态】、【帖子状态】、【当前用户是否为作者】
- 如果状态有错误,直接返回
- 如果没有错误,更新该帖子的deleteState + 用户发帖数 + 板块发帖数,然后返回结果
- 代码:
2.14 回复帖子
2.15 回复列表
2.16 获取用户详情
- 效果及实现方式:
- 效果1:查看自己(当前登录用户)的信息
- 效果2:点击其他用户头像可以查看对应的用户详情
- 实现方式:如果传入用户id,返回指定id的用户详情,没传就返回当前登录用户详情
- 代码:
2.17 用户帖子列表
2.18 修改基本的个人信息
2.19 修改密码
2.20 发送站内信
2.21 站内信未读数
2.22 展示所有的未读信
2.23 把未读信标记为已读
2.24 回复站内信
- 实现逻辑:
- 用户在回复区填写回复内容并提交到服务器
- 【用户不能回复接受者不是自己的站内信】,需要检验
- 将站内信状态设置为已回复,并且在消息表中新增回复的数据,这两个修改操作因为在一个业务逻辑中,需要用事务管理起来
- 代码: