Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

141 lines
4.2KB

  1. from fastapi import APIRouter,Request,HTTPException
  2. from pydantic import BaseModel
  3. from fastapi import APIRouter, Depends
  4. from pydantic import BaseModel, ValidationError
  5. from model.models import AgentConfig,validate_wxid,auth_required_time
  6. import threading
  7. import asyncio
  8. import time,random
  9. from typing import Dict, Tuple, Any
  10. label_router = APIRouter(prefix="/api/label")
  11. class LabelAddRequest(BaseModel):
  12. wxid: str
  13. labelName: str
  14. class LabelDelRequest(BaseModel):
  15. wxid: str
  16. labelIds: list
  17. class LabelListRequest(BaseModel):
  18. wxid: str
  19. class LabelModifyRequest(BaseModel):
  20. wxid: str
  21. labelIds: list
  22. wxIds: list
  23. @label_router.post("/add", response_model=None)
  24. async def add_label(request: Request, body: LabelAddRequest):
  25. wxid = body.wxid
  26. label_name = body.labelName
  27. if not wxid:
  28. return {"code": 400, "message": "wxid 不能为空"}
  29. k,loginfo=await request.app.state.gewe_service.get_login_info_by_wxid_async(wxid)
  30. if not k:
  31. return {"code":404,"message":f"{wxid} 没有对应的登录信息"}
  32. login_status=loginfo.get('status','0')
  33. if login_status != '1':
  34. return {"code": 401, "message": f"{wxid} 已经离线"}
  35. token_id=loginfo.get('tokenId','')
  36. app_id=loginfo.get('appId','')
  37. ret,msg,data=await request.app.state.gewe_service.label_add_async(token_id,app_id,label_name)
  38. if ret!=200:
  39. return {'code':ret,'message':msg}
  40. return { "labelName":data.get('labelName'),"labelId":data.get('labelId')}
  41. @label_router.post("/delete", response_model=None)
  42. async def delete_label(request: Request, body: LabelDelRequest, ):
  43. wxid = body.wxid
  44. label_ids= body.labelIds
  45. if not wxid:
  46. return {"code": 400, "message": "wxid 不能为空"}
  47. k,loginfo=await request.app.state.gewe_service.get_login_info_by_wxid_async(wxid)
  48. if not k:
  49. return {"code":404,"message":f"{wxid} 没有对应的登录信息"}
  50. login_status=loginfo.get('status','0')
  51. if login_status != '1':
  52. return {"code": 401, "message": f"{wxid} 已经离线"}
  53. token_id=loginfo.get('tokenId','')
  54. app_id=loginfo.get('appId','')
  55. ret,msg,data=await request.app.state.gewe_service.label_delete_async(token_id,app_id,label_ids)
  56. if ret!=200:
  57. return {'code':ret,'message':msg}
  58. return {"message":"操作成功"}
  59. @label_router.post("/list", response_model=None)
  60. async def list_label(request: Request, body: LabelListRequest, ):
  61. wxid = body.wxid
  62. if not wxid:
  63. return {"code": 400, "message": "wxid 不能为空"}
  64. k,loginfo=await request.app.state.gewe_service.get_login_info_by_wxid_async(wxid)
  65. if not k:
  66. return {"code":404,"message":f"{wxid} 没有对应的登录信息"}
  67. login_status=loginfo.get('status','0')
  68. if login_status != '1':
  69. return {"code": 401, "message": f"{wxid} 已经离线"}
  70. token_id=loginfo.get('tokenId','')
  71. app_id=loginfo.get('appId','')
  72. ret,msg,data=await request.app.state.gewe_service.label_list_async(token_id,app_id)
  73. if ret!=200:
  74. return {'code':ret,'message':msg}
  75. return {"labelList":data.get('labelList',[]) if data!=None else []}
  76. @label_router.post("/modifymembers", response_model=None)
  77. async def modifymembers_label(request: Request, body: LabelModifyRequest, ):
  78. wxid = body.wxid
  79. label_ids= body.labelIds
  80. wxids= body.wxIds
  81. wxid = body.wxid
  82. if not wxid:
  83. return {"code": 400, "message": "wxid 不能为空"}
  84. k,loginfo=await request.app.state.gewe_service.get_login_info_by_wxid_async(wxid)
  85. if not k:
  86. return {"code":404,"message":f"{wxid} 没有对应的登录信息"}
  87. login_status=loginfo.get('status','0')
  88. if login_status != '1':
  89. return {"code": 401, "message": f"{wxid} 已经离线"}
  90. token_id=loginfo.get('tokenId','')
  91. app_id=loginfo.get('appId','')
  92. ret,msg,data=await request.app.state.gewe_service.label_modify_members_async(token_id,app_id,label_ids,wxids)
  93. if ret!=200:
  94. return {'code':ret,'message':msg}
  95. return {"message":"操作成功"}