All skills
alffei avatar

/ruoyi-code-generator

@8ea12f3
by Andrew Chenalffei/skill_share68 stars
17

基于若依(RuoYi)框架规范生成 CRUD 代码。当用户需要为数据表生成后端Java代码(实体类、Mapper、Service、Controller)、 前端Vue代码(列表页、API封装)、MyBatis XML映射文件或菜单初始化SQL时使用此技能。 适用于: 创建新模块、添加业务功能、根据表结构生成代码等场景。

Use this Skill: https://skilld.dev/gh/alffei/skill_share/ruoyi-code-generator

This session only. Nothing lands on disk.

referencescoding-standards.md

≈1.6k tokens on demand. Your agent reads this file only when SKILL.md points to it.

RuoYi 代码生成规范参考

一、命名规范

1.1 表命名规范

规则 说明 示例
前缀规范 使用模块名作为前缀 sys_user, biz_order
命名风格 小写字母 + 下划线分隔 product_category
表注释 必须添加中文注释 产品分类表

1.2 字段命名规范

规则 说明 示例
主键 表名单数 + _id user_id, order_id
创建时间 create_time datetime 类型
更新时间 update_time datetime 类型
创建者 create_by varchar(64)
更新者 update_by varchar(64)
备注 remark varchar(500)
状态 status char(1): 0=正常, 1=停用
删除标志 del_flag char(1): 0=存在, 2=删除

1.3 Java 命名规范

类型 规则 示例
类名 大驼峰,表名去前缀 sys_user → SysUser
变量名 小驼峰 userName, createTime
常量 全大写 + 下划线 MAX_RETRY_COUNT
包名 全小写 com.ruoyi.system

二、数据类型映射

2.1 MySQL → Java 类型映射

bigint          → Long
int/integer     → Integer
smallint        → Integer
tinyint         → Integer
tinyint(1)      → Boolean (自动识别布尔类型)
varchar/char    → String
text/longtext   → String
datetime        → Date
timestamp       → Date
date            → Date
decimal/numeric → BigDecimal
float           → Float
double          → Double
blob            → byte[]

2.2 Java → HTML 控件映射

String   → input (默认)
String   → textarea (长度 > 500 或字段名含 content/remark)
String   → select (有字典类型)
String   → radio (状态类字段)
Date     → datetime (日期时间选择器)
Long     → input[type=number]
Integer  → input[type=number]

三、权限配置规范

3.1 权限标识格式

格式: {moduleName}:{businessName}:{操作类型}

操作类型:
- list    查询列表
- query   查询详情
- add     新增
- edit    修改
- remove  删除
- export  导出

3.2 示例

// 产品管理模块
@PreAuthorize("@ss.hasPermi('product:product:list')")    // 查询
@PreAuthorize("@ss.hasPermi('product:product:query')")   // 详情
@PreAuthorize("@ss.hasPermi('product:product:add')")     // 新增
@PreAuthorize("@ss.hasPermi('product:product:edit')")    // 修改
@PreAuthorize("@ss.hasPermi('product:product:remove')")  // 删除
@PreAuthorize("@ss.hasPermi('product:product:export')")  // 导出

四、目录结构规范

4.1 后端目录结构

ruoyi-{module}/
└── src/main/java/com/ruoyi/{module}/
    ├── controller/          # 控制器
    │   └── {ClassName}Controller.java
    ├── domain/              # 实体类
    │   └── {ClassName}.java
    ├── mapper/              # Mapper接口
    │   └── {ClassName}Mapper.java
    └── service/             # 服务层
        ├── I{ClassName}Service.java
        └── impl/
            └── {ClassName}ServiceImpl.java

ruoyi-{module}/
└── src/main/resources/
    └── mapper/{module}/
        └── {ClassName}Mapper.xml

4.2 前端目录结构

ruoyi-ui/
└── src/
    ├── api/{moduleName}/     # API接口
    │   └── {businessName}.js
    └── views/{moduleName}/   # 页面组件
        └── {businessName}/
            └── index.vue

五、代码规范

5.1 Controller 规范

@RestController
@RequestMapping("/{moduleName}/{businessName}")
public class {ClassName}Controller extends BaseController {
    
    @Autowired
    private I{ClassName}Service {className}Service;
    
    // 1. 查询列表 - GET /list
    // 2. 查询详情 - GET /{id}
    // 3. 新增     - POST
    // 4. 修改     - PUT
    // 5. 删除     - DELETE /{ids}
    // 6. 导出     - POST /export
}

5.2 Service 规范

public interface I{ClassName}Service {
    // 查询单条
    {ClassName} select{ClassName}By{PkField}({PkType} {pkField});
    
    // 查询列表
    List<{ClassName}> select{ClassName}List({ClassName} {className});
    
    // 新增
    int insert{ClassName}({ClassName} {className});
    
    // 修改
    int update{ClassName}({ClassName} {className});
    
    // 删除单条
    int delete{ClassName}By{PkField}({PkType} {pkField});
    
    // 批量删除
    int delete{ClassName}By{PkField}s({PkType}[] {pkField}s);
}

5.3 Mapper XML 规范

<!-- 结果映射 -->
<resultMap type="{ClassName}" id="{ClassName}Result">
    <id property="{pkField}" column="{pk_column}" />
    <result property="{javaField}" column="{column_name}" />
</resultMap>

<!-- 通用查询 SQL 片段 -->
<sql id="select{ClassName}Vo">
    select {字段列表} from {tableName}
</sql>

六、字典配置规范

6.1 常用字典类型

字典类型 说明 字典值
sys_normal_disable 状态 0=正常, 1=停用
sys_yes_no 是否 Y=是, N=否
sys_show_hide 显示隐藏 0=显示, 1=隐藏
sys_notice_type 通知类型 1=通知, 2=公告
sys_oper_type 操作类型 0=其它, 1=新增...

6.2 自定义字典配置

-- 插入字典类型
INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
VALUES ('产品分类', 'product_category', '0', 'admin', sysdate(), '产品分类字典');

-- 插入字典数据
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, status, create_by, create_time)
VALUES (1, '电子产品', '1', 'product_category', '0', 'admin', sysdate());

七、注意事项

7.1 安全规范

  • ✅ 所有接口必须添加权限注解
  • ✅ 删除操作必须记录日志
  • ✅ 敏感字段不在列表展示
  • ❌ 禁止 SQL 注入风险代码
  • ❌ 禁止硬编码敏感信息

7.2 性能规范

  • ✅ 列表查询使用分页
  • ✅ 大数据量导出使用异步
  • ✅ 避免 N+1 查询问题
  • ❌ 禁止在循环中查询数据库

7.3 事务规范

  • ✅ 主子表操作使用 @Transactional
  • ✅ 只读操作使用 @Transactional(readOnly = true)
  • ❌ 禁止事务方法内捕获异常不抛出

Source: SKILL.md on GitHub

No alerts5mo5 checks · Risk SAFE
  • Gen Agent Trust Hub7mo

    This skill is a template-based code generator for the RuoYi framework. It does not execute code, perform network requests, or access sensitive files. It includes security best practices like generating authorization annotations and logging for critical operations in the resulting code.

  • Socket6mo

    No alerts

  • Snyk7mo

    Risk: LOW · No issues

  • Runlayer7mo

    12 files scanned · No issues

  • ZeroLeaks5mo

    Score: 93/100 · 2 sections analyzed

Signed by skilld at 8ea12f3. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 2 months ago.

Dormantupdated 8 months ago

README badge

README badge for alffei/skill_share/ruoyi-code-generator