resource.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. import uuid
  2. from Log import logger
  3. from app.config.const import RESOURCE_STATUS_ON, RESOURCE_STATUS_OFF, RESOURCE_STATUS_DELETE
  4. from app.models import ResourceModel
  5. async def get_resource_tree(db):
  6. resource = db.query(ResourceModel).filter(ResourceModel.resource_id == None).order_by(ResourceModel.seq.desc()).all()
  7. return {"total": 0, "rows": [dept.to_tree_select_json() for dept in resource]}
  8. async def get_resource_info(db, menu_id: str):
  9. dept = db.query(ResourceModel).filter(ResourceModel.id.__eq__(menu_id)).first()
  10. return {"total": 0, "data": dept.to_json()}
  11. async def delete_resource_info(db, menu_id):
  12. delete_list = []
  13. dept_list = []
  14. next_dept_list = []
  15. base_dept = db.query(ResourceModel).filter(ResourceModel.id.__eq__(menu_id)).first()
  16. dept_list.append(base_dept)
  17. while dept_list:
  18. for dept in dept_list:
  19. delete_list.append(dept.id)
  20. for child_dept in dept.children:
  21. next_dept_list.append(child_dept)
  22. dept_list = next_dept_list
  23. next_dept_list = []
  24. try:
  25. db.query(ResourceModel).filter(ResourceModel.id.in_(delete_list)).update({"status": RESOURCE_STATUS_DELETE})
  26. db.commit()
  27. except Exception as e:
  28. logger.error(e)
  29. db.rollback()
  30. return '服务异常 !'
  31. return ""
  32. async def create_menu(db, menu_name, component, path, order_num, perms, menu_type, description, parent_id, status, icon):
  33. try:
  34. 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)
  35. if parent_id:
  36. dept_model.parent = db.get(ResourceModel, parent_id)
  37. db.add(dept_model)
  38. db.commit()
  39. db.refresh(dept_model)
  40. except Exception as e:
  41. logger.error(e)
  42. db.rollback()
  43. return False
  44. return True
  45. async def edit_resource_data(db, menu_id, menu_name, component, path, order_num, perms, menu_type, description, parent_id, status, icon):
  46. try:
  47. dept_model = db.query(ResourceModel).filter(ResourceModel.id == menu_id).first()
  48. dept_model.name = menu_name
  49. dept_model.url = component
  50. dept_model.path = path
  51. dept_model.perms = perms
  52. # dept_model.status = status
  53. dept_model.icon = icon
  54. dept_model.seq = order_num
  55. dept_model.description = description
  56. dept_model.resource_type_id = menu_type
  57. if parent_id:
  58. dept_model.parent = db.get(ResourceModel, parent_id)
  59. db.commit()
  60. db.refresh(dept_model)
  61. except Exception as e:
  62. logger.error(e)
  63. db.rollback()
  64. return False
  65. return True
  66. async def edit_resource_status(db, menu_id, status):
  67. delete_list = []
  68. dept_list = []
  69. next_dept_list = []
  70. base_dept = db.query(ResourceModel).filter(ResourceModel.id.__eq__(menu_id)).first()
  71. if status == RESOURCE_STATUS_ON:
  72. if base_dept.parent and base_dept.parent.status != RESOURCE_STATUS_ON:
  73. return '上级节点状态异常!'
  74. try:
  75. base_dept.status = status
  76. db.commit()
  77. except Exception as e:
  78. logger.error(e)
  79. db.rollback()
  80. return '服务异常 !'
  81. else:
  82. dept_list.append(base_dept)
  83. while dept_list:
  84. for dept in dept_list:
  85. delete_list.append(dept.id)
  86. for child_dept in dept.children:
  87. next_dept_list.append(child_dept)
  88. dept_list = next_dept_list
  89. next_dept_list = []
  90. try:
  91. db.query(ResourceModel).filter(ResourceModel.id.in_(delete_list)).update(
  92. {"status": RESOURCE_STATUS_OFF})
  93. db.commit()
  94. except Exception as e:
  95. logger.error(e)
  96. db.rollback()
  97. return '服务异常 !'
  98. return ""