Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
J
jljz
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Members
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
xiaowei
jljz
Commits
3b46fab7
Commit
3b46fab7
authored
Jul 24, 2026
by
xiaowei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加了规则文件
parent
ec7a0a31
隐藏空白字符变更
内嵌
并排
正在显示
31 个修改的文件
包含
1651 行增加
和
2 行删除
+1651
-2
05-dev-env/code/platform/.cursor/rules/00_global_ai_checklist.mdc
+61
-0
05-dev-env/code/platform/.cursor/rules/00_global_dm8_database.mdc
+52
-0
05-dev-env/code/platform/.cursor/rules/00_global_fullstack_collaboration.mdc
+52
-0
05-dev-env/code/platform/.cursor/rules/01_java_coding_standards.mdc
+53
-0
05-dev-env/code/platform/.cursor/rules/01_java_convert.mdc
+49
-0
05-dev-env/code/platform/.cursor/rules/01_java_dict_enum_sync.mdc
+60
-0
05-dev-env/code/platform/.cursor/rules/01_java_do_vo_dm8.mdc
+61
-0
05-dev-env/code/platform/.cursor/rules/01_java_error_code.mdc
+47
-0
05-dev-env/code/platform/.cursor/rules/01_java_idempotent.mdc
+39
-0
05-dev-env/code/platform/.cursor/rules/01_java_mapper_dm8.mdc
+52
-0
05-dev-env/code/platform/.cursor/rules/01_java_naming.mdc
+69
-0
05-dev-env/code/platform/.cursor/rules/01_java_operate_log.mdc
+42
-0
05-dev-env/code/platform/.cursor/rules/01_java_ruoyi_cloud_architecture.mdc
+79
-0
05-dev-env/code/platform/.cursor/rules/01_java_service_controller.mdc
+63
-0
05-dev-env/code/platform/.cursor/rules/03_vue_ruoyi_admin.mdc
+45
-0
05-dev-env/code/platform/.trae/rules/00_global_ai_checklist.md
+61
-0
05-dev-env/code/platform/.trae/rules/00_global_dm8_database.md
+52
-0
05-dev-env/code/platform/.trae/rules/00_global_fullstack_collaboration.md
+52
-0
05-dev-env/code/platform/.trae/rules/01_java_coding_standards.md
+53
-0
05-dev-env/code/platform/.trae/rules/01_java_convert.md
+49
-0
05-dev-env/code/platform/.trae/rules/01_java_dict_enum_sync.md
+60
-0
05-dev-env/code/platform/.trae/rules/01_java_do_vo_dm8.md
+61
-0
05-dev-env/code/platform/.trae/rules/01_java_error_code.md
+47
-0
05-dev-env/code/platform/.trae/rules/01_java_idempotent.md
+39
-0
05-dev-env/code/platform/.trae/rules/01_java_mapper_dm8.md
+52
-0
05-dev-env/code/platform/.trae/rules/01_java_naming.md
+69
-0
05-dev-env/code/platform/.trae/rules/01_java_operate_log.md
+42
-0
05-dev-env/code/platform/.trae/rules/01_java_ruoyi_cloud_architecture.md
+79
-0
05-dev-env/code/platform/.trae/rules/01_java_service_controller.md
+63
-0
05-dev-env/code/platform/.trae/rules/03_vue_ruoyi_admin.md
+45
-0
05-dev-env/code/platform/ruoyi-modules/pom.xml
+3
-2
没有找到文件。
05-dev-env/code/platform/.cursor/rules/00_global_ai_checklist.mdc
0 → 100644
View file @
3b46fab7
---
description: 全项目代码通用强制自检清单,所有Java、Vue、UniApp、SQL文件全局生效
globs: ["**/*.java","**/*.vue","**/*.ts","**/*.sql","**/*.xml","**/*.vue"]
alwaysApply: true
---
# 冲突优先级声明
若本规则与其他专项规则冲突,专项业务规则优先级高于本文件;达梦数据库、Java编码禁令、信创约束拥有最高不可覆盖优先级。
# 通用代码强制自检清单(若依微服务+达梦8+信创,无会议/BPM)
## 一、Java 通用红线
1. 依赖注入统一 @Resource,禁止 @Autowired;
2. 禁止连环set赋值,DO/VO全部使用@Builder链式构建;
3. 禁止手写getter/setter,统一Lombok @Data;
4. 非空判断统一Hutool工具类(StrUtil/CollUtil),禁止裸判空;
5. 禁止魔法数字/字符串,统一枚举、常量类;
6. 多层if嵌套改用卫语句,禁止深度嵌套;
7. 循环内禁止调用Mapper,统一批量操作;
8. 时间统一 LocalDateTime,禁止 Date/Timestamp;
9. 所有业务异常统一 ServiceExceptionUtil,禁止直接new RuntimeException;
10. Service查询无数据必须抛异常,禁止return null;
11. Controller禁止try-catch,使用若依全局异常处理器;
12. Controller禁止直接注入Mapper,仅允许注入Service;
13. 微服务跨模块调用仅允许Feign DTO远程调用,禁止直接依赖对方server模块;
14. 所有新增表/字段必须适配达梦8语法,禁止MySQL专属函数;
15. 项目无BPM流程、会议预约相关业务,禁止新增Flowable依赖、审批监听、流程表单代码。
## 二、SQL & 达梦8 强制红线
1. 主键统一String雪花ID,达梦8禁止自增ID,不使用序列作为业务主键;
2. 时间字段使用达梦 TIMESTAMP,禁止 TIMESTAMPTZ;
3. 分页使用达梦分页语法,禁止MySQL LIMIT/OFFSET逗号写法;
4. 表名、字段名全部小写蛇形,规避达梦关键字;
5. 必须包含租户、软删除、创建人、创建时间等框架字段;
6. 字典初始化SQL适配达梦insert语法,兼容信创达梦驱动;
7. 禁止使用MySQL专属函数:IFNULL、DATE_FORMAT等,替换达梦对应函数;
8. 不创建会议、审批流程相关数据表、索引、初始化数据。
## 三、前端双端通用红线(管理后台Vue3 + UniApp APP)
1. ID统一string类型,禁止number,避免雪花ID精度丢失;
2. 表单基础校验使用el-form/uni-form内置提示,业务逻辑弹窗提示;
3. 禁止页面硬编码魔法状态、文本,统一枚举/字典翻译;
4. API请求统一封装若依axios请求,禁止原生fetch/axios裸调用;
5. 所有删除、批量操作增加二次确认弹窗;
6. APP端适配国产安卓系统,避免闭源第三方SDK;
7. 页面类型区分:管理后台页面、APP表单页面,规范目录拆分;
8. 不开发流程审批、会议预约类页面、弹窗、表单组件。
## 四、信创强制约束(全代码通用)
1. 第三方依赖优先选用国产化开源包,剔除国外闭源组件;
2. SQL脚本、配置文件兼容国产服务器(鲲鹏、飞腾CPU);
3. JDK统一使用国产龙芯/鲲鹏适配OpenJDK,禁止Oracle JDK;
4. 中间件使用国产东方通、金蝶,不使用Tomcat商业版、WebLogic;
5. 打包产物支持信创容器镜像,无海外镜像依赖;
6. 所有功能无依赖境外API、境外存储服务。
## 五、微服务通用约束
1. 多模块拆分遵循若依微服务标准:gateway、system、business、api;
2. 远程调用统一Feign接口,DTO隔离,server模块不互相依赖;
3. 配置全部存入Nacos,禁止本地yml硬编码环境配置;
4. 接口路径统一 /api/{模块}/{功能},网关统一路由转发;
5. 权限标识遵循 模块:业务:操作 格式,适配若依Sa-Token鉴权;
6. 分布式防重复提交使用Redis幂等注解,适配微服务多实例。
05-dev-env/code/platform/.cursor/rules/00_global_dm8_database.mdc
0 → 100644
View file @
3b46fab7
---
description: 达梦8 DM8数据库全局强制规范,信创数据库最高优先级规则
globs: ["**/*.sql","**/*DO.java","**/*Mapper.xml"]
alwaysApply: true
---
# 达梦8(DM8)数据库规范 信创适配
## 一、达梦 8 字段类型强制约束
1. 雪花 ID 主键:Java String,达梦 `VARCHAR(20)`;**禁止 BIGINT 自增、禁止序列做主键**;
2. 状态、枚举值:Java Integer,达梦 `INT`;
3. 短文本名称:`VARCHAR(100)`,长描述 `VARCHAR(500)`;
4. 时间统一 `TIMESTAMP`;**禁止 TIMESTAMPTZ、DATE 单独存储时分秒**;
5. 布尔值使用 `BIT`,0/1;
6. JSON 数组、复杂集合存储使用 `TEXT`,配合 MyBatis-Plus JacksonTypeHandler;
7. 不使用达梦大字段 CLOB/BLOB,业务文本统一 VARCHAR/TEXT。
## 二、DDL 脚本达梦专属规范
1. 表名、字段名全部小写蛇形命名,规避达梦系统关键字;
2. 注释使用 `COMMENT ON TABLE` / `COMMENT ON COLUMN` 达梦标准语法;
3. 新增字段使用 `ALTER TABLE 表名 ADD COLUMN xxx 类型 约束 COMMENT '注释'`;
4. 建表语句包裹 `BEGIN;` 和 `COMMIT;`,事务执行;
5. 索引创建语法:`CREATE INDEX idx_xxx ON table_name(col);`;唯一索引 `CREATE UNIQUE INDEX`;
6. 达梦分页语法:`OFFSET x LIMIT y`,禁止 MySQL LIMIT 0,10 逗号写法;
7. 达梦函数替换 MySQL 函数:
- IFNULL → NVL
- DATE_FORMAT → TO_CHAR
- NOW() → SYSDATE
- SUBSTRING → SUBSTR
## 三、MyBatis-Plus 适配达梦 8
1. Mapper 继承 `BaseMapperX`(项目封装适配达梦),禁止原生 BaseMapper;
2. 分页使用 `LambdaQueryWrapperX` 空值安全条件,达梦分页自动适配;
3. 禁止 MySQL 专属 XML SQL,所有原生 SQL 必须兼容达梦;
4. 主键注解统一 `@TableId(type = IdType.ASSIGN_ID)`,达梦全局关闭自增;
5. 软删除使用 MyBatis-Plus 逻辑删除,达梦 BIT 字段自动适配。
## 四、达梦 8 信创部署约束
1. 驱动包使用达梦官方国产化驱动 DmJdbcDriver,不使用兼容 MySQL 驱动;
2. 数据库字符集统一 GB18030,适配信创中文存储;
3. 排序规则统一达梦中文排序,避免中文查询乱序;
4. 生产环境达梦 8 部署在鲲鹏 / 飞腾国产服务器,禁止 x86 海外服务器;
5. 数据库备份脚本适配达梦 dexp/dimp 工具,不使用 mysqldump;
6. 账号权限最小化,业务账号仅拥有 DML 权限,DDL 仅 DBA 可执行,满足等保信创要求。
## 五、数据库开发禁止事项
❌ 禁止使用自增主键、序列作为业务主键;
❌ 禁止 MySQL 专属函数、分页语法;
❌ 禁止字段名、表名使用达梦保留关键字不加转义;
❌ 禁止存储过程、触发器承载大量业务逻辑,业务全部下沉 Java 服务层;
❌ 禁止 TEXT/CLOB 存储超长业务文本,拆分字段;
❌ 禁止手动更新 deleted 软删除字段,使用框架内置逻辑删除方法;
❌ 禁止达梦数据库存储境外加密、境外第三方数据;
❌ 禁止创建会议、审批流程相关数据表、存储过程、触发器。
05-dev-env/code/platform/.cursor/rules/00_global_fullstack_collaboration.mdc
0 → 100644
View file @
3b46fab7
---
description: 若依微服务前后端协作规范(Vue管理后台 + UniApp APP双端,无会议/BPM)
globs: ["**/*.java","**/*.vue","**/*.ts","**/*.sql","**/*.js"]
alwaysApply: true
---
# 冲突优先级声明
达梦数据库、Java编码、信创部署规则优先级高于本文件;若依微服务专项架构规则冲突时以专项文件为准。
# 若依微服务全栈协作规范
## 一、前后端字段映射标准(统一适配达梦8)
### TS类型 → Java类型 → 达梦8字段映射
| 前端TS类型 | Java实体类型 | 达梦8列类型 | 说明 |
| ---- | ---- | ---- | ---- |
| string(雪花ID) | String | VARCHAR(20) | 主键,防止精度丢失 |
| number(状态枚举) | Integer | INT | 业务状态、字典值 |
| string(名称文本) | String | VARCHAR(100) | 名称、标题 |
| string(长描述) | String | VARCHAR(500) | 备注、描述 |
| string(ISO时间) | LocalDateTime | TIMESTAMP | 统一时间类型 |
| boolean | Boolean | BIT | 布尔标识 |
| string[] | List<String> | TEXT | JSON数组存储,JacksonTypeHandler |
## 二、前端页面推导后端代码流程
1. 管理后台Vue页面、UniApp APP页面,先提取全部表单字段、列表查询条件、接口请求;
2. 区分双端接口隔离:管理后台接口、APP移动端独立接口,禁止复用同一套Controller;
3. 后端分层严格遵循:SQL DDL(达梦语法)→ DO → Mapper → VO → Controller → Service;
4. 跨模块查询使用Feign远程调用,不直接操作其他业务Mapper;
5. 字典、枚举前后端同步,后端存数字code,前端通过若依字典组件自动翻译中文;
6. 分页统一PageResult返回,前端PageReqVO继承若依PageParam。
## 三、微服务接口路径规范
1. 管理后台接口前缀:`/api/admin/{module}/{business}`
2. APP移动端接口前缀:`/api/app/{module}/{business}`
3. 公共基础模块接口:`/api/common/{function}`
4. CRUD固定后缀:/create /update /delete /get /page /export-excel
## 四、双端代码产出区分
1. Vue管理后台:基于Element Plus,SqSearchTableFrame标准列表框架;
2. UniApp APP端:uni-form、uni-data-select、uni-list等原生组件,适配移动端触控;
3. 公共类型统一抽离api/types.ts,后台与APP类型文件隔离,不共用;
4. APP端不展示复杂后台管理字段(租户ID、创建人、操作日志等)。
## 五、数据库字段对齐强制要求
1. DO驼峰字段 ↔ 达梦表下划线字段完全一一对应;
2. SaveReqVO覆盖前端所有可编辑字段,不含框架内置字段;
3. RespVO增加富化展示字段(关联名称、字典中文),DO不存储;
4. 新增字段必须同步:达梦ALTER脚本、DO实体、前后端VO类型。
## 六、信创前后端适配要求
1. 前端打包产物无海外CDN资源,静态资源本地化;
2. UniApp打包支持国产安卓系统、国产芯片设备;
3. 前端加密、工具类使用国产加密算法(SM2/SM3/SM4),禁用RSA国际算法;
4. 接口日志脱敏手机号、身份证等敏感信息,满足信创等保规范。
05-dev-env/code/platform/.cursor/rules/01_java_coding_standards.mdc
0 → 100644
View file @
3b46fab7
---
description: Java编码八大强制红线禁令(最高优先级Java规则,达梦、信创规则除外,无BPM/会议)
globs: ["**/*.java"]
alwaysApply: false
---
# 冲突优先级声明
本文件为Java代码最高强制约束,仅达梦数据库、信创部署规则优先级高于本文件,其余所有Java相关规则冲突时以本文件为准。
# Java编码强制八大禁令(若依微服务+达梦8+信创)
## 禁令1:禁止连环set硬赋值,统一@Builder链式构建
❌ 错误:new DO() 后逐行setXxx
✅ 正确:DO实体添加@Builder、@NoArgsConstructor、@AllArgsConstructor,使用DO.builder().field(val).build()
## 禁令2:禁止手写getter/setter,统一Lombok @Data
❌ 手动编写get/set方法
✅ 所有DO、VO、DTO统一使用@Data,配合@EqualsAndHashCode(callSuper = true)
## 禁令3:依赖注入统一@Resource,完全禁止@Autowired
❌ 混用@Autowired和@Resource
✅ Controller、ServiceImpl中所有Mapper、Service、Feign接口全部使用@Resource注入
## 禁令4:非空判断禁止裸判断,统一Hutool工具类
❌ if(str != null && !str.equals("")) / if(list != null && list.size()>0)
✅ 字符串:StrUtil.isNotBlank();集合:CollUtil.isNotEmpty();对象:ObjectUtil.isNotNull()
## 禁令5:禁止魔法数字、魔法字符串,统一枚举/常量类
❌ 直接写if(status == 0)、return "goods_offline"
✅ 业务状态定义枚举,固定文本、阈值写入XXXConstants常量类
## 禁令6:禁止多层if-else嵌套,卫语句优先,复杂状态使用策略模式
❌ 超过2层if嵌套
✅ 所有边界、校验条件前置,提前return/抛异常,消除else分支;状态机多分支采用策略模式
## 禁令7:循环内部禁止调用Mapper单条操作,统一批量方法
❌ for循环中mapper.insert() / mapper.deleteById()
✅ 批量插入insertBatch、批量删除deleteBatchIds、条件批量更新wrapper更新,单次DB交互
## 禁令8:时间类型统一LocalDateTime,完全禁止Date、Timestamp
❌ java.util.Date、java.sql.Timestamp
✅ DO、VO、DTO时间字段全部使用LocalDateTime,达梦8 TIMESTAMP字段对应
# 补充强制编码约束
1. 业务异常统一 ServiceExceptionUtil.exception(ErrorCode),禁止直接new RuntimeException、IllegalArgumentException;
2. Service查询无数据必须抛不存在异常,禁止return null区分不存在;
3. Controller禁止编写try-catch捕获业务异常,使用若依全局异常处理器;
4. Controller禁止直接注入Mapper,仅允许注入对应Service;
5. 跨模块调用仅允许注入Feign API接口,禁止依赖对方ServiceImpl;
6. 所有类、Service接口方法、DO字段必须添加中文Javadoc注释;
7. 错误提示文案使用业务操作人员易懂中文,禁止技术术语、数据库字段名、英文编码;
8. 新增/修改/删除/导出接口必须添加@ApiAccessLog操作日志注解;
9. 创建、状态变更接口必须添加@Idempotent幂等注解防重复提交;
10. 所有DO主键统一String雪花ID,@TableId(type = IdType.ASSIGN_ID),适配达梦8;
11. 禁止引入Flowable、BPM流程审批相关类、注解、依赖。
05-dev-env/code/platform/.cursor/rules/01_java_convert.mdc
0 → 100644
View file @
3b46fab7
---
description: 对象转换Convert类规范,DO/VO/DTO分层隔离转换
globs: ["**/*Convert.java"]
alwaysApply: false
---
# 冲突优先级声明
Java编码规范、达梦实体规则优先级高于本文件。
# 对象转换Convert类开发规范
## 一、基础规范
1. 存放路径:convert包下,命名 XxxConvert;
2. 类添加 @Mapper(componentModel = "spring") 注解,使用MapStruct自动生成转换实现;
3. 所有转换方法为静态/实例抽象方法,禁止手动编写set赋值转换逻辑;
4. 转换类只做对象属性拷贝,不编写业务计算、数据查询逻辑。
## 二、标准转换方法定义
### 1. DO ↔ RespVO
RespVO toRespVO(DO entity);
List<RespVO> toRespVOList(List<DO> list);
### 2. SaveReqVO → DO
DO toDO(SaveReqVO reqVO);
### 3. DO ↔ Feign DTO(跨服务传输)
DTO toDTO(DO entity);
DO toDO(DTO dto);
List<DTO> toDTOList(List<DO> list);
## 三、特殊字段转换处理规则
1. 字典翻译、关联名称等富化字段:转换基础拷贝后,在Service层单独赋值,Convert不处理;
2. 时间字段 LocalDateTime 自动映射,无需额外转换配置;
3. 雪花ID String类型自动映射,无精度丢失问题;
4. 枚举字段:统一存储Integer编码,转换时直接拷贝数字,中文翻译在VO层处理;
5. 集合List<String> JSON字段:MyBatis类型处理器处理,转换层直接拷贝。
## 四、MapStruct 注解配置规范
1. 字段名称完全一致时,无需额外@Mapping;
2. 字段名称不一致时,添加映射注解:
@Mapping(source = "userId", target = "uid")
3. 忽略不需要拷贝的字段:
@Mapping(target = "richName", ignore = true)
4. 禁止使用复杂表达式在@Mapping中,复杂逻辑交给Service处理。
## 五、Convert通用禁止项
❌ 禁止手动new对象+连环set做转换,必须MapStruct自动生成;
❌ 禁止在转换方法中调用Mapper、Feign、Service查询数据;
❌ 禁止转换类添加业务工具方法、常量;
❌ 禁止跨模块直接转换VO与DO,跨服务只能通过DTO中转;
❌ 禁止转换方法返回null,空集合统一返回空列表Collections.emptyList()。
05-dev-env/code/platform/.cursor/rules/01_java_dict_enum_sync.mdc
0 → 100644
View file @
3b46fab7
---
description: 业务枚举、数据字典前后端同步规范,适配若依字典+达梦初始化SQL
globs: ["**/*Enum.java","**/*.sql"]
alwaysApply: false
---
# 冲突优先级声明
达梦数据库规范、Java编码规范优先级高于本文件。
# 枚举 & 数据字典同步开发规范
## 一、业务枚举开发规范
1. 存放路径:enums包,命名 XxxEnum;
2. 枚举固定结构:code(Integer编码)、desc(中文描述);
3. 基础方法:getCode()、getDesc(),提供静态工具方法根据code获取枚举;
4. 所有业务状态、类型、标识全部使用枚举,禁止硬编码魔法数字;
5. 枚举添加中文类注释、每个实例添加单行注释说明业务含义;
6. 禁止枚举中编写数据库查询、远程调用、复杂业务逻辑。
示例标准枚举:
public enum GoodsStatusEnum {
UP(1, "上架"),
DOWN(2, "下架");
private final Integer code;
private final String desc;
GoodsStatusEnum(Integer code, String desc) {
this.code = code;
this.desc = desc;
}
// getter、根据code查询工具方法
}
## 二、若依数据字典规范
1. 系统字典复用内置两张表:sys_dict_type(字典类型)、sys_dict_data(字典项);
2. 字典类型编码规则:`business_xxx`,区分系统字典与业务字典;
3. 达梦初始化SQL规范:
1. 先判断字典类型不存在再插入;
2. 批量插入字典项,适配达梦INSERT多行语法;
3. 所有字符串值使用单引号,注释符合达梦语法;
4. 前后端同步规则:
- 后端存储数字code;
- 管理后台Vue使用 <dict-tag /> 组件自动翻译中文;
- UniApp APP端封装全局字典翻译工具,根据code展示中文;
5. 区分使用场景:
- 固定不变、全项目通用状态:优先使用Java枚举;
- 支持后台动态新增修改的分类、标签:使用数据库数据字典。
## 三、枚举与字典同步约束
1. 若业务同时使用枚举+字典,必须保证code编码完全一致,避免前后端翻译错乱;
2. 新增业务状态时,同步更新枚举类、字典初始化SQL、前端字典选项;
3. 禁止枚举code与字典项value不一致,统一Integer数字编码;
4. 生产环境字典初始化脚本仅执行新增,不修改已有字典项,避免线上数据变更风险。
## 四、禁止事项
❌ 禁止业务状态硬编码数字,必须枚举/字典;
❌ 禁止字典初始化SQL使用MySQL专属语法,严格适配达梦;
❌ 禁止枚举存储字符串编码,统一Integer;
❌ 禁止前端硬编码状态文本,全部依赖枚举/字典翻译;
❌ 禁止动态可变业务分类使用Java枚举,必须数据库字典。
05-dev-env/code/platform/.cursor/rules/01_java_do_vo_dm8.mdc
0 → 100644
View file @
3b46fab7
---
description: DO/ReqVO/RespVO/DTO实体规范,适配达梦8雪花ID、字段类型映射
globs: ["**/*DO.java","**/*VO.java","**/*DTO.java"]
alwaysApply: false
---
# 冲突优先级声明
达梦数据库全局规则、Java编码禁令优先级高于本文件。
# DO、VO、DTO 实体开发规范(达梦8适配)
## 一、DO 数据库实体规范
1. 存放路径:domain/dataobject,命名 Xxx;
2. 基础注解:
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName("xxx")
3. 主键字段统一:
@TableId(type = IdType.ASSIGN_ID)
private String id;
4. 必须包含框架通用字段:creator、createTime、updater、updateTime、deleted;
5. 字段类型严格遵循达梦8映射规则,时间统一LocalDateTime,布尔使用Boolean;
6. 复杂数组/集合字段添加类型处理器注解:
@TableField(typeHandler = JacksonTypeHandler.class)
private List<String> tagList;
7. 禁止在DO中添加业务计算字段、字典翻译字段,翻译逻辑统一在RespVO处理;
8. 所有字段添加中文注释,说明业务含义。
## 二、ReqVO 请求VO规范
### 1. SaveReqVO(新增/编辑共用)
1. 命名:XxxSaveReqVO;
2. 仅包含前端可编辑业务字段,**不包含id、租户、创建人、创建时间、软删除**等框架字段;
3. 字段校验注解统一使用Hibernate Validator:@NotBlank、@NotNull、@Size、@Min、@Max;
4. 时间字段统一LocalDateTime;ID、编码类文本统一String;
### 2. PageReqVO(分页查询)
1. 命名:XxxPageReqVO,继承若依框架 PageParam;
2. 仅包含分页参数、业务模糊查询、状态筛选条件;
3. 禁止分页VO携带大文本、复杂数组参数;
4. 所有查询条件允许为空,不强制@NotNull。
## 三、RespVO 返回VO规范
1. 命名:XxxRespVO;
2. 包含DO全部基础字段,额外增加富化展示字段(如分类名称、字典中文名称、关联业务名称);
3. 富化字段仅用于前端展示,不参与新增/编辑保存;
4. 时间统一LocalDateTime,序列化输出标准ISO格式;
5. 字典状态字段同时返回数字编码和中文翻译,方便前端展示。
## 四、Feign DTO 传输对象规范
1. 命名:XxxDTO,存放于ruoyi-business-api模块;
2. DTO仅存储跨服务传输必要字段,精简冗余字段;
3. 禁止将DO、VO直接作为Feign接口入参/返回值;
4. DTO不添加数据库相关注解(@TableName、@TableId等);
5. 基础注解仅保留@Data、@Builder,按需构造无参/全参构造。
## 五、实体通用禁止项
❌ 禁止DO直接返回前端,必须通过RespVO转换;
❌ 禁止SaveReqVO携带主键ID做新增操作;
❌ 禁止DTO中使用LocalDate、Date,统一LocalDateTime;
❌ 禁止实体字段使用基本类型(int、long、boolean),统一包装类型(Integer、Long、Boolean);
❌ 禁止在VO/DTO中编写业务逻辑方法,实体仅做数据载体。
05-dev-env/code/platform/.cursor/rules/01_java_error_code.mdc
0 → 100644
View file @
3b46fab7
---
description: 全局错误码分段管理规范,微服务多模块隔离
globs: ["**/ErrorCodeConstants.java"]
alwaysApply: false
---
# 冲突优先级声明
Java编码规范优先级高于本文件。
# 全局错误码常量规范
## 一、错误码分段规则(无BPM分段)
采用三段式数字编码:`模块段_子模块_序号`
1. system系统模块:1_001_001 ~ 1_001_999
用户、部门、角色、菜单、字典、登录权限相关错误;
2. business业务模块:1_100_001 ~ 1_999_999
所有自定义业务模块错误码,每个业务子模块分配100个序号区间;
3. 通用框架错误:1_000_001 ~ 1_000_999
参数校验、幂等、文件上传、导出、远程调用通用异常。
## 二、常量定义规范
1. 统一存放于 `ErrorCodeConstants.java` 常量类;
2. 常量命名:全大写,下划线分隔,业务含义清晰;
3. 常量值严格遵循分段编码,注释写明异常提示文案;
4. 示例:
// 商品模块-商品不存在
public static final Integer GOODS_NOT_EXIST = 1_100_001;
5. 同一业务模块错误码按业务流程顺序递增,预留间隔序号便于后续扩展;
6. 禁止重复错误码,新增错误码前检查已存在常量。
## 三、异常文案规范
1. 错误提示面向业务操作人员,使用通俗中文;
2. 禁止文案包含数据库字段名、技术术语、英文编码;
3. 参数校验类文案清晰指明错误字段,例:"商品名称不能为空";
4. 远程调用、服务异常文案屏蔽底层技术细节,统一友好提示。
## 四、使用规范
1. 业务抛出异常统一使用工具类:
ServiceExceptionUtil.exception(ErrorCodeConstants.GOODS_NOT_EXIST);
2. 禁止直接在代码中写数字错误码,全部引用常量;
3. 捕获Feign远程调用异常时,透传远端错误码与提示文案;
4. 前端接收错误码,可根据特定错误码做页面特殊处理(如跳转登录、弹窗提示)。
## 五、禁止事项
❌ 禁止使用重复错误码;
❌ 禁止硬编码数字错误码,必须引用常量;
❌ 禁止文案暴露底层技术、数据库、服务名称;
❌ 禁止跨模块混用错误码分段,严格按区间分配;
❌ 禁止新增BPM流程相关错误码分段。
05-dev-env/code/platform/.cursor/rules/01_java_idempotent.mdc
0 → 100644
View file @
3b46fab7
---
description: 分布式幂等注解 @Idempotent 使用规范,基于Redis实现微服务防重复提交
globs: ["**/controller/**/*.java"]
alwaysApply: false
---
# 冲突优先级声明
Controller三层规范、Java编码规范优先级高于本文件。
# 分布式幂等防重复提交规范
## 一、注解基础说明
使用项目自定义 `@Idempotent` 注解,基于Redis实现分布式幂等控制,防止用户快速重复点击、网络重试造成重复新增、重复扣款、重复生成数据问题,适配微服务多实例集群环境。
## 二、注解属性配置规范
1. expireTime:幂等key过期时间,单位秒;
- 新增、编辑表单:默认5秒;
- 提交复杂业务、导出任务:设置30~60秒;
2. message:重复提交时返回的提示文案,示例:"请勿重复提交表单";
3. keyType:幂等key生成策略:
- TOKEN:基于用户登录Token + 接口路径(表单页面通用);
- PARAM:基于指定请求参数(唯一编码、订单号等唯一性字段)。
## 三、强制添加幂等注解的接口
1. POST /create 新增业务数据接口;
2. PUT /update 修改核心业务数据接口;
3. 状态变更、数据生成、批量处理接口;
4. APP端表单提交、订单创建类接口;
## 四、使用约束
1. 注解仅添加在Controller接口方法上;
2. 所有面向用户提交、可重复点击的写接口,必须配置@Idempotent;
3. 读接口(分页查询、详情查询、导出)无需添加幂等注解;
4. Redis统一使用国产化分布式缓存,不依赖境外Redis商业版本;
5. 幂等key自动绑定当前登录用户,用户之间互不干扰。
## 五、禁止事项
❌ 新增、编辑、业务提交接口不添加幂等注解,存在重复提交风险;
❌ 自定义本地内存锁替代分布式Redis幂等,集群多实例失效;
❌ 幂等提示文案使用技术术语,必须使用通俗易懂业务提示;
❌ 导出、单纯查询接口滥用@Idempotent注解,浪费Redis资源。
05-dev-env/code/platform/.cursor/rules/01_java_mapper_dm8.mdc
0 → 100644
View file @
3b46fab7
---
description: Mapper接口与XML规范,适配达梦8分页、函数、语法
globs: ["**/*Mapper.java","**/*Mapper.xml"]
alwaysApply: false
---
# 冲突优先级声明
达梦数据库全局规则优先级最高,其次为Java编码规范。
# Mapper层开发规范(达梦8专属适配)
## 一、Mapper接口规范
1. 存放路径:mapper,命名 XxxMapper;
2. 自定义查询方法命名规范:
- selectXxxByXxx:单条件查询列表
- countXxxByXxx:统计数量
- deleteXxxBatch:批量删除
- updateXxxBatch:批量更新
4. 方法入参:单参数直接传;多参数使用@Param("xxx")注解;
5. 禁止在Mapper接口编写业务逻辑,仅做数据库CRUD操作。
## 二、Mapper XML 文件规范
1. XML与Mapper接口同目录,文件名与接口名完全一致 XxxMapper.xml;
2. namespace 严格对应Mapper接口全类名;
3. 通用字段复用sql片段,抽取公共查询列、通用条件:
<sql id="common_column">
id, creator, create_time, updater, update_time, deleted
</sql>
4. 分页查询统一使用达梦分页语法 OFFSET #{offset} LIMIT #{pageSize},禁止MySQL逗号分页;
5. 函数统一使用达梦内置函数 NVL、TO_CHAR、SYSDATE,禁止IFNULL、DATE_FORMAT、NOW();
6. 所有SQL关键字大写(SELECT、FROM、WHERE、LEFT JOIN、ORDER BY),字段、表名下划线小写;
7. 禁止写SELECT *,必须明确查询需要的字段,减少IO开销。
## 三、MyBatis-Plus Wrapper 查询规范
1. 业务查询统一使用 LambdaQueryWrapperX、LambdaUpdateWrapperX,项目封装适配达梦;
2. 等值查询:eq;模糊查询:like;范围查询:ge、le;
3. 多条件拼接使用链式调用,禁止硬编码SQL字符串;
4. 分页查询调用 mapper.selectPage(page, wrapper),分页参数由上层PageParam转换;
5. 批量操作优先使用BaseMapperX提供的批量方法:insertBatch、updateBatchById。
## 四、达梦适配强制约束
1. 不使用自增主键、序列,主键由框架雪花ID生成;
2. 关联查询多表时,表别名简洁(t1、t2),避免关键字冲突;
3. 文本模糊查询长度适配达梦VARCHAR,超长文本使用TEXT字段查询;
4. 批量操作单次数据量控制在500条以内,防止达梦事务压力过大;
5. 禁止在XML中使用MySQL专属注释、引擎、字符集配置。
## 五、Mapper开发禁止项
❌ 禁止继承原生BaseMapper,必须BaseMapperX;
❌ 禁止SELECT * 查询所有字段;
❌ 禁止MySQL分页、MySQL专属函数;
❌ 禁止循环调用Mapper单条操作,统一批量方法;
❌ 禁止在XML中硬编码租户ID、软删除条件,统一框架自动填充;
❌ 禁止存储过程、复杂函数在XML中调用,业务逻辑下沉Service层。
05-dev-env/code/platform/.cursor/rules/01_java_naming.mdc
0 → 100644
View file @
3b46fab7
---
description: Java类、方法、数据库表、接口路径、权限标识全量命名规范(若依微服务+达梦8,无会议/BPM)
globs: ["**/*.java","**/*.sql","**/*.yml"]
alwaysApply: false
---
# 冲突优先级声明
达梦数据库规范、Java编码禁令优先级高于本文件。
# 全项目统一命名规范
## 一、Java类命名
| 类类型 | 命名格式 | 示例 |
| ---- | ---- | ---- |
| 数据库DO实体 | {业务}DO | GoodsDO |
| 创建更新请求VO | {业务}SaveReqVO | GoodsSaveReqVO |
| 分页查询请求VO | {业务}PageReqVO | GoodsPageReqVO |
| 响应VO | {业务}RespVO | GoodsRespVO |
| Feign远程DTO | {业务}DTO | GoodsDTO |
| Service接口 | {业务}Service | GoodsService |
| Service实现 | {业务}ServiceImpl | GoodsServiceImpl |
| Mapper接口 | {业务}Mapper | GoodsMapper |
| 转换类Convert | {业务}Convert | GoodsConvert |
| 枚举类 | {业务}Enum | GoodsStatusEnum |
| 错误码常量 | ErrorCodeConstants | 统一文件追加 |
| Controller后台 | {业务}AdminController | GoodsAdminController |
| Controller移动端APP | {业务}AppController | GoodsAppController |
## 二、Service方法命名统一标准
| 功能 | 方法名 | 返回值 |
| ---- | ---- | ---- |
| 新增创建 | create{Entity} | String(雪花ID) |
| 更新 | update{Entity} | void |
| 删除单条 | delete{Entity} | void |
| 批量删除 | delete{Entity}ListByIds | void |
| 根据ID查询(不存在抛异常) | get{Entity} | DO实体 |
| 根据ID查询(允许空) | get{Entity}IfExists | DO实体 |
| 分页查询 | get{Entity}Page | PageResult<DO> |
## 三、达梦8数据库命名规范
1. 业务表前缀 `business_`,格式 `business_{模块}_{业务}`,全小写蛇形;
示例:`business_goods_info`、`business_user_address`
2. 字段全小写蛇形,与DO驼峰字段一一映射;
3. 索引命名:普通索引 `idx_字段名`;唯一索引 `uk_字段名`;
4. 字典系统表复用若依自带 `sys_dict_type`、`sys_dict_data`,不新建字典表。
## 四、微服务接口路径命名
1. 管理后台接口:`/api/admin/{模块}/{业务}`
示例:`/api/admin/business/goods`
2. APP移动端接口:`/api/app/{模块}/{业务}`
示例:`/api/app/business/goods`
3. CRUD固定后缀:
创建 POST `/create`;更新 PUT `/update`;删除 DELETE `/delete`;
查询单条 GET `/get`;分页 GET `/page`;导出 GET `/export-excel`
## 五、权限标识命名(Sa-Token)
格式:`{模块}:{业务}:{操作}`
操作固定枚举:create / update / delete / query / export
示例:`business:goods:create`、`business:goods:query`
## 六、常量&魔法值命名
1. 业务状态全部枚举类,禁止硬编码数字;
2. 全局固定阈值、模板ID、字典Key统一放入XXXConstants常量类;
3. 错误码分段规范:
- system系统模块:1_001_xxx_xxx
- business业务模块:1_100_xxx_xxx
## 七、前端文件命名
1. Vue后台列表页面:index.vue;表单抽屉:XxxFormDrawer.vue;详情抽屉:XxxDetailDrawer.vue;
2. UniApp APP页面:短横线kebab-case命名;
3. API类型文件:types.ts;接口请求文件:index.ts。
05-dev-env/code/platform/.cursor/rules/01_java_operate_log.mdc
0 → 100644
View file @
3b46fab7
---
description: 若依框架操作日志注解 @ApiAccessLog 使用规范
globs: ["**/controller/**/*.java"]
alwaysApply: false
---
# 冲突优先级声明
Controller三层规范、Java编码规范优先级高于本文件。
# 操作日志 @ApiAccessLog 使用规范
## 一、注解基础说明
使用若依内置注解 `@ApiAccessLog`,自动记录操作人、操作时间、接口地址、请求参数、操作类型、耗时,满足信创等保审计日志要求。
## 二、注解必填属性规范
1. title:必填,模块业务中文名称,例:"商品管理";
2. operateType:操作类型枚举,可选值:
- CREATE:新增
- UPDATE:编辑修改
- DELETE:删除
- EXPORT:导出Excel
- QUERY:查询(分页/详情)
3. saveRequestData:布尔值,默认true,记录请求参数;敏感接口(含身份证、手机号)设置为false,防止日志泄露隐私。
## 三、接口注解使用强制规则
1. 以下接口**必须添加@ApiAccessLog**:
- POST /create 新增
- PUT /update 编辑
- DELETE /delete 删除
- GET /export-excel 导出
2. 查询接口(分页、详情)按需添加,内部管理系统建议全部记录;APP端普通查询可省略日志注解;
3. 注解仅允许添加在Controller接口方法上,禁止在Service、Mapper层使用。
## 四、日志脱敏规范
1. 接口参数包含手机号、身份证、银行卡、家庭地址等敏感字段时:
1. @ApiAccessLog(saveRequestData = false) 关闭参数记录;
2. 或全局配置日志脱敏规则,自动隐藏敏感信息中间字符;
2. 生产环境日志持久化存储,保留至少6个月审计日志,符合信创等保三级要求。
## 五、禁止事项
❌ 新增/修改/删除/导出接口不添加操作日志注解;
❌ 在Service、Mapper、Convert等非Controller层使用日志注解;
❌ 敏感隐私接口完整记录明文身份证、手机号;
❌ 自定义日志打印替代框架统一@ApiAccessLog日志,分散审计日志。
05-dev-env/code/platform/.cursor/rules/01_java_ruoyi_cloud_architecture.mdc
0 → 100644
View file @
3b46fab7
## 4、01_java_ruoyi_cloud_architecture.mdc
```mdc
---
description: 若依RuoYi-Vue-Cloud微服务工程分层、模块分包、Nacos/Feign/Gateway规范(无BPM模块)
globs: ["**/*.java","**/pom.xml","**/application.yml","**/bootstrap.yml"]
alwaysApply: false
---
# 冲突优先级声明
达梦数据库、Java编码禁令优先级高于本文件;本文件规范优先级高于通用全栈协作规则。
# 若依微服务工程架构规范(RuoYi-Vue-Cloud)
## 一、标准模块拆分(移除ruoyi-bpm流程模块)
1. `ruoyi-gateway` 网关模块:路由转发、鉴权、跨域、限流、请求日志;
2. `ruoyi-system` 系统基础模块:用户、部门、角色、菜单、字典、操作日志;
3. `ruoyi-business-api` 业务公共API模块:Feign远程调用DTO、接口定义(仅接口、DTO,无业务实现);
4. `ruoyi-business-server` 业务实现服务模块:所有业务CRUD、ServiceImpl、Mapper、DO;
5. `ruoyi-common` 通用工具模块:常量、工具类、异常、枚举、全局返回体;
6. `ruoyi-admin` 管理后台前端;`ruoyi-app` UniApp移动端前端。
## 二、包结构标准(business-server业务模块)
com.ruoyi.business.{业务模块名}
├── controller 业务控制器(统一继承 BaseController,区分后台 / APP 接口)
├── domain 数据库实体 DO(达梦表映射实体,替换旧 dal/dataobject)
├── domain/vo 各类vo
├── mapper Mapper 接口(MyBatis-Plus 接口)
├── service
│ ├── impl ServiceImpl 业务实现类
│ └── 业务 Service 接口
├── convert 对象转换 Convert 类
├── enums 业务枚举、错误码常量
├── util 业务工具类
ruoyi-modules/ruoyi-busi/src/main/resources
├── mapper/busi Mapper.xml SQL 映射文件
├── application-dev.yml 开发环境配置
├── bootstrap.yml 启动配置
## 三、微服务核心组件规范
### 1. Nacos配置中心
1. 所有环境配置(数据库连接、Redis、Feign超时、线程池)存入Nacos;
2. bootstrap.yml仅配置Nacos地址、命名空间、集群;application.yml仅少量本地默认值;
3. 区分开发、测试、生产Nacos命名空间,生产配置加密存储(国产加密算法);
4. 达梦数据库连接池配置统一在Nacos,适配达梦驱动参数。
### 2. Feign远程调用(跨模块)
1. 跨服务调用仅允许通过 \`ruoyi-business-api\` 定义Feign接口;
2. API模块仅存放接口、DTO数据传输对象,无任何业务实现代码;
3. Server模块之间禁止直接依赖,只能依赖对应API模块;
4. Feign调用异常统一捕获,使用若依全局异常处理,返回标准化CommonResult;
5. Feign超时、重试策略在Nacos统一配置,适配微服务分布式场景。
### 3. Gateway网关
1. 所有接口请求统一经过网关,不允许服务直连访问;
2. 网关统一处理Sa-Token鉴权、跨域、接口限流、请求参数脱敏;
3. 路由规则区分admin后台、app移动端、内部服务接口;
4. 网关日志记录请求来源、耗时、操作人,满足信创等保审计要求。
### 4. Sa-Token 微服务鉴权
1. 管理后台、APP端使用两套独立Token体系,权限隔离;
2. 接口必须添加 \`@PreAuthorize("@ss.hasPermission('模块:业务:操作')")\` 权限校验;
3. APP移动端仅开放查询、提交保存等基础权限,禁止后台管理类权限;
4. 分布式会话存储Redis,适配多实例微服务集群。
## 四、微服务部署&信创适配
1. 所有服务打包为jar镜像,支持鲲鹏/飞腾国产CPU容器化部署;
2. 中间件国产化:Nacos国产适配版、东方通/TongWeb替代Tomcat;
3. Redis使用国产分布式缓存,禁用海外Redis企业版;
4. 服务日志输出适配国产日志采集工具,日志脱敏敏感信息;
5. 容器镜像不依赖海外Docker镜像源,全部本地化信创镜像。
## 五、模块依赖禁止事项
❌ 禁止server模块互相直接依赖;跨模块仅依赖xxx-api;
❌ 禁止将业务实现代码写入api模块;
❌ 禁止硬编码环境地址、数据库连接,全部Nacos配置;
❌ 禁止Feign接口传DO数据库实体,统一使用隔离DTO;
❌ 禁止APP端Controller开放后台管理权限接口;
❌ 禁止微服务多实例本地缓存存储状态,分布式状态统一Redis;
❌ 禁止引入Flowable、BPM流程相关依赖包。
\ No newline at end of file
05-dev-env/code/platform/.cursor/rules/01_java_service_controller.mdc
0 → 100644
View file @
3b46fab7
---
description: Controller、Service、ServiceImpl三层代码模板规范,微服务鉴权、多租户适配
globs: ["**/controller/**/*.java","**/service/**/*.java"]
alwaysApply: false
---
# 冲突优先级声明
Java编码、达梦实体规范优先级高于本文件。
# Controller & Service & ServiceImpl 三层开发规范
## 一、Controller 分层规范
### 1. 基础约束
1. 存放路径:controller/;
2. AdminController:@RestController + @RequestMapping("/api/admin/business/xxx");
3. AppController:@RestController + @RequestMapping("/api/app/business/xxx");
4. 统一添加 @Tag 接口文档注解,标注模块名称;
5. 依赖注入仅注入对应Service,禁止直接注入Mapper、Feign(Feign在Service层注入);
6. 接口权限校验:@PreAuthorize("@ss.hasPermission('business:goods:query')");
7. APP端接口不添加后台管理类权限标识,仅做登录Token校验。
### 2. 标准CRUD接口模板
1. 新增 POST /create:入参SaveReqVO,返回雪花ID;添加@Idempotent、@ApiAccessLog;
2. 更新 PUT /update:入参SaveReqVO(携带id);添加@Idempotent、@ApiAccessLog;
3. 删除 DELETE /delete/{id}:路径ID,添加@ApiAccessLog;
4. 分页查询 GET /page:入参PageReqVO,返回PageResult<XxxRespVO>;
5. 单条详情 GET /get/{id}:返回XxxRespVO;
6. 导出 GET /export-excel:分页查询数据,导出Excel,添加导出权限校验。
### 3. Controller禁止项
❌ 禁止Controller编写业务逻辑、数据库查询;
❌ 禁止Controller捕获业务异常,全局统一异常处理器处理;
❌ 禁止Controller直接注入Mapper、Feign接口;
❌ 禁止Admin与APP接口写在同一个Controller;
❌ 禁止接口路径、权限标识混用后台与移动端。
## 二、Service 接口规范
1. 存放路径:service包,命名 XxxService;
2. 仅定义业务抽象方法,不编写实现逻辑;
3. 方法返回值规范:
- 新增:String(雪花ID)
- 更新/删除:void
- 单条查询:XxxDO(不存在抛异常)
- 分页查询:PageResult<XxxDO>
4. 所有方法添加中文Javadoc注释,写明入参、返回值、异常场景;
5. 跨服务远程调用方法,在Service接口定义对应方法。
## 三、ServiceImpl 实现类规范
1. 存放路径:service/impl,命名 XxxServiceImpl,实现XxxService;
2. 添加 @Service 注解;
3. 依赖注入:@Resource 注入Mapper、Feign接口、其他Service;
4. 业务分层逻辑:
1. 参数校验(非空、长度、状态合法性);
2. 数据库CRUD操作,批量数据处理;
3. 跨服务Feign远程调用;
4. 数据转换DO ↔ VO/DTO;
5. 组装分页、返回结果;
5. 多租户自动过滤:使用MyBatis-Plus租户插件,无需手动拼接租户条件;
6. 不存在数据统一抛出业务异常,禁止返回null。
## 四、通用三层统一约束
1. 入参校验统一使用Hibernate Validator注解,Controller层自动校验;
2. 所有分页返回统一包装 PageResult,包含总条数、当前页、数据列表;
3. 时间、创建人等公共字段由MyBatis-Plus自动填充,无需手动set;
4. 软删除统一框架逻辑删除,ServiceImpl不手动修改deleted字段。
05-dev-env/code/platform/.cursor/rules/03_vue_ruoyi_admin.mdc
0 → 100644
View file @
3b46fab7
---
description: 若依Vue3管理后台前端规范(Element Plus)
globs: ["**/ruoyi-admin/**/*.vue","**/ruoyi-admin/**/*.ts"]
alwaysApply: false
---
# 冲突优先级声明
全局前后端协作规范优先级高于本文件。
# 若依Vue3后台前端开发规范
## 一、页面目录结构规范
页面存放路径 `views/{业务模块}/`,目录拆分:
1. index.vue:列表主页面(搜索栏、表格、新增/编辑弹窗入口);
2. XxxFormDrawer.vue:新增、编辑抽屉表单;
3. XxxDetailDrawer.vue:详情查看抽屉;
4. components/:页面内部复用小型组件,不全局公用;
5. api/:当前模块接口请求文件;
6. types.ts:当前模块TS类型定义。
## 二、页面基础框架规范
统一使用项目封装通用列表组件 `SqSearchTableFrame`,内置搜索区、表格、分页、新增/删除按钮插槽;
1. 搜索表单使用el-form-item,搜索项控制在6个以内,多余折叠;
2. 表格列使用el-table-column,字典状态列使用 <dict-tag /> 自动翻译;
3. 表格操作列统一封装操作按钮组件,区分查看、编辑、删除;
4. 删除、批量删除按钮绑定二次确认弹窗,提示用户确认操作;
5. 分页统一使用框架封装分页组件,参数pageNum、pageSize与后端PageReqVO对齐。
## 三、表单抽屉规范
1. 新增/编辑共用一套FormDrawer组件,通过入参id区分新增/编辑;
2. 表单校验使用el-form内置rules校验,必填项标红*;
3. 下拉选择、状态选择统一使用字典接口回显,禁止硬编码选项;
4. 表单提交统一调用封装api,成功后关闭抽屉并刷新表格列表;
5. 复杂多行数据使用el-table内嵌表单行,支持新增、删除子行。
## 四、TS类型规范
1. types.ts 统一定义PageReq、SaveReq、Resp类型,与后端VO字段完全一致;
2. 所有ID字段定义为string,避免雪花ID数字精度丢失;
3. 状态枚举直接复用后端字典编码,前端不单独维护状态数字;
4. 接口请求统一封装axios工具,请求参数、返回值绑定TS类型。
## 五、前端通用禁止项
❌ 禁止页面硬编码字典状态、业务枚举数字;
❌ 禁止手动拼接接口地址,统一api文件导出请求方法;
❌ 禁止表单不做前端必填校验,仅依赖后端校验;
❌ 禁止表格操作无二次确认弹窗(删除、批量删除);
❌ 禁止TS类型中ID使用number类型,防止雪花ID精度丢失。
05-dev-env/code/platform/.trae/rules/00_global_ai_checklist.md
0 → 100644
View file @
3b46fab7
---
description
:
全项目代码通用强制自检清单,所有Java、Vue、UniApp、SQL文件全局生效
globs
:
[
"
**/*.java"
,
"
**/*.vue"
,
"
**/*.ts"
,
"
**/*.sql"
,
"
**/*.xml"
,
"
**/*.vue"
]
alwaysApply
:
true
---
# 冲突优先级声明
若本规则与其他专项规则冲突,专项业务规则优先级高于本文件;达梦数据库、Java编码禁令、信创约束拥有最高不可覆盖优先级。
# 通用代码强制自检清单(若依微服务+达梦8+信创,无会议/BPM)
## 一、Java 通用红线
1.
依赖注入统一 @Resource,禁止 @Autowired;
2.
禁止连环set赋值,DO/VO全部使用@Builder链式构建;
3.
禁止手写getter/setter,统一Lombok @Data;
4.
非空判断统一Hutool工具类(StrUtil/CollUtil),禁止裸判空;
5.
禁止魔法数字/字符串,统一枚举、常量类;
6.
多层if嵌套改用卫语句,禁止深度嵌套;
7.
循环内禁止调用Mapper,统一批量操作;
8.
时间统一 LocalDateTime,禁止 Date/Timestamp;
9.
所有业务异常统一 ServiceExceptionUtil,禁止直接new RuntimeException;
10.
Service查询无数据必须抛异常,禁止return null;
11.
Controller禁止try-catch,使用若依全局异常处理器;
12.
Controller禁止直接注入Mapper,仅允许注入Service;
13.
微服务跨模块调用仅允许Feign DTO远程调用,禁止直接依赖对方server模块;
14.
所有新增表/字段必须适配达梦8语法,禁止MySQL专属函数;
15.
项目无BPM流程、会议预约相关业务,禁止新增Flowable依赖、审批监听、流程表单代码。
## 二、SQL & 达梦8 强制红线
1.
主键统一String雪花ID,达梦8禁止自增ID,不使用序列作为业务主键;
2.
时间字段使用达梦 TIMESTAMP,禁止 TIMESTAMPTZ;
3.
分页使用达梦分页语法,禁止MySQL LIMIT/OFFSET逗号写法;
4.
表名、字段名全部小写蛇形,规避达梦关键字;
5.
必须包含租户、软删除、创建人、创建时间等框架字段;
6.
字典初始化SQL适配达梦insert语法,兼容信创达梦驱动;
7.
禁止使用MySQL专属函数:IFNULL、DATE_FORMAT等,替换达梦对应函数;
8.
不创建会议、审批流程相关数据表、索引、初始化数据。
## 三、前端双端通用红线(管理后台Vue3 + UniApp APP)
1.
ID统一string类型,禁止number,避免雪花ID精度丢失;
2.
表单基础校验使用el-form/uni-form内置提示,业务逻辑弹窗提示;
3.
禁止页面硬编码魔法状态、文本,统一枚举/字典翻译;
4.
API请求统一封装若依axios请求,禁止原生fetch/axios裸调用;
5.
所有删除、批量操作增加二次确认弹窗;
6.
APP端适配国产安卓系统,避免闭源第三方SDK;
7.
页面类型区分:管理后台页面、APP表单页面,规范目录拆分;
8.
不开发流程审批、会议预约类页面、弹窗、表单组件。
## 四、信创强制约束(全代码通用)
1.
第三方依赖优先选用国产化开源包,剔除国外闭源组件;
2.
SQL脚本、配置文件兼容国产服务器(鲲鹏、飞腾CPU);
3.
JDK统一使用国产龙芯/鲲鹏适配OpenJDK,禁止Oracle JDK;
4.
中间件使用国产东方通、金蝶,不使用Tomcat商业版、WebLogic;
5.
打包产物支持信创容器镜像,无海外镜像依赖;
6.
所有功能无依赖境外API、境外存储服务。
## 五、微服务通用约束
1.
多模块拆分遵循若依微服务标准:gateway、system、business、api;
2.
远程调用统一Feign接口,DTO隔离,server模块不互相依赖;
3.
配置全部存入Nacos,禁止本地yml硬编码环境配置;
4.
接口路径统一 /api/{模块}/{功能},网关统一路由转发;
5.
权限标识遵循 模块:业务:操作 格式,适配若依Sa-Token鉴权;
6.
分布式防重复提交使用Redis幂等注解,适配微服务多实例。
05-dev-env/code/platform/.trae/rules/00_global_dm8_database.md
0 → 100644
View file @
3b46fab7
---
description
:
达梦8 DM8数据库全局强制规范,信创数据库最高优先级规则
globs
:
[
"
**/*.sql"
,
"
**/*DO.java"
,
"
**/*Mapper.xml"
]
alwaysApply
:
true
---
# 达梦8(DM8)数据库规范 信创适配
## 一、达梦 8 字段类型强制约束
1.
雪花 ID 主键:Java String,达梦
`VARCHAR(20)`
;
**禁止 BIGINT 自增、禁止序列做主键**
;
2.
状态、枚举值:Java Integer,达梦
`INT`
;
3.
短文本名称:
`VARCHAR(100)`
,长描述
`VARCHAR(500)`
;
4.
时间统一
`TIMESTAMP`
;
**禁止 TIMESTAMPTZ、DATE 单独存储时分秒**
;
5.
布尔值使用
`BIT`
,0/1;
6.
JSON 数组、复杂集合存储使用
`TEXT`
,配合 MyBatis-Plus JacksonTypeHandler;
7.
不使用达梦大字段 CLOB/BLOB,业务文本统一 VARCHAR/TEXT。
## 二、DDL 脚本达梦专属规范
1.
表名、字段名全部小写蛇形命名,规避达梦系统关键字;
2.
注释使用
`COMMENT ON TABLE`
/
`COMMENT ON COLUMN`
达梦标准语法;
3.
新增字段使用
`ALTER TABLE 表名 ADD COLUMN xxx 类型 约束 COMMENT '注释'`
;
4.
建表语句包裹
`BEGIN;`
和
`COMMIT;`
,事务执行;
5.
索引创建语法:
`CREATE INDEX idx_xxx ON table_name(col);`
;唯一索引
`CREATE UNIQUE INDEX`
;
6.
达梦分页语法:
`OFFSET x LIMIT y`
,禁止 MySQL LIMIT 0,10 逗号写法;
7.
达梦函数替换 MySQL 函数:
-
IFNULL → NVL
-
DATE_FORMAT → TO_CHAR
-
NOW() → SYSDATE
-
SUBSTRING → SUBSTR
## 三、MyBatis-Plus 适配达梦 8
1.
Mapper 继承
`BaseMapperX`
(项目封装适配达梦),禁止原生 BaseMapper;
2.
分页使用
`LambdaQueryWrapperX`
空值安全条件,达梦分页自动适配;
3.
禁止 MySQL 专属 XML SQL,所有原生 SQL 必须兼容达梦;
4.
主键注解统一
`@TableId(type = IdType.ASSIGN_ID)`
,达梦全局关闭自增;
5.
软删除使用 MyBatis-Plus 逻辑删除,达梦 BIT 字段自动适配。
## 四、达梦 8 信创部署约束
1.
驱动包使用达梦官方国产化驱动 DmJdbcDriver,不使用兼容 MySQL 驱动;
2.
数据库字符集统一 GB18030,适配信创中文存储;
3.
排序规则统一达梦中文排序,避免中文查询乱序;
4.
生产环境达梦 8 部署在鲲鹏 / 飞腾国产服务器,禁止 x86 海外服务器;
5.
数据库备份脚本适配达梦 dexp/dimp 工具,不使用 mysqldump;
6.
账号权限最小化,业务账号仅拥有 DML 权限,DDL 仅 DBA 可执行,满足等保信创要求。
## 五、数据库开发禁止事项
❌ 禁止使用自增主键、序列作为业务主键;
❌ 禁止 MySQL 专属函数、分页语法;
❌ 禁止字段名、表名使用达梦保留关键字不加转义;
❌ 禁止存储过程、触发器承载大量业务逻辑,业务全部下沉 Java 服务层;
❌ 禁止 TEXT/CLOB 存储超长业务文本,拆分字段;
❌ 禁止手动更新 deleted 软删除字段,使用框架内置逻辑删除方法;
❌ 禁止达梦数据库存储境外加密、境外第三方数据;
❌ 禁止创建会议、审批流程相关数据表、存储过程、触发器。
05-dev-env/code/platform/.trae/rules/00_global_fullstack_collaboration.md
0 → 100644
View file @
3b46fab7
---
description
:
若依微服务前后端协作规范(Vue管理后台 + UniApp APP双端,无会议/BPM)
globs
:
[
"
**/*.java"
,
"
**/*.vue"
,
"
**/*.ts"
,
"
**/*.sql"
,
"
**/*.js"
]
alwaysApply
:
true
---
# 冲突优先级声明
达梦数据库、Java编码、信创部署规则优先级高于本文件;若依微服务专项架构规则冲突时以专项文件为准。
# 若依微服务全栈协作规范
## 一、前后端字段映射标准(统一适配达梦8)
### TS类型 → Java类型 → 达梦8字段映射
| 前端TS类型 | Java实体类型 | 达梦8列类型 | 说明 |
| ---- | ---- | ---- | ---- |
| string(雪花ID) | String | VARCHAR(20) | 主键,防止精度丢失 |
| number(状态枚举) | Integer | INT | 业务状态、字典值 |
| string(名称文本) | String | VARCHAR(100) | 名称、标题 |
| string(长描述) | String | VARCHAR(500) | 备注、描述 |
| string(ISO时间) | LocalDateTime | TIMESTAMP | 统一时间类型 |
| boolean | Boolean | BIT | 布尔标识 |
| string
[
] | List
<String>
| TEXT | JSON数组存储,JacksonTypeHandler |
## 二、前端页面推导后端代码流程
1.
管理后台Vue页面、UniApp APP页面,先提取全部表单字段、列表查询条件、接口请求;
2.
区分双端接口隔离:管理后台接口、APP移动端独立接口,禁止复用同一套Controller;
3.
后端分层严格遵循:SQL DDL(达梦语法)→ DO → Mapper → VO → Controller → Service;
4.
跨模块查询使用Feign远程调用,不直接操作其他业务Mapper;
5.
字典、枚举前后端同步,后端存数字code,前端通过若依字典组件自动翻译中文;
6.
分页统一PageResult返回,前端PageReqVO继承若依PageParam。
## 三、微服务接口路径规范
1.
管理后台接口前缀:
`/api/admin/{module}/{business}`
2.
APP移动端接口前缀:
`/api/app/{module}/{business}`
3.
公共基础模块接口:
`/api/common/{function}`
4.
CRUD固定后缀:/create /update /delete /get /page /export-excel
## 四、双端代码产出区分
1.
Vue管理后台:基于Element Plus,SqSearchTableFrame标准列表框架;
2.
UniApp APP端:uni-form、uni-data-select、uni-list等原生组件,适配移动端触控;
3.
公共类型统一抽离api/types.ts,后台与APP类型文件隔离,不共用;
4.
APP端不展示复杂后台管理字段(租户ID、创建人、操作日志等)。
## 五、数据库字段对齐强制要求
1.
DO驼峰字段 ↔ 达梦表下划线字段完全一一对应;
2.
SaveReqVO覆盖前端所有可编辑字段,不含框架内置字段;
3.
RespVO增加富化展示字段(关联名称、字典中文),DO不存储;
4.
新增字段必须同步:达梦ALTER脚本、DO实体、前后端VO类型。
## 六、信创前后端适配要求
1.
前端打包产物无海外CDN资源,静态资源本地化;
2.
UniApp打包支持国产安卓系统、国产芯片设备;
3.
前端加密、工具类使用国产加密算法(SM2/SM3/SM4),禁用RSA国际算法;
4.
接口日志脱敏手机号、身份证等敏感信息,满足信创等保规范。
05-dev-env/code/platform/.trae/rules/01_java_coding_standards.md
0 → 100644
View file @
3b46fab7
---
description
:
Java编码八大强制红线禁令(最高优先级Java规则,达梦、信创规则除外,无BPM/会议)
globs
:
[
"
**/*.java"
]
alwaysApply
:
false
---
# 冲突优先级声明
本文件为Java代码最高强制约束,仅达梦数据库、信创部署规则优先级高于本文件,其余所有Java相关规则冲突时以本文件为准。
# Java编码强制八大禁令(若依微服务+达梦8+信创)
## 禁令1:禁止连环set硬赋值,统一@Builder链式构建
❌ 错误:new DO() 后逐行setXxx
✅ 正确:DO实体添加@Builder、@NoArgsConstructor、@AllArgsConstructor,使用DO.builder().field(val).build()
## 禁令2:禁止手写getter/setter,统一Lombok @Data
❌ 手动编写get/set方法
✅ 所有DO、VO、DTO统一使用@Data,配合@EqualsAndHashCode(callSuper = true)
## 禁令3:依赖注入统一@Resource,完全禁止@Autowired
❌ 混用@Autowired和@Resource
✅ Controller、ServiceImpl中所有Mapper、Service、Feign接口全部使用@Resource注入
## 禁令4:非空判断禁止裸判断,统一Hutool工具类
❌ if(str != null && !str.equals("")) / if(list != null && list.size()>0)
✅ 字符串:StrUtil.isNotBlank();集合:CollUtil.isNotEmpty();对象:ObjectUtil.isNotNull()
## 禁令5:禁止魔法数字、魔法字符串,统一枚举/常量类
❌ 直接写if(status == 0)、return "goods_offline"
✅ 业务状态定义枚举,固定文本、阈值写入XXXConstants常量类
## 禁令6:禁止多层if-else嵌套,卫语句优先,复杂状态使用策略模式
❌ 超过2层if嵌套
✅ 所有边界、校验条件前置,提前return/抛异常,消除else分支;状态机多分支采用策略模式
## 禁令7:循环内部禁止调用Mapper单条操作,统一批量方法
❌ for循环中mapper.insert() / mapper.deleteById()
✅ 批量插入insertBatch、批量删除deleteBatchIds、条件批量更新wrapper更新,单次DB交互
## 禁令8:时间类型统一LocalDateTime,完全禁止Date、Timestamp
❌ java.util.Date、java.sql.Timestamp
✅ DO、VO、DTO时间字段全部使用LocalDateTime,达梦8 TIMESTAMP字段对应
# 补充强制编码约束
1.
业务异常统一 ServiceExceptionUtil.exception(ErrorCode),禁止直接new RuntimeException、IllegalArgumentException;
2.
Service查询无数据必须抛不存在异常,禁止return null区分不存在;
3.
Controller禁止编写try-catch捕获业务异常,使用若依全局异常处理器;
4.
Controller禁止直接注入Mapper,仅允许注入对应Service;
5.
跨模块调用仅允许注入Feign API接口,禁止依赖对方ServiceImpl;
6.
所有类、Service接口方法、DO字段必须添加中文Javadoc注释;
7.
错误提示文案使用业务操作人员易懂中文,禁止技术术语、数据库字段名、英文编码;
8.
新增/修改/删除/导出接口必须添加@ApiAccessLog操作日志注解;
9.
创建、状态变更接口必须添加@Idempotent幂等注解防重复提交;
10.
所有DO主键统一String雪花ID,@TableId(type = IdType.ASSIGN_ID),适配达梦8;
11.
禁止引入Flowable、BPM流程审批相关类、注解、依赖。
05-dev-env/code/platform/.trae/rules/01_java_convert.md
0 → 100644
View file @
3b46fab7
---
description
:
对象转换Convert类规范,DO/VO/DTO分层隔离转换
globs
:
[
"
**/*Convert.java"
]
alwaysApply
:
false
---
# 冲突优先级声明
Java编码规范、达梦实体规则优先级高于本文件。
# 对象转换Convert类开发规范
## 一、基础规范
1.
存放路径:convert包下,命名 XxxConvert;
2.
类添加 @Mapper(componentModel = "spring") 注解,使用MapStruct自动生成转换实现;
3.
所有转换方法为静态/实例抽象方法,禁止手动编写set赋值转换逻辑;
4.
转换类只做对象属性拷贝,不编写业务计算、数据查询逻辑。
## 二、标准转换方法定义
### 1. DO ↔ RespVO
RespVO toRespVO(DO entity);
List
<RespVO>
toRespVOList(List
<DO>
list);
### 2. SaveReqVO → DO
DO toDO(SaveReqVO reqVO);
### 3. DO ↔ Feign DTO(跨服务传输)
DTO toDTO(DO entity);
DO toDO(DTO dto);
List
<DTO>
toDTOList(List
<DO>
list);
## 三、特殊字段转换处理规则
1.
字典翻译、关联名称等富化字段:转换基础拷贝后,在Service层单独赋值,Convert不处理;
2.
时间字段 LocalDateTime 自动映射,无需额外转换配置;
3.
雪花ID String类型自动映射,无精度丢失问题;
4.
枚举字段:统一存储Integer编码,转换时直接拷贝数字,中文翻译在VO层处理;
5.
集合List
<String>
JSON字段:MyBatis类型处理器处理,转换层直接拷贝。
## 四、MapStruct 注解配置规范
1.
字段名称完全一致时,无需额外@Mapping;
2.
字段名称不一致时,添加映射注解:
@Mapping(source = "userId", target = "uid")
3.
忽略不需要拷贝的字段:
@Mapping(target = "richName", ignore = true)
4.
禁止使用复杂表达式在@Mapping中,复杂逻辑交给Service处理。
## 五、Convert通用禁止项
❌ 禁止手动new对象+连环set做转换,必须MapStruct自动生成;
❌ 禁止在转换方法中调用Mapper、Feign、Service查询数据;
❌ 禁止转换类添加业务工具方法、常量;
❌ 禁止跨模块直接转换VO与DO,跨服务只能通过DTO中转;
❌ 禁止转换方法返回null,空集合统一返回空列表Collections.emptyList()。
05-dev-env/code/platform/.trae/rules/01_java_dict_enum_sync.md
0 → 100644
View file @
3b46fab7
---
description
:
业务枚举、数据字典前后端同步规范,适配若依字典+达梦初始化SQL
globs
:
[
"
**/*Enum.java"
,
"
**/*.sql"
]
alwaysApply
:
false
---
# 冲突优先级声明
达梦数据库规范、Java编码规范优先级高于本文件。
# 枚举 & 数据字典同步开发规范
## 一、业务枚举开发规范
1.
存放路径:enums包,命名 XxxEnum;
2.
枚举固定结构:code(Integer编码)、desc(中文描述);
3.
基础方法:getCode()、getDesc(),提供静态工具方法根据code获取枚举;
4.
所有业务状态、类型、标识全部使用枚举,禁止硬编码魔法数字;
5.
枚举添加中文类注释、每个实例添加单行注释说明业务含义;
6.
禁止枚举中编写数据库查询、远程调用、复杂业务逻辑。
示例标准枚举:
public enum GoodsStatusEnum {
UP(1, "上架"),
DOWN(2, "下架");
private final Integer code;
private final String desc;
GoodsStatusEnum(Integer code, String desc) {
this.code = code;
this.desc = desc;
}
// getter、根据code查询工具方法
}
## 二、若依数据字典规范
1.
系统字典复用内置两张表:sys_dict_type(字典类型)、sys_dict_data(字典项);
2.
字典类型编码规则:
`business_xxx`
,区分系统字典与业务字典;
3.
达梦初始化SQL规范:
1.
先判断字典类型不存在再插入;
2.
批量插入字典项,适配达梦INSERT多行语法;
3.
所有字符串值使用单引号,注释符合达梦语法;
4.
前后端同步规则:
-
后端存储数字code;
-
管理后台Vue使用
<dict-tag
/>
组件自动翻译中文;
-
UniApp APP端封装全局字典翻译工具,根据code展示中文;
5.
区分使用场景:
-
固定不变、全项目通用状态:优先使用Java枚举;
-
支持后台动态新增修改的分类、标签:使用数据库数据字典。
## 三、枚举与字典同步约束
1.
若业务同时使用枚举+字典,必须保证code编码完全一致,避免前后端翻译错乱;
2.
新增业务状态时,同步更新枚举类、字典初始化SQL、前端字典选项;
3.
禁止枚举code与字典项value不一致,统一Integer数字编码;
4.
生产环境字典初始化脚本仅执行新增,不修改已有字典项,避免线上数据变更风险。
## 四、禁止事项
❌ 禁止业务状态硬编码数字,必须枚举/字典;
❌ 禁止字典初始化SQL使用MySQL专属语法,严格适配达梦;
❌ 禁止枚举存储字符串编码,统一Integer;
❌ 禁止前端硬编码状态文本,全部依赖枚举/字典翻译;
❌ 禁止动态可变业务分类使用Java枚举,必须数据库字典。
05-dev-env/code/platform/.trae/rules/01_java_do_vo_dm8.md
0 → 100644
View file @
3b46fab7
---
description
:
DO/ReqVO/RespVO/DTO实体规范,适配达梦8雪花ID、字段类型映射
globs
:
[
"
**/*DO.java"
,
"
**/*VO.java"
,
"
**/*DTO.java"
]
alwaysApply
:
false
---
# 冲突优先级声明
达梦数据库全局规则、Java编码禁令优先级高于本文件。
# DO、VO、DTO 实体开发规范(达梦8适配)
## 一、DO 数据库实体规范
1.
存放路径:domain/dataobject,命名 Xxx;
2.
基础注解:
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName("xxx")
3.
主键字段统一:
@TableId(type = IdType.ASSIGN_ID)
private String id;
4.
必须包含框架通用字段:creator、createTime、updater、updateTime、deleted;
5.
字段类型严格遵循达梦8映射规则,时间统一LocalDateTime,布尔使用Boolean;
6.
复杂数组/集合字段添加类型处理器注解:
@TableField(typeHandler = JacksonTypeHandler.class)
private List
<String>
tagList;
7.
禁止在DO中添加业务计算字段、字典翻译字段,翻译逻辑统一在RespVO处理;
8.
所有字段添加中文注释,说明业务含义。
## 二、ReqVO 请求VO规范
### 1. SaveReqVO(新增/编辑共用)
1.
命名:XxxSaveReqVO;
2.
仅包含前端可编辑业务字段,
**不包含id、租户、创建人、创建时间、软删除**
等框架字段;
3.
字段校验注解统一使用Hibernate Validator:@NotBlank、@NotNull、@Size、@Min、@Max;
4.
时间字段统一LocalDateTime;ID、编码类文本统一String;
### 2. PageReqVO(分页查询)
1.
命名:XxxPageReqVO,继承若依框架 PageParam;
2.
仅包含分页参数、业务模糊查询、状态筛选条件;
3.
禁止分页VO携带大文本、复杂数组参数;
4.
所有查询条件允许为空,不强制@NotNull。
## 三、RespVO 返回VO规范
1.
命名:XxxRespVO;
2.
包含DO全部基础字段,额外增加富化展示字段(如分类名称、字典中文名称、关联业务名称);
3.
富化字段仅用于前端展示,不参与新增/编辑保存;
4.
时间统一LocalDateTime,序列化输出标准ISO格式;
5.
字典状态字段同时返回数字编码和中文翻译,方便前端展示。
## 四、Feign DTO 传输对象规范
1.
命名:XxxDTO,存放于ruoyi-business-api模块;
2.
DTO仅存储跨服务传输必要字段,精简冗余字段;
3.
禁止将DO、VO直接作为Feign接口入参/返回值;
4.
DTO不添加数据库相关注解(@TableName、@TableId等);
5.
基础注解仅保留@Data、@Builder,按需构造无参/全参构造。
## 五、实体通用禁止项
❌ 禁止DO直接返回前端,必须通过RespVO转换;
❌ 禁止SaveReqVO携带主键ID做新增操作;
❌ 禁止DTO中使用LocalDate、Date,统一LocalDateTime;
❌ 禁止实体字段使用基本类型(int、long、boolean),统一包装类型(Integer、Long、Boolean);
❌ 禁止在VO/DTO中编写业务逻辑方法,实体仅做数据载体。
05-dev-env/code/platform/.trae/rules/01_java_error_code.md
0 → 100644
View file @
3b46fab7
---
description
:
全局错误码分段管理规范,微服务多模块隔离
globs
:
[
"
**/ErrorCodeConstants.java"
]
alwaysApply
:
false
---
# 冲突优先级声明
Java编码规范优先级高于本文件。
# 全局错误码常量规范
## 一、错误码分段规则(无BPM分段)
采用三段式数字编码:
`模块段_子模块_序号`
1.
system系统模块:1_001_001 ~ 1_001_999
用户、部门、角色、菜单、字典、登录权限相关错误;
2.
business业务模块:1_100_001 ~ 1_999_999
所有自定义业务模块错误码,每个业务子模块分配100个序号区间;
3.
通用框架错误:1_000_001 ~ 1_000_999
参数校验、幂等、文件上传、导出、远程调用通用异常。
## 二、常量定义规范
1.
统一存放于
`ErrorCodeConstants.java`
常量类;
2.
常量命名:全大写,下划线分隔,业务含义清晰;
3.
常量值严格遵循分段编码,注释写明异常提示文案;
4.
示例:
// 商品模块-商品不存在
public static final Integer GOODS_NOT_EXIST = 1_100_001;
5.
同一业务模块错误码按业务流程顺序递增,预留间隔序号便于后续扩展;
6.
禁止重复错误码,新增错误码前检查已存在常量。
## 三、异常文案规范
1.
错误提示面向业务操作人员,使用通俗中文;
2.
禁止文案包含数据库字段名、技术术语、英文编码;
3.
参数校验类文案清晰指明错误字段,例:"商品名称不能为空";
4.
远程调用、服务异常文案屏蔽底层技术细节,统一友好提示。
## 四、使用规范
1.
业务抛出异常统一使用工具类:
ServiceExceptionUtil.exception(ErrorCodeConstants.GOODS_NOT_EXIST);
2.
禁止直接在代码中写数字错误码,全部引用常量;
3.
捕获Feign远程调用异常时,透传远端错误码与提示文案;
4.
前端接收错误码,可根据特定错误码做页面特殊处理(如跳转登录、弹窗提示)。
## 五、禁止事项
❌ 禁止使用重复错误码;
❌ 禁止硬编码数字错误码,必须引用常量;
❌ 禁止文案暴露底层技术、数据库、服务名称;
❌ 禁止跨模块混用错误码分段,严格按区间分配;
❌ 禁止新增BPM流程相关错误码分段。
05-dev-env/code/platform/.trae/rules/01_java_idempotent.md
0 → 100644
View file @
3b46fab7
---
description
:
分布式幂等注解 @Idempotent 使用规范,基于Redis实现微服务防重复提交
globs
:
[
"
**/controller/**/*.java"
]
alwaysApply
:
false
---
# 冲突优先级声明
Controller三层规范、Java编码规范优先级高于本文件。
# 分布式幂等防重复提交规范
## 一、注解基础说明
使用项目自定义
`@Idempotent`
注解,基于Redis实现分布式幂等控制,防止用户快速重复点击、网络重试造成重复新增、重复扣款、重复生成数据问题,适配微服务多实例集群环境。
## 二、注解属性配置规范
1.
expireTime:幂等key过期时间,单位秒;
-
新增、编辑表单:默认5秒;
-
提交复杂业务、导出任务:设置30~60秒;
2.
message:重复提交时返回的提示文案,示例:"请勿重复提交表单";
3.
keyType:幂等key生成策略:
-
TOKEN:基于用户登录Token + 接口路径(表单页面通用);
-
PARAM:基于指定请求参数(唯一编码、订单号等唯一性字段)。
## 三、强制添加幂等注解的接口
1.
POST /create 新增业务数据接口;
2.
PUT /update 修改核心业务数据接口;
3.
状态变更、数据生成、批量处理接口;
4.
APP端表单提交、订单创建类接口;
## 四、使用约束
1.
注解仅添加在Controller接口方法上;
2.
所有面向用户提交、可重复点击的写接口,必须配置@Idempotent;
3.
读接口(分页查询、详情查询、导出)无需添加幂等注解;
4.
Redis统一使用国产化分布式缓存,不依赖境外Redis商业版本;
5.
幂等key自动绑定当前登录用户,用户之间互不干扰。
## 五、禁止事项
❌ 新增、编辑、业务提交接口不添加幂等注解,存在重复提交风险;
❌ 自定义本地内存锁替代分布式Redis幂等,集群多实例失效;
❌ 幂等提示文案使用技术术语,必须使用通俗易懂业务提示;
❌ 导出、单纯查询接口滥用@Idempotent注解,浪费Redis资源。
05-dev-env/code/platform/.trae/rules/01_java_mapper_dm8.md
0 → 100644
View file @
3b46fab7
---
description
:
Mapper接口与XML规范,适配达梦8分页、函数、语法
globs
:
[
"
**/*Mapper.java"
,
"
**/*Mapper.xml"
]
alwaysApply
:
false
---
# 冲突优先级声明
达梦数据库全局规则优先级最高,其次为Java编码规范。
# Mapper层开发规范(达梦8专属适配)
## 一、Mapper接口规范
1.
存放路径:mapper,命名 XxxMapper;
2.
自定义查询方法命名规范:
-
selectXxxByXxx:单条件查询列表
-
countXxxByXxx:统计数量
-
deleteXxxBatch:批量删除
-
updateXxxBatch:批量更新
4.
方法入参:单参数直接传;多参数使用@Param("xxx")注解;
5.
禁止在Mapper接口编写业务逻辑,仅做数据库CRUD操作。
## 二、Mapper XML 文件规范
1.
XML与Mapper接口同目录,文件名与接口名完全一致 XxxMapper.xml;
2.
namespace 严格对应Mapper接口全类名;
3.
通用字段复用sql片段,抽取公共查询列、通用条件:
<sql
id=
"common_column"
>
id, creator, create_time, updater, update_time, deleted
</sql>
4.
分页查询统一使用达梦分页语法 OFFSET #{offset} LIMIT #{pageSize},禁止MySQL逗号分页;
5.
函数统一使用达梦内置函数 NVL、TO_CHAR、SYSDATE,禁止IFNULL、DATE_FORMAT、NOW();
6.
所有SQL关键字大写(SELECT、FROM、WHERE、LEFT JOIN、ORDER BY),字段、表名下划线小写;
7.
禁止写SELECT
*
,必须明确查询需要的字段,减少IO开销。
## 三、MyBatis-Plus Wrapper 查询规范
1.
业务查询统一使用 LambdaQueryWrapperX、LambdaUpdateWrapperX,项目封装适配达梦;
2.
等值查询:eq;模糊查询:like;范围查询:ge、le;
3.
多条件拼接使用链式调用,禁止硬编码SQL字符串;
4.
分页查询调用 mapper.selectPage(page, wrapper),分页参数由上层PageParam转换;
5.
批量操作优先使用BaseMapperX提供的批量方法:insertBatch、updateBatchById。
## 四、达梦适配强制约束
1.
不使用自增主键、序列,主键由框架雪花ID生成;
2.
关联查询多表时,表别名简洁(t1、t2),避免关键字冲突;
3.
文本模糊查询长度适配达梦VARCHAR,超长文本使用TEXT字段查询;
4.
批量操作单次数据量控制在500条以内,防止达梦事务压力过大;
5.
禁止在XML中使用MySQL专属注释、引擎、字符集配置。
## 五、Mapper开发禁止项
❌ 禁止继承原生BaseMapper,必须BaseMapperX;
❌ 禁止SELECT
*
查询所有字段;
❌ 禁止MySQL分页、MySQL专属函数;
❌ 禁止循环调用Mapper单条操作,统一批量方法;
❌ 禁止在XML中硬编码租户ID、软删除条件,统一框架自动填充;
❌ 禁止存储过程、复杂函数在XML中调用,业务逻辑下沉Service层。
05-dev-env/code/platform/.trae/rules/01_java_naming.md
0 → 100644
View file @
3b46fab7
---
description
:
Java类、方法、数据库表、接口路径、权限标识全量命名规范(若依微服务+达梦8,无会议/BPM)
globs
:
[
"
**/*.java"
,
"
**/*.sql"
,
"
**/*.yml"
]
alwaysApply
:
false
---
# 冲突优先级声明
达梦数据库规范、Java编码禁令优先级高于本文件。
# 全项目统一命名规范
## 一、Java类命名
| 类类型 | 命名格式 | 示例 |
| ---- | ---- | ---- |
| 数据库DO实体 | {业务}DO | GoodsDO |
| 创建更新请求VO | {业务}SaveReqVO | GoodsSaveReqVO |
| 分页查询请求VO | {业务}PageReqVO | GoodsPageReqVO |
| 响应VO | {业务}RespVO | GoodsRespVO |
| Feign远程DTO | {业务}DTO | GoodsDTO |
| Service接口 | {业务}Service | GoodsService |
| Service实现 | {业务}ServiceImpl | GoodsServiceImpl |
| Mapper接口 | {业务}Mapper | GoodsMapper |
| 转换类Convert | {业务}Convert | GoodsConvert |
| 枚举类 | {业务}Enum | GoodsStatusEnum |
| 错误码常量 | ErrorCodeConstants | 统一文件追加 |
| Controller后台 | {业务}AdminController | GoodsAdminController |
| Controller移动端APP | {业务}AppController | GoodsAppController |
## 二、Service方法命名统一标准
| 功能 | 方法名 | 返回值 |
| ---- | ---- | ---- |
| 新增创建 | create{Entity} | String(雪花ID) |
| 更新 | update{Entity} | void |
| 删除单条 | delete{Entity} | void |
| 批量删除 | delete{Entity}ListByIds | void |
| 根据ID查询(不存在抛异常) | get{Entity} | DO实体 |
| 根据ID查询(允许空) | get{Entity}IfExists | DO实体 |
| 分页查询 | get{Entity}Page | PageResult
<DO>
|
## 三、达梦8数据库命名规范
1.
业务表前缀
`business_`
,格式
`business_{模块}_{业务}`
,全小写蛇形;
示例:
`business_goods_info`
、
`business_user_address`
2.
字段全小写蛇形,与DO驼峰字段一一映射;
3.
索引命名:普通索引
`idx_字段名`
;唯一索引
`uk_字段名`
;
4.
字典系统表复用若依自带
`sys_dict_type`
、
`sys_dict_data`
,不新建字典表。
## 四、微服务接口路径命名
1.
管理后台接口:
`/api/admin/{模块}/{业务}`
示例:
`/api/admin/business/goods`
2.
APP移动端接口:
`/api/app/{模块}/{业务}`
示例:
`/api/app/business/goods`
3.
CRUD固定后缀:
创建 POST
`/create`
;更新 PUT
`/update`
;删除 DELETE
`/delete`
;
查询单条 GET
`/get`
;分页 GET
`/page`
;导出 GET
`/export-excel`
## 五、权限标识命名(Sa-Token)
格式:
`{模块}:{业务}:{操作}`
操作固定枚举:create / update / delete / query / export
示例:
`business:goods:create`
、
`business:goods:query`
## 六、常量&魔法值命名
1.
业务状态全部枚举类,禁止硬编码数字;
2.
全局固定阈值、模板ID、字典Key统一放入XXXConstants常量类;
3.
错误码分段规范:
-
system系统模块:1_001_xxx_xxx
-
business业务模块:1_100_xxx_xxx
## 七、前端文件命名
1.
Vue后台列表页面:index.vue;表单抽屉:XxxFormDrawer.vue;详情抽屉:XxxDetailDrawer.vue;
2.
UniApp APP页面:短横线kebab-case命名;
3.
API类型文件:types.ts;接口请求文件:index.ts。
05-dev-env/code/platform/.trae/rules/01_java_operate_log.md
0 → 100644
View file @
3b46fab7
---
description
:
若依框架操作日志注解 @ApiAccessLog 使用规范
globs
:
[
"
**/controller/**/*.java"
]
alwaysApply
:
false
---
# 冲突优先级声明
Controller三层规范、Java编码规范优先级高于本文件。
# 操作日志 @ApiAccessLog 使用规范
## 一、注解基础说明
使用若依内置注解
`@ApiAccessLog`
,自动记录操作人、操作时间、接口地址、请求参数、操作类型、耗时,满足信创等保审计日志要求。
## 二、注解必填属性规范
1.
title:必填,模块业务中文名称,例:"商品管理";
2.
operateType:操作类型枚举,可选值:
-
CREATE:新增
-
UPDATE:编辑修改
-
DELETE:删除
-
EXPORT:导出Excel
-
QUERY:查询(分页/详情)
3.
saveRequestData:布尔值,默认true,记录请求参数;敏感接口(含身份证、手机号)设置为false,防止日志泄露隐私。
## 三、接口注解使用强制规则
1.
以下接口
**必须添加@ApiAccessLog**
:
-
POST /create 新增
-
PUT /update 编辑
-
DELETE /delete 删除
-
GET /export-excel 导出
2.
查询接口(分页、详情)按需添加,内部管理系统建议全部记录;APP端普通查询可省略日志注解;
3.
注解仅允许添加在Controller接口方法上,禁止在Service、Mapper层使用。
## 四、日志脱敏规范
1.
接口参数包含手机号、身份证、银行卡、家庭地址等敏感字段时:
1.
@ApiAccessLog(saveRequestData = false) 关闭参数记录;
2.
或全局配置日志脱敏规则,自动隐藏敏感信息中间字符;
2.
生产环境日志持久化存储,保留至少6个月审计日志,符合信创等保三级要求。
## 五、禁止事项
❌ 新增/修改/删除/导出接口不添加操作日志注解;
❌ 在Service、Mapper、Convert等非Controller层使用日志注解;
❌ 敏感隐私接口完整记录明文身份证、手机号;
❌ 自定义日志打印替代框架统一@ApiAccessLog日志,分散审计日志。
05-dev-env/code/platform/.trae/rules/01_java_ruoyi_cloud_architecture.md
0 → 100644
View file @
3b46fab7
## 4、01_java_ruoyi_cloud_architecture.mdc
```mdc
---
description: 若依RuoYi-Vue-Cloud微服务工程分层、模块分包、Nacos/Feign/Gateway规范(无BPM模块)
globs:
[
"**/*.java","**/pom.xml","**/application.yml","**/bootstrap.yml"
]
alwaysApply: false
---
# 冲突优先级声明
达梦数据库、Java编码禁令优先级高于本文件;本文件规范优先级高于通用全栈协作规则。
# 若依微服务工程架构规范(RuoYi-Vue-Cloud)
## 一、标准模块拆分(移除ruoyi-bpm流程模块)
1.
`ruoyi-gateway`
网关模块:路由转发、鉴权、跨域、限流、请求日志;
2.
`ruoyi-system`
系统基础模块:用户、部门、角色、菜单、字典、操作日志;
3.
`ruoyi-business-api`
业务公共API模块:Feign远程调用DTO、接口定义(仅接口、DTO,无业务实现);
4.
`ruoyi-business-server`
业务实现服务模块:所有业务CRUD、ServiceImpl、Mapper、DO;
5.
`ruoyi-common`
通用工具模块:常量、工具类、异常、枚举、全局返回体;
6.
`ruoyi-admin`
管理后台前端;
`ruoyi-app`
UniApp移动端前端。
## 二、包结构标准(business-server业务模块)
com.ruoyi.business.{业务模块名}
├── controller 业务控制器(统一继承 BaseController,区分后台 / APP 接口)
├── domain 数据库实体 DO(达梦表映射实体,替换旧 dal/dataobject)
├── domain/vo 各类vo
├── mapper Mapper 接口(MyBatis-Plus 接口)
├── service
│ ├── impl ServiceImpl 业务实现类
│ └── 业务 Service 接口
├── convert 对象转换 Convert 类
├── enums 业务枚举、错误码常量
├── util 业务工具类
ruoyi-modules/ruoyi-busi/src/main/resources
├── mapper/busi Mapper.xml SQL 映射文件
├── application-dev.yml 开发环境配置
├── bootstrap.yml 启动配置
## 三、微服务核心组件规范
### 1. Nacos配置中心
1.
所有环境配置(数据库连接、Redis、Feign超时、线程池)存入Nacos;
2.
bootstrap.yml仅配置Nacos地址、命名空间、集群;application.yml仅少量本地默认值;
3.
区分开发、测试、生产Nacos命名空间,生产配置加密存储(国产加密算法);
4.
达梦数据库连接池配置统一在Nacos,适配达梦驱动参数。
### 2. Feign远程调用(跨模块)
1.
跨服务调用仅允许通过
\`
ruoyi-business-api
\`
定义Feign接口;
2.
API模块仅存放接口、DTO数据传输对象,无任何业务实现代码;
3.
Server模块之间禁止直接依赖,只能依赖对应API模块;
4.
Feign调用异常统一捕获,使用若依全局异常处理,返回标准化CommonResult;
5.
Feign超时、重试策略在Nacos统一配置,适配微服务分布式场景。
### 3. Gateway网关
1.
所有接口请求统一经过网关,不允许服务直连访问;
2.
网关统一处理Sa-Token鉴权、跨域、接口限流、请求参数脱敏;
3.
路由规则区分admin后台、app移动端、内部服务接口;
4.
网关日志记录请求来源、耗时、操作人,满足信创等保审计要求。
### 4. Sa-Token 微服务鉴权
1.
管理后台、APP端使用两套独立Token体系,权限隔离;
2.
接口必须添加
\`
@PreAuthorize("@ss.hasPermission('模块:业务:操作')")
\`
权限校验;
3.
APP移动端仅开放查询、提交保存等基础权限,禁止后台管理类权限;
4.
分布式会话存储Redis,适配多实例微服务集群。
## 四、微服务部署&信创适配
1.
所有服务打包为jar镜像,支持鲲鹏/飞腾国产CPU容器化部署;
2.
中间件国产化:Nacos国产适配版、东方通/TongWeb替代Tomcat;
3.
Redis使用国产分布式缓存,禁用海外Redis企业版;
4.
服务日志输出适配国产日志采集工具,日志脱敏敏感信息;
5.
容器镜像不依赖海外Docker镜像源,全部本地化信创镜像。
## 五、模块依赖禁止事项
❌ 禁止server模块互相直接依赖;跨模块仅依赖xxx-api;
❌ 禁止将业务实现代码写入api模块;
❌ 禁止硬编码环境地址、数据库连接,全部Nacos配置;
❌ 禁止Feign接口传DO数据库实体,统一使用隔离DTO;
❌ 禁止APP端Controller开放后台管理权限接口;
❌ 禁止微服务多实例本地缓存存储状态,分布式状态统一Redis;
❌ 禁止引入Flowable、BPM流程相关依赖包。
\ No newline at end of file
05-dev-env/code/platform/.trae/rules/01_java_service_controller.md
0 → 100644
View file @
3b46fab7
---
description
:
Controller、Service、ServiceImpl三层代码模板规范,微服务鉴权、多租户适配
globs
:
[
"
**/controller/**/*.java"
,
"
**/service/**/*.java"
]
alwaysApply
:
false
---
# 冲突优先级声明
Java编码、达梦实体规范优先级高于本文件。
# Controller & Service & ServiceImpl 三层开发规范
## 一、Controller 分层规范
### 1. 基础约束
1.
存放路径:controller/;
2.
AdminController:@RestController + @RequestMapping("/api/admin/business/xxx");
3.
AppController:@RestController + @RequestMapping("/api/app/business/xxx");
4.
统一添加 @Tag 接口文档注解,标注模块名称;
5.
依赖注入仅注入对应Service,禁止直接注入Mapper、Feign(Feign在Service层注入);
6.
接口权限校验:@PreAuthorize("@ss.hasPermission('business:goods:query')");
7.
APP端接口不添加后台管理类权限标识,仅做登录Token校验。
### 2. 标准CRUD接口模板
1.
新增 POST /create:入参SaveReqVO,返回雪花ID;添加@Idempotent、@ApiAccessLog;
2.
更新 PUT /update:入参SaveReqVO(携带id);添加@Idempotent、@ApiAccessLog;
3.
删除 DELETE /delete/{id}:路径ID,添加@ApiAccessLog;
4.
分页查询 GET /page:入参PageReqVO,返回PageResult
<XxxRespVO>
;
5.
单条详情 GET /get/{id}:返回XxxRespVO;
6.
导出 GET /export-excel:分页查询数据,导出Excel,添加导出权限校验。
### 3. Controller禁止项
❌ 禁止Controller编写业务逻辑、数据库查询;
❌ 禁止Controller捕获业务异常,全局统一异常处理器处理;
❌ 禁止Controller直接注入Mapper、Feign接口;
❌ 禁止Admin与APP接口写在同一个Controller;
❌ 禁止接口路径、权限标识混用后台与移动端。
## 二、Service 接口规范
1.
存放路径:service包,命名 XxxService;
2.
仅定义业务抽象方法,不编写实现逻辑;
3.
方法返回值规范:
-
新增:String(雪花ID)
-
更新/删除:void
-
单条查询:XxxDO(不存在抛异常)
-
分页查询:PageResult
<XxxDO>
4.
所有方法添加中文Javadoc注释,写明入参、返回值、异常场景;
5.
跨服务远程调用方法,在Service接口定义对应方法。
## 三、ServiceImpl 实现类规范
1.
存放路径:service/impl,命名 XxxServiceImpl,实现XxxService;
2.
添加 @Service 注解;
3.
依赖注入:@Resource 注入Mapper、Feign接口、其他Service;
4.
业务分层逻辑:
1.
参数校验(非空、长度、状态合法性);
2.
数据库CRUD操作,批量数据处理;
3.
跨服务Feign远程调用;
4.
数据转换DO ↔ VO/DTO;
5.
组装分页、返回结果;
5.
多租户自动过滤:使用MyBatis-Plus租户插件,无需手动拼接租户条件;
6.
不存在数据统一抛出业务异常,禁止返回null。
## 四、通用三层统一约束
1.
入参校验统一使用Hibernate Validator注解,Controller层自动校验;
2.
所有分页返回统一包装 PageResult,包含总条数、当前页、数据列表;
3.
时间、创建人等公共字段由MyBatis-Plus自动填充,无需手动set;
4.
软删除统一框架逻辑删除,ServiceImpl不手动修改deleted字段。
05-dev-env/code/platform/.trae/rules/03_vue_ruoyi_admin.md
0 → 100644
View file @
3b46fab7
---
description
:
若依Vue3管理后台前端规范(Element Plus)
globs
:
[
"
**/ruoyi-admin/**/*.vue"
,
"
**/ruoyi-admin/**/*.ts"
]
alwaysApply
:
false
---
# 冲突优先级声明
全局前后端协作规范优先级高于本文件。
# 若依Vue3后台前端开发规范
## 一、页面目录结构规范
页面存放路径
`views/{业务模块}/`
,目录拆分:
1.
index.vue:列表主页面(搜索栏、表格、新增/编辑弹窗入口);
2.
XxxFormDrawer.vue:新增、编辑抽屉表单;
3.
XxxDetailDrawer.vue:详情查看抽屉;
4.
components/:页面内部复用小型组件,不全局公用;
5.
api/:当前模块接口请求文件;
6.
types.ts:当前模块TS类型定义。
## 二、页面基础框架规范
统一使用项目封装通用列表组件
`SqSearchTableFrame`
,内置搜索区、表格、分页、新增/删除按钮插槽;
1.
搜索表单使用el-form-item,搜索项控制在6个以内,多余折叠;
2.
表格列使用el-table-column,字典状态列使用
<dict-tag
/>
自动翻译;
3.
表格操作列统一封装操作按钮组件,区分查看、编辑、删除;
4.
删除、批量删除按钮绑定二次确认弹窗,提示用户确认操作;
5.
分页统一使用框架封装分页组件,参数pageNum、pageSize与后端PageReqVO对齐。
## 三、表单抽屉规范
1.
新增/编辑共用一套FormDrawer组件,通过入参id区分新增/编辑;
2.
表单校验使用el-form内置rules校验,必填项标红
*
;
3.
下拉选择、状态选择统一使用字典接口回显,禁止硬编码选项;
4.
表单提交统一调用封装api,成功后关闭抽屉并刷新表格列表;
5.
复杂多行数据使用el-table内嵌表单行,支持新增、删除子行。
## 四、TS类型规范
1.
types.ts 统一定义PageReq、SaveReq、Resp类型,与后端VO字段完全一致;
2.
所有ID字段定义为string,避免雪花ID数字精度丢失;
3.
状态枚举直接复用后端字典编码,前端不单独维护状态数字;
4.
接口请求统一封装axios工具,请求参数、返回值绑定TS类型。
## 五、前端通用禁止项
❌ 禁止页面硬编码字典状态、业务枚举数字;
❌ 禁止手动拼接接口地址,统一api文件导出请求方法;
❌ 禁止表单不做前端必填校验,仅依赖后端校验;
❌ 禁止表格操作无二次确认弹窗(删除、批量删除);
❌ 禁止TS类型中ID使用number类型,防止雪花ID精度丢失。
05-dev-env/code/platform/ruoyi-modules/pom.xml
View file @
3b46fab7
...
@@ -11,8 +11,9 @@
...
@@ -11,8 +11,9 @@
<modules>
<modules>
<module>
ruoyi-system
</module>
<module>
ruoyi-system
</module>
<module>
ruoyi-gen
</module>
<module>
ruoyi-gen
</module>
<module>
ruoyi-job
</module>
<module>
ruoyi-job
</module>
<module>
ruoyi-file
</module>
<module>
ruoyi-file
</module>
<module>
ruoyi-busi
</module>
</modules>
</modules>
<artifactId>
ruoyi-modules
</artifactId>
<artifactId>
ruoyi-modules
</artifactId>
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论