1. weblog-module-common模块:
- 这是基础模块,包含了Response和PageResponse等基础响应类
- 包含了aspect、config、constant等通用配置和工具类 以下是优化后的排版总结,清晰地展示了每个文件的主要方法、返回值和功能:
config包
1. MybatisPlusConfig.java
- 主要方法 :
mybatisPlusInterceptor()
- 返回值 :
MybatisPlusInterceptor
- 功能:配置 MyBatis Plus 的分页插件,支持数据库查询的分页功能。
- 返回值 :
insertBatchSqlInjector()
- 返回值 :
InsertBatchSqlInjector
- 功能:配置自定义的批量插入 SQL 注入器,支持批量插入数据的功能。
- 返回值 :
2. InsertBatchSqlInjector.java
- 主要方法 :
getMethodList(Class<?> mapperClass, TableInfo tableInfo)
- 返回值 :
List<AbstractMethod>
- 功能 :重写
DefaultSqlInjector
的方法,添加自定义的批量插入方法insertBatchSomeColumn
,同时保留 MyBatis Plus 自带的方法。
- 返回值 :
3. MyBaseMapper.java
- 主要方法 :
insertBatchSomeColumn(@Param("list") List<T> batchList)
- 返回值 :
int
(表示影响的行数) - 功能:定义批量插入数据的接口方法,用于一次性插入多条数据记录。
- 返回值 :
4. EventBusConfig.java
- 主要方法 :
eventBus()
- 返回值 :
EventBus
- 功能 :创建并配置 Google Guava 的
EventBus
实例,注册事件监听器,用于实现事件驱动的消息通知机制。
- 返回值 :
结论:
这些配置类构成了项目的基础设施层,提供了以下核心功能支持:
- MyBatis Plus 配置:分页查询和批量插入的支持。
- 自定义 SQL 注入器:增强批量操作能力。
- 事件驱动机制 :通过
EventBus
提供事件发布和监听机制。
整体设计清晰,易于扩展和维护,有效提升了项目的性能与灵活性。
damain包
1. 数据对象类(DO)
这些类用于映射数据库表,通常使用 MyBatis Plus 的注解(如 @TableName 、 @TableId )进行 ORM 映射。以下是主要 DO 类及其功能: 文章相关
- ArticleDO :文章表实体类,映射 t_article 表,存储文章的基本信息(如标题、封面图、描述等)。
- ArticleContentDO :文章内容表实体类,映射 t_article_content 表,存储文章的详细内容。
- ArticleCategoryRelDO :文章-分类关系表实体类,映射 t_article_category_rel 表,用于关联文章和分类。
- ArticleTagRelDO :文章-标签关系表实体类,映射 t_article_tag_rel 表,用于关联文章和标签。 用户相关
- UserDO :用户表实体类,映射 t_user 表,存储用户的基本信息(如用户名、密码等)。
- UserRoleDO :用户角色表实体类,映射 t_user_role 表,用于管理用户的角色信息。 分类与标签
- CategoryDO :分类表实体类,映射 t_category 表,存储文章分类信息。
- TagDO :标签表实体类,映射 t_tag 表,存储文章标签信息。 其他
- BlogSettingDO :博客设置表实体类,映射 t_blog_setting 表,存储博客的基本配置信息(如博客名称、作者信息等)。
- VisitorRecordDO :访客记录表实体类,映射 t_visitor_record 表,记录访客的访问信息(如 IP 地址、访问时间等)。
- ArticleCountDO :文章统计值对象(非数据库表映射),用于统计文章数量。
2. Mapper 接口
这些接口继承自 MyBatis Plus 的 BaseMapper ,用于操作数据库表。以下是主要 Mapper 接口及其功能:
- UserMapper :操作用户表 t_user ,提供用户数据的增删改查功能。
- UserRoleMapper :操作用户角色表 t_user_role ,管理用户角色信息。
- CategoryMapper :操作分类表 t_category ,提供分类数据的增删改查功能。
- TagMapper :操作标签表 t_tag ,提供标签数据的增删改查功能。
3. 主要功能
- 数据映射 :通过 MyBatis Plus 的注解将 Java 类与数据库表进行映射。
- CRUD 操作 :通过 Mapper 接口提供对数据库表的基本操作(增删改查)。
- 关联关系管理 :通过关系表(如 t_article_category_rel 、 t_article_tag_rel )管理文章与分类、标签的关联关系。
- 统计与记录 :通过 ArticleCountDO 和 VisitorRecordDO 实现文章统计和访客记录功能。
aspect包
1. ApiOperationLogAspect
功能 :用于记录 API 操作的日志和访客 IP 信息。 主要方法 :
- apiOperationLog() :
- 作用 :定义切点,拦截所有被 @ApiOperationLog 注解标记的方法。
- doBefore(JoinPoint joinPoint) :
- 作用 :在目标方法执行前执行,记录请求日志和访客 IP 信息。
- 功能 :
- 打印请求日志(如请求路径、参数等)。
- 获取访客 IP 并查询归属地,记录到数据库。
- doAfter() :
- 作用 :在目标方法执行后执行,目前为空实现。
- doAround(ProceedingJoinPoint proceedingJoinPoint) :
- 作用 :环绕目标方法执行,记录方法耗时和返回结果。
- 功能 :
- 计算方法执行时间。
- 打印方法返回结果。
- scheduledClearTask() :
- 作用 :每天零点零一秒执行,清空当天的访客 IP 记录。
- getAspectLogDescription(JoinPoint joinPoint) :
- 作用 :获取被拦截方法的描述信息。
- toJson(JoinPoint joinPoint) :
- 作用 :将方法参数转换为 JSON 字符串。
2. ApiOperationLog
功能 :自定义注解,用于标记需要记录日志的方法。 主要属性 :
- description() :
- 作用 :定义方法的描述信息,用于日志记录。
enums
主要包含与 枚举 相关的类,用于定义一些固定的状态码、错误信息或事件类型。以下是这些类的详细说明:
1. ResponseCodeEnum
功能 :定义通用的响应状态码和错误信息。 主要属性 :
- errorCode :错误码,用于标识具体的错误类型。
- errorMessage :错误信息,用于描述错误的具体内容。 主要枚举值 :
- SYSTEM_ERROR :系统错误。
- PARAM_ERROR :参数错误。
- UNAUTHORIZED :未授权访问。
- FORBIDDEN :演示账号仅支持查询操作。
- LOGIN_FAIL :登录失败。
- USERNAME_OR_PWD_ERROR :用户名或密码错误。
- UPLOAD_FILE_ERROR :文件上传失败。
- DUPLICATE_TAG_ERROR :标签重复。
- DUPLICATE_CATEGORY_ERROR :分类重复。
- TOKEN_EXPIRED :Token 已过期。
- AGENT_REGION_SEARCH_ERROR :访客 IP 归属地查询失败。 作用 :通过枚举统一管理错误码和错误信息,便于在项目中快速定位和处理错误。
2. AdminResponseCodeEnum
功能 :定义管理后台的响应状态码和错误信息。 主要属性 :
- errorCode :错误码,用于标识具体的错误类型。
- errorMessage :错误信息,用于描述错误的具体内容。 主要枚举值 :
- SYSTEM_ERROR :系统错误。 作用 :专门用于管理后台的错误处理,便于区分前后端的错误码。
3. EventEnum
功能 :定义事件类型枚举。 主要属性 :
- eventType :事件类型,用于标识具体的事件。
- eventDescription :事件描述,用于说明事件的具体内容。 作用 :通过枚举统一管理事件类型,便于在事件驱动架构中快速识别和处理事件。
总结
enums 包中的类主要用于定义和管理项目中使用的枚举值,例如错误码、事件类型等。这些枚举类通过统一的接口或基类(如 BaseExceptionInterface )实现,便于在项目中快速定位和处理错误或事件。
constant 包
在 constant 包中,主要包含与 常量 相关的类,用于定义项目中使用的全局静态变量或配置。以下是这些类的详细说明:
1. Constants
功能 :定义项目中使用的全局静态变量。 主要属性 :
- DATE_TIME_FORMATTER :日期时间格式化器,用于将日期格式化为 yyyy-MM-dd 。
- DATE_FORMAT :日期格式化器,用于将日期格式化为 yyyy-MM-dd 。
- MONTH_FORMAT :月份格式化器,用于将日期格式化为 yyyy-MM 。 作用 :通过接口定义全局常量,便于在项目中统一管理日期格式和其他静态配置。
总结
constant 包中的类主要用于定义和管理项目中使用的全局常量,例如日期格式、静态配置等。这些常量通过接口或类实现,便于在项目中快速引用和统一管理。
eventbus
在 eventbus 包中,主要包含与 事件驱动架构 相关的类,用于实现事件的发布、订阅和处理。以下是这些类的详细说明:
1. ArticleEvent
功能 :定义文章相关的事件。 主要属性 :
- articleId :文章 ID,用于标识事件关联的文章。
- message :事件消息,用于描述事件的具体内容。 作用 :通过事件对象封装文章相关的操作(如文章阅读量增加),便于在事件驱动架构中传递和处理。
2. EventListener
功能 :定义事件监听器的接口。 主要方法 :
- handleEvent(ArticleEvent event) :
- 作用 :处理接收到的事件。
- 功能 :根据事件类型执行相应的业务逻辑。 作用 :通过接口统一事件处理逻辑,便于扩展和实现不同的事件监听器。
3. AdminEventListener
功能 :实现管理后台的事件监听器。 主要方法 :
- handleEvent(ArticleEvent event) :
- 作用 :处理文章相关的事件。
- 功能 :
- 记录事件日志。
- 调用异步任务处理文章阅读量增加。 作用 :通过实现 EventListener 接口,处理管理后台的特定事件,例如文章阅读量统计。
总结
eventbus 包中的类主要用于实现事件驱动架构,通过事件的发布、订阅和处理,解耦业务逻辑,提高系统的可扩展性和可维护性。
exception 包
在 exception 包中,主要包含与 异常处理 相关的类,用于定义和管理项目中的自定义异常和全局异常处理逻辑。以下是这些类的详细说明:
1. BaseExceptionInterface
功能 :定义异常接口,用于统一管理错误码和错误信息。 主要方法 :
- getErrorCode() :获取错误码。
- getErrorMessage() :获取错误信息。 作用 :通过接口定义异常的基本属性,便于在项目中统一管理错误码和错误信息。
2. BizException
功能 :定义业务异常类,用于处理业务逻辑中的异常。 主要属性 :
- errorCode :错误码,用于标识具体的错误类型。
- errorMessage :错误信息,用于描述错误的具体内容。 主要方法 :
- BizException(BaseExceptionInterface exception) :构造函数,根据接口实现类初始化异常。 作用 :通过自定义异常类封装业务逻辑中的错误,便于在项目中快速定位和处理异常。
3. ResourceNotFoundException
功能 :定义资源未找到异常类,用于处理资源不存在的异常。 主要方法 :
- ResourceNotFoundException() :构造函数,初始化异常信息。 作用 :通过自定义异常类封装资源不存在的错误,便于在项目中快速定位和处理异常。
4. GlobalExceptionHandler
功能 :定义全局异常处理器,用于捕获和处理项目中的异常。 主要方法 :
- handleException(HttpServletRequest request, BizException e) :处理业务异常。
- methodArgumentNotValidException(HttpServletRequest request, MethodArgumentNotValidException e) :处理参数校验异常。
- handleException(HttpServletRequest request, Exception e) :处理其他异常。 作用 :通过全局异常处理器统一处理项目中的异常,便于在项目中快速定位和处理错误。
总结
exception 包中的类主要用于定义和管理项目中的自定义异常和全局异常处理逻辑。通过自定义异常类和全局异常处理器,统一管理错误码和错误信息,便于在项目中快速定位和处理异常。
model 包
在 model 包中,主要包含与 数据模型 相关的类,用于定义和管理项目中的请求参数、响应数据等。以下是这些类的详细说明:
1. ArticleEvent
功能 :定义文章相关的事件。 主要属性 :
- articleId :文章 ID,用于标识事件关联的文章。
- message :事件消息,用于描述事件的具体内容。 作用 :通过事件对象封装文章相关的操作(如文章阅读量增加),便于在事件驱动架构中传递和处理。
2. QueryTagPageListReqVO
功能 :定义查询标签分页列表的请求参数。 主要属性 :
- current :当前页码,默认为 1。
- size :每页大小,默认为 10。
- startDate :开始日期,用于筛选标签创建时间。
- endDate :结束日期,用于筛选标签创建时间。
- tagName :标签名称,用于模糊查询。 作用 :通过请求参数对象封装查询条件,便于在业务逻辑中处理分页查询。
3. UpdateArticleReqVO
功能 :定义更新文章的请求参数。 主要属性 :
- id :文章 ID,用于标识要更新的文章。
- title :文章标题,需满足长度限制。
- content :文章内容,不能为空。
- titleImage :文章头图,不能为空。
- description :文章摘要,不能为空。
- categoryId :文章分类 ID,不能为空。
- tags :文章标签列表,不能为空。 作用 :通过请求参数对象封装更新文章的数据,便于在业务逻辑中处理文章更新操作。
4. SearchTagReqVO
功能 :定义搜索标签的请求参数。 主要属性 :
- key :搜索关键字,不能为空。 作用 :通过请求参数对象封装搜索条件,便于在业务逻辑中处理标签搜索操作。
5. AddTagReqVO
功能 :定义添加标签的请求参数。 主要属性 :
- tags :标签名称列表,不能为空。 作用 :通过请求参数对象封装添加标签的数据,便于在业务逻辑中处理标签添加操作。
6. QueryUserDetailRspVO
功能 :定义查询用户详情的响应数据。 主要属性 :
- username :用户名。
- avatar :用户头像。 作用 :通过响应数据对象封装用户详情信息,便于在前端展示用户信息。
7. QueryCategoryPageListRspVO
功能 :定义查询分类分页列表的响应数据。 主要属性 :
- id :分类 ID。
- name :分类名称。
- createTime :分类创建时间。 作用 :通过响应数据对象封装分类信息,便于在前端展示分类列表。
8. QueryCategoryPageListReqVO
功能 :定义查询分类分页列表的请求参数。 主要属性 :
- current :当前页码,默认为 1。
- size :每页大小,默认为 10。
- startDate :开始日期,用于筛选分类创建时间。
- endDate :结束日期,用于筛选分类创建时间。
- categoryName :分类名称,用于模糊查询。 作用 :通过请求参数对象封装查询条件,便于在业务逻辑中处理分页查询。
9. UpdateBlogSettingReqVO
功能 :定义更新博客设置的请求参数。 主要属性 :
- id :博客设置 ID。
- blogName :博客名称,不能为空。
- author :博客作者,不能为空。
- avatar :作者头像,不能为空。
- introduction :博客简介。
- githubHome :GitHub 主页。
- csdnHome :CSDN 主页。
- giteeHome :Gitee 主页。
- zhihuHome :知乎主页。 作用 :通过请求参数对象封装更新博客设置的数据,便于在业务逻辑中处理博客设置更新操作。
10. QueryArticleDetailReqVO
功能 :定义查询文章详情的请求参数。 主要属性 :
- articleId :文章 ID。 作用 :通过请求参数对象封装查询条件,便于在业务逻辑中处理文章详情查询。
11. DeleteCategoryReqVO
功能 :定义删除分类的请求参数。 主要属性 :
- categoryId :分类 ID,不能为空。 作用 :通过请求参数对象封装删除分类的数据,便于在业务逻辑中处理分类删除操作。
12. QueryDashboardPVStatisticsRspVO
功能 :定义查询仪表盘 PV 统计的响应数据。 主要属性 :
- pvDates :PV 日期列表。
- pvCounts :PV 数量列表。 作用 :通过响应数据对象封装 PV 统计信息,便于在前端展示 PV 统计图表。
13. QueryDashboardArticleStatisticsRspVO
功能 :定义查询仪表盘文章统计的响应数据。 主要属性 :
- articleTotalCount :文章总数。
- categoryTotalCount :分类总数。
- tagTotalCount :标签总数。
- pvTotalCount :PV 总数。 作用 :通过响应数据对象封装文章统计信息,便于在前端展示文章统计图表。
14. AddCategoryReqVO
功能 :定义添加分类的请求参数。 主要属性 :
- name :分类名称,需满足长度限制。 作用 :通过请求参数对象封装添加分类的数据,便于在业务逻辑中处理分类添加操作。
15. QueryBlogSettingRspVO
功能 :定义查询博客设置的响应数据。 主要属性 :
- id :博客设置 ID。
- blogName :博客名称。
- author :博客作者。
- avatar :作者头像。
- introduction :博客简介。
- githubHome :GitHub 主页。
- csdnHome :CSDN 主页。
- giteeHome :Gitee 主页。
- zhihuHome :知乎主页。 作用 :通过响应数据对象封装博客设置信息,便于在前端展示博客设置。
16. QueryArticleDetailRspVO
功能 :定义查询文章详情的响应数据。 主要属性 :
- id :文章 ID。
- title :文章标题。
- titleImage :文章头图。
- content :文章内容。
- description :文章摘要。
- categoryId :文章分类 ID。
- tagIds :文章标签 ID 列表。 作用 :通过响应数据对象封装文章详情信息,便于在前端展示文章详情。
总结
model 包中的类主要用于定义和管理项目中的请求参数、响应数据等。通过请求参数对象封装业务逻辑中的数据,便于在业务逻辑中处理各种操作;通过响应数据对象封装返回给前端的数据,便于在前端展示各种信息。
utils 包
在 utils 包中,主要包含与 工具类 相关的类,用于实现一些通用的功能或辅助方法。以下是这些类的详细说明:
1. MinioUtil
功能 :用于处理文件上传到 MinIO 存储服务的工具类。 主要方法 :
- uploadFile(MultipartFile file) :
- 作用 :上传文件到 MinIO 存储服务。
- 功能 :
- 检查文件是否为空。
- 生成唯一的文件名。
- 将文件上传到 MinIO。
- 返回文件的访问 URL。 作用 :通过工具类封装文件上传逻辑,便于在业务逻辑中处理文件上传操作。
2. AgentRegionUtils
功能 :用于处理 IP 地址归属地查询的工具类。 主要方法 :
- getIpAddress(HttpServletRequest request) :
- 作用 :从 HTTP 请求中获取客户端 IP 地址。
- getIpRegion(String ipAddress, String xdbPath) :
- 作用 :根据 IP 地址查询归属地信息。 作用 :通过工具类封装 IP 地址查询逻辑,便于在业务逻辑中处理访客 IP 归属地查询。
3. MarkdownUtil
功能 :用于处理 Markdown 格式转换的工具类。 主要方法 :
- convertToHtml(String markdown) :
- 作用 :将 Markdown 文本转换为 HTML。 作用 :通过工具类封装 Markdown 转换逻辑,便于在业务逻辑中处理 Markdown 格式的转换。
4. ResultUtil
功能 :用于处理响应结果的工具类。 主要方法 :
- success(T data) :
- 作用 :返回成功的响应结果。
- fail(String errorCode, String errorMessage) :
- 作用 :返回失败的响应结果。 作用 :通过工具类封装响应结果的生成逻辑,便于在业务逻辑中统一处理响应结果。
总结
utils 包中的类主要用于实现一些通用的功能或辅助方法,例如文件上传、IP 地址查询、Markdown 转换、响应结果生成等。通过工具类封装这些功能,便于在业务逻辑中快速调用和处理,提高代码的复用性和可维护性。