# 科院编程梦工厂 **Repository Path**: RicheFactory/code-factroy ## Basic Information - **Project Name**: 科院编程梦工厂 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-16 - **Last Updated**: 2025-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 科院编程导航

生产级 SpringBoot 企业后端

特性技术栈快速开始项目结构接口文档部署

--- ## 📖 项目概述 代码工厂后端是一个基于 SpringBoot 的企业级应用模板,专为构建可扩展、易维护的后端服务而设计。它集成了现代化的开发框架、最佳实践和生产级功能,包括题库管理、用户认证、帖子管理等完整业务模块。 ## ✨ 特性 ### 核心业务模块 - **题目管理系统** - 题目增删改查与全文检索 - 题库组织与分类管理 - 题库-题目关联关系管理 - Elasticsearch 高级搜索集成 - **用户管理** - 用户注册与认证 - 基于角色的访问控制(普通用户/管理员/封禁) - 微信 OAuth 集成(开放平台 & 公众号) - 基于 Redis 的会话管理 - **帖子与社交功能** - 帖子创建、编辑和管理 - 点赞/取消点赞功能 - 收藏/取消收藏系统 - 基于 Elasticsearch 的帖子搜索 - **文件管理** - 腾讯云 COS 对象存储集成 - 多业务文件上传支持 - 文件大小和类型验证 ### 技术亮点 - **企业级架构** - 清晰的分层架构(Controller → Service → Mapper) - 基于 AOP 的日志记录和权限验证 - 全局异常处理 - 统一响应封装 - **数据与缓存** - MySQL + MyBatis Plus(分页、逻辑删除) - Redis 分布式会话和缓存 - Redisson 分布式锁 - Druid 连接池与监控 - **搜索与索引** - Elasticsearch 集成 - 全文搜索能力 - 定时同步任务(全量和增量) - **开发工具** - CRUD 操作自动代码生成器 - Knife4j 接口文档(Swagger) - Spring DevTools 热重载 - FreeMarker 代码生成模板 - **生产就绪** - Docker 支持与优化的 Dockerfile - 多环境配置(dev/test/prod) - 完善的日志记录 - Druid 健康监控 ## 🛠 技术栈 ### 框架与核心 | 技术 | 版本 | 用途 | |------------|---------|----------| | Spring Boot | 2.7.2 | 核心框架 | | Spring MVC | - | Web 层 | | MyBatis Plus | 3.5.2 | ORM 框架 | | Spring AOP | - | 切面编程 | | Spring Scheduler | - | 定时任务 | ### 数据存储 | 技术 | 用途 | |------------|----------| | MySQL | 主数据库 | | Redis | 缓存与会话存储 | | Elasticsearch | 搜索引擎 | | 腾讯云 COS | 对象存储 | ### 工具与类库 | 类库 | 用途 | |---------|----------| | Hutool | Java 工具包 | | Lombok | 简化样板代码 | | EasyExcel | Excel 处理 | | Apache Commons Lang3 | 通用工具类 | | Knife4j | 接口文档 | | Redisson | 分布式锁 | | WxJava | 微信集成 | ## 🚀 快速开始 ### 环境要求 - JDK 8+ - Maven 3.6+ - MySQL 8.0+ - Redis 5.0+(可选) - Elasticsearch 7.x+(可选) ### 安装步骤 1. **克隆仓库** ```bash git clone cd code-factory-backend ``` 2. **数据库配置** 创建数据库并执行初始化脚本: ```bash mysql -u root -p CREATE DATABASE mianshiya; USE mianshiya; source sql/create_table.sql ``` 3. **配置文件** 修改 `src/main/resources/application.yml`: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/mianshiya username: 你的用户名 password: 你的密码 ``` 4. **构建与运行** ```bash # 使用 Maven mvn clean install mvn spring-boot:run # 或直接运行 java -jar target/code-factory-backend-0.0.1-SNAPSHOT.jar ``` 5. **访问应用** - 接口文档:`http://localhost:8101/api/doc.html` - Druid 监控:`http://localhost:8101/api/druid/`(用户名:root,密码:123) ### 可选服务配置 #### 启用 Redis 1. 修改 `application.yml`: ```yaml spring: redis: host: localhost port: 6379 database: 1 session: store-type: redis ``` #### 启用 Elasticsearch 1. 配置连接信息: ```yaml spring: elasticsearch: uris: http://localhost:9200 username: elastic password: 你的密码 ``` 2. 使用 `sql/post_es_mapping.json` 中的映射创建索引 3. 取消以下文件中 `@Component` 注解的注释以启用同步任务: - `job/once/FullSyncPostToEs.java` - `job/cycle/IncSyncPostToEs.java` #### 配置微信集成 在 `application.yml` 中更新微信配置: ```yaml wx: mp: appId: 你的公众号appid secret: 你的公众号secret open: appId: 你的开放平台appid appSecret: 你的开放平台secret ``` #### 配置腾讯云 COS ```yaml cos: client: accessKey: 你的accessKey secretKey: 你的secretKey region: 你的地域 bucket: 你的存储桶 ``` ## 📁 项目结构 ``` code-factory-backend/ ├── sql/ # 数据库脚本 │ ├── create_table.sql # 建表脚本 │ ├── init_data.sql # 初始化数据 │ └── post_es_mapping.json # Elasticsearch 映射 ├── src/main/ │ ├── java/com/riche/codefactory/ │ │ ├── annotation/ # 自定义注解 │ │ │ └── AuthCheck.java # 权限校验注解 │ │ ├── aop/ # AOP 切面 │ │ │ ├── AuthInterceptor.java # 权限拦截器 │ │ │ └── LogInterceptor.java # 日志拦截器 │ │ ├── common/ # 通用类 │ │ │ ├── BaseResponse.java # 统一响应封装 │ │ │ ├── ErrorCode.java # 错误码枚举 │ │ │ └── PageRequest.java # 分页请求 │ │ ├── config/ # 配置类 │ │ │ ├── CorsConfig.java # 跨域配置 │ │ │ ├── MyBatisPlusConfig.java # MyBatis Plus 配置 │ │ │ ├── RedissonConfig.java # Redisson 配置 │ │ │ └── WxOpenConfig.java # 微信配置 │ │ ├── controller/ # REST 控制器 │ │ │ ├── UserController.java │ │ │ ├── QuestionController.java │ │ │ ├── QuestionBankController.java │ │ │ ├── PostController.java │ │ │ └── ... │ │ ├── service/ # 服务层 │ │ │ ├── impl/ │ │ │ └── I*SVC.java # 服务接口 │ │ ├── mapper/ # MyBatis 映射器 │ │ ├── model/ # 数据模型 │ │ │ ├── domain/ # 领域实体 │ │ │ ├── c2s/ # 客户端到服务端 DTOs │ │ │ └── s2c/ # 服务端到客户端 VOs │ │ ├── esdao/ # Elasticsearch DAOs │ │ ├── job/ # 定时任务 │ │ │ ├── cycle/ # 周期性任务 │ │ │ └── once/ # 一次性任务 │ │ ├── generate/ # 代码生成器 │ │ │ └── CodeGenerator.java │ │ ├── exception/ # 异常处理 │ │ ├── utils/ # 工具类 │ │ └── MainApplication.java # 应用入口 │ └── resources/ │ ├── mapper/ # MyBatis XML 映射文件 │ ├── templates/ # 代码生成模板 │ ├── application.yml # 主配置文件 │ ├── application-dev.yml # 开发环境 │ ├── application-test.yml # 测试环境 │ └── application-prod.yml # 生产环境 └── src/test/ # 单元测试 └── java/com/riche/codefactory/ ├── service/ ├── mapper/ └── ... ``` ## 📚 接口文档 项目使用 **Knife4j**(增强版 Swagger)提供交互式接口文档。 ### 访问文档 启动应用后,访问: ``` http://localhost:8101/api/doc.html ``` ### 主要接口模块 #### 用户管理接口 - `POST /user/register` - 用户注册 - `POST /user/login` - 用户登录 - `POST /user/logout` - 用户登出 - `GET /user/current` - 获取当前用户信息 - `POST /user/update` - 更新用户信息 #### 题目接口 - `POST /question/add` - 创建题目 - `POST /question/delete` - 删除题目 - `POST /question/update` - 更新题目 - `GET /question/get/vo` - 获取题目详情 - `POST /question/list/page/vo` - 分页查询题目列表 - `POST /question/search/page` - 搜索题目 #### 题库接口 - `POST /questionBank/add` - 创建题库 - `POST /questionBank/update` - 更新题库 - `POST /questionBank/list/page/vo` - 分页查询题库列表 #### 帖子接口 - `POST /post/add` - 创建帖子 - `POST /post/update` - 更新帖子 - `POST /post/list/page/vo` - 分页查询帖子列表 - `POST /post/search/page` - 搜索帖子 #### 帖子互动接口 - `POST /post_thumb/do` - 点赞/取消点赞 - `POST /post_favour/add` - 收藏帖子 - `POST /post_favour/list/page` - 查询收藏列表 ## 🔧 代码生成器 项目内置强大的代码生成器,可快速生成 CRUD 操作脚手架代码。 ### 使用方法 1. 打开 `generate/CodeGenerator.java` 2. 配置生成参数: ```java String packageName = "com.riche.codefactory"; String dataName = "评论"; // 业务中文名 String dataKey = "comment"; // 实体键(驼峰命名) String upperDataKey = "Comment"; // 实体键(帕斯卡命名) ``` 3. 运行生成器 4. 生成的文件包括: - 领域实体 - 请求/响应 DTOs - 服务接口和实现 - 包含 CRUD 端点的控制器 ## 🐳 部署 ### Docker 部署 1. **构建 Docker 镜像** ```bash docker build -t code-factory-backend:latest . ``` 2. **运行容器** ```bash docker run -d \ --name code-factory-backend \ -p 8101:8101 \ -e SPRING_PROFILES_ACTIVE=prod \ code-factory-backend:latest ``` ### 环境变量 生产环境部署时,可通过环境变量覆盖配置: ```bash -e SPRING_DATASOURCE_URL=jdbc:mysql://你的数据库地址:3306/mianshiya -e SPRING_DATASOURCE_USERNAME=你的用户名 -e SPRING_DATASOURCE_PASSWORD=你的密码 -e SPRING_REDIS_HOST=你的Redis地址 -e SPRING_REDIS_PORT=6379 ``` ### 健康检查 监控应用健康状态: - Druid 监控:`http://your-host:8101/api/druid/` - 接口文档:`http://your-host:8101/api/doc.html` ## 🧪 测试 运行单元测试: ```bash mvn test ``` 测试覆盖范围: - 服务层测试 - Mapper 层测试 - 控制器集成测试 - Elasticsearch 测试 ## 📝 开发指南 ### 添加新业务模块 1. 使用 `CodeGenerator` 生成基础代码 2. 创建数据库表并执行迁移 3. 在服务层实现自定义业务逻辑 4. 在 DTOs 中添加请求验证 5. 使用 Knife4j 界面测试接口 ### 代码规范 - 遵循 Java 命名约定 - 使用 Lombok 减少样板代码 - 添加完善的 JavaDoc 注释 - 实现适当的异常处理 - 使用 `ThrowUtils` 处理业务异常 ## 🤝 贡献 欢迎贡献!请遵循以下步骤: 1. Fork 本仓库 2. 创建特性分支 3. 提交你的更改 4. 推送到分支 5. 提交 Pull Request ## 📄 许可证 本项目采用 MIT 许可证。 ## 🙏 致谢 - Spring Boot 团队 - MyBatis Plus 社区 - 所有贡献者和用户 ---

Made with ❤️ by Riche