.cursorrules 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346
  1. # RuoYi-Vue-Plus 开发规范
  2. ## 项目基本信息
  3. **项目名称**: RuoYi-Vue-Plus
  4. **版本**: 5.4.0
  5. **技术架构**: 基于Spring Boot 3.4.6 + Vue 3 + TypeScript 的多租户管理系统
  6. **原始仓库**: https://gitee.com/dromara/RuoYi-Vue-Plus
  7. **文档地址**: https://plus-doc.dromara.org
  8. ## 核心技术栈
  9. ### 后端技术栈
  10. - **框架**: Spring Boot 3.4.6
  11. - **Java版本**: JDK 17/21
  12. - **Web容器**: Undertow
  13. - **ORM框架**: MyBatis-Plus 3.5.12
  14. - **数据库**: MySQL/Oracle/PostgreSQL/SQLServer (多数据库支持)
  15. - **缓存**: Redis 5-7 + Redisson 3.45.1
  16. - **权限认证**: Sa-Token 1.42.0 + JWT
  17. - **连接池**: HikariCP
  18. - **序列化**: Jackson
  19. - **分布式锁**: Lock4j + Redisson
  20. - **任务调度**: SnailJob 1.5.0
  21. - **工作流**: Warm-Flow 1.7.3
  22. - **文件存储**: Minio/AWS S3协议
  23. - **短信**: sms4j 3.3.4
  24. - **监控**: Spring Boot Admin 3.4.7
  25. - **API文档**: SpringDoc + OpenAPI 3
  26. ### 前端技术栈
  27. - **框架**: Vue 3 + TypeScript
  28. - **UI组件**: Element Plus
  29. - **构建工具**: Vite
  30. - **代码风格**: ESLint + Prettier
  31. ## 项目结构规范
  32. ### 后端模块结构
  33. ```
  34. ruoyi-vue-plus/
  35. ├── ruoyi-admin/ # 管理后台启动模块
  36. ├── ruoyi-common/ # 公共模块组
  37. │ ├── ruoyi-common-core/ # 核心模块
  38. │ ├── ruoyi-common-mybatis/ # MyBatis配置
  39. │ ├── ruoyi-common-redis/ # Redis配置
  40. │ ├── ruoyi-common-satoken/ # Sa-Token配置
  41. │ ├── ruoyi-common-security/ # 安全配置
  42. │ ├── ruoyi-common-tenant/ # 多租户
  43. │ ├── ruoyi-common-web/ # Web配置
  44. │ ├── ruoyi-common-excel/ # Excel处理
  45. │ ├── ruoyi-common-oss/ # 对象存储
  46. │ ├── ruoyi-common-sms/ # 短信
  47. │ ├── ruoyi-common-mail/ # 邮件
  48. │ ├── ruoyi-common-log/ # 日志
  49. │ ├── ruoyi-common-encrypt/ # 加密
  50. │ ├── ruoyi-common-sensitive/ # 脱敏
  51. │ ├── ruoyi-common-translation/ # 翻译
  52. │ ├── ruoyi-common-idempotent/ # 幂等
  53. │ ├── ruoyi-common-ratelimiter/ # 限流
  54. │ ├── ruoyi-common-websocket/ # WebSocket
  55. │ ├── ruoyi-common-sse/ # SSE推送
  56. │ └── ruoyi-common-job/ # 任务调度
  57. ├── ruoyi-modules/ # 业务模块组
  58. │ ├── ruoyi-system/ # 系统管理模块
  59. │ ├── ruoyi-demo/ # 示例模块
  60. │ ├── ruoyi-generator/ # 代码生成模块
  61. │ ├── ruoyi-job/ # 任务调度模块
  62. │ └── ruoyi-workflow/ # 工作流模块
  63. ├── ruoyi-extend/ # 扩展模块组
  64. └── script/ # 脚本和SQL
  65. ```
  66. ## 开发规范
  67. ### 1. 代码规范
  68. - **严格遵守**: Alibaba Java开发手册
  69. - **命名规范**:
  70. - 类名: PascalCase (如: UserController)
  71. - 方法名: camelCase (如: getUserList)
  72. - 常量: UPPER_SNAKE_CASE (如: MAX_RETRY_COUNT)
  73. - 包名: 全小写 (如: org.dromara.system)
  74. - **注释规范**: 类和公共方法必须有完整的JavaDoc注释
  75. - **代码格式化**: 使用项目统一的代码格式化配置
  76. ### 2. 数据库规范
  77. - **现有数据库模型**: 参考 `docs/design/database/hzdyjs_xg.sql` 中的完整表结构
  78. - **环境配置**: 开发环境数据库信息见 `docs/design/database/database_msg.md`
  79. - **主键设计**: 使用雪花ID (ASSIGN_ID),不使用数据库自增
  80. - **字段命名**: 下划线命名法 (如: user_name, create_time)
  81. - **基础字段**: 所有业务表必须包含以下字段
  82. ```sql
  83. id BIGINT PRIMARY KEY,
  84. tenant_id VARCHAR(20), -- 租户ID (多租户)
  85. create_dept BIGINT, -- 创建部门
  86. create_by BIGINT, -- 创建人
  87. create_time DATETIME, -- 创建时间
  88. update_by BIGINT, -- 更新人
  89. update_time DATETIME, -- 更新时间
  90. deleted TINYINT DEFAULT 0 -- 逻辑删除标记
  91. ```
  92. - **业务表参考**: 现有业务表包括宿舍管理、工作流等,参考现有表结构规范
  93. - **索引规范**:
  94. - 租户字段必须建索引
  95. - 常用查询字段建复合索引
  96. - 外键字段建索引
  97. ### 3. API接口规范
  98. - **RESTful设计**: 遵循REST API设计原则
  99. - **统一响应格式**:
  100. ```json
  101. {
  102. "code": 200,
  103. "msg": "操作成功",
  104. "data": {}
  105. }
  106. ```
  107. - **权限控制**: 使用Sa-Token注解进行权限校验
  108. ```java
  109. @SaCheckPermission("system:user:list")
  110. ```
  111. - **参数校验**: 使用Validation注解进行参数校验
  112. - **API文档**: 使用SpringDoc自动生成,基于JavaDoc注释
  113. ### 4. 业务层规范
  114. - **Service接口**: 业务逻辑抽象为Service接口
  115. - **Service实现**: 实现类以Impl结尾
  116. - **DTO/VO分离**:
  117. - DTO: 数据传输对象
  118. - VO: 视图对象
  119. - Bo: 业务对象
  120. - **对象转换**: 使用MapStruct-Plus进行对象转换
  121. - **事务管理**: 使用@Transactional注解,支持多数据源事务
  122. ### 5. 数据层规范
  123. - **Mapper接口**: 继承BaseMapper<Entity>
  124. - **实体类规范**:
  125. ```java
  126. @Data
  127. @EqualsAndHashCode(callSuper = true)
  128. @TableName("sys_user")
  129. public class SysUser extends BaseEntity {
  130. @TableId(value = "user_id", type = IdType.ASSIGN_ID)
  131. private Long userId;
  132. // 其他字段...
  133. }
  134. ```
  135. - **分页查询**: 使用PageQuery基类
  136. - **数据权限**: 使用@DataPermission注解
  137. ## 关键配置规范
  138. ### 1. 多租户配置
  139. - **启用多租户**: `tenant.enable: true`
  140. - **排除表配置**: 系统表需要在`tenant.excludes`中配置
  141. - **租户字段**: 业务表必须包含tenant_id字段
  142. ### 2. 数据库配置
  143. - **动态数据源**: 使用dynamic-datasource
  144. - **主库配置**: 数据源名称为master
  145. - **数据库密码**: 生产环境必须加密存储
  146. - **连接池**: 使用HikariCP,合理配置连接数
  147. ### 3. Redis配置
  148. - **单机配置**: 开发环境使用单机Redis
  149. - **集群配置**: 生产环境建议使用集群
  150. - **key前缀**: 使用`redisson.keyPrefix`设置统一前缀
  151. - **密码配置**: Redis必须设置密码
  152. ### 4. 安全配置
  153. - **JWT密钥**: 必须修改默认密钥
  154. - **接口加密**: 生产环境开启API加解密
  155. - **权限排除**: 静态资源和公开接口在`security.excludes`配置
  156. ## 文档管理规范
  157. ### 1. 需求文档 (docs/requirements/)
  158. - **需求说明**: 详细的功能需求描述
  159. - **原型设计**: UI原型和交互设计
  160. - **业务流程**: 业务流程图和规则
  161. ### 2. 设计文档 (docs/design/)
  162. - **系统设计**: 系统架构和模块设计
  163. - **数据库设计**: ER图、表结构和字段说明
  164. - **完整数据库模型**: `docs/design/database/hzdyjs_xg.sql`
  165. - **环境配置信息**: `docs/design/database/database_msg.md`
  166. - **设计文档管理**: `docs/design/database/README.md`
  167. - **接口设计**: API接口设计和数据格式
  168. ### 3. 开发文档 (docs/development/)
  169. - **开发指南**: 开发环境搭建和规范
  170. - **代码样例**: 标准代码示例
  171. - **问题记录**: 开发过程中的问题和解决方案
  172. ### 4. 测试文档 (docs/testing/)
  173. - **测试计划**: 测试策略和计划
  174. - **测试用例**: 详细测试用例
  175. - **测试报告**: 测试结果和问题报告
  176. ### 5. 部署文档 (docs/deployment/)
  177. - **环境配置**: 各环境配置说明
  178. - **部署脚本**: 自动化部署脚本
  179. - **运维手册**: 运维操作手册
  180. ### 6. 中间件配置 (docs/middleware/)
  181. - **MySQL配置**: 数据库配置和优化
  182. - **Redis配置**: 缓存配置和集群方案
  183. - **Nginx配置**: 反向代理和负载均衡
  184. - **监控配置**: 监控组件配置
  185. ## 代码变更规则
  186. ### 1. 强制更新规则
  187. 每次代码调整必须同步更新以下文档:
  188. - **API文档**: 接口变更时更新OpenAPI文档
  189. - **数据库文档**: 表结构变更时更新DDL和文档
  190. - 必须同步更新 `docs/design/database/hzdyjs_xg.sql`
  191. - 必须同步更新 `docs/design/database/README.md` 中的表结构说明
  192. - 环境配置变更需更新 `docs/design/database/database_msg.md`
  193. - **配置文档**: 配置项变更时更新配置说明
  194. - **部署文档**: 部署流程变更时更新部署手册
  195. ### 2. 版本管理
  196. - **文档版本**: 与代码版本保持同步
  197. - **变更记录**: 记录每次变更的内容和原因
  198. - **向后兼容**: 接口变更需要考虑向后兼容性
  199. ### 3. 质量检查
  200. - **代码审查**: 所有代码变更需要经过Code Review
  201. - **文档审查**: 文档变更需要技术负责人审查
  202. - **测试验证**: 功能变更需要对应的测试用例
  203. ## 性能优化规范
  204. ### 1. 数据库优化
  205. - **SQL优化**: 避免N+1查询,合理使用批量操作
  206. - **索引优化**: 根据查询模式建立合适索引
  207. - **分页优化**: 大数据量查询使用流式分页
  208. ### 2. 缓存策略
  209. - **Redis缓存**: 热点数据使用Redis缓存
  210. - **本地缓存**: 字典数据使用本地缓存
  211. - **缓存过期**: 合理设置缓存过期时间
  212. ### 3. 代码优化
  213. - **异步处理**: 耗时操作使用异步执行
  214. - **连接池**: 合理配置各种连接池参数
  215. - **JVM优化**: 生产环境JVM参数调优
  216. ## 安全规范
  217. ### 1. 数据安全
  218. - **敏感数据**: 使用数据脱敏和加密
  219. - **SQL注入**: 使用参数化查询
  220. - **XSS防护**: 启用XSS过滤器
  221. ### 2. 接口安全
  222. - **认证授权**: 所有接口需要认证和授权
  223. - **参数校验**: 严格的参数校验和格式检查
  224. - **接口加密**: 敏感接口启用加解密
  225. ### 3. 系统安全
  226. - **日志安全**: 不在日志中输出敏感信息
  227. - **配置安全**: 密码等敏感配置加密存储
  228. - **网络安全**: 使用HTTPS协议
  229. ## 开发工具推荐
  230. ### 1. IDE配置
  231. - **IDEA**: 推荐使用IntelliJ IDEA
  232. - **插件**: Lombok、MyBatis-Plus、Alibaba规约检查
  233. - **代码模板**: 使用统一的代码模板
  234. ### 2. 调试工具
  235. - **数据库**: Navicat/DataGrip
  236. - **Redis**: RedisDesktopManager
  237. - **API测试**: Postman/Swagger UI
  238. - **日志查看**: 使用SpringBoot Admin
  239. ### 3. 代码质量
  240. - **静态检查**: SonarQube
  241. - **代码格式**: Google Java Format
  242. - **依赖检查**: OWASP Dependency Check
  243. ## 快速开始模板
  244. ### 1. 新建业务模块步骤
  245. 1. 在ruoyi-modules下创建新模块
  246. 2. 配置pom.xml依赖
  247. 3. 创建标准目录结构: controller/service/mapper/domain
  248. 4. 编写业务代码,遵循上述规范
  249. 5. 添加单元测试
  250. 6. 更新相关文档
  251. ### 2. 标准Controller模板
  252. ```java
  253. @RestController
  254. @RequestMapping("/system/user")
  255. @Api(tags = "用户管理")
  256. public class SysUserController extends BaseController {
  257. @Autowired
  258. private ISysUserService userService;
  259. @SaCheckPermission("system:user:list")
  260. @GetMapping("/list")
  261. @Operation(summary = "查询用户列表")
  262. public TableDataInfo<SysUserVo> list(SysUserBo user, PageQuery pageQuery) {
  263. return userService.queryPageList(user, pageQuery);
  264. }
  265. }
  266. ```
  267. ### 3. 标准Service模板
  268. ```java
  269. @Service
  270. public class SysUserServiceImpl implements ISysUserService {
  271. @Autowired
  272. private SysUserMapper userMapper;
  273. @Override
  274. public TableDataInfo<SysUserVo> queryPageList(SysUserBo bo, PageQuery pageQuery) {
  275. LambdaQueryWrapper<SysUser> lqw = buildQueryWrapper(bo);
  276. Page<SysUserVo> result = userMapper.selectVoPage(pageQuery.build(), lqw);
  277. return TableDataInfo.build(result);
  278. }
  279. }
  280. ```
  281. ## 注意事项
  282. 1. **严格遵循框架规范**: 不要随意修改框架核心配置
  283. 2. **安全第一**: 所有对外接口必须进行权限校验
  284. 3. **性能考虑**: 大数据量操作需要考虑性能影响
  285. 4. **文档同步**: 代码变更必须同步更新文档
  286. 5. **测试验证**: 功能开发完成后必须进行充分测试
  287. 6. **向后兼容**: 接口变更需要考虑对现有功能的影响
  288. ## 参考资源
  289. - **官方文档**: https://plus-doc.dromara.org
  290. - **源码仓库**: https://gitee.com/dromara/RuoYi-Vue-Plus
  291. - **问题反馈**: https://gitee.com/dromara/RuoYi-Vue-Plus/issues
  292. - **技术交流**: 查看官方文档获取交流群信息
  293. - **本地文档**: 查看docs/目录下的详细文档