Ver Fonte

规范命名

SpringSunYY há 4 meses atrás
pai
commit
8f596c07f9

+ 65 - 41
ruoyi_generator/util.py

@@ -471,17 +471,21 @@ class GenUtils:
                             query_cols = None
                             required_cols = None
                         
+                        # 预计算双驼峰命名的类名,避免模板中重复调用
+                        class_name_pascal = to_camel_case(table.class_name)
+                        
                         context = {
                             'table': table,
                             'datetime': datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
                             'underscore': to_underscore,  # 下划线命名工具
                             'capitalize_first': capitalize_first,  # 首字母大写工具
-                            'to_camel_case': to_camel_case,  # 新增:驼峰命名工具
+                            'to_camel_case': to_camel_case,  # 保留用于其他场景
                             'get_import_path': GenUtils.get_import_path,  # 导入路径生成函数
                             'get_tree_column_index': get_tree_column_index,  # 树表列索引计算函数
                             'list_cols': list_cols,  # 树表的列表列
                             'query_cols': query_cols,  # 树表的查询列
-                            'required_cols': required_cols  # 树表的必填列
+                            'required_cols': required_cols,  # 树表的必填列
+                            'class_name_pascal': class_name_pascal  # 预计算的双驼峰类名
                         }
                         
                         # 使用Jinja2渲染模板
@@ -531,14 +535,16 @@ class GenUtils:
                             # 根据文件类型确定导入的类名
                             if '/entity/' in output_file_name and '.py' in output_file_name:
                                 # Entity 文件在 domain/entity/ 目录下
-                                dir_files[dir_path].append(('entity', table.class_name, table))
+                                dir_files[dir_path].append(('entity', to_camel_case(table.class_name), table))
                             elif '/po/' in output_file_name and '_po.py' in output_file_name:
-                                # PO 文件在 domain/po/ 目录下
-                                dir_files[dir_path].append(('po', f"{to_underscore(table.class_name)}_po", table))
+                                # PO 文件在 domain/po/ 目录下,类名使用双驼峰,文件名使用下划线
+                                dir_files[dir_path].append(('po', (f"{to_underscore(table.class_name)}_po", f"{table.class_name}Po"), table))
                             elif '_service.py' in output_file_name:
-                                dir_files[dir_path].append(('service', f"{to_underscore(table.class_name)}_service", table))
+                                # Service 文件,类名使用双驼峰,文件名使用下划线
+                                dir_files[dir_path].append(('service', (f"{to_underscore(table.class_name)}_service", f"{table.class_name}Service"), table))
                             elif '_mapper.py' in output_file_name:
-                                dir_files[dir_path].append(('mapper', f"{to_underscore(table.class_name)}_mapper", table))
+                                # Mapper 文件,类名使用双驼峰,文件名使用下划线
+                                dir_files[dir_path].append(('mapper', (f"{to_underscore(table.class_name)}_mapper", f"{table.class_name}Mapper"), table))
                             elif '_controller.py' in output_file_name:
                                 dir_files[dir_path].append(('controller', 'gen', table))
                         
@@ -594,19 +600,23 @@ class GenUtils:
                     # 其他目录正常生成导入语句
                     if dir_path in dir_files:
                         imports = []
-                        for file_type, class_name, table_info in dir_files[dir_path]:
+                        for file_type, class_name_info, table_info in dir_files[dir_path]:
                             if file_type == 'entity':
                                 # Entity 文件在 domain/entity/ 目录下,导入时使用文件名
-                                entity_file_name = to_underscore(class_name)
-                                imports.append(f"from .{entity_file_name} import {class_name}")
+                                entity_file_name = to_underscore(class_name_info)
+                                imports.append(f"from .{entity_file_name} import {class_name_info}")
                             elif file_type == 'po':
-                                # PO 文件在 domain/po/ 目录下,导入时使用文件名
-                                po_file_name = class_name  # class_name 已经是 address_info_po
-                                imports.append(f"from .{po_file_name} import {class_name}")
+                                # PO 文件在 domain/po/ 目录下,文件名和类名分开处理
+                                file_name, class_name = class_name_info
+                                imports.append(f"from .{file_name} import {class_name}")
                             elif file_type == 'service':
-                                imports.append(f"from .{class_name} import {class_name}")
+                                # Service 文件,文件名和类名分开处理
+                                file_name, class_name = class_name_info
+                                imports.append(f"from .{file_name} import {class_name}")
                             elif file_type == 'mapper':
-                                imports.append(f"from .{class_name} import {class_name}")
+                                # Mapper 文件,文件名和类名分开处理
+                                file_name, class_name = class_name_info
+                                imports.append(f"from .{file_name} import {class_name}")
                         
                         if imports:
                             init_lines.extend(sorted(set(imports)))
@@ -767,16 +777,20 @@ class GenUtils:
                                 query_cols = None
                                 required_cols = None
                             
