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