From b8fd9a5ebb344f90f91d8f6445aa2c84fee0ed0d Mon Sep 17 00:00:00 2001
From: siyaqi
Date: Sun, 8 Jun 2025 17:58:21 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BD=9C=E7=94=A8=E5=9F=9F=E9=85=8D=E7=BD=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../controller/metadata_config_controller.py | 13 +-
.../module_admin/dao/metadata_config_dao.py | 23 +-
.../entity/do/metadata_config_do.py | 12 +-
.../entity/vo/metadata_config_vo.py | 27 +++
.../service/metadata_config_service.py | 60 ++++-
.../src/api/metadataConfig/metadataConfig.js | 7 +
.../views/metadataConfig/bizConfig/index.vue | 217 +++++++++++++++---
7 files changed, 310 insertions(+), 49 deletions(-)
diff --git a/vue-fastapi-backend/module_admin/controller/metadata_config_controller.py b/vue-fastapi-backend/module_admin/controller/metadata_config_controller.py
index c1f5b45..fbfdf81 100644
--- a/vue-fastapi-backend/module_admin/controller/metadata_config_controller.py
+++ b/vue-fastapi-backend/module_admin/controller/metadata_config_controller.py
@@ -12,6 +12,7 @@ from module_admin.entity.vo.metadata_config_vo import (
SecuBizConfigQueryModel,
SecuBizPermiConfigModel,
SecuBizPermiConfigBatchModel,
+ SecuBizConfigAddModel,
SecuBizPermiConfigPageQueryModel,
SecuBizPermiConfigQueryModel
)
@@ -178,7 +179,7 @@ async def get_biz_config_list_all(
@metadataConfigController.post("/bizConfig/add")
@ValidateFields(["bizModule", "configType", "securityLevel", "applyType"])
async def add_biz_config(
- item: SecuBizConfigModel,
+ item: SecuBizConfigAddModel,
db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
@@ -191,7 +192,7 @@ async def add_biz_config(
@metadataConfigController.post("/bizConfig/edit")
@ValidateFields(["onum"])
async def edit_biz_config(
- item: SecuBizConfigModel,
+ item: SecuBizConfigAddModel,
db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
@@ -254,4 +255,10 @@ async def delete_biz_permi_config(onums: str, db: AsyncSession = Depends(get_db)
@metadataConfigController.get("/bizPermiConfig/detail")
async def get_biz_permi_config_detail(onum: str, db: AsyncSession = Depends(get_db)):
data = await MetadataConfigService.get_biz_permi_config_detail_services(db, onum)
- return ResponseUtil.success(data=data)
\ No newline at end of file
+ return ResponseUtil.success(data=data)
+@metadataConfigController.get("/bizConfigRela/list/{bizOnum}")
+async def get_biz_rela_config_list(bizOnum: int, query_db: AsyncSession = Depends(get_db),
+ ):
+ ai_chat_list_result = await MetadataConfigService.get_biz_config_rela_list_services(query_db, bizOnum)
+ logger.info('获取成功')
+ return ResponseUtil.success(data=ai_chat_list_result)
\ No newline at end of file
diff --git a/vue-fastapi-backend/module_admin/dao/metadata_config_dao.py b/vue-fastapi-backend/module_admin/dao/metadata_config_dao.py
index 59dc645..17e9442 100644
--- a/vue-fastapi-backend/module_admin/dao/metadata_config_dao.py
+++ b/vue-fastapi-backend/module_admin/dao/metadata_config_dao.py
@@ -1,9 +1,10 @@
from datetime import datetime, time
from sqlalchemy import delete, select, update,and_
from sqlalchemy.ext.asyncio import AsyncSession
-from module_admin.entity.do.meta_do import MetadataClas # ORM 类
-from module_admin.entity.do.metadata_config_do import MetadataSec,SecuBizConfig,SecuBizPermiConfig # ORM 类
+from module_admin.entity.do.meta_do import MetadataClas,MetadataExtractInfo # ORM 类
+from module_admin.entity.do.metadata_config_do import MetadataSec,SecuBizConfig,SecuBizPermiConfig,SecuBizConfigRela # ORM 类
from typing import List
+
from sqlalchemy.orm import joinedload
from sqlalchemy.sql import true
from utils.page_util import PageUtil
@@ -242,4 +243,20 @@ class MetadataConfigDao:
@classmethod
async def delete_biz_permi_config(cls, db: AsyncSession, onum_list: list[int]):
- await db.execute(delete(SecuBizPermiConfig).where(SecuBizPermiConfig.onum.in_(onum_list)))
\ No newline at end of file
+ await db.execute(delete(SecuBizPermiConfig).where(SecuBizPermiConfig.onum.in_(onum_list)))
+# ----------------------------------biz_confg_rela------------------------------
+ @classmethod
+ async def delete_biz_rela_dao(cls, db: AsyncSession, biz_onum: int):
+ await db.execute(delete(SecuBizConfigRela).where(SecuBizConfigRela.biz_onum == biz_onum) )
+ @classmethod
+ async def add_batch_biz_rela_dao(cls, db: AsyncSession, rela_list: List[SecuBizConfigRela]):
+ db.add_all(rela_list)
+ await db.flush()
+ @classmethod
+ async def get_biz_rela_by_biz_id(cls, db: AsyncSession, biz_onum: int):
+ result = await db.execute(
+ select(MetadataExtractInfo)
+ .join(SecuBizConfigRela, MetadataExtractInfo.onum == SecuBizConfigRela.tab_onum)
+ .where(SecuBizConfigRela.biz_onum == biz_onum)
+ )
+ return result.scalars().all()
\ No newline at end of file
diff --git a/vue-fastapi-backend/module_admin/entity/do/metadata_config_do.py b/vue-fastapi-backend/module_admin/entity/do/metadata_config_do.py
index 162f306..20b8300 100644
--- a/vue-fastapi-backend/module_admin/entity/do/metadata_config_do.py
+++ b/vue-fastapi-backend/module_admin/entity/do/metadata_config_do.py
@@ -32,7 +32,17 @@ class MetadataSec(Base):
sec_level_desc = Column(String(200), default=None, comment='等级说明')
sec_level_summary = Column(String(200), comment='等级简介')
-
+class SecuBizConfigRela(Base):
+ """
+ 业务域配置关联表 ORM 映射类,对应表 t_secu_biz_config_rela
+ """
+ __tablename__ = "t_secu_biz_config_rela"
+
+ onum = Column(Integer, primary_key=True, autoincrement=True, comment="序号")
+ biz_onum = Column(Integer, nullable=True, comment="业务域id")
+ tab_onum = Column(Integer, nullable=True, comment="表id")
+ create_by = Column(String(20), nullable=True, comment="创建者")
+ create_time = Column(DateTime, nullable=True, comment="创建时间")
class SecuBizPermiConfig(Base):
__tablename__ = "t_secu_biz_permi_config"
diff --git a/vue-fastapi-backend/module_admin/entity/vo/metadata_config_vo.py b/vue-fastapi-backend/module_admin/entity/vo/metadata_config_vo.py
index 60027f7..5d9acf3 100644
--- a/vue-fastapi-backend/module_admin/entity/vo/metadata_config_vo.py
+++ b/vue-fastapi-backend/module_admin/entity/vo/metadata_config_vo.py
@@ -107,6 +107,33 @@ class MetadataSecPageQueryModel(MetadataSecQueryModel):
# ----------- t_secu_biz_config 表对应模型 --------------
+class SecuBizConfigRelaModel(BaseModel):
+ """
+ 业务域配置关联表对应 Pydantic 模型
+ """
+ model_config = ConfigDict(alias_generator=to_camel, from_attributes=True)
+
+ onum: Optional[int] = Field(default=None, description="序号")
+ biz_onum: Optional[int] = Field(default=None, description="业务域ID")
+ tab_onum: Optional[int] = Field(default=None, description="表ID")
+ create_by: Optional[str] = Field(default=None, description="创建者")
+ create_time: Optional[datetime] = Field(default=None, description="创建时间")
+
+class SecuBizConfigAddModel(BaseModel):
+ """
+ 业务域配置对应 Pydantic 模型
+ """
+ model_config = ConfigDict(alias_generator=to_camel, from_attributes=True)
+
+ onum: Optional[int] = Field(default=None, description='序号')
+ biz_name: Optional[str] = Field(default=None, description='业务域名称')
+ risk_lvl: Optional[str] = Field(default=None, description='可关联安全等级序号')
+ isStop: Optional[Literal[0, 1]] = Field(default=None, description='是否停用(0:运行 1:停用)')
+ create_by: Optional[str] = Field(default=None, description='创建者')
+ create_time: Optional[datetime] = Field(default=None, description='创建时间')
+ update_by: Optional[str] = Field(default=None, description='更新者')
+ update_time: Optional[datetime] = Field(default=None, description='更新时间')
+ tab_onum_list: List[int] = Field(default=None, description='表id列表')
class SecuBizConfigModel(BaseModel):
"""
业务域配置对应 Pydantic 模型
diff --git a/vue-fastapi-backend/module_admin/service/metadata_config_service.py b/vue-fastapi-backend/module_admin/service/metadata_config_service.py
index b5911a4..4004fcf 100644
--- a/vue-fastapi-backend/module_admin/service/metadata_config_service.py
+++ b/vue-fastapi-backend/module_admin/service/metadata_config_service.py
@@ -1,8 +1,10 @@
from sqlalchemy.ext.asyncio import AsyncSession
from module_admin.dao.metadata_config_dao import MetadataConfigDao
from module_admin.entity.vo.common_vo import CrudResponseModel
-from module_admin.entity.vo.metadata_config_vo import MetadataClasModel, SecuBizPermiConfigBatchModel,MetadataClasPageQueryModel,MetadataSecModel,MetadataSecPageQueryModel,SecuBizConfigModel ,SecuBizConfigQueryModel,SecuBizPermiConfigModel, SecuBizPermiConfigQueryModel
+from module_admin.entity.vo.metadata_config_vo import MetadataClasModel,SecuBizConfigAddModel,SecuBizConfigRelaModel,\
+SecuBizPermiConfigBatchModel,MetadataClasPageQueryModel,MetadataSecModel,MetadataSecPageQueryModel,SecuBizConfigModel ,SecuBizConfigQueryModel,SecuBizPermiConfigModel, SecuBizPermiConfigQueryModel
from utils.common_util import CamelCaseUtil
+from module_admin.entity.do.metadata_config_do import SecuBizConfigRela # ORM 类
from exceptions.exception import ServiceException
import uuid
from typing import List
@@ -172,9 +174,27 @@ class MetadataConfigService:
return result
@classmethod
- async def add_biz_config_services(cls, db: AsyncSession, page_object: SecuBizConfigModel):
+ async def add_biz_config_services(cls, db: AsyncSession, page_object: SecuBizConfigAddModel):
try:
- await MetadataConfigDao.add_biz_config(db, page_object)
+ configMode = SecuBizConfigModel()
+ configMode.onum=page_object.onum
+ configMode.biz_name=page_object.biz_name
+ configMode.risk_lvl=page_object.risk_lvl
+ configMode.isStop=page_object.isStop
+ configMode.create_by=page_object.create_by
+ configMode.update_by=page_object.update_by
+ configMode.update_time=page_object.update_time
+ configMode.create_time=page_object.create_time
+ obj=await MetadataConfigDao.add_biz_config(db, configMode)
+ records: List[SecuBizConfigRela] = []
+ for tab_onum in page_object.tab_onum_list:
+ record = SecuBizConfigRela()
+ record.biz_onum = obj.onum
+ record.tab_onum = tab_onum
+ record.create_by = obj.create_by
+ record.create_time = obj.create_time
+ records.append(record)
+ await MetadataConfigDao.add_batch_biz_rela_dao(db,records)
await db.commit()
return CrudResponseModel(is_success=True, message="新增成功")
except Exception as e:
@@ -182,12 +202,35 @@ class MetadataConfigService:
raise e
@classmethod
- async def edit_biz_config_services(cls, db: AsyncSession, page_object: SecuBizConfigModel):
- edit_data = page_object.model_dump(exclude_unset=True)
+ async def edit_biz_config_services(cls, db: AsyncSession, page_object: SecuBizConfigAddModel):
+
+ configMode = SecuBizConfigModel()
+ configMode.onum=page_object.onum
+ configMode.biz_name=page_object.biz_name
+ configMode.risk_lvl=page_object.risk_lvl
+ configMode.isStop=page_object.isStop
+ configMode.create_by=page_object.create_by
+ configMode.update_by=page_object.update_by
+ configMode.update_time=page_object.update_time
+ configMode.create_time=page_object.create_time
+
+
+ edit_data = configMode.model_dump(exclude_unset=True)
+
info = await cls.get_biz_config_detail_services(db, page_object.onum)
if info.onum:
try:
await MetadataConfigDao.edit_biz_config(db, page_object.onum, edit_data)
+ await MetadataConfigDao.delete_biz_rela_dao(db, page_object.onum)
+ records: List[SecuBizConfigRela] = []
+ for tab_onum in page_object.tab_onum_list:
+ record = SecuBizConfigRela()
+ record.biz_onum = page_object.onum
+ record.tab_onum = tab_onum
+ record.create_by = page_object.update_by
+ record.create_time = page_object.update_time
+ records.append(record)
+ await MetadataConfigDao.add_batch_biz_rela_dao(db,records)
await db.commit()
return CrudResponseModel(is_success=True, message="更新成功")
except Exception as e:
@@ -296,4 +339,9 @@ class MetadataConfigService:
if result:
return SecuBizPermiConfigModel(**CamelCaseUtil.transform_result(result))
else:
- return SecuBizPermiConfigModel(**dict())
\ No newline at end of file
+ return SecuBizPermiConfigModel(**dict())
+ @classmethod
+ async def get_biz_config_rela_list_services(cls, result_db: AsyncSession, biz_onum: int,
+ ):
+ ai_session_list = await MetadataConfigDao.get_biz_rela_by_biz_id(result_db, biz_onum) # 查询最新的20条
+ return CamelCaseUtil.transform_result(ai_session_list)
\ No newline at end of file
diff --git a/vue-fastapi-frontend/src/api/metadataConfig/metadataConfig.js b/vue-fastapi-frontend/src/api/metadataConfig/metadataConfig.js
index 57fcab0..ebf68b6 100644
--- a/vue-fastapi-frontend/src/api/metadataConfig/metadataConfig.js
+++ b/vue-fastapi-frontend/src/api/metadataConfig/metadataConfig.js
@@ -180,3 +180,10 @@ export function delBizPermiConfig(onumStr) {
params: { onums: onumStr }
})
}
+// 查询数据安全配置详情
+export function getBizRalaList(onum) {
+ return request({
+ url: '/default-api/metadataConfig/bizConfigRela/list/' + onum,
+ method: 'get'
+ })
+}
\ No newline at end of file
diff --git a/vue-fastapi-frontend/src/views/metadataConfig/bizConfig/index.vue b/vue-fastapi-frontend/src/views/metadataConfig/bizConfig/index.vue
index 17e86ed..649ada6 100644
--- a/vue-fastapi-frontend/src/views/metadataConfig/bizConfig/index.vue
+++ b/vue-fastapi-frontend/src/views/metadataConfig/bizConfig/index.vue
@@ -96,45 +96,113 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ <
+
+
+
+
+
+
+
+
+
+
+
+
+
取消
保存
@@ -145,12 +213,17 @@
@@ -319,4 +456,12 @@ onMounted(() => {
.mb8 {
margin-bottom: 8px;
}
+.flex-col-center {
+ display: flex;
+ flex-direction: column;
+ margin-top: 150px;
+ justify-content: center;
+ align-items: center;
+ height: 100%;
+}