+                            # 预计算双驼峰命名的类名,避免模板中重复调用
+                            class_name_pascal = to_camel_case(table.class_name)
+                            
                             context = {
                                 'table': table,
                                 'datetime': datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
                                 'underscore': to_underscore,  # 下划线命名工具
                                 'capitalize_first': capitalize_first,  # 首字母大写工具
-                                'to_camel_case': to_camel_case,  # 新增:驼峰命名工具
+                                'to_camel_case': to_camel_case,  # 保留用于其他场景
                                 'get_import_path': GenUtils.get_import_path,  # 导入路径生成函数
                                 'list_cols': list_cols,  # 树表的列表列
                                 'query_cols': query_cols,  # 树表的查询列
-                                'required_cols': required_cols  # 树表的必填列
+                                'required_cols': required_cols,  # 树表的必填列
+                                'class_name_pascal': class_name_pascal  # 预计算的双驼峰类名
                             }
                             
                             # 使用Jinja2渲染模板
@@ -819,14 +833,16 @@ class GenUtils:
                                 # 根据文件类型确定导入的类名
                                 if '/entity/' in output_file_name and '.py' in output_file_name:
                                     # Entity 文件在 domain/entity/ 目录下
-                                    dir_files[dir_path].append(('entity', table.class_name, table))
+                                    dir_files[dir_path].append(('entity', to_camel_case(table.class_name), table))
                                 elif '/po/' in output_file_name and '_po.py' in output_file_name:
-                                    # PO 文件在 domain/po/ 目录下
-                                    dir_files[dir_path].append(('po', f"{to_underscore(table.class_name)}_po", table))
+                                    # PO 文件在 domain/po/ 目录下,类名使用双驼峰,文件名使用下划线
+                                    dir_files[dir_path].append(('po', (f"{to_underscore(table.class_name)}_po", f"{to_camel_case(table.class_name)}Po"), table))
                                 elif '_service.py' in output_file_name:
-                                    dir_files[dir_path].append(('service', f"{to_underscore(table.class_name)}_service", table))
+                                    # Service 文件,类名使用双驼峰,文件名使用下划线
+                                    dir_files[dir_path].append(('service', (f"{to_underscore(table.class_name)}_service", f"{to_camel_case(table.class_name)}Service"), table))
                                 elif '_mapper.py' in output_file_name:
-                                    dir_files[dir_path].append(('mapper', f"{to_underscore(table.class_name)}_mapper", table))
+                                    # Mapper 文件,类名使用双驼峰,文件名使用下划线
+                                    dir_files[dir_path].append(('mapper', (f"{to_underscore(table.class_name)}_mapper", f"{to_camel_case(table.class_name)}Mapper"), table))
                                 elif '_controller.py' in output_file_name:
                                     dir_files[dir_path].append(('controller', 'gen', table))
                             
@@ -894,19 +910,23 @@ class GenUtils:
                     # 其他目录正常生成导入语句
                     if dir_path in dir_files:
                         imports = []
-                        for file_type, class_name, table_info in dir_files[dir_path]:
+                        for file_type, class_name_info, table_info in dir_files[dir_path]:
                             if file_type == 'entity':
                                 # Entity 文件在 domain/entity/ 目录下,导入时使用文件名
-                                entity_file_name = to_underscore(class_name)
-                                imports.append(f"from .{entity_file_name} import {class_name}")
+                                entity_file_name = to_underscore(class_name_info)
+                                imports.append(f"from .{entity_file_name} import {class_name_info}")
                             elif file_type == 'po':
-                                # PO 文件在 domain/po/ 目录下,导入时使用文件名
-                                po_file_name = class_name  # class_name 已经是 address_info_po
-                                imports.append(f"from .{po_file_name} import {class_name}")
+                                # PO 文件在 domain/po/ 目录下,文件名和类名分开处理
+                                file_name, class_name = class_name_info
+                                imports.append(f"from .{file_name} import {class_name}")
                             elif file_type == 'service':
-                                imports.append(f"from .{class_name} import {class_name}")
+                                # Service 文件,文件名和类名分开处理
+                                file_name, class_name = class_name_info
+                                imports.append(f"from .{file_name} import {class_name}")
                             elif file_type == 'mapper':
-                                imports.append(f"from .{class_name} import {class_name}")
+                                # Mapper 文件,文件名和类名分开处理
+                                file_name, class_name = class_name_info
+                                imports.append(f"from .{file_name} import {class_name}")
                         
                         if imports:
                             init_lines.extend(sorted(set(imports)))
@@ -1041,17 +1061,21 @@ class GenUtils:
                         query_cols = None
                         required_cols = None
                     
