diff --git a/vue-fastapi-backend/module_admin/controller/metasecurity_controller.py b/vue-fastapi-backend/module_admin/controller/metasecurity_controller.py index 120f798..ccb9af1 100644 --- a/vue-fastapi-backend/module_admin/controller/metasecurity_controller.py +++ b/vue-fastapi-backend/module_admin/controller/metasecurity_controller.py @@ -21,7 +21,7 @@ metaSecurityController = APIRouter(prefix='/meta/metaSecurity', dependencies=[De # MetaSecurity Column相关API @metaSecurityController.get( - '/col/list', response_model=PageResponseModel, dependencies=[Depends(CheckUserInterfaceAuth('meta:metaSecurityCol:list'))] + '/col/list', response_model=PageResponseModel, dependencies=[Depends(CheckUserInterfaceAuth('meta:metasecurity:col:list'))] ) async def get_meta_security_col_list( request: Request, @@ -31,7 +31,7 @@ async def get_meta_security_col_list( col_page_query_result = await MetaSecurityService.get_meta_security_col_list_services(query_db, col_page_query, is_page=True) logger.info('获取列配置列表成功') return ResponseUtil.success(model_content=col_page_query_result) -@metaSecurityController.get('/row/list', response_model=PageResponseModel, dependencies=[Depends(CheckUserInterfaceAuth('meta:metaSecurityRow:list'))] +@metaSecurityController.get('/row/list', response_model=PageResponseModel, dependencies=[Depends(CheckUserInterfaceAuth('meta:metasecurity:row:list'))] ) async def get_meta_security_row_list( request: Request, @@ -42,7 +42,7 @@ async def get_meta_security_row_list( logger.info('获取行配置列表成功') return ResponseUtil.success(model_content=row_page_query_result) @metaSecurityController.get( - '/row/{row_id}', response_model=MetaSecurityRowModel, dependencies=[Depends(CheckUserInterfaceAuth('meta:metaSecurityRow:query'))] + '/row/{row_id}', response_model=MetaSecurityRowModel, dependencies=[Depends(CheckUserInterfaceAuth('meta:metasecurity:row:list'))] ) async def query_detail_row(request: Request, row_id: str, query_db: AsyncSession = Depends(get_db)): config_detail_result = await MetaSecurityService.row_detail_services(query_db, row_id) @@ -50,7 +50,7 @@ async def query_detail_row(request: Request, row_id: str, query_db: AsyncSession return ResponseUtil.success(data=config_detail_result) @metaSecurityController.get( - '/col/{col_id}', response_model=MetaSecurityColModel, dependencies=[Depends(CheckUserInterfaceAuth('meta:metaSecurityCol:query'))] + '/col/{col_id}', response_model=MetaSecurityColModel, dependencies=[Depends(CheckUserInterfaceAuth('meta:metasecurity:col:list'))] ) async def query_detail_col(request: Request, col_id: str, query_db: AsyncSession = Depends(get_db)): config_detail_result = await MetaSecurityService.col_detail_services(query_db, col_id) diff --git a/vue-fastapi-backend/module_admin/entity/vo/dataSource_vo.py b/vue-fastapi-backend/module_admin/entity/vo/dataSource_vo.py index 17005db..dee6c53 100644 --- a/vue-fastapi-backend/module_admin/entity/vo/dataSource_vo.py +++ b/vue-fastapi-backend/module_admin/entity/vo/dataSource_vo.py @@ -26,7 +26,10 @@ class DataSource(BaseModel): connection_params: ConnectionParams = Field(alias="connectionParams", description="Connection parameters") create_time: datetime = Field(alias="createTime", description="Creation time") update_time: datetime = Field(alias="updateTime", description="Update time") - +class dsSchedule(BaseModel): + model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) + id: int = Field(description="Primary key ID") + releaseState: Optional[str] = Field(alias="releaseState", description="releaseState") class WorkerGroup(BaseModel): name: str= Field(description="Datasource name") class AlertGroups(BaseModel): diff --git a/vue-fastapi-backend/module_admin/service/metasecurity_service.py b/vue-fastapi-backend/module_admin/service/metasecurity_service.py index 3f8fb56..71714e2 100644 --- a/vue-fastapi-backend/module_admin/service/metasecurity_service.py +++ b/vue-fastapi-backend/module_admin/service/metasecurity_service.py @@ -302,6 +302,14 @@ class MetaSecurityService: # await test_connection(dbConnent) #3.执行原始sql result = await cls.execute_sql(dbConnent, page_object.sqlStr,"原始") + if 3 in role_id_list: + resultDict={ + "ctrlSql": page_object.sqlStr, + "data": result, + "message":"数据安全管理员权限" + } + return resultDict + #4.获取sql中涉及的表名 sqlTableNames =await cls.get_tables_from_sql(page_object.sqlStr) #5.根据表名获取数据库中的字段名 diff --git a/vue-fastapi-backend/module_admin/service/metatask_service.py b/vue-fastapi-backend/module_admin/service/metatask_service.py index a73a02c..e64aa30 100644 --- a/vue-fastapi-backend/module_admin/service/metatask_service.py +++ b/vue-fastapi-backend/module_admin/service/metatask_service.py @@ -3,7 +3,6 @@ from sqlalchemy.ext.asyncio import AsyncSession from module_admin.entity.vo.metatask_vo import MetataskQueryModel, MetataskModel, DeleteMetataskModel from module_admin.dao.metatask_dao import MetataskDao from utils.page_util import PageResponseModel -# from module_admin.entity.vo.dataSource_vo import DataSource,Datasouceall,AlertGroups,Environment,WorkerGroup,ProcessDefinition,ParmScheduleVo,ParmSchedule,ProcessInstancePage from module_admin.entity.vo.dataSource_vo import * from module_admin.entity.vo.metaprocessconfig_vo import MetaprocessconfigQueryModel,MetaprocessconfigModel from config.constant import CommonConstant @@ -1245,10 +1244,27 @@ class MetataskService: async def ds_metatask_services( cls, request: Request, query_db: AsyncSession, process: ParmScheduleVo,current_user: CurrentUserModel ): - - parm =ParmSchedule( + projectCode = await request.app.state.redis.get(f'{RedisInitKeyConfig.SYS_CONFIG.key}:sys.ds.projectcode') + # 先查询是否建立定时任务 + getdsurl=f'{AppConfig.ds_server_url}/dolphinscheduler/projects/'+projectCode+'/schedules?pageSize=10&pageNo=1&processDefinitionCode='+str(process.processDefinitionCode) + headers = {'dashUserName': current_user.user.user_name, 'dashPassword': current_user.user.password, 'Content-Type': 'application/x-www-form-urlencoded'} + getdsresponse = requests.get(getdsurl, headers=headers, verify=False) + getdstext= getdsresponse.text + responsJson = json.loads(getdstext) + if responsJson['msg'] == 'success': + if responsJson['data']['total']>0: + # getds_json_list = json.dumps(responsJson['data']['totalList'], ensure_ascii=False, indent=4) + getds_json_list = responsJson['data']['totalList'] + for item in getds_json_list: + if item['releaseState']=='ONLINE': + # 先下线在删除 + offdsurl=f"{AppConfig.ds_server_url}/dolphinscheduler/projects/{projectCode}/schedules/{item['id']}/offline" + offresponse = requests.post(offdsurl, headers=headers, verify=False) + # 删除对应的调度 + deldsurl=f"{AppConfig.ds_server_url}/dolphinscheduler/projects/{projectCode}/schedules/{item['id']}?scheduleId={item['id']}" + delresponse = requests.delete(deldsurl, headers=headers, verify=False) - ) + parm =ParmSchedule() parm.failureStrategy='CONTINUE' parm.warningType='NONE' parm.warningGroupId=process.warningGroupId @@ -1261,18 +1277,17 @@ class MetataskService: '", "endTime":"' + process.endTime.strftime('%Y-%m-%d %H:%M:%S') + '", "crontab":"' + process.crontab + '", "timezoneId":"Asia/Shanghai"}') - projectCode = await request.app.state.redis.get(f'{RedisInitKeyConfig.SYS_CONFIG.key}:sys.ds.projectcode') url=f'{AppConfig.ds_server_url}/dolphinscheduler/projects/'+projectCode+'/schedules' - headers = {'dashUserName': current_user.user.user_name, 'dashPassword': current_user.user.password, 'Content-Type': 'application/x-www-form-urlencoded'} # form_data = {key: str(value) for key, value in process.__dict__.items()} form_data = {key: value for key, value in parm.__dict__.items()} - response = requests.post(url, headers=headers, data=form_data, verify=False) text= response.text responsJson = json.loads(text) - if responsJson['success'] is True: - return "运行成功!" - + if responsJson['msg'] == 'success': + scheduleId= responsJson['data']['id'] + ondsurl=f"{AppConfig.ds_server_url}/dolphinscheduler/projects/{projectCode}/schedules/{scheduleId}/online" + ondsurl = requests.post(ondsurl, headers=headers, verify=False) + return "调度运行成功!" else: raise ServiceException(message='运行失败!') diff --git a/vue-fastapi-frontend/src/views/meta/metatask/dsDialog.vue b/vue-fastapi-frontend/src/views/meta/metatask/dsDialog.vue index f0b63a9..62cc9f7 100644 --- a/vue-fastapi-frontend/src/views/meta/metatask/dsDialog.vue +++ b/vue-fastapi-frontend/src/views/meta/metatask/dsDialog.vue @@ -114,6 +114,7 @@ import { ref, reactive, watch } from "vue"; import { dsmetatask } from "@/api/meta/metatask"; import Crontab from '@/components/Crontab' +import { ElMessage } from 'element-plus' export default { components: { Crontab }, @@ -165,7 +166,12 @@ export default { dsmetatask(addDateRange(form, dateRange.value)).then((response) => { if (response.success) { visible.value = false; - this.$modal.msgSuccess("运行成功"); + console.log(response.msg) + ElMessage({ + message: response.msg, + type: 'success', + }) + } }); }; diff --git a/vue-fastapi-frontend/src/views/meta/metatask/runDialog.vue b/vue-fastapi-frontend/src/views/meta/metatask/runDialog.vue index a97c520..6fd0748 100644 --- a/vue-fastapi-frontend/src/views/meta/metatask/runDialog.vue +++ b/vue-fastapi-frontend/src/views/meta/metatask/runDialog.vue @@ -64,6 +64,7 @@