You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

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":"操作成功"}