from flask import Blueprint, render_template, jsonify, request, current_app from .auth import login_required import logging # 创建联系人管理蓝图 contacts_bp = Blueprint('contacts', __name__, url_prefix='/contacts') logger = logging.getLogger("ContactsBlueprint") # 联系人管理页面 @contacts_bp.route('/') @login_required def contacts_management(): """通讯录管理页面""" return render_template('contacts_management.html') # API路由 @contacts_bp.route('/api/all', methods=['GET']) @login_required def api_contacts_all(): """获取所有联系人信息API""" try: server = current_app.dashboard_server contacts = server.contact_manager.get_contacts() return jsonify({ "success": True, "data": { "contacts": contacts } }) except Exception as e: logger.error(f"获取所有联系人信息失败: {e}") return jsonify({"success": False, "error": str(e)}), 500 @contacts_bp.route('/api/statistics', methods=['GET']) @login_required def api_contacts_statistics(): """获取联系人统计信息API""" try: server = current_app.dashboard_server # 使用新的联系人分类方法获取统计信息 total, groups, personal, public, official = server.contact_manager.get_contact_statistics() return jsonify({ "success": True, "data": { "total": total, "groups": groups, "personal": personal, "public": public, "official": official } }) except Exception as e: logger.error(f"获取联系人统计信息失败: {e}") return jsonify({"success": False, "error": str(e)}), 500 @contacts_bp.route('/api/groups', methods=['GET']) @login_required def api_contacts_groups(): """获取群组联系人信息API""" try: server = current_app.dashboard_server group_contacts = server.contact_manager.get_group_contacts() return jsonify({ "success": True, "data": { "groups": group_contacts } }) except Exception as e: logger.error(f"获取群组联系人信息失败: {e}") return jsonify({"success": False, "error": str(e)}), 500 @contacts_bp.route('/api/personal', methods=['GET']) @login_required def api_contacts_personal(): """获取个人联系人信息API""" try: server = current_app.dashboard_server personal_contacts = server.contact_manager.get_personal_contacts() return jsonify({ "success": True, "data": { "personal": personal_contacts } }) except Exception as e: logger.error(f"获取个人联系人信息失败: {e}") return jsonify({"success": False, "error": str(e)}), 500 @contacts_bp.route('/api/official', methods=['GET']) @login_required def api_contacts_official(): """获取公众号联系人信息API""" try: server = current_app.dashboard_server official_accounts = server.contact_manager.get_official_accounts() return jsonify({ "success": True, "data": { "official": official_accounts } }) except Exception as e: logger.error(f"获取公众号联系人信息失败: {e}") return jsonify({"success": False, "error": str(e)}), 500 @contacts_bp.route('/api/public', methods=['GET']) @login_required def api_contacts_public(): """获取公共好友信息API""" try: server = current_app.dashboard_server public_contacts = server.contact_manager.get_public_contacts() return jsonify({ "success": True, "data": { "public": public_contacts } }) except Exception as e: logger.error(f"获取公共好友信息失败: {e}") return jsonify({"success": False, "error": str(e)}), 500