From e26a7859a8900b152e10961d91fa6ad19a8deb9c Mon Sep 17 00:00:00 2001 From: zhaoqingang <zhaoqg0118@163.com> Date: 星期四, 06 三月 2025 14:41:27 +0800 Subject: [PATCH] 首页通用对话增加 --- app/service/resource.py | 99 ++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 93 insertions(+), 6 deletions(-) diff --git a/app/service/resource.py b/app/service/resource.py index 572c55e..869910b 100644 --- a/app/service/resource.py +++ b/app/service/resource.py @@ -1,9 +1,8 @@ import uuid -from app.Log import logger -from app.models import OrganizationModel, GroupModel, ResourceModel -from app.models.role_model import RoleModel - +from Log import logger +from app.config.const import RESOURCE_STATUS_ON, RESOURCE_STATUS_OFF, RESOURCE_STATUS_DELETE +from app.models import ResourceModel async def get_resource_tree(db): @@ -19,11 +18,99 @@ async def delete_resource_info(db, menu_id): + delete_list = [] + dept_list = [] + next_dept_list = [] + base_dept = db.query(ResourceModel).filter(ResourceModel.id.__eq__(menu_id)).first() + dept_list.append(base_dept) + while dept_list: + for dept in dept_list: + delete_list.append(dept.id) + for child_dept in dept.children: + next_dept_list.append(child_dept) + + dept_list = next_dept_list + next_dept_list = [] + try: - db.query(ResourceModel).filter(ResourceModel.id.__eq__(menu_id)).delete() + db.query(ResourceModel).filter(ResourceModel.id.in_(delete_list)).update({"status": RESOURCE_STATUS_DELETE}) db.commit() except Exception as e: logger.error(e) db.rollback() + return '鏈嶅姟寮傚父 锛�' + return "" + + +async def create_menu(db, menu_name, component, path, order_num, perms, menu_type, description, parent_id, status, icon): + try: + dept_model = ResourceModel(id=str(uuid.uuid4()),name=menu_name, url=component,path=path,perms=perms,description=description,status=status, icon=icon,seq=order_num, resource_type_id=menu_type) + if parent_id: + dept_model.parent = db.get(ResourceModel, parent_id) + db.add(dept_model) + db.commit() + db.refresh(dept_model) + except Exception as e: + logger.error(e) + db.rollback() return False - return True \ No newline at end of file + return True + + +async def edit_resource_data(db, menu_id, menu_name, component, path, order_num, perms, menu_type, description, parent_id, status, icon): + try: + dept_model = db.query(ResourceModel).filter(ResourceModel.id == menu_id).first() + dept_model.name = menu_name + dept_model.url = component + dept_model.path = path + dept_model.perms = perms + # dept_model.status = status + dept_model.icon = icon + dept_model.seq = order_num + dept_model.description = description + dept_model.resource_type_id = menu_type + if parent_id: + dept_model.parent = db.get(ResourceModel, parent_id) + db.commit() + db.refresh(dept_model) + except Exception as e: + logger.error(e) + db.rollback() + return False + return True + + +async def edit_resource_status(db, menu_id, status): + delete_list = [] + dept_list = [] + next_dept_list = [] + base_dept = db.query(ResourceModel).filter(ResourceModel.id.__eq__(menu_id)).first() + if status == RESOURCE_STATUS_ON: + if base_dept.parent and base_dept.parent.status != RESOURCE_STATUS_ON: + return '涓婄骇鑺傜偣鐘舵�佸紓甯革紒' + try: + base_dept.status = status + db.commit() + except Exception as e: + logger.error(e) + db.rollback() + return '鏈嶅姟寮傚父 锛�' + else: + dept_list.append(base_dept) + while dept_list: + for dept in dept_list: + delete_list.append(dept.id) + for child_dept in dept.children: + next_dept_list.append(child_dept) + + dept_list = next_dept_list + next_dept_list = [] + try: + db.query(ResourceModel).filter(ResourceModel.id.in_(delete_list)).update( + {"status": RESOURCE_STATUS_OFF}) + db.commit() + except Exception as e: + logger.error(e) + db.rollback() + return '鏈嶅姟寮傚父 锛�' + return "" \ No newline at end of file -- Gitblit v1.8.0