|
- from fastapi import APIRouter,Request
- from pydantic import BaseModel
- from fastapi import APIRouter, Depends
- from pydantic import BaseModel, ValidationError
- from model.models import AgentConfig,validate_wxid
-
-
-
- contacts_router = APIRouter(prefix="/api/contacts")
-
- class GetContactsRequest(BaseModel):
- wxid: str
- cache: bool = True # 默认为 True
-
- class DeleteContactsRequest(BaseModel):
- wxid: str
- friendWxid:str
-
- @contacts_router.post("/getfriends",response_model=None)
- async def get_friends(request: Request, body: GetContactsRequest):
- wxid = body.wxid
- cache=body.cache
- k,loginfo=await request.app.state.gewe_service.get_login_info_by_wxid_async(wxid)
- print(k,loginfo)
- if not k:
- return {"code":404,"message":f"{wxid} 没有对应的登录信息"}
-
-
-
- if cache:
- return await request.app.state.gewe_service.get_contacts_brief_from_cache_async(wxid)
- else:
- token_id=loginfo.get('tokenId','')
- app_id=loginfo.get('appId','')
- ret,msg,contacts_list=await request.app.state.gewe_service.fetch_contacts_list_async(token_id,app_id)
- if ret!=200:
- return {'code':ret,'message':msg}
- friend_wxids = [c for c in contacts_list['friends'] if c not in ['fmessage', 'medianote','weixin','weixingongzhong']] # 可以调整截取范围
- data=await request.app.state.gewe_service.save_contacts_brief_to_cache_async(token_id, app_id, wxid, friend_wxids)
- print(f'{wxid}获取实时好友信息')
- return data
-
-
-
- @contacts_router.post("/deletefriend",response_model=None)
- async def delete_friends(request: Request, body: DeleteContactsRequest):
- wxid = body.wxid
- friend_wxid = body.friendWxid
- k,loginfo=await request.app.state.gewe_service.get_login_info_by_wxid_async(wxid)
- if not k:
- return {"code":404,"message":f"{wxid} 没有用户信息"}
- token_id=loginfo.get('tokenId','')
- app_id=loginfo.get('appId','')
-
- ret, msg, data = await request.app.state.gewe_service.wxchat.delete_friend_async(token_id, app_id, friend_wxid)
- if ret !=200:
- return {
- 'code': ret,
- 'message': "删除好友失败"
- }
-
- ret, msg, contacts_list = await request.app.state.gewe_service.fetch_contacts_list_async(token_id, app_id)
- if ret !=200:
-
- return {
- 'code': ret,
- 'message': '获取联系人列表失败'
- }
-
- friend_wxids = [c for c in contacts_list['friends'] if c not in ['fmessage', 'medianote','weixin','weixingongzhong']] # 可以调整截取范围
- data=await request.app.state.gewe_service.save_contacts_brief_to_cache_async(token_id, app_id, wxid, friend_wxids)
- return data
|