From fd07ad088ccb124fcf1c2b4c41b068ef73f4205e Mon Sep 17 00:00:00 2001
From: insistence <3055204202@qq.com>
Date: Tue, 18 Feb 2025 16:10:57 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90?=
=?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=AD=97=E6=AE=B5=E5=94=AF=E4=B8=80=E6=80=A7?=
=?UTF-8?q?=E9=85=8D=E7=BD=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../module_generator/entity/do/gen_do.py | 1 +
.../module_generator/entity/vo/gen_vo.py | 3 +++
.../module_generator/templates/python/dao.py.jinja2 | 4 ++--
.../module_generator/templates/python/do.py.jinja2 | 2 +-
.../module_generator/templates/python/service.py.jinja2 | 8 ++++----
.../module_generator/templates/vue/index-tree.vue.jinja2 | 2 +-
.../module_generator/templates/vue/index.vue.jinja2 | 2 +-
.../templates/vue/v3/index-tree.vue.jinja2 | 2 +-
.../module_generator/templates/vue/v3/index.vue.jinja2 | 2 +-
ruoyi-fastapi-backend/sql/ruoyi-fastapi-pg.sql | 2 ++
ruoyi-fastapi-backend/sql/ruoyi-fastapi.sql | 1 +
ruoyi-fastapi-backend/utils/gen_util.py | 6 +++---
ruoyi-fastapi-frontend/src/views/tool/gen/editTable.vue | 5 +++++
13 files changed, 26 insertions(+), 14 deletions(-)
diff --git a/ruoyi-fastapi-backend/module_generator/entity/do/gen_do.py b/ruoyi-fastapi-backend/module_generator/entity/do/gen_do.py
index bcc3c87..e64d0bf 100644
--- a/ruoyi-fastapi-backend/module_generator/entity/do/gen_do.py
+++ b/ruoyi-fastapi-backend/module_generator/entity/do/gen_do.py
@@ -55,6 +55,7 @@ class GenTableColumn(Base):
is_pk = Column(String(1), nullable=True, comment='是否主键(1是)')
is_increment = Column(String(1), nullable=True, comment='是否自增(1是)')
is_required = Column(String(1), nullable=True, comment='是否必填(1是)')
+ is_unique = Column(String(1), nullable=True, comment='是否唯一(1是)')
is_insert = Column(String(1), nullable=True, comment='是否为插入字段(1是)')
is_edit = Column(String(1), nullable=True, comment='是否编辑字段(1是)')
is_list = Column(String(1), nullable=True, comment='是否列表字段(1是)')
diff --git a/ruoyi-fastapi-backend/module_generator/entity/vo/gen_vo.py b/ruoyi-fastapi-backend/module_generator/entity/vo/gen_vo.py
index 34d8bbc..e5d7917 100644
--- a/ruoyi-fastapi-backend/module_generator/entity/vo/gen_vo.py
+++ b/ruoyi-fastapi-backend/module_generator/entity/vo/gen_vo.py
@@ -172,6 +172,7 @@ class GenTableColumnBaseModel(BaseModel):
is_pk: Optional[str] = Field(default=None, description='是否主键(1是)')
is_increment: Optional[str] = Field(default=None, description='是否自增(1是)')
is_required: Optional[str] = Field(default=None, description='是否必填(1是)')
+ is_unique: Optional[str] = Field(default=None, description='是否唯一(1是)')
is_insert: Optional[str] = Field(default=None, description='是否为插入字段(1是)')
is_edit: Optional[str] = Field(default=None, description='是否编辑字段(1是)')
is_list: Optional[str] = Field(default=None, description='是否列表字段(1是)')
@@ -204,6 +205,7 @@ class GenTableColumnModel(GenTableColumnBaseModel):
pk: Optional[bool] = Field(default=None, description='是否主键')
increment: Optional[bool] = Field(default=None, description='是否自增')
required: Optional[bool] = Field(default=None, description='是否必填')
+ unique: Optional[bool] = Field(default=None, description='是否唯一')
insert: Optional[bool] = Field(default=None, description='是否为插入字段')
edit: Optional[bool] = Field(default=None, description='是否编辑字段')
list: Optional[bool] = Field(default=None, description='是否列表字段')
@@ -217,6 +219,7 @@ class GenTableColumnModel(GenTableColumnBaseModel):
self.pk = True if self.is_pk and self.is_pk == '1' else False
self.increment = True if self.is_increment and self.is_increment == '1' else False
self.required = True if self.is_required and self.is_required == '1' else False
+ self.unique = True if self.is_unique and self.is_unique == '1' else False
self.insert = True if self.is_insert and self.is_insert == '1' else False
self.edit = True if self.is_edit and self.is_edit == '1' else False
self.list = True if self.is_list and self.is_list == '1' else False
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 25f902a..949683b 100644
--- a/ruoyi-fastapi-backend/module_generator/templates/python/dao.py.jinja2
+++ b/ruoyi-fastapi-backend/module_generator/templates/python/dao.py.jinja2
@@ -71,7 +71,7 @@ class {{ BusinessName }}Dao:
select({{ ClassName }}).where(
{% for column in columns %}
{% if column.required %}
- {{ ClassName }}.{{ column.python_field | camel_to_snake }} == {{ businessName }}.{{ column.python_field | camel_to_snake }},
+ {{ ClassName }}.{{ column.python_field | camel_to_snake }} == {{ businessName }}.{{ column.python_field | camel_to_snake }} if {{ businessName }}.{{ column.python_field | camel_to_snake }} else True,
{% endif %}
{% endfor %}
)
@@ -145,7 +145,7 @@ class {{ BusinessName }}Dao:
:param {{ businessName }}: {{ functionName }}对象
:return:
"""
- db_{{ businessName }} = {{ ClassName }}(**{{ businessName }}.model_dump({%if table.sub %}exclude={'{{ subclassName }}_list'}{% endif %}))
+ 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 a3775d8..2b34300 100644
--- a/ruoyi-fastapi-backend/module_generator/templates/python/do.py.jinja2
+++ b/ruoyi-fastapi-backend/module_generator/templates/python/do.py.jinja2
@@ -15,7 +15,7 @@ class {{ ClassName }}(Base):
__tablename__ = '{{ tableName }}'
{% for column in 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.pk %}primary_key=True, {% endif %}{% if column.increment %}autoincrement=True, {% endif %}{% if column.required or column.pk %}nullable=False{% else %}nullable=True{% 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 e291be8..53a97b9 100644
--- a/ruoyi-fastapi-backend/module_generator/templates/python/service.py.jinja2
+++ b/ruoyi-fastapi-backend/module_generator/templates/python/service.py.jinja2
@@ -43,7 +43,7 @@ class {{ BusinessName }}Service:
{% for column in columns %}
{% set parentheseIndex = column.column_comment.find("(") %}
{% set comment = column.column_comment[:parentheseIndex] if parentheseIndex != -1 else column.column_comment %}
- {% if column.required %}
+ {% if column.unique %}
@classmethod
async def check_{{ column.python_field | camel_to_snake }}_unique_services(cls, query_db: AsyncSession, page_object: {{ BusinessName }}Model):
"""
@@ -74,7 +74,7 @@ class {{ BusinessName }}Service:
{% for column in columns %}
{% set parentheseIndex = column.column_comment.find("(") %}
{% set comment = column.column_comment[:parentheseIndex] if parentheseIndex != -1 else column.column_comment %}
- {% if column.required %}
+ {% if column.unique %}
if not await cls.check_{{ column.python_field | camel_to_snake }}_unique_services(query_db, page_object):
raise ServiceException(message=f'新增{{ functionName }}{page_object.{{ column.python_field | camel_to_snake }}}失败,{{ comment }}已存在')
{% endif %}
@@ -103,13 +103,13 @@ class {{ BusinessName }}Service:
:param page_object: 编辑{{ functionName }}对象
:return: 编辑{{ functionName }}校验结果
"""
- edit_{{ businessName }} = page_object.model_dump(exclude_unset=True{% if table.sub %}, exclude={'{{ subclassName }}_list'}{% endif %})
+ 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 %}
{% set parentheseIndex = column.column_comment.find("(") %}
{% set comment = column.column_comment[:parentheseIndex] if parentheseIndex != -1 else column.column_comment %}
- {% if column.required %}
+ {% if column.unique %}
if not await cls.check_{{ column.python_field | camel_to_snake }}_unique_services(query_db, page_object):
raise ServiceException(message=f'修改{{ functionName }}{page_object.{{ column.python_field | camel_to_snake }}}失败,{{ comment }}已存在')
{% endif %}
diff --git a/ruoyi-fastapi-backend/module_generator/templates/vue/index-tree.vue.jinja2 b/ruoyi-fastapi-backend/module_generator/templates/vue/index-tree.vue.jinja2
index 6a1af7d..3297279 100644
--- a/ruoyi-fastapi-backend/module_generator/templates/vue/index-tree.vue.jinja2
+++ b/ruoyi-fastapi-backend/module_generator/templates/vue/index-tree.vue.jinja2
@@ -162,7 +162,7 @@
{% for column in columns %}
{% set field = column.python_field %}
{% if column.insert and not column.pk %}
- {% if column.usable_column or column.super_column %}
+ {% if column.usable_column or not column.super_column %}
{% set parentheseIndex = column.column_comment.find("(") %}
{% set comment = column.column_comment[:parentheseIndex] if parentheseIndex != -1 else column.column_comment %}
{% set dictType = column.dict_type %}
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 e783e46..8076de2 100644
--- a/ruoyi-fastapi-backend/module_generator/templates/vue/index.vue.jinja2
+++ b/ruoyi-fastapi-backend/module_generator/templates/vue/index.vue.jinja2
@@ -174,7 +174,7 @@
{% for column in columns %}
{% set field = column.python_field %}
{% if column.insert and not column.pk %}
- {% if column.usable_column or column.super_column %}
+ {% if column.usable_column or not column.super_column %}
{% set parentheseIndex = column.column_comment.find("(") %}
{% set comment = column.column_comment[:parentheseIndex] if parentheseIndex != -1 else column.column_comment %}
{% set dictType = column.dict_type %}
diff --git a/ruoyi-fastapi-backend/module_generator/templates/vue/v3/index-tree.vue.jinja2 b/ruoyi-fastapi-backend/module_generator/templates/vue/v3/index-tree.vue.jinja2
index 64e8c8f..1488ea0 100644
--- a/ruoyi-fastapi-backend/module_generator/templates/vue/v3/index-tree.vue.jinja2
+++ b/ruoyi-fastapi-backend/module_generator/templates/vue/v3/index-tree.vue.jinja2
@@ -137,7 +137,7 @@
{% for column in columns %}
{% set field = column.python_field %}
{% if column.insert and not column.pk %}
- {% if column.usable_column or column.super_column %}
+ {% if column.usable_column or not column.super_column %}
{% set parentheseIndex = column.column_comment.find("(") %}
{% set comment = column.column_comment[:parentheseIndex] if parentheseIndex != -1 else column.column_comment %}
{% set dictType = column.dict_type %}
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 a6d80f6..2a22216 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
@@ -160,7 +160,7 @@
{% for column in columns %}
{% set field = column.python_field %}
{% if column.insert and not column.pk %}
- {% if column.usable_column or column.super_column %}
+ {% if column.usable_column or not column.super_column %}
{% set parentheseIndex = column.column_comment.find("(") %}
{% set comment = column.column_comment[:parentheseIndex] if parentheseIndex != -1 else column.column_comment %}
{% set dictType = column.dict_type %}
diff --git a/ruoyi-fastapi-backend/sql/ruoyi-fastapi-pg.sql b/ruoyi-fastapi-backend/sql/ruoyi-fastapi-pg.sql
index 70ee0c1..b3731aa 100644
--- a/ruoyi-fastapi-backend/sql/ruoyi-fastapi-pg.sql
+++ b/ruoyi-fastapi-backend/sql/ruoyi-fastapi-pg.sql
@@ -918,6 +918,7 @@ create table gen_table_column (
is_pk char(1),
is_increment char(1),
is_required char(1),
+ is_unique char(1),
is_insert char(1),
is_edit char(1),
is_list char(1),
@@ -942,6 +943,7 @@ comment on column gen_table_column.python_field is 'PYTHON字段名';
comment on column gen_table_column.is_pk is '是否主键(1是)';
comment on column gen_table_column.is_increment is '是否自增(1是)';
comment on column gen_table_column.is_required is '是否必填(1是)';
+comment on column gen_table_column.is_unique is '是否唯一(1是)';
comment on column gen_table_column.is_insert is '是否为插入字段(1是)';
comment on column gen_table_column.is_edit is '是否编辑字段(1是)';
comment on column gen_table_column.is_list is '是否列表字段(1是)';
diff --git a/ruoyi-fastapi-backend/sql/ruoyi-fastapi.sql b/ruoyi-fastapi-backend/sql/ruoyi-fastapi.sql
index 294e21c..d0ce11a 100644
--- a/ruoyi-fastapi-backend/sql/ruoyi-fastapi.sql
+++ b/ruoyi-fastapi-backend/sql/ruoyi-fastapi.sql
@@ -696,6 +696,7 @@ create table gen_table_column (
is_pk char(1) comment '是否主键(1是)',
is_increment char(1) comment '是否自增(1是)',
is_required char(1) comment '是否必填(1是)',
+ is_unique char(1) comment '是否唯一(1是)',
is_insert char(1) comment '是否为插入字段(1是)',
is_edit char(1) comment '是否编辑字段(1是)',
is_list char(1) comment '是否列表字段(1是)',
diff --git a/ruoyi-fastapi-backend/utils/gen_util.py b/ruoyi-fastapi-backend/utils/gen_util.py
index 3f1e392..355e5d0 100644
--- a/ruoyi-fastapi-backend/utils/gen_util.py
+++ b/ruoyi-fastapi-backend/utils/gen_util.py
@@ -71,13 +71,13 @@ class GenUtils:
column.is_insert = GenConstant.REQUIRE
# 编辑字段
- if not cls.arrays_contains(GenConstant.COLUMNNAME_NOT_EDIT, column_name) and not column.is_pk:
+ if not cls.arrays_contains(GenConstant.COLUMNNAME_NOT_EDIT, column_name) and not column.pk:
column.is_edit = GenConstant.REQUIRE
# 列表字段
- if not cls.arrays_contains(GenConstant.COLUMNNAME_NOT_LIST, column_name) and not column.is_pk:
+ if not cls.arrays_contains(GenConstant.COLUMNNAME_NOT_LIST, column_name) and not column.pk:
column.is_list = GenConstant.REQUIRE
# 查询字段
- if not cls.arrays_contains(GenConstant.COLUMNNAME_NOT_QUERY, column_name) and not column.is_pk:
+ if not cls.arrays_contains(GenConstant.COLUMNNAME_NOT_QUERY, column_name) and not column.pk:
column.is_query = GenConstant.REQUIRE
# 查询字段类型
diff --git a/ruoyi-fastapi-frontend/src/views/tool/gen/editTable.vue b/ruoyi-fastapi-frontend/src/views/tool/gen/editTable.vue
index 8739e0e..8c71824 100644
--- a/ruoyi-fastapi-frontend/src/views/tool/gen/editTable.vue
+++ b/ruoyi-fastapi-frontend/src/views/tool/gen/editTable.vue
@@ -85,6 +85,11 @@
+
+
+
+
+