# straw **Repository Path**: li_run_qing/straw ## Basic Information - **Project Name**: straw - **Description**: 稻草问答 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-08-20 - **Last Updated**: 2026-03-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 稻草问答 (Straw) 一个基于 Spring Boot 的在线问答系统,支持问题发布、回答、评论、标签管理等功能。 ## 🌟 项目简介 稻草问答是一个企业级的在线问答平台,灵感来源于 Stack Overflow 和知乎。该系统提供了完整的用户管理、权限控制、内容管理等功能,适用于企业内部知识分享、技术支持等场景。 ## 🏗️ 技术架构 ### 后端技术栈 - **框架**: Spring Boot 2.x - **安全**: Spring Security + BCrypt 密码加密 - **ORM**: MyBatis-Plus (推荐使用 JOOQ 以获得更好的类型安全) - **数据库**: MySQL - **模板引擎**: Thymeleaf - **构建工具**: Maven ### 项目结构 ``` straw/ ├── straw-portal/ # 主应用模块 │ ├── controller/ # 控制器层 │ ├── service/ # 业务逻辑层 │ ├── mapper/ # 数据访问层 │ ├── model/ # 实体类 │ ├── security/ # 安全配置 │ └── vo/ # 视图对象 ├── straw-generator/ # 代码生成器模块 └── pom.xml # 项目配置 ``` ## ✨ 核心功能 ### 用户管理 - [x] 用户注册与登录 - [x] 基于角色的权限控制 (RBAC) - [x] 班级/组织管理 - [x] 邀请码机制 ### 问答功能 - [x] 问题发布与编辑 - [x] 问题标签分类 - [x] 回答与评论 - [x] 点赞与采纳 - [x] 问题收藏 ### 内容管理 - [x] 标签管理 - [x] 权限管理 - [x] 角色管理 - [x] 用户管理 ## 🚀 快速开始 ### 环境要求 - JDK 1.8+ - MySQL 5.7+ - Maven 3.6+ ### 安装步骤 1. **克隆项目** ```bash git clone https://gitee.com/your-repo/straw.git cd straw ``` 2. **创建数据库** ```sql CREATE DATABASE straw DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 3. **导入数据** ```bash # 执行项目根目录下的 SQL 脚本 mysql -u root -p straw < database/straw.sql ``` 4. **修改配置** ```properties # 编辑 application.properties spring.datasource.url=jdbc:mysql://localhost:3306/straw?useUnicode=true&characterEncoding=utf8 spring.datasource.username=root spring.datasource.password=your_password ``` 5. **编译运行** ```bash # 编译项目 mvn clean install # 运行主应用 cd straw-portal mvn spring-boot:run ``` 6. **访问系统** ``` http://localhost:8080 ``` ## 📖 使用说明 ### 默认账号 - 管理员:`admin / 123456` - 教师:`teacher / 123456` - 学生:`student / 123456` ### 主要功能流程 #### 提问流程 1. 登录系统 2. 点击"我要提问" 3. 填写问题标题和内容 4. 添加相关标签 5. 提交问题 #### 回答流程 1. 浏览问题列表或搜索问题 2. 进入问题详情页 3. 在回答框输入答案 4. 提交回答 #### 班级管理 1. 教师创建班级 2. 生成班级邀请码 3. 学生通过邀请码加入班级 4. 查看班级问题和讨论 ## 🔧 开发指南 ### 添加新功能 ```bash # 1. 创建新的 Controller @Controller @RequestMapping("/api/new-feature") public class NewFeatureController { @Autowired private INewFeatureService service; } # 2. 实现 Service 接口 @Service public class NewFeatureServiceImpl implements INewFeatureService { // 业务逻辑 } # 3. 创建 Mapper 接口 @Mapper public interface NewFeatureMapper extends BaseMapper { } ``` ### 代码生成 ```bash cd straw-generator mvn exec:java -Dexec.mainClass="cn.tedu.straw.generator.CodeGenerator" ``` ## 📊 API 文档 主要的 RESTful API 端点: | 端点 | 方法 | 描述 | |------|------|------| | `/api/question` | GET | 获取问题列表 | | `/api/question/{id}` | GET | 获取问题详情 | | `/api/question/add` | POST | 添加问题 | | `/api/answer` | POST | 提交回答 | | `/api/user/login` | POST | 用户登录 | | `/api/tag/list` | GET | 获取标签列表 | ## 🤝 参与贡献 我们非常欢迎各种形式的贡献! ### 贡献流程 1. Fork 本仓库 2. 新建 Feat_xxx 分支(如:Feat_add-search-function) 3. 提交代码(遵循 commit 规范) 4. 新建 Pull Request 5. 等待 Code Review ### 代码规范 - 遵循阿里巴巴 Java 开发手册 - 使用统一的命名规范 - 编写必要的注释 - 保持代码格式整洁 - 推荐使用枚举替代魔法值以提高代码可读性 ### Commit 规范 ``` feat: 新功能 fix: 修复 bug docs: 文档更新 style: 代码格式调整 refactor: 重构代码 test: 测试相关 chore: 构建/工具链相关 ``` ## 📝 常见问题 ### Q: 如何修改数据库连接? A: 编辑 `straw-portal/src/main/resources/application.properties` 文件中的数据库配置。 ### Q: 忘记密码怎么办? A: 可以通过数据库直接重置密码,或使用密码找回功能(如果已实现)。 ### Q: 如何添加新标签? A: 登录后在标签管理页面添加,或直接联系管理员。 ### Q: 文件上传失败? A: 检查 application.properties 中的文件上传大小限制和存储路径配置。 ## 📄 许可证 本项目采用 MIT 协议开源 ## 👥 团队 - 开发者:稻草团队 - 技术支持:support@straw.com ## 🎯 路线图 - [ ] 移动端适配 - [ ] 实时通知系统 - [ ] 积分等级系统 - [ ] 问题搜索优化 - [ ] 数据统计分析 - [ ] API 文档完善 ## 📮 联系方式 - 项目地址:https://gitee.com/your-repo/straw - 问题反馈:https://gitee.com/your-repo/straw/issues - 邮箱:contact@straw.com ---

如果这个项目对你有帮助,请给一个 ⭐️Star 支持!

© 2024 稻草问答 Team. All Rights Reserved.