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 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 查询 + + -