|
- from flask_restful import Resource, reqparse
- from flask import jsonify,request,json
- from common import redis_helper,utils
- from wechat import gewe_chat
-
-
- class DeleteFriendResource(Resource):
- def __init__(self):
- self.parser = reqparse.RequestParser()
- self.wxchat = gewe_chat.wxchat
-
- def post(self):
- req = request.get_json()
- wxid = req.get("wxid")
- friend_wxid = req.get("friendWxid")
- _,login_info = utils.get_login_info_by_wxid(wxid)
- # 从Redis获取登录信息
-
- if not login_info or login_info.get('status') =="0":
- response = jsonify({
- 'code': 401,
- 'message': '用户没有登录'
- })
- response.status_code = 401
- return response
-
- token_id = login_info.get('tokenId')
- app_id = login_info.get('appId')
-
- # 调用删除好友接口
- ret, msg, data = self.wxchat.delete_friend(token_id, app_id, friend_wxid)
-
- if ret !=200:
- response=jsonify({
- 'code': ret,
- 'message': "删除好友失败"
- })
- response.status_code = ret
- return response
-
- ret, msg, data = self.wxchat.fetch_contacts_list(token_id, app_id)
- if ret !=200:
- response=jsonify({
- 'code': ret,
- 'message': '获取联系人列表失败'
- })
- response.status_code = ret
- return response
-
- friend_wxids = data['friends'][3:]
- data=self.wxchat.save_contacts_brief_to_cache(token_id, app_id, wxid, friend_wxids)
- return jsonify(data)
-
- class GetFriendsInfoResource(Resource):
- def __init__(self):
- self.parser = reqparse.RequestParser()
- self.wxchat = gewe_chat.wxchat
-
- def post(self):
- req = request.get_json()
- wxid = req.get("wxid")
- cache = req.get("cache",True)
- _,loginfo=utils.get_login_info_by_wxid(wxid)
- token_id=loginfo.get('tokenId')
- app_id=loginfo.get('appId')
-
- if cache:
- cache=self.wxchat.get_contacts_brief_from_cache(wxid)
- # cache_str=redis_helper.redis_helper.get_hash_field(f'__AI_OPS_WX__:CONTACTS_BRIEF:{wxid}','data')
- # cache = json.loads(cache_str) if cache_str else []
- return jsonify(cache)
- else:
- ret,msg,contacts_list=self.wxchat.fetch_contacts_list(token_id,app_id)
- if ret!=200:
- response=jsonify({
- 'code':ret,
- 'message':msg
- })
- response.status_code=ret
- return response
- friend_wxids = [c for c in contacts_list['friends'] if c not in ['fmessage', 'medianote','weixin','weixingongzhong']] # 可以调整截取范围
- data=self.wxchat.save_contacts_brief_to_cache(token_id, app_id, wxid, friend_wxids)
- print(f'{wxid}获取实时好友信息')
- return jsonify(data)
|