feat(generator): 优化模板生成逻辑并添加新功能
- 改进 index.tsx 模板,增加智能字段检测和条件性功能生成 - 修复字段注释为空时模板渲染失败的问题 - 添加自动更新 app.config.ts 页面路径的功能 - 新增 ShopArticle相关的实体、Mapper、Service 等代码 - 优化 add.tsx 和 add.config.ts模板,提高用户体验
This commit is contained in:
91
docs/TEMPLATE_FIXES.md
Normal file
91
docs/TEMPLATE_FIXES.md
Normal file
@@ -0,0 +1,91 @@
|
||||
# 模板修复说明
|
||||
|
||||
## 🔧 修复的问题
|
||||
|
||||
### 1. 字段注释为空的问题
|
||||
|
||||
**问题描述**:
|
||||
- 当数据库表的字段没有注释时,模板渲染会失败
|
||||
- 错误信息:`field.comment为空`
|
||||
|
||||
**修复内容**:
|
||||
|
||||
#### add.tsx.btl 模板
|
||||
- **修复前**:`${field.comment!}` - 注释为空时显示空字符串
|
||||
- **修复后**:`${field.comment!'字段'}` - 注释为空时显示默认值
|
||||
|
||||
具体修改:
|
||||
```typescript
|
||||
// 标签显示
|
||||
label="${field.comment!field.propertyName}"
|
||||
|
||||
// 输入框提示
|
||||
placeholder="请输入${field.comment!'字段'}"
|
||||
placeholder="请输入${field.comment!'内容'}"
|
||||
|
||||
// 条件判断
|
||||
<% if(field.propertyType == 'String' && field.comment?? && (field.comment?contains('描述') || field.comment?contains('备注') || field.comment?contains('内容'))){ %>
|
||||
```
|
||||
|
||||
#### 配置文件模板
|
||||
- **index.config.ts.btl**:`'${table.comment!'数据'}管理'`
|
||||
- **add.config.ts.btl**:`'新增${table.comment!'数据'}'`
|
||||
|
||||
### 2. 智能 userId 字段检测
|
||||
|
||||
**问题描述**:
|
||||
- 所有表都生成设置 userId 的代码,即使表中没有 user_id 字段
|
||||
|
||||
**修复内容**:
|
||||
|
||||
#### controller.java.btl 模板
|
||||
添加了字段检测逻辑:
|
||||
```java
|
||||
<% var hasUserIdField = false; %>
|
||||
<% for(field in table.fields){ %>
|
||||
<% if(field.propertyName == 'userId'){ %>
|
||||
<% hasUserIdField = true; %>
|
||||
<% } %>
|
||||
<% } %>
|
||||
<% if(hasUserIdField){ %>
|
||||
// 记录当前登录用户id
|
||||
User loginUser = getLoginUser();
|
||||
if (loginUser != null) {
|
||||
${table.entityPath}.setUserId(loginUser.getUserId());
|
||||
}
|
||||
<% } %>
|
||||
```
|
||||
|
||||
## ✅ 修复效果
|
||||
|
||||
### 1. 空注释处理
|
||||
- **有注释的字段**:正常显示字段注释
|
||||
- **无注释的字段**:显示字段名或默认提示文本
|
||||
- **空表注释**:显示"数据"作为默认值
|
||||
|
||||
### 2. 智能 userId 处理
|
||||
- **有 user_id 字段的表**:生成完整的用户ID设置代码
|
||||
- **无 user_id 字段的表**:不生成用户ID相关代码
|
||||
|
||||
## 🎯 Beetl 模板语法说明
|
||||
|
||||
### 空值处理
|
||||
- `${field.comment!}` - 为空时显示空字符串
|
||||
- `${field.comment!'默认值'}` - 为空时显示默认值
|
||||
- `${field.comment!field.propertyName}` - 为空时显示字段名
|
||||
|
||||
### 条件判断
|
||||
- `field.comment??` - 检查字段是否不为null
|
||||
- `field.comment?contains('文本')` - 检查字段是否包含指定文本
|
||||
|
||||
### 变量定义
|
||||
- `<% var hasUserIdField = false; %>` - 定义布尔变量
|
||||
- `<% if(hasUserIdField){ %>` - 条件判断
|
||||
|
||||
## 🚀 使用建议
|
||||
|
||||
1. **数据库设计**:建议为表和字段添加有意义的注释
|
||||
2. **模板测试**:生成代码前先测试模板在各种数据情况下的表现
|
||||
3. **错误处理**:模板中添加适当的默认值和空值处理
|
||||
|
||||
现在模板更加健壮,能够处理各种边界情况!
|
||||
Reference in New Issue
Block a user