Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

85 rindas
3.0KB

  1. from flask_restful import Resource, reqparse
  2. from flask import jsonify,request,json
  3. from common import redis_helper,utils
  4. from wechat import gewe_chat
  5. class DeleteFriendResource(Resource):
  6. def __init__(self):
  7. self.parser = reqparse.RequestParser()
  8. self.wxchat = gewe_chat.wxchat
  9. def post(self):
  10. req = request.get_json()
  11. wxid = req.get("wxid")
  12. friend_wxid = req.get("friendWxid")
  13. _,login_info = utils.get_login_info_by_wxid(wxid)
  14. # 从Redis获取登录信息
  15. if not login_info or login_info.get('status') =="0":
  16. response = jsonify({
  17. 'code': 401,
  18. 'message': '用户没有登录'
  19. })
  20. response.status_code = 401
  21. return response
  22. token_id = login_info.get('tokenId')
  23. app_id = login_info.get('appId')
  24. # 调用删除好友接口
  25. ret, msg, data = self.wxchat.delete_friend(token_id, app_id, friend_wxid)
  26. if ret !=200:
  27. response=jsonify({
  28. 'code': ret,
  29. 'message': "删除好友失败"
  30. })
  31. response.status_code = ret
  32. return response
  33. ret, msg, data = self.wxchat.fetch_contacts_list(token_id, app_id)
  34. if ret !=200:
  35. response=jsonify({
  36. 'code': ret,
  37. 'message': '获取联系人列表失败'
  38. })
  39. response.status_code = ret
  40. return response
  41. friend_wxids = data['friends'][3:]
  42. data=self.wxchat.save_contacts_brief_to_cache(token_id, app_id, wxid, friend_wxids)
  43. return jsonify(data)
  44. class GetFriendsInfoResource(Resource):
  45. def __init__(self):
  46. self.parser = reqparse.RequestParser()
  47. self.wxchat = gewe_chat.wxchat
  48. def post(self):
  49. req = request.get_json()
  50. wxid = req.get("wxid")
  51. cache = req.get("cache",True)
  52. _,loginfo=utils.get_login_info_by_wxid(wxid)
  53. token_id=loginfo.get('tokenId')
  54. app_id=loginfo.get('appId')
  55. if cache:
  56. cache=self.wxchat.get_contacts_brief_from_cache(wxid)
  57. # cache_str=redis_helper.redis_helper.get_hash_field(f'__AI_OPS_WX__:CONTACTS_BRIEF:{wxid}','data')
  58. # cache = json.loads(cache_str) if cache_str else []
  59. return jsonify(cache)
  60. else:
  61. ret,msg,contacts_list=self.wxchat.fetch_contacts_list(token_id,app_id)
  62. if ret!=200:
  63. response=jsonify({
  64. 'code':ret,
  65. 'message':msg
  66. })
  67. response.status_code=ret
  68. return response
  69. friend_wxids = [c for c in contacts_list['friends'] if c not in ['fmessage', 'medianote','weixin','weixingongzhong']] # 可以调整截取范围
  70. data=self.wxchat.save_contacts_brief_to_cache(token_id, app_id, wxid, friend_wxids)
  71. print(f'{wxid}获取实时好友信息')
  72. return jsonify(data)