From 0fdf45c73f7e716c7cb312e333a96d98bea5cef5 Mon Sep 17 00:00:00 2001 From: insistence <3055204202@qq.com> Date: Tue, 18 Feb 2025 17:46:37 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E7=94=9F=E6=88=90=E4=B8=BB=E5=AD=90=E8=A1=A8=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../templates/python/dao.py.jinja2 | 2 +- .../templates/python/do.py.jinja2 | 2 +- .../templates/python/service.py.jinja2 | 8 +-- .../templates/python/vo.py.jinja2 | 49 +++++++++++++++++-- .../templates/vue/index.vue.jinja2 | 2 +- .../templates/vue/v3/index.vue.jinja2 | 4 +- ruoyi-fastapi-backend/utils/template_util.py | 3 +- 7 files changed, 56 insertions(+), 14 deletions(-) diff --git a/ruoyi-fastapi-backend/module_generator/templates/python/dao.py.jinja2 b/ruoyi-fastapi-backend/module_generator/templates/python/dao.py.jinja2 index 949683b..cb9ba81 100644 --- a/ruoyi-fastapi-backend/module_generator/templates/python/dao.py.jinja2 +++ b/ruoyi-fastapi-backend/module_generator/templates/python/dao.py.jinja2 @@ -145,7 +145,7 @@ class {{ BusinessName }}Dao: :param {{ businessName }}: {{ functionName }}对象 :return: """ - db_{{ businessName }} = {{ ClassName }}(**{{ businessName }}.model_dump(exclude={% raw %}{{% endraw %}{% if table.sub %}'{{ subclassName }}_list, '{% endif %}{% for column in columns %}{% if not column.insert %}'{{ column.python_field | camel_to_snake }}'{% if not loop.last %}, {% endif %}{% endif %}{% endfor %}{% raw %}}{% endraw %})) + db_{{ businessName }} = {{ ClassName }}(**{{ businessName }}.model_dump(exclude={% raw %}{{% endraw %}{% if table.sub %}'{{ subclassName }}_list', {% endif %}{% for column in columns %}{% if not column.insert %}'{{ column.python_field | camel_to_snake }}'{% if not loop.last %}, {% endif %}{% endif %}{% endfor %}{% raw %}}{% endraw %})) db.add(db_{{ businessName }}) await db.flush() diff --git a/ruoyi-fastapi-backend/module_generator/templates/python/do.py.jinja2 b/ruoyi-fastapi-backend/module_generator/templates/python/do.py.jinja2 index 2b34300..22c23c4 100644 --- a/ruoyi-fastapi-backend/module_generator/templates/python/do.py.jinja2 +++ b/ruoyi-fastapi-backend/module_generator/templates/python/do.py.jinja2 @@ -32,7 +32,7 @@ class {{ subClassName }}(Base): __tablename__ = '{{ subTableName }}' {% for column in subTable.columns %} - {{ column.column_name }} = Column({{ column.column_type | get_sqlalchemy_type }}, {% if column.pk %}primary_key=True, {% endif %}{% if column.increment %}autoincrement=True, {% endif %}{% if column.required %}nullable=True{% else %}nullable=False{% endif %}, comment='{{ column.column_comment }}') + {{ column.column_name }} = Column({{ column.column_type | get_sqlalchemy_type }}, {% if column.column_name == subTableFkName %}ForeignKey('{{ tableName }}.{{ subTableFkName }}'), {% endif %}{% if column.pk %}primary_key=True, {% endif %}{% if column.increment %}autoincrement=True, {% endif %}{% if column.required %}nullable=True{% else %}nullable=False{% endif %}, comment='{{ column.column_comment }}') {% endfor %} {% if table.sub %} diff --git a/ruoyi-fastapi-backend/module_generator/templates/python/service.py.jinja2 b/ruoyi-fastapi-backend/module_generator/templates/python/service.py.jinja2 index 53a97b9..27d6979 100644 --- a/ruoyi-fastapi-backend/module_generator/templates/python/service.py.jinja2 +++ b/ruoyi-fastapi-backend/module_generator/templates/python/service.py.jinja2 @@ -103,7 +103,7 @@ class {{ BusinessName }}Service: :param page_object: 编辑{{ functionName }}对象 :return: 编辑{{ functionName }}校验结果 """ - edit_{{ businessName }} = page_object.model_dump(exclude_unset=True, exclude={% raw %}{{% endraw %}{% if table.sub %}'{{ subclassName }}_list, '{% endif %}{% for column in columns %}{% if not column.edit and not column.pk %}'{{ column.python_field | camel_to_snake }}'{% if not loop.last %}, {% endif %}{% endif %}{% endfor %}{% raw %}}{% endraw %}) + edit_{{ businessName }} = page_object.model_dump(exclude_unset=True, exclude={% raw %}{{% endraw %}{% if table.sub %}'{{ subclassName }}_list', {% endif %}{% for column in columns %}{% if not column.edit and not column.pk %}'{{ column.python_field | camel_to_snake }}'{% if not loop.last %}, {% endif %}{% endif %}{% endfor %}{% raw %}}{% endraw %}) {{ businessName }}_info = await cls.{{ businessName }}_detail_services(query_db, page_object.{{ pk_field }}) if {{ businessName }}_info.{{ pk_field }}: {% for column in columns %} @@ -117,8 +117,10 @@ class {{ BusinessName }}Service: try: await {{ BusinessName }}Dao.edit_{{ businessName }}_dao(query_db, edit_{{ businessName }}) {% if table.sub %} + for sub_table in {{ businessName }}_info.{{ subclassName }}_list: + await {{ BusinessName }}Dao.delete_{{ subTable.business_name }}_dao(query_db, sub_table) for sub_table in page_object.{{ subclassName }}_list: - await {{ BusinessName }}Dao.edit_{{ subTable.business_name }}_dao(query_db, sub_table) + await {{ BusinessName }}Dao.add_{{ subTable.business_name }}_dao(query_db, sub_table) {% endif %} await query_db.commit() return CrudResponseModel(is_success=True, message='更新成功') @@ -141,12 +143,12 @@ class {{ BusinessName }}Service: {{ pk_field }}_list = page_object.{{ pk_field }}s.split(',') try: for {{ pk_field }} in {{ pk_field }}_list: - await {{ BusinessName }}Dao.delete_{{ businessName }}_dao(query_db, {{ BusinessName }}Model({{ pkField }}={{ pk_field }})) {% if table.sub %} {{ businessName }} = await cls.{{ businessName }}_detail_services(query_db, int({{ pk_field }})) for sub_table in {{ businessName }}.{{ subclassName }}_list: await {{ BusinessName }}Dao.delete_{{ subTable.business_name }}_dao(query_db, sub_table) {% endif %} + await {{ BusinessName }}Dao.delete_{{ businessName }}_dao(query_db, {{ BusinessName }}Model({{ pkField }}={{ pk_field }})) await query_db.commit() return CrudResponseModel(is_success=True, message='删除成功') except Exception as e: diff --git a/ruoyi-fastapi-backend/module_generator/templates/python/vo.py.jinja2 b/ruoyi-fastapi-backend/module_generator/templates/python/vo.py.jinja2 index 39b8421..2b8d5b9 100644 --- a/ruoyi-fastapi-backend/module_generator/templates/python/vo.py.jinja2 +++ b/ruoyi-fastapi-backend/module_generator/templates/python/vo.py.jinja2 @@ -32,7 +32,8 @@ from typing import Optional from module_admin.annotation.pydantic_annotation import as_query -class {{ BusinessName }}Model(BaseModel): +{% if table.sub %} +class {{ BusinessName }}BaseModel(BaseModel): """ {{ functionName }}表对应pydantic模型 """ @@ -42,9 +43,6 @@ class {{ BusinessName }}Model(BaseModel): {% for column in columns %} {{ column.column_name }}: Optional[{{ column.python_type }}] = Field(default=None, description='{{ column.column_comment }}') {% endfor %} - {% if table.sub %} - {{ subclassName }}_list: Optional[List['{{ subTable.business_name | capitalize }}Model']] = Field(default=None, description='子表列信息') - {% endif %} {% for column in columns %} {% if column.required %} @@ -53,6 +51,7 @@ class {{ BusinessName }}Model(BaseModel): @NotBlank(field_name='{{ column.column_name }}', message='{{ comment }}不能为空') def get_{{ column.column_name }}(self): return self.{{ column.column_name }} + {% if not loop.last %}{{ "\n" }}{% endif %} {% endif %} {% endfor %} @@ -64,6 +63,45 @@ class {{ BusinessName }}Model(BaseModel): {% endif %} {% endfor %} {% endif %} +{% endif %} + + +class {{ BusinessName }}Model({% if table.sub %}{{ BusinessName }}BaseModel{% else %}BaseModel{% endif %}): + """ + {{ functionName }}表对应pydantic模型 + """ + {% if not table.sub %} + model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) + + {% for column in columns %} + {{ column.column_name }}: Optional[{{ column.python_type }}] = Field(default=None, description='{{ column.column_comment }}') + {% endfor %} + {% endif %} + {% if table.sub %} + {{ subclassName }}_list: Optional[List['{{ subTable.business_name | capitalize }}Model']] = Field(default=None, description='子表列信息') + {% endif %} + + {% if not table.sub %} + {% for column in columns %} + {% if column.required %} + {% set parentheseIndex = column.column_comment.find("(") %} + {% set comment = column.column_comment[:parentheseIndex] if parentheseIndex != -1 else column.column_comment %} + @NotBlank(field_name='{{ column.column_name }}', message='{{ comment }}不能为空') + def get_{{ column.column_name }}(self): + return self.{{ column.column_name }} + {% if not loop.last %}{{ "\n" }}{% endif %} + {% endif %} + {% endfor %} + + {% if vo_field_required.has_required %} + def validate_fields(self): + {% for column in columns %} + {% if column.required %} + self.get_{{ column.column_name }}() + {% endif %} + {% endfor %} + {% endif %} + {% endif %} {% if table.sub %} @@ -85,6 +123,7 @@ class {{ subTable.business_name | capitalize }}Model(BaseModel): @NotBlank(field_name='{{ sub_column.column_name }}', message='{{ comment }}不能为空') def get_{{ sub_column.column_name }}(self): return self.{{ sub_column.column_name }} + {% if not loop.last %}{{ "\n" }}{% endif %} {% endif %} {% endfor %} @@ -99,7 +138,7 @@ class {{ subTable.business_name | capitalize }}Model(BaseModel): {% endif %} -class {{ BusinessName }}QueryModel({{ BusinessName }}Model): +class {{ BusinessName }}QueryModel({% if table.sub %}{{ BusinessName }}BaseModel{% else %}{{ BusinessName }}Model{% endif %}): """ {{ functionName }}不分页查询模型 """ diff --git a/ruoyi-fastapi-backend/module_generator/templates/vue/index.vue.jinja2 b/ruoyi-fastapi-backend/module_generator/templates/vue/index.vue.jinja2 index 8076de2..4c20ee1 100644 --- a/ruoyi-fastapi-backend/module_generator/templates/vue/index.vue.jinja2 +++ b/ruoyi-fastapi-backend/module_generator/templates/vue/index.vue.jinja2 @@ -243,7 +243,7 @@ {% else %} :label="dict.value" {% endif %}> - {{ dict.label }} + {% raw %}{{{% endraw %} dict.label {% raw %}}}{% endraw %} diff --git a/ruoyi-fastapi-backend/module_generator/templates/vue/v3/index.vue.jinja2 b/ruoyi-fastapi-backend/module_generator/templates/vue/v3/index.vue.jinja2 index 2a22216..981124f 100644 --- a/ruoyi-fastapi-backend/module_generator/templates/vue/v3/index.vue.jinja2 +++ b/ruoyi-fastapi-backend/module_generator/templates/vue/v3/index.vue.jinja2 @@ -229,7 +229,7 @@ {% else %} :label="dict.value" {% endif %}> - {{ dict.label }} + {% raw %}{{{% endraw %} dict.label {% raw %}}}{% endraw %} @@ -297,7 +297,7 @@