This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
CGTM(代码生成模板市场)是基于 Apache Velocity 的代码生成模板仓库,为 PIGX 框架提供后端(Java/Spring Boot)和前端(Vue 3/TypeScript)的 CRUD 代码生成模板。本仓库不包含可构建的应用代码,仅包含 Velocity 模板文件(.java, .vue, .ts, .xml, .sql)。
许可证:AGPL 3.0,仅对 PIGX 用户免费。
single/ # 单表增删改查模板(Controller, Service, Mapper, Entity, 表格.vue, 表单.vue)
multiple/ # 主子表增删改查模板(主子Controller, 主子Service, 主/子实体, 主子表格/表单.vue)
common/ # 共享模板(api.ts, 权限菜单.sql, i18n模板, vform)
config.json # 模板组配置 — 定义模板名称、源文件路径和生成输出路径的映射
本仓库是纯模板仓库,没有 package.json、pom.xml 或任何构建系统。无需运行 build、lint 或 test 命令。修改后直接 git commit 即可。
$ClassName、${field.attrName}#foreach ($field in $fieldList) ... #end、#if($condition) ... #end、#set($var = value)## 行注释$str(字符串工具)、$dateTool(日期工具)、$math(数学工具)模板在代码生成时可使用以下变量:
路径与模块: backendPath, frontendPath, packagePath, moduleName, functionName
类与表: ClassName/className, tableName, tableComment, pk(主键字段)
字段列表: fieldList(全部字段)、primaryList、formList、gridList、queryList
字段属性: fieldName(SQL列名)、attrName/attrType(Java属性)、fieldComment、primaryPk、autoFill、baseField、formItem、formRequired、formType、formValidator、gridItem、gridSort、queryItem、queryType、fieldDict、hidden
主子表专用: childFieldList、childTableName、mainField、childField、ChildClassName/childClassName
环境标志: isSpringBoot3(Spring Boot 3.x 兼容)、isTenant(多租户支持)
Controller(REST + 权限 + 审计日志)→ Service 接口 → ServiceImpl → Mapper(MyBatis-Plus)→ Entity(Active Record 模式)
关键特性:
Model<T>,使用 @TableId(ASSIGN_ID)、@TableField(fill=...)、@TableLogic@PreAuthorize("@pms.hasPermission(...)")、@SysLog、@ResponseExcel/@RequestExcelMPJDeepService 处理关联查询,@Transactional 管理事务@TenantTable 注解条件启用表格组件(index.vue,数据展示+查询+导出)+ 表单组件(form.vue,Dialog 新增/编辑)+ API 客户端(api.ts)
关键特性:
<script setup lang="ts"> + Element Plus 组件useTable、useDict、useMessagev-authconfig.json 定义两个模板组,每项包含:
templateName:模板显示名称generatorPath:生成输出路径(使用 ${backendPath}、${packagePath} 等变量)templateFile:模板源文件相对路径修改或新增模板时,必须同步更新 config.json 中对应的映射关系。
#if、#foreach 等)必须正确闭合 #end$field.xxx 引用的属性必须是上下文变量中存在的字段属性isSpringBoot3 条件分支:Spring Boot 2.x 和 3.x 的 import 路径不同(如 javax.validation vs jakarta.validation)childFieldList 和 fieldList 是不同的列表,分别对应子表和主表字段表格.vue、主子表单.vue),这是项目约定,不要重命名