Files
hzdyjs/docs/development/README.md
T
2025-06-26 18:30:03 +08:00

385 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 开发文档目录
## 目录说明
此目录用于存放项目的开发相关文档,包括开发指南、代码样例、问题记录等。
## 1. 开发环境搭建
### 环境准备
- **开发环境搭建指南.md**:完整的开发环境搭建步骤
- **IDE 配置指南.md**:IntelliJ IDEA 开发环境配置
- **Maven 配置.md**:Maven 环境配置和私服配置
- **Git 配置.md**:Git 版本控制配置
### 工具安装
- **JDK 安装配置.md**:Java 开发环境安装
- **Node.js 安装配置.md**:前端开发环境安装
- **数据库安装.md**:MySQL 和 Redis 安装配置
- **开发工具推荐.md**:推荐的开发工具和插件
### 环境配置示例:
```bash
# 开发环境启动脚本示例
#!/bin/bash
# 启动MySQL
sudo systemctl start mysql
# 启动Redis
sudo systemctl start redis
# 启动后端应用
cd ruoyi-admin
mvn spring-boot:run -Dspring-boot.run.profiles=dev
# 启动前端应用
cd ../plus-ui
npm run dev
```
## 2. 开发规范和指南
### 代码规范
- **Java 代码规范.md**:Java 代码编写规范
- **前端代码规范.md**:Vue3+TypeScript 代码规范
- **数据库设计规范.md**:数据库表设计规范
- **API 接口规范.md**:RESTful API 设计规范
### 命名规范
- **包命名规范.md**:Java 包命名规范
- **类和方法命名.md**:类和方法命名规范
- **数据库命名规范.md**:表和字段命名规范
- **前端命名规范.md**:组件和方法命名规范
### Git 规范
- **Git 分支规范.md**:Git 分支管理规范
- **提交信息规范.md**:Git 提交信息格式规范
- **代码审查流程.md**:Code Review 流程和标准
## 3. 架构设计指南
### 系统架构
- **整体架构设计.md**:系统整体架构设计说明
- **模块化设计.md**:模块化架构设计原则
- **分层架构设计.md**:分层架构设计和职责划分
- **微服务架构.md**:微服务架构设计指南
### 设计模式
- **常用设计模式.md**:项目中使用的设计模式
- **Spring 设计模式.md**:Spring 框架中的设计模式
- **业务设计模式.md**:业务层常用设计模式
### 架构示例:
```java
// 标准Controller示例
@RestController
@RequestMapping("/api/v1/users")
@Tag(name = "用户管理", description = "用户管理相关接口")
public class UserController extends BaseController {
@Autowired
private IUserService userService;
@SaCheckPermission("system:user:list")
@GetMapping
@Operation(summary = "查询用户列表", description = "分页查询用户信息")
public R<PageResult<UserVO>> list(@Valid UserQueryDTO queryDTO) {
return R.ok(userService.queryPageList(queryDTO));
}
}
```
## 4. 功能开发指南
### 新功能开发流程
- **功能开发流程.md**:从需求到上线的完整流程
- **业务模块开发.md**:新业务模块开发步骤
- **接口开发指南.md**:API 接口开发步骤
- **前端页面开发.md**:前端页面开发步骤
### 数据库开发
- **数据库设计流程.md**:数据库表设计流程
- **SQL 编写规范.md**:SQL 语句编写规范
- **数据迁移指南.md**:数据库迁移指南
- **性能优化指南.md**:SQL 性能优化指南
### 缓存开发
- **Redis 使用指南.md**:Redis 缓存使用指南
- **缓存策略设计.md**:缓存策略设计原则
- **分布式锁使用.md**:分布式锁使用指南
## 5. 代码样例和模板
### 后端代码模板
- **Controller 模板.md**:标准 Controller 代码模板
- **Service 模板.md**:标准 Service 代码模板
- **Mapper 模板.md**:标准 Mapper 代码模板
- **Entity 模板.md**:标准实体类代码模板
### 前端代码模板
- **Vue 组件模板.md**:标准 Vue 组件模板
- **API 调用模板.md**:API 接口调用模板
- **表单组件模板.md**:表单组件开发模板
- **表格组件模板.md**:表格组件开发模板
### 配置文件模板
- **application.yml 模板.md**:应用配置模板
- **logback 配置模板.md**:日志配置模板
- **Dockerfile 模板.md**:Docker 镜像构建模板
### Service 层代码示例:
```java
@Service
@Transactional(rollbackFor = Exception.class)
public class UserServiceImpl implements IUserService {
@Autowired
private UserMapper userMapper;
@Override
@DataPermission(deptAlias = "d", userAlias = "u")
public PageResult<UserVO> queryPageList(UserQueryDTO queryDTO) {
LambdaQueryWrapper<SysUser> lqw = buildQueryWrapper(queryDTO);
Page<UserVO> result = userMapper.selectVoPage(queryDTO.toPage(), lqw);
return PageResult.build(result);
}
private LambdaQueryWrapper<SysUser> buildQueryWrapper(UserQueryDTO queryDTO) {
return Wrappers.<SysUser>lambdaQuery()
.like(StringUtils.isNotBlank(queryDTO.getUserName()),
SysUser::getUserName, queryDTO.getUserName())
.eq(StringUtils.isNotBlank(queryDTO.getStatus()),
SysUser::getStatus, queryDTO.getStatus())
.between(queryDTO.getCreateTime() != null && queryDTO.getCreateTime().length == 2,
SysUser::getCreateTime,
queryDTO.getCreateTime()[0], queryDTO.getCreateTime()[1]);
}
}
```
## 6. 第三方集成指南
### 权限认证集成
- **Sa-Token 集成.md**:Sa-Token 权限框架集成
- **JWT 配置.md**:JWT 令牌配置和使用
- **第三方登录.md**:第三方登录集成指南
- **单点登录.md**:SSO 单点登录配置
### 消息服务集成
- **短信服务集成.md**:短信服务集成指南
- **邮件服务集成.md**:邮件服务集成指南
- **消息中间件.md**:消息队列集成指南
### 存储服务集成
- **文件存储集成.md**:MinIO 文件存储集成
- **云存储集成.md**:阿里云 OSS 等云存储集成
- **图片处理.md**:图片上传和处理
## 7. 测试开发指南
### 单元测试
- **单元测试编写.md**:单元测试编写指南
- **Mock 测试.md**:Mock 对象使用指南
- **测试用例设计.md**:测试用例设计原则
- **测试覆盖率.md**:测试覆盖率要求和检查
### 集成测试
- **集成测试编写.md**:集成测试编写指南
- **数据库测试.md**:数据库操作测试
- **API 测试.md**:API 接口测试
### 测试示例:
```java
@SpringBootTest
@Transactional
@Rollback
class UserServiceTest {
@Autowired
private IUserService userService;
@Test
@DisplayName("测试用户查询功能")
void testQueryUser() {
// Given
UserQueryDTO queryDTO = new UserQueryDTO();
queryDTO.setUserName("admin");
// When
PageResult<UserVO> result = userService.queryPageList(queryDTO);
// Then
assertThat(result).isNotNull();
assertThat(result.getRecords()).isNotEmpty();
}
}
```
## 8. 性能优化指南
### 代码优化
- **算法优化.md**:常见算法优化技巧
- **集合框架优化.md**:Java 集合使用优化
- **字符串优化.md**:字符串操作优化
- **反射优化.md**:反射操作优化
### 数据库优化
- **查询优化.md**:SQL 查询优化指南
- **索引优化.md**:数据库索引优化
- **连接池优化.md**:数据库连接池优化
- **分页优化.md**:大数据量分页优化
### 缓存优化
- **缓存设计.md**:缓存设计最佳实践
- **缓存穿透.md**:缓存穿透问题解决
- **缓存雪崩.md**:缓存雪崩问题解决
- **缓存击穿.md**:缓存击穿问题解决
## 9. 问题记录和解决方案
### 常见问题
- **启动问题.md**:应用启动常见问题
- **配置问题.md**:配置相关常见问题
- **数据库问题.md**:数据库连接和操作问题
- **缓存问题.md**:Redis 缓存相关问题
### 框架问题
- **Spring Boot 问题.md**:Spring Boot 框架问题
- **MyBatis Plus 问题.md**:MyBatis Plus 相关问题
- **Sa-Token 问题.md**:Sa-Token 权限框架问题
- **前端框架问题.md**:Vue3 相关问题
### 部署问题
- **Docker 问题.md**:Docker 部署相关问题
- **Nginx 问题.md**:Nginx 配置相关问题
- **SSL 证书问题.md**:SSL 证书配置问题
## 10. 版本升级指南
### 框架升级
- **Spring Boot 升级.md**:Spring Boot 版本升级指南
- **Java 版本升级.md**:Java 版本升级指南
- **依赖升级.md**:第三方依赖升级指南
### 数据库升级
- **MySQL 升级.md**:MySQL 版本升级指南
- **Redis 升级.md**:Redis 版本升级指南
- **数据迁移.md**:数据库结构迁移指南
### 兼容性处理
- **向后兼容.md**:向后兼容性处理
- **接口兼容.md**:API 接口兼容性处理
- **数据兼容.md**:数据格式兼容性处理
## 11. 开发工具和插件
### IDEA 插件推荐
```
必装插件:
- Lombok
- MyBatis Plus
- Alibaba Java规约检查
- SonarLint
- GitToolBox
- Rainbow Brackets
- Translation
可选插件:
- JRebel (热部署)
- Sequence Diagram (时序图)
- RestfulTool (接口测试)
- Database Navigator (数据库)
```
### 开发工具推荐
- **数据库工具**: Navicat Premium / DataGrip
- **Redis 工具**: RedisDesktopManager / AnotherRedisDesktopManager
- **API 工具**: Postman / Insomnia
- **Git 工具**: SourceTree / GitKraken
- **文档工具**: Typora / Mark Text
### 代码质量工具
- **静态分析**: SonarQube
- **代码格式**: Google Java Format
- **依赖检查**: OWASP Dependency Check
- **测试覆盖**: JaCoCo
## 12. 快速开始
### 项目初始化
```bash
# 1. 克隆项目
git clone https://gitee.com/dromara/RuoYi-Vue-Plus.git
# 2. 导入数据库
mysql -u root -p < script/sql/ry_vue_5.X.sql
# 3. 修改配置
# 编辑 ruoyi-admin/src/main/resources/application-dev.yml
# 修改数据库连接信息
# 4. 启动后端
cd ruoyi-admin
mvn spring-boot:run
# 5. 启动前端
cd plus-ui
npm install
npm run dev
```
### 新模块开发步骤
1. **需求分析**: 明确功能需求和技术要求
2. **数据库设计**: 设计表结构和关系
3. **代码生成**: 使用代码生成器生成基础代码
4. **业务开发**: 实现具体业务逻辑
5. **前端开发**: 开发前端页面和交互
6. **测试验证**: 编写测试用例并验证
7. **文档更新**: 更新相关文档
## 注意事项
1. 开发前必须阅读框架文档和开发规范
2. 新功能开发需要编写对应的测试用例
3. 代码提交前需要通过代码规范检查
4. 重要功能变更需要进行 Code Review
5. 及时更新开发文档和接口文档
6. 遵循安全编码规范,避免安全漏洞