group.py 4.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. from fastapi import APIRouter, Depends
  2. from datetime import datetime
  3. from app.api import Response, get_current_user
  4. from app.models.base_model import get_db
  5. from app.models.group_model import GroupModel, GroupData, GroupUsers
  6. from app.models.user import PageParameter
  7. from app.models.user_model import UserModel
  8. from app.service.group import create_group, group_list, edit_group_data, delete_group_data, get_group_users, \
  9. save_user_to_group
  10. group_router = APIRouter()
  11. @group_router.post("/group_list", response_model=Response)
  12. async def user_group_list(paras: PageParameter, current_user: UserModel = Depends(get_current_user),
  13. db=Depends(get_db)):
  14. return Response(code=200, msg="", data=await group_list(db, paras.page_size, paras.page_index, paras.keyword, current_user.permission, current_user.id))
  15. @group_router.post("/add_group", response_model=Response)
  16. async def add_group(group: GroupData, current_user: UserModel = Depends(get_current_user), db=Depends(get_db)):
  17. if not group.group_name:
  18. return Response(code=400, msg="The group_name cannot be empty!")
  19. db_group = db.query(GroupModel).filter(GroupModel.group_name == group.group_name).first()
  20. if db_group:
  21. return Response(code=200, msg="group already created")
  22. is_create = await create_group(db, group.group_name, group.group_description, current_user.id)
  23. if not is_create:
  24. return Response(code=200, msg="group create failure", data={})
  25. return Response(code=200, msg="group create successfully", data={"group_name": group.group_name})
  26. @group_router.post("/edit_group", response_model=Response)
  27. async def edit_group(group: GroupData, current_user: UserModel = Depends(get_current_user), db=Depends(get_db)):
  28. if not group.group_name:
  29. return Response(code=400, msg="The group_name cannot be empty!")
  30. db_group = db.query(GroupModel).filter(GroupModel.group_name == group.group_name).first()
  31. if db_group:
  32. return Response(code=200, msg="group_name already created")
  33. is_edit = await edit_group_data(db, group.id,
  34. {"group_name": group.group_name, "group_description": group.group_description,
  35. "updated_at": datetime.now()})
  36. if not is_edit:
  37. return Response(code=200, msg="group edit failure", data={})
  38. return Response(code=200, msg="group edit successfully", data={"group_name": group.group_name})
  39. @group_router.post("/edit_group_status", response_model=Response)
  40. async def edit_group_status(group: GroupData, current_user: UserModel = Depends(get_current_user), db=Depends(get_db)):
  41. if group.group_status not in ["0", "1"]:
  42. return Response(code=400, msg="The status cannot be {}!".format(group.group_status))
  43. db_group = db.query(GroupModel).filter(GroupModel.id == group.id).first()
  44. if not db_group:
  45. return Response(code=200, msg="group does not exist")
  46. is_edit = await edit_group_data(db, group.id,
  47. {"status": group.group_status,"updated_at": datetime.now()})
  48. if not is_edit:
  49. return Response(code=200, msg="group status edit failure", data={})
  50. return Response(code=200, msg="group status edit successfully", data={"group_name": group.group_name})
  51. @group_router.post("/delete_group", response_model=Response)
  52. async def delete_group(group: GroupData, current_user: UserModel = Depends(get_current_user), db=Depends(get_db)):
  53. db_group = db.query(GroupModel).filter(GroupModel.id == group.id).first()
  54. if not db_group:
  55. return Response(code=200, msg="group does not exist")
  56. is_edit = await delete_group_data(db, group.id)
  57. if not is_edit:
  58. return Response(code=200, msg="group delete failure", data={})
  59. return Response(code=200, msg="group delete successfully", data={})
  60. @group_router.post("/group_users", response_model=Response)
  61. async def group_users(group: GroupData, current_user: UserModel = Depends(get_current_user), db=Depends(get_db)):
  62. db_group = db.query(GroupModel).filter(GroupModel.id == group.id).first()
  63. if not db_group:
  64. return Response(code=200, msg="group does not exist", data={})
  65. return Response(code=200, msg="success", data=await get_group_users(db, group.id))
  66. @group_router.post("/save_group_user", response_model=Response)
  67. async def save_group_user(group_user: GroupUsers, current_user: UserModel = Depends(get_current_user),
  68. db=Depends(get_db)):
  69. db_group = db.query(GroupModel).filter(GroupModel.id == group_user.id).first()
  70. if not db_group:
  71. return Response(code=200, msg="group does not exist")
  72. is_success = await save_user_to_group(db, current_user.id, group_user.id, group_user.user_list)
  73. if not is_success:
  74. return Response(code=500, msg="save user to group failure", data={})
  75. return Response(code=200, msg="success", data={})