-                    context = {
-                        'table': table,
-                        'datetime': datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
-                        'underscore': to_underscore,  # 下划线命名工具
-                        'capitalize_first': capitalize_first,  # 首字母大写工具
-                        'to_camel_case': to_camel_case,  # 新增:驼峰命名工具
-                        'get_import_path': GenUtils.get_import_path,  # 导入路径生成函数
-                        'list_cols': list_cols,  # 树表的列表列
-                        'query_cols': query_cols,  # 树表的查询列
-                        'required_cols': required_cols  # 树表的必填列
-                    }
+                        # 预计算双驼峰命名的类名,避免模板中重复调用
+                        class_name_pascal = to_camel_case(table.class_name)
+                        
+                        context = {
+                            'table': table,
+                            'datetime': datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
+                            'underscore': to_underscore,  # 下划线命名工具
+                            'capitalize_first': capitalize_first,  # 首字母大写工具
+                            'to_camel_case': to_camel_case,  # 保留用于其他场景
+                            'get_import_path': GenUtils.get_import_path,  # 导入路径生成函数
+                            'list_cols': list_cols,  # 树表的列表列
+                            'query_cols': query_cols,  # 树表的查询列
+                            'required_cols': required_cols,  # 树表的必填列
+                            'class_name_pascal': class_name_pascal  # 预计算的双驼峰类名
+                        }
                     
                     # 使用Jinja2渲染模板
                     template = Template(template_content)

+ 2 - 2
ruoyi_generator/vm/js/api.js.vm

@@ -3,7 +3,7 @@ import request from '@/utils/request'
 {# 使用后端工具函数 to_camel_case 统一处理类名:
    - apiName  : scheduleInfo(小驼峰)
    - ApiName  : ScheduleInfo(大驼峰,用于 listScheduleInfo 这种函数名) #}
-{% set apiName = to_camel_case(table.class_name, False) %}
+{% set apiName = to_camel_case(table.business_name, False) %}
 {% set ApiName = capitalize_first(apiName) %}
 
 // 查询{{ table.function_name }}列表
@@ -48,4 +48,4 @@ export function del{{ ApiName }}({{ table.pk_column.java_field if table.pk_colum
     url: '/{{ table.module_name }}/{{ table.business_name }}/' + {{- table.pk_column.java_field if table.pk_column }},
     method: 'delete'
   })
-}
+}

+ 14 - 14
ruoyi_generator/vm/py/controller.py.vm

@@ -16,13 +16,13 @@ from ruoyi_common.utils.base import ExcelUtil
 from ruoyi_framework.descriptor.log import Log
 from ruoyi_framework.descriptor.permission import HasPerm, PreAuthorize
 from {{ get_import_path(table.package_name, table.module_name, 'controller') }} import {{ underscore(table.class_name) }} as {{ underscore(table.class_name) }}_bp
-from {{ get_import_path(table.package_name, table.module_name, 'domain') }} import {{ table.class_name }}
-from {{ get_import_path(table.package_name, table.module_name, 'service') }}.{{ underscore(table.class_name) }}_service import {{ underscore(table.class_name) }}_service as {{ underscore(table.class_name) }}_service_class
+from {{ get_import_path(table.package_name, table.module_name, 'domain') }} import {{ class_name_pascal }}
+from {{ get_import_path(table.package_name, table.module_name, 'service') }}.{{ underscore(table.class_name) }}_service import {{ class_name_pascal }}Service
 
 # 使用 controller/__init__.py 中定义的蓝图
 gen = {{ underscore(table.class_name) }}_bp
 
-{{ underscore(table.class_name) }}_service = {{ underscore(table.class_name) }}_service_class()
+{{ underscore(table.class_name) }}_service = {{ class_name_pascal }}Service()
 
 
 def _clear_page_context():
@@ -37,9 +37,9 @@ def _clear_page_context():
 {%- endif %}
 @PreAuthorize(HasPerm('{{ table.module_name }}:{{ table.business_name }}:list'))
 @JsonSerializer()
-def {{ underscore(table.business_name) }}_list(dto: {{ table.class_name }}):
+def {{ underscore(table.business_name) }}_list(dto: {{ class_name_pascal }}):
     """查询{{ table.function_name }}列表"""
-    {{ underscore(table.class_name) }}_entity = {{ table.class_name }}()
+    {{ underscore(table.class_name) }}_entity = {{ class_name_pascal }}()
     # 转换PO到Entity对象
     for attr in dto.model_fields.keys():
         if hasattr({{ underscore(table.class_name) }}_entity, attr):
