# codeBazaar **Repository Path**: lbyOwen/code-bazaar ## Basic Information - **Project Name**: codeBazaar - **Description**: codeBazaar:一个汇聚全球开发者的开源项目市场,专注于代码分享与合作,支持多种编程语言和技术栈,旨在促进技术创新和知识交流。 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-06 - **Last Updated**: 2025-11-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CodeBazaar 开源项目文档 CodeBazaar 是一个基于 Spring Boot 的开源系统,注于代码分享与合作,支持多种编程语言和技术栈,旨在促进技术创新和知识交流。 ## 项目特点 - **模块化设计**:项目分为多个模块,如博客、系统管理、OA 等,便于扩展和维护。 - **权限管理**:使用 Shiro 实现了完善的权限控制,支持角色、菜单、按钮级别的权限配置。 - **代码生成器**:提供数据库表的代码生成工具,可快速生成实体类、DAO、Service、Controller 等代码。 - **富文本编辑器**:集成富文本编辑器,支持文章内容的编辑和展示。 - **定时任务**:基于 Quartz 实现了定时任务管理,支持动态添加、修改、删除任务。 - **日志管理**:记录用户操作日志,便于审计和追踪。 - **文件上传**:支持文件上传功能,并记录上传信息到数据库。 - **WebSocket 支持**:实现了 WebSocket 通信,可用于实时消息推送。 - **响应式布局**:前端页面采用响应式设计,适配不同设备。 ## 技术栈 - **后端**: - Spring Boot - Spring MVC - MyBatis - Shiro 权限控制 - Quartz 定时任务 - Redis 缓存 - Swagger2 API 文档 - Druid 数据库连接池 - **前端**: - Bootstrap - LayUI - Font Awesome - jQuery - WebSocket ## 模块说明 ### 1. 博客模块 (`blog`) 提供博客文章管理功能,包括文章发布、标签管理、评论管理等。 #### 主要类: - `BlogController`:博客首页、文章列表、文章详情等页面控制器。 - `ContentController`:文章增删改查操作。 - `BlogLabelController`:标签管理控制器。 - `ContentService`:文章业务逻辑接口。 - `BlogLabelService`:标签业务逻辑接口。 - `ContentDO`:文章实体类。 - `BlogLabel`:标签实体类。 ### 2. 系统管理模块 (`system`) 提供用户管理、角色管理、菜单管理、部门管理等功能,是后台管理系统的核心模块。 #### 主要类: - `UserController`:用户管理控制器。 - `RoleController`:角色管理控制器。 - `MenuController`:菜单管理控制器。 - `DeptController`:部门管理控制器。 - `UserService`:用户业务逻辑接口。 - `RoleService`:角色业务逻辑接口。 - `MenuService`:菜单业务逻辑接口。 - `DeptService`:部门业务逻辑接口。 - `UserDO`:用户实体类。 - `RoleDO`:角色实体类。 - `MenuDO`:菜单实体类。 - `DeptDO`:部门实体类。 ### 3. OA 办公自动化模块 (`oa`) 提供通知公告、消息推送、任务提醒等办公自动化功能。 #### 主要类: - `NotifyController`:通知公告管理控制器。 - `NotifyService`:通知公告业务逻辑接口。 - `NotifyDO`:通知公告实体类。 - `NotifyRecordDO`:通知阅读记录实体类。 - `WebSocketController`:WebSocket 消息推送控制器。 ### 4. 公共模块 (`common`) 包含通用工具类、异常处理、日志记录、文件上传、字典管理等功能。 #### 主要类: - `DictController`:字典管理控制器。 - `FileController`:文件上传控制器。 - `LogController`:操作日志控制器。 - `DictService`:字典业务逻辑接口。 - `FileService`:文件上传业务逻辑接口。 - `LogService`:日志记录业务逻辑接口。 - `DictDO`:字典实体类。 - `FileDO`:文件上传记录实体类。 - `LogDO`:操作日志实体类。 - `PageUtils`:分页工具类。 - `R`:统一返回结果封装类。 - `ShiroUtils`:Shiro 工具类。 - `MD5Utils`:密码加密工具类。 - `DateUtils`:日期格式化工具类。 - `ExceptionUtils`:异常信息提取工具类。 ### 5. Quartz 定时任务模块 (`quartz`) 基于 Quartz 实现定时任务调度功能,支持任务的动态管理。 #### 主要类: - `JobController`:定时任务管理控制器。 - `JobService`:定时任务业务逻辑接口。 - `TaskDO`:定时任务实体类。 - `QuartzManager`:Quartz 任务调度管理类。 - `ScheduleJob`:任务执行类。 - `ScheduleJobInitListener`:任务初始化监听器。 ### 6. 日志与异常处理 - `LogAspect`:日志切面,记录用户操作日志。 - `BDExceptionHandler`:全局异常处理器,统一处理异常信息。 - `MainsiteErrorController`:错误页面控制器。 ### 7. 安全与权限控制 - `ShiroConfig`:Shiro 配置类,集成 Redis 缓存。 - `UserRealm`:Shiro 自定义 Realm,用于权限验证。 - `RedisCache`、`RedisCacheManager`:基于 Redis 的缓存实现。 - `RedisSessionDAO`:基于 Redis 的 Session 存储。 ### 8. 数据访问层 - `@Mapper` 注解接口:如 `UserDao`、`RoleDao`、`MenuDao` 等,对应数据库表操作。 - `MyBatis XML 映射文件`:SQL 映射文件,位于 `resources/mybatis` 目录下。 ### 9. 工具类与辅助类 - `SnowflakeIdWorker`:分布式 ID 生成器。 - `SerializeUtils`:对象序列化/反序列化工具。 - `IPUtils`:IP 地址获取工具。 - `RandomValidateCodeUtil`:验证码生成工具。 - `JsoupUtil`:HTML 内容过滤工具,防止 XSS 攻击。 - `BuildTree`:树形结构构建工具。 ## 启动流程 1. **Spring Boot 启动类**:`Application.java` 是项目的启动类,使用 `@SpringBootApplication` 注解自动扫描所有组件。 2. **Shiro 配置**:通过 `ShiroConfig` 配置 Shiro 权限框架,集成 Redis 缓存。 3. **定时任务初始化**:`ScheduleJobInitListener` 在项目启动时加载定时任务。 4. **日志记录**:通过 `LogAspect` 和 `BDExceptionHandler` 实现操作日志和异常日志的记录。 5. **WebSocket 支持**:`WebSocketConfig` 配置 WebSocket 消息代理,支持 STOMP 协议。 ## 数据库结构 项目使用 MySQL 数据库,主要表包括: - `sys_user`:用户表 - `sys_role`:角色表 - `sys_menu`:菜单表 - `sys_dept`:部门表 - `sys_dict`:字典表 - `sys_file`:文件上传记录表 - `sys_log`:操作日志表 - `sys_task`:定时任务表 - `blog_content`:博客文章表 - `blog_label`:博客标签表 - `oa_notify`:通知公告表 - `oa_notify_record`:通知阅读记录表 ## 配置文件说明 - `application.yml`:主配置文件,包含数据库、Redis、Shiro、上传路径等基础配置。 - `application-dev.yml` / `application-pro.yml`:开发环境和生产环境的差异化配置。 - `generator.properties`:MyBatis Generator 配置文件,用于代码生成。 - `quartz.properties`:Quartz 定时任务配置。 - `logback-spring.xml`:日志配置文件。 - `ehcache.xml`:Ehcache 缓存配置(部分模块使用)。 ## 前端资源 前端资源位于 `resources/static` 目录,主要包括: - `layui.css` / `layui.mobile.css`:LayUI 前端框架样式。 - `bootstrap