# SpringBoot项目脚手架 **Repository Path**: mdd115192/springboot-init ## Basic Information - **Project Name**: SpringBoot项目脚手架 - **Description**: SpringBoot项目脚手架,开箱即用,使我们可以快速开发项目。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 0 - **Created**: 2023-07-13 - **Last Updated**: 2024-03-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SpringBootProject-Init脚手架说明文档 [toc] ## 1.注解 ### 权限校验注解 标识在接口上,表示该接口需要进行权限校验,搭配aop实现; ## 2.AOP ### 权限校验AOP 利用aop对一些特定的接口进行增强,调用接口前需要做用户权限校验; 对加AuthCheck注解的接口进行权限校验,只有指定权限的用户可以调用此类接口; ### 请求响应日志AOP 打印请求响应日志信息到控制台 ## 3.公共类 ### 通用返回结果类BaseResponse 定义统一规范,方便后端响应数据以及信息,前端解析响应数据; ### DeleteRequest请求体 通用参数,抽象出来,继承即可,提高代码复用性 ### 自定义的异常码 作用:枚举类型,起到规范作用,方便快速构建异常,返回结果对象; ### PageRequest请求体 通用参数,抽象出来,继承即可,提高代码复用性; ### 自定义的异常类 自定义的异常信息,方便我们定位错误; ### 全局异常处理器 通过@restControllerAdvice+@ExceptionHandler两个注解来实现全局的异常处理器,通过全局异常处理器出来项目中的异常信息,以及响应给前端异常信息。在控制台打印异常信息。 ## 4.Config ### 全局跨域配置 通过cors来解决跨域问题; ### SpringMVC 序列化配置 由于java中的long类型比js中的number范围要大,所以可能有精度丢失问题; 所以将long类型序列化成字符串类型可以解决long类型转json精度定时问题; ### Knife4j接口文档配置 配置项目接口文档的相关信息,指定扫描的Controller包; ### MyBatisPlue分页插件 简化分页查询; ## 5.工具类 ### 返回工具类 帮助我们快速构建正确返回结果对象以及错误返回结果对象; ### 抛异常工具类 定义抛异常方法,简化我们抛异常结构,使代码更加简介,可观; ## 6.接口 ### 6.1用户模块 #### 用户常量信息类 定义了用户常量信息,使代码更规范; #### 用户登录接口✔ **用户登录** 定义用户登录请求体类,用户接受用户登录请求的请求参数; 定义一个LoginUserVo用户脱敏对象保存用户脱敏信息,用于返回脱敏后的用户信息给前端; **Controller层** Web层基本校验; **Service层** 1. 业务层次参数校验; 2. 密码加密 3. 查询用户是否存在 4. 保存用户登录态 5. 用户脱敏 6. 返回脱敏用户对象 #### 用户注册接口✔ **用户注册** 定义用户注册请求体类:用于接受用户注册请求的请求参数数据 **Controller层:** 只做跟业务无关的一些基本的对请求参数的校验;真正的业务实现在业务层Service **Service层:** 1. 对参数进行业务层次的格式校验 2. 先判断该用户是否存在,存在则返回 3. 不存在,则对密码加密后插入用户数据 **注意:**需要考虑接口幂等性,利用互斥锁来解决用户注册幂等性问题 #### 用户注销接口✔ **Controller层** 参数校验,获取request对象 **Service层** 先获取属性信息,若没有,说明没有登录; 若有,删除会话中的用户态; #### 更新用户接口✔ @AuthCheck注解的作用???通过注解利用aop做权限校验 **Controller层** 定义更新用户请求对象接受更新请求的请求参数 数据拷贝 调用业务层 对结果做校验 **Service层** 根据id进行更新用户信息 ##### 根据id查询用户接口(仅管理员)✔ **todo** @AuthCheck注解的作用??? **Controller层** 参数校验 根据id查询用户信息 校验结果 **Service层** ##### CURD用户接口✔ **Controller:** **Service:** 常规 ##### 用户分页(管理员)✔ 定义一个通用分页请求参数类:定义了分页请求的一些参数;提高了代码复用; 定义了一个查询请求体:定义了一些查询参数;并且继承了通用分页请求参数类; **Controller:** 调用Service层 **Service:** 定义了一个根据查询请求参数构造条件构造器的方法;方便查询构建条件构造器,提高了复用性; 返回分页对象 ##### 用户信息分页✔ **Controller:** 校验 调用业务层 **Service:** 限制爬虫 构建page对象 构建条件构造器 分页查询 userPage转化为UserVoPage 返回 ##### 更新个人信息✔ 定义一个更新个人信息请求体类接受请求参数 **Controller:** 校验 调用业务层,根据Session得到当前登录态 根据id更新用户信息 ### 6.2文件模块 #### 文件上传 文件上传至腾讯云cos图床; #### 文件校验 对文件格式类型做校验; ### 6.3帖子模块 #### 增删改查接口✔ 对于实体类信息以及实体类分页信息要获得其实体类封装信息以及实体类封装信息分页进行返回,定义转换方法,提高复用性 #### 编辑帖子✔ **Controller:** **Service:** 校验 获取当前用户 判断post是否存在 权限校验 修改 #### 帖子点赞/取消点赞接口✔ 注意保证接口幂等性;可能会出现多点赞,和多取消的可能,通过加锁来保证幂等性; 方法调用有事务管理的方法,需要通过代理对象来调用,否者事务管理无效,因为事务管理是基于aop实现的 **Controller:** 校验 调用业务层 **Service:** 校验 获取当前用户 判断帖子是否存在 点赞: 1. 判断是否点过赞 2. 未点赞则点赞,更新帖子点赞信息,反之; #### 帖子收藏接口✔ 与点赞一样