@@ -68,9 +68,9 @@ def get_{{ underscore(table.business_name) }}({{ underscore(table.pk_column.java
 @PreAuthorize(HasPerm('{{ table.module_name }}:{{ table.business_name }}:add'))
 @Log(title='{{ table.function_name }}管理', business_type=BusinessType.INSERT)
 @JsonSerializer()
-def add_{{ underscore(table.business_name) }}(dto: {{ table.class_name }}):
+def add_{{ underscore(table.business_name) }}(dto: {{ class_name_pascal }}):
     """新增{{ table.function_name }}"""
-    {{ underscore(table.class_name) }}_entity = {{ table.class_name }}()
+    {{ underscore(table.class_name) }}_entity = {{ class_name_pascal }}()
     # 转换PO到Entity对象
     for attr in dto.model_fields.keys():
         if hasattr({{ underscore(table.class_name) }}_entity, attr):
@@ -86,9 +86,9 @@ def add_{{ underscore(table.business_name) }}(dto: {{ table.class_name }}):
 @PreAuthorize(HasPerm('{{ table.module_name }}:{{ table.business_name }}:edit'))
 @Log(title='{{ table.function_name }}管理', business_type=BusinessType.UPDATE)
 @JsonSerializer()
-def update_{{ underscore(table.business_name) }}(dto: {{ table.class_name }}):
+def update_{{ underscore(table.business_name) }}(dto: {{ class_name_pascal }}):
     """修改{{ table.function_name }}"""
-    {{ underscore(table.class_name) }}_entity = {{ table.class_name }}()
+    {{ underscore(table.class_name) }}_entity = {{ class_name_pascal }}()
     # 转换PO到Entity对象
     for attr in dto.model_fields.keys():
         if hasattr({{ underscore(table.class_name) }}_entity, attr):
@@ -122,9 +122,9 @@ def delete_{{ underscore(table.business_name) }}(ids: str):
 @PreAuthorize(HasPerm('{{ table.module_name }}:{{ table.business_name }}:export'))
 @Log(title='{{ table.function_name }}管理', business_type=BusinessType.EXPORT)
 @BaseSerializer()
-def export_{{ underscore(table.business_name) }}(dto: {{ table.class_name }}):
+def export_{{ underscore(table.business_name) }}(dto: {{ class_name_pascal }}):
     """导出{{ table.function_name }}列表"""
-    {{ underscore(table.class_name) }}_entity = {{ table.class_name }}()
+    {{ underscore(table.class_name) }}_entity = {{ class_name_pascal }}()
     # 转换PO到Entity对象
     for attr in dto.model_fields.keys():
         if hasattr({{ underscore(table.class_name) }}_entity, attr):
@@ -134,7 +134,7 @@ def export_{{ underscore(table.business_name) }}(dto: {{ table.class_name }}):
     {{ underscore(table.class_name) }}_entity.page_size = None
     {{ underscore(table.business_name) }}s = {{ underscore(table.class_name) }}_service.select_{{ underscore(table.class_name) }}_list({{ underscore(table.class_name) }}_entity)
     # 使用ExcelUtil导出Excel文件
-    excel_util = ExcelUtil({{ table.class_name }})
+    excel_util = ExcelUtil({{ class_name_pascal }})
     return excel_util.export_response({{ underscore(table.business_name) }}s, "{{ table.function_name }}数据")
 
 @gen.route('/importTemplate', methods=['POST'])
@@ -142,7 +142,7 @@ def export_{{ underscore(table.business_name) }}(dto: {{ table.class_name }}):
 @BaseSerializer()
 def import_template():
     """下载{{ table.function_name }}导入模板"""
-    excel_util = ExcelUtil({{ table.class_name }})
+    excel_util = ExcelUtil({{ class_name_pascal }})
     return excel_util.import_template_response(sheetname="{{ table.function_name }}数据")
 
 @gen.route('/importData', methods=['POST'])
@@ -156,7 +156,7 @@ def import_data(
 ):
     """导入{{ table.function_name }}数据"""
     file = file[0]
-    excel_util = ExcelUtil({{ table.class_name }})
+    excel_util = ExcelUtil({{ class_name_pascal }})
     {{ underscore(table.business_name) }}_list = excel_util.import_file(file, sheetname="{{ table.function_name }}数据")
     msg = {{ underscore(table.class_name) }}_service.import_{{ underscore(table.class_name) }}({{ underscore(table.business_name) }}_list, update_support)
     return AjaxResponse.from_success(msg=msg)

+ 1 - 1
ruoyi_generator/vm/py/entity.py.vm

@@ -36,7 +36,7 @@ from ruoyi_common.base.schema_vo import VoField
 {%- endif %}
 
 
-class {{ table.class_name }}(BaseEntity):
+class {{ class_name_pascal }}(BaseEntity):
     """
     {{ table.table_comment }}对象
     """

+ 23 - 23
ruoyi_generator/vm/py/mapper.py.vm

@@ -10,14 +10,14 @@ from flask import g
 from sqlalchemy import select, update, delete
 
 from ruoyi_admin.ext import db
-from {{ get_import_path(table.package_name, table.module_name, 'domain') }} import {{ table.class_name }}
-from {{ get_import_path(table.package_name, table.module_name, 'domain', table.class_name) }} import {{ underscore(table.class_name) }}_po
+from {{ get_import_path(table.package_name, table.module_name, 'domain') }} import {{ class_name_pascal }}
+from {{ get_import_path(table.package_name, table.module_name, 'domain', table.class_name) }} import {{ class_name_pascal }}Po
 
-class {{ underscore(table.class_name) }}_mapper:
+class {{ class_name_pascal }}Mapper:
     """{{ table.function_name }}Mapper"""
 
     @staticmethod
-    def select_{{ underscore(table.class_name) }}_list({{ underscore(table.business_name) }}: {{ table.class_name }}) -> List[{{ table.class_name }}]:
+    def select_{{ underscore(table.class_name) }}_list({{ underscore(table.business_name) }}: {{ class_name_pascal }}) -> List[{{ class_name_pascal }}]:
         """
         查询{{ table.function_name }}列表
 
@@ -29,39 +29,39 @@ class {{ underscore(table.class_name) }}_mapper:
         """
         try:
             # 构建查询条件
-            stmt = select({{ underscore(table.class_name) }}_po)
+            stmt = select({{ class_name_pascal }}Po)
 {% for column in table.columns %}
 {% if column.is_query %}
 {%- set field_name = underscore(column.java_field) %}
 {%- if column.query_type == 'EQ' %}
             if {{ underscore(table.business_name) }}.{{ field_name }} is not None:
-                stmt = stmt.where({{ underscore(table.class_name) }}_po.{{ field_name }} == {{ underscore(table.business_name) }}.{{ field_name }})
+                stmt = stmt.where({{ class_name_pascal }}Po.{{ field_name }} == {{ underscore(table.business_name) }}.{{ field_name }})
 {%- elif column.query_type == 'NE' %}
             if {{ underscore(table.business_name) }}.{{ field_name }} is not None:
-                stmt = stmt.where({{ underscore(table.class_name) }}_po.{{ field_name }} != {{ underscore(table.business_name) }}.{{ field_name }})
+                stmt = stmt.where({{ class_name_pascal }}Po.{{ field_name }} != {{ underscore(table.business_name) }}.{{ field_name }})
 {%- elif column.query_type == 'GT' %}
             if {{ underscore(table.business_name) }}.{{ field_name }} is not None:
-                stmt = stmt.where({{ underscore(table.class_name) }}_po.{{ field_name }} > {{ underscore(table.business_name) }}.{{ field_name }})
+                stmt = stmt.where({{ class_name_pascal }}Po.{{ field_name }} > {{ underscore(table.business_name) }}.{{ field_name }})
 {%- elif column.query_type == 'GTE' %}
             if {{ underscore(table.business_name) }}.{{ field_name }} is not None:
-                stmt = stmt.where({{ underscore(table.class_name) }}_po.{{ field_name }} >= {{ underscore(table.business_name) }}.{{ field_name }})
+                stmt = stmt.where({{ class_name_pascal }}Po.{{ field_name }} >= {{ underscore(table.business_name) }}.{{ field_name }})
 {%- elif column.query_type == 'LT' %}
             if {{ underscore(table.business_name) }}.{{ field_name }} is not None:
-                stmt = stmt.where({{ underscore(table.class_name) }}_po.{{ field_name }} < {{ underscore(table.business_name) }}.{{ field_name }})
+                stmt = stmt.where({{ class_name_pascal }}Po.{{ field_name }} < {{ underscore(table.business_name) }}.{{ field_name }})
 {%- elif column.query_type == 'LTE' %}
             if {{ underscore(table.business_name) }}.{{ field_name }} is not None:
-                stmt = stmt.where({{ underscore(table.class_name) }}_po.{{ field_name }} <= {{ underscore(table.business_name) }}.{{ field_name }})
+                stmt = stmt.where({{ class_name_pascal }}Po.{{ field_name }} <= {{ underscore(table.business_name) }}.{{ field_name }})
 {%- elif column.query_type == 'LIKE' %}
             if {{ underscore(table.business_name) }}.{{ field_name }}:
-                stmt = stmt.where({{ underscore(table.class_name) }}_po.{{ field_name }}.like("%" + str({{ underscore(table.business_name) }}.{{ field_name }}) + "%"))
+                stmt = stmt.where({{ class_name_pascal }}Po.{{ field_name }}.like("%" + str({{ underscore(table.business_name) }}.{{ field_name }}) + "%"))
 {%- elif column.query_type == 'BETWEEN' %}
             _params = getattr({{ underscore(table.business_name) }}, "params", {}) or {}
             begin_val = _params.get("begin{{ capitalize_first(column.java_field) }}")
             end_val = _params.get("end{{ capitalize_first(column.java_field) }}")
             if begin_val is not None:
-                stmt = stmt.where({{ underscore(table.class_name) }}_po.{{ field_name }} >= begin_val)
+                stmt = stmt.where({{ class_name_pascal }}Po.{{ field_name }} >= begin_val)
             if end_val is not None:
-                stmt = stmt.where({{ underscore(table.class_name) }}_po.{{ field_name }} <= end_val)
+                stmt = stmt.where({{ class_name_pascal }}Po.{{ field_name }} <= end_val)
 {%- endif %}
 {% endif %}
 {% endfor %}
@@ -69,14 +69,14 @@ class {{ underscore(table.class_name) }}_mapper:
                 g.criterian_meta.page.stmt = stmt
 
             result = db.session.execute(stmt).scalars().all()
-            return [{{ table.class_name }}.model_validate(item) for item in result] if result else []
+            return [{{ class_name_pascal }}.model_validate(item) for item in result] if result else []
         except Exception as e:
             print(f"查询{{ table.function_name }}列表出错: {e}")
             return []
 
     {% if table.pk_column %}
     @staticmethod
-    def select_{{ underscore(table.class_name) }}_by_id({{ underscore(table.pk_column.java_field) }}: int) -> {{ table.class_name }}:
+    def select_{{ underscore(table.class_name) }}_by_id({{ underscore(table.pk_column.java_field) }}: int) -> {{ class_name_pascal }}:
         """
         根据ID查询{{ table.function_name }}
 
@@ -87,15 +87,15 @@ class {{ underscore(table.class_name) }}_mapper:
             {{ table.class_name }}: {{ table.function_name }}对象
         """
         try:
-            result = db.session.get({{ underscore(table.class_name) }}_po, {{ underscore(table.pk_column.java_field) }})
-            return {{ table.class_name }}.model_validate(result) if result else None
+            result = db.session.get({{ class_name_pascal }}Po, {{ underscore(table.pk_column.java_field) }})
+            return {{ class_name_pascal }}.model_validate(result) if result else None
         except Exception as e:
             print(f"根据ID查询{{ table.function_name }}出错: {e}")
             return None
     {% endif %}
 
     @staticmethod
-    def insert_{{ underscore(table.class_name) }}({{ underscore(table.business_name) }}: {{ table.class_name }}) -> int:
+    def insert_{{ underscore(table.class_name) }}({{ underscore(table.business_name) }}: {{ class_name_pascal }}) -> int:
         """
         新增{{ table.function_name }}
 
@@ -107,7 +107,7 @@ class {{ underscore(table.class_name) }}_mapper:
         """
         try:
             now = datetime.now()
-            new_po = {{ underscore(table.class_name) }}_po()
+            new_po = {{ class_name_pascal }}Po()
 {%- for column in table.columns %}
 {%- set attr = underscore(column.java_field) %}
 {%- if column.column_name in ['create_time', 'update_time'] %}
@@ -129,7 +129,7 @@ class {{ underscore(table.class_name) }}_mapper:
 
     {% if table.pk_column %}
     @staticmethod
-    def update_{{ underscore(table.class_name) }}({{ underscore(table.business_name) }}: {{ table.class_name }}) -> int:
+    def update_{{ underscore(table.class_name) }}({{ underscore(table.business_name) }}: {{ class_name_pascal }}) -> int:
         """
         修改{{ table.function_name }}
 
@@ -141,7 +141,7 @@ class {{ underscore(table.class_name) }}_mapper:
         """
         try:
             {% if table.pk_column %}
-            existing = db.session.get({{ underscore(table.class_name) }}_po, {{ underscore(table.business_name) }}.{{ underscore(table.pk_column.java_field) }})
+            existing = db.session.get({{ class_name_pascal }}Po, {{ underscore(table.business_name) }}.{{ underscore(table.pk_column.java_field) }})
             if not existing:
                 return 0
             now = datetime.now()
@@ -179,7 +179,7 @@ class {{ underscore(table.class_name) }}_mapper:
             int: 删除的记录数
         """
         try:
-            stmt = delete({{ underscore(table.class_name) }}_po).where({{ underscore(table.class_name) }}_po.{{ underscore(table.pk_column.java_field) }}.in_(ids))
+            stmt = delete({{ class_name_pascal }}Po).where({{ class_name_pascal }}Po.{{ underscore(table.pk_column.java_field) }}.in_(ids))
             result = db.session.execute(stmt)
             db.session.commit()
             return result.rowcount

+ 1 - 1
ruoyi_generator/vm/py/po.py.vm

@@ -11,7 +11,7 @@ from sqlalchemy.orm import Mapped, mapped_column
 
 from ruoyi_admin.ext import db
 
-class {{ underscore(table.class_name) }}_po(db.Model):
+class {{ class_name_pascal }}Po(db.Model):
     """
     {{ table.table_comment }}PO对象
     """

+ 17 - 17
ruoyi_generator/vm/py/service.py.vm

@@ -7,13 +7,13 @@ from typing import List
 
 from ruoyi_common.exception import ServiceException
 from ruoyi_common.utils.base import LogUtil
-from {{ get_import_path(table.package_name, table.module_name, 'domain') }} import {{ table.class_name }}
-from {{ get_import_path(table.package_name, table.module_name, 'mapper') }}.{{ underscore(table.class_name) }}_mapper import {{ underscore(table.class_name) }}_mapper
+from {{ get_import_path(table.package_name, table.module_name, 'domain') }} import {{ class_name_pascal }}
+from {{ get_import_path(table.package_name, table.module_name, 'mapper') }}.{{ underscore(table.class_name) }}_mapper import {{ class_name_pascal }}Mapper
 
-class {{ underscore(table.class_name) }}_service:
+class {{ class_name_pascal }}Service:
     """{{ table.function_name }}服务类"""
 
-    def select_{{ underscore(table.class_name) }}_list(self, {{ underscore(table.business_name) }}: {{ table.class_name }}) -> List[{{ table.class_name }}]:
+    def select_{{ underscore(table.class_name) }}_list(self, {{ underscore(table.business_name) }}: {{ class_name_pascal }}) -> List[{{ class_name_pascal }}]:
         """
         查询{{ table.function_name }}列表
 
@@ -23,10 +23,10 @@ class {{ underscore(table.class_name) }}_service:
         Returns:
             List[{{ table.class_name }}]: {{ table.function_name }}列表
         """
-        return {{ underscore(table.class_name) }}_mapper.select_{{ underscore(table.class_name) }}_list({{ underscore(table.business_name) }})
+        return {{ class_name_pascal }}Mapper.select_{{ underscore(table.class_name) }}_list({{ underscore(table.business_name) }})
 
     {% if table.pk_column %}
-    def select_{{ underscore(table.class_name) }}_by_id(self, {{ underscore(table.pk_column.java_field) }}: int) -> {{ table.class_name }}:
+    def select_{{ underscore(table.class_name) }}_by_id(self, {{ underscore(table.pk_column.java_field) }}: int) -> {{ class_name_pascal }}:
         """
         根据ID查询{{ table.function_name }}
 
@@ -36,10 +36,10 @@ class {{ underscore(table.class_name) }}_service:
         Returns:
             {{ table.class_name }}: {{ table.function_name }}对象
         """
-        return {{ underscore(table.class_name) }}_mapper.select_{{ underscore(table.class_name) }}_by_id({{ underscore(table.pk_column.java_field) }})
+        return {{ class_name_pascal }}Mapper.select_{{ underscore(table.class_name) }}_by_id({{ underscore(table.pk_column.java_field) }})
     {% endif %}
 
-    def insert_{{ underscore(table.class_name) }}(self, {{ underscore(table.business_name) }}: {{ table.class_name }}) -> int:
+    def insert_{{ underscore(table.class_name) }}(self, {{ underscore(table.business_name) }}: {{ class_name_pascal }}) -> int:
         """
         新增{{ table.function_name }}
 
@@ -49,10 +49,10 @@ class {{ underscore(table.class_name) }}_service:
         Returns:
             int: 插入的记录数
         """
-        return {{ underscore(table.class_name) }}_mapper.insert_{{ underscore(table.class_name) }}({{ underscore(table.business_name) }})
+        return {{ class_name_pascal }}Mapper.insert_{{ underscore(table.class_name) }}({{ underscore(table.business_name) }})
 
     {% if table.pk_column %}
-    def update_{{ underscore(table.class_name) }}(self, {{ underscore(table.business_name) }}: {{ table.class_name }}) -> int:
+    def update_{{ underscore(table.class_name) }}(self, {{ underscore(table.business_name) }}: {{ class_name_pascal }}) -> int:
         """
         修改{{ table.function_name }}
 
@@ -62,7 +62,7 @@ class {{ underscore(table.class_name) }}_service:
         Returns:
             int: 更新的记录数
         """
-        return {{ underscore(table.class_name) }}_mapper.update_{{ underscore(table.class_name) }}({{ underscore(table.business_name) }})
+        return {{ class_name_pascal }}Mapper.update_{{ underscore(table.class_name) }}({{ underscore(table.business_name) }})
     {% endif %}
 
     {% if table.pk_column %}
@@ -76,10 +76,10 @@ class {{ underscore(table.class_name) }}_service:
         Returns:
             int: 删除的记录数
         """
-        return {{ underscore(table.class_name) }}_mapper.delete_{{ underscore(table.class_name) }}_by_ids(ids)
+        return {{ class_name_pascal }}Mapper.delete_{{ underscore(table.class_name) }}_by_ids(ids)
     {% endif %}
 
-    def import_{{ underscore(table.class_name) }}(self, {{ underscore(table.business_name) }}_list: List[{{ table.class_name }}], is_update: bool = False) -> str:
+    def import_{{ underscore(table.class_name) }}(self, {{ underscore(table.business_name) }}_list: List[{{ class_name_pascal }}], is_update: bool = False) -> str:
         """
         导入{{ table.function_name }}数据
 
@@ -105,19 +105,19 @@ class {{ underscore(table.class_name) }}_service:
                 display_value = getattr({{ underscore(table.business_name) }}, "{{ underscore(table.pk_column.java_field) }}", display_value)
                 existing = None
                 if {{ underscore(table.business_name) }}.{{ underscore(table.pk_column.java_field) }} is not None:
-                    existing = {{ underscore(table.class_name) }}_mapper.select_{{ underscore(table.class_name) }}_by_id({{ underscore(table.business_name) }}.{{ underscore(table.pk_column.java_field) }})
+                    existing = {{ class_name_pascal }}Mapper.select_{{ underscore(table.class_name) }}_by_id({{ underscore(table.business_name) }}.{{ underscore(table.pk_column.java_field) }})
                 if existing:
                     if is_update:
-                        result = {{ underscore(table.class_name) }}_mapper.update_{{ underscore(table.class_name) }}({{ underscore(table.business_name) }})
+                        result = {{ class_name_pascal }}Mapper.update_{{ underscore(table.class_name) }}({{ underscore(table.business_name) }})
                     else:
                         fail_count += 1
                         fail_msg += f"<br/> 第{fail_count}条数据,已存在:{display_value}"
                         continue
                 else:
-                    result = {{ underscore(table.class_name) }}_mapper.insert_{{ underscore(table.class_name) }}({{ underscore(table.business_name) }})
+                    result = {{ class_name_pascal }}Mapper.insert_{{ underscore(table.class_name) }}({{ underscore(table.business_name) }})
                 {% else %}
                 display_value = str(display_value)
-                result = {{ underscore(table.class_name) }}_mapper.insert_{{ underscore(table.class_name) }}({{ underscore(table.business_name) }})
+                result = {{ class_name_pascal }}Mapper.insert_{{ underscore(table.class_name) }}({{ underscore(table.business_name) }})
                 {% endif %}
                 if result > 0:
                     success_count += 1

+ 2 - 2
ruoyi_generator/vm/vue/index-sub.vue.vm

@@ -263,7 +263,7 @@
 {# 使用后端工具函数生成接口前缀:
    - apiName  : scheduleInfo
    - ApiName  : ScheduleInfo(listScheduleInfo / getScheduleInfo 等) #}
-{% set apiName = to_camel_case(table.class_name, False) %}
+{% set apiName = to_camel_case(table.business_name, False) %}
 {% set ApiName = capitalize_first(apiName) %}
 import {
   list{{ ApiName }},
@@ -275,7 +275,7 @@ import {
 import { getToken } from "@/utils/auth";
 
 export default {
-  name: "{{ table.class_name }}",
+  name: "{{ ApiName }}",
   data() {
     return {
       // 遮罩层

+ 2 - 2
ruoyi_generator/vm/vue/index-tree.vue.vm

@@ -369,7 +369,7 @@
 </template>
 
 <script>
-{% set apiName = to_camel_case(table.class_name, False) %}
+{% set apiName = to_camel_case(table.business_name, False) %}
 {% set ApiName = capitalize_first(apiName) %}
 import { list{{ ApiName }}, get{{ ApiName }}, del{{ ApiName }}, add{{ ApiName }}, update{{ ApiName }}} from "@/api/{{ table.module_name }}/{{ table.business_name }}";
 import Treeselect from "@riophae/vue-treeselect";
@@ -383,7 +383,7 @@ import { getToken } from "@/utils/auth";
 {%- set tree_name_field = to_camel_case(raw_tree_name, False) %}
 
 export default {
-  name: "{{ table.class_name }}",
+  name: "{{ ApiName }}",
 {%- set dicts_list = [] %}
 {%- for column in table.columns %}
 {%- if column.dict_type and column.dict_type != '' %}

+ 2 - 2
ruoyi_generator/vm/vue/index.vue.vm

@@ -308,13 +308,13 @@
 </template>
 
 <script>
-{% set apiName = to_camel_case(table.class_name, False) %}
+{% set apiName = to_camel_case(table.business_name, False) %}
 {% set ApiName = capitalize_first(apiName) %}
 import { list{{ ApiName }}, get{{ ApiName }}, del{{ ApiName }}, add{{ ApiName }}, update{{ ApiName }} } from "@/api/{{ table.module_name }}/{{ table.business_name }}";
 import { getToken } from "@/utils/auth";
 
 export default {
-  name: "{{ table.class_name }}",
+  name: "{{ ApiName }}",
 {%- set dicts_list = [] %}
 {%- for column in table.columns %}
 {%- if column.dict_type and column.dict_type != '' %}