From f28ac0166536a2a4b68cac685a41ea667f60f7e9 Mon Sep 17 00:00:00 2001 From: yj <2077506045@qq.com> Date: 星期三, 03 九月 2025 14:43:03 +0800 Subject: [PATCH] 兼容企业微信 --- app/services/contact_sync.py | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 47 insertions(+), 0 deletions(-) diff --git a/app/services/contact_sync.py b/app/services/contact_sync.py index a775333..b5453c6 100644 --- a/app/services/contact_sync.py +++ b/app/services/contact_sync.py @@ -133,6 +133,9 @@ existing_contact.small_head = contact_data.get("smallHead") existing_contact.label_list = contact_data.get("labelList") existing_contact.v1 = contact_data.get("v1") + # 鍙湁褰撴柊鐨剋orkWcId涓嶄负绌烘椂鎵嶆洿鏂� + if contact_data.get("workWcId"): + existing_contact.work_wc_id = contact_data.get("workWcId") updated_count += 1 logger.debug(f"鏇存柊鑱旂郴浜轰俊鎭�: wc_id={wc_id}, nick_name={contact_data.get('nickName')}") else: @@ -150,6 +153,7 @@ small_head=contact_data.get("smallHead"), label_list=contact_data.get("labelList"), v1=contact_data.get("v1"), + work_wc_id=contact_data.get("workWcId"), # 娣诲姞浼佷笟寰俊ID ) db.add(new_contact) saved_count += 1 @@ -158,6 +162,10 @@ # 鎻愪氦浜嬪姟 db.commit() logger.info(f"鑱旂郴浜轰俊鎭繚瀛樺畬鎴�: 鏂板={saved_count}, 鏇存柊={updated_count}") + + # 鍚屾鑱旂郴浜哄悗鏇存柊Redis蹇界暐鍒楄〃 + self._update_redis_ignore_list(db) + return True except Exception as e: @@ -166,6 +174,45 @@ db.rollback() return False + def _update_redis_ignore_list(self, db: Session) -> bool: + """ + 鍚屾鑱旂郴浜哄悗鏇存柊Redis蹇界暐鍒楄〃 + 灏嗘暟鎹簱涓璫ontacts琛ㄤ腑work_wc_id涓嶄负绌虹殑璁板綍鐨剋ork_wc_id浣滀负wc_id娣诲姞鍒癛edis蹇界暐鍒楄〃 + + Args: + db: 鏁版嵁搴撲細璇� + + Returns: + 鏇存柊鎴愬姛杩斿洖True锛屽け璐ヨ繑鍥濬alse + """ + try: + # 鏌ヨ鎵�鏈墂ork_wc_id涓嶄负绌轰笖涓嶄负绌哄瓧绗︿覆鐨勮仈绯讳汉 + contacts_with_work_wc_id = db.query(Contact).filter( + Contact.work_wc_id.isnot(None) & (Contact.work_wc_id != "") + ).all() + + if not contacts_with_work_wc_id: + logger.info("娌℃湁鎵惧埌work_wc_id涓嶄负绌虹殑鑱旂郴浜�") + return True + + # 鎻愬彇鎵�鏈墂ork_wc_id + work_wc_ids = [contact.work_wc_id for contact in contacts_with_work_wc_id] + logger.info(f"鎵惧埌 {len(work_wc_ids)} 涓獁ork_wc_id涓嶄负绌虹殑鑱旂郴浜�") + + # 灏嗚繖浜泈ork_wc_id娣诲姞鍒癛edis蹇界暐鍒楄〃 + success = friend_ignore_service.add_friends_to_ignore_list(work_wc_ids) + + if success: + logger.info(f"鎴愬姛灏� {len(work_wc_ids)} 涓獁ork_wc_id娣诲姞鍒癛edis蹇界暐鍒楄〃") + else: + logger.error("娣诲姞work_wc_id鍒癛edis蹇界暐鍒楄〃澶辫触") + + return success + + except Exception as e: + logger.error(f"鏇存柊Redis蹇界暐鍒楄〃寮傚父: error={str(e)}") + return False + # 鍏ㄥ眬鑱旂郴浜哄悓姝ユ湇鍔″疄渚� contact_sync_service = ContactSyncService() -- Gitblit v1.9.1