From 307236190c98c13395b114df990eec50a9160251 Mon Sep 17 00:00:00 2001
From: yj <2077506045@qq.com>
Date: 星期三, 27 八月 2025 16:59:48 +0800
Subject: [PATCH] 更新

---
 app/services/friend_ignore_service.py |   40 ++++++++++++++++++++++++----------------
 1 files changed, 24 insertions(+), 16 deletions(-)

diff --git a/app/services/friend_ignore_service.py b/app/services/friend_ignore_service.py
index 2b0123f..2a8f71d 100644
--- a/app/services/friend_ignore_service.py
+++ b/app/services/friend_ignore_service.py
@@ -30,9 +30,14 @@
         """
         try:
             with next(get_db()) as db:
-                contact = db.query(Contact).filter(Contact.nick_name == nickname).first()
+                contact = (
+                    db.query(Contact).filter(Contact.nick_name == nickname).first()
+                )
                 if contact:
-                    return contact.wc_id
+                    wc_id = contact.wc_id
+                    if contact.work_wc_id:
+                        wc_id += f",{contact.work_wc_id}"
+                    return wc_id
                 else:
                     logger.warning(f"鏈壘鍒版樀绉颁负 '{nickname}' 鐨勮仈绯讳汉")
                     return None
@@ -74,10 +79,10 @@
 
             # 娓呯┖鐜版湁鐨勫拷鐣ュ垪琛�
             redis_queue.redis_client.delete(self.ignore_list_key)
-            
+
             # 鎵归噺娣诲姞濂藉弸w_id鍒板拷鐣ュ垪琛�
             redis_queue.redis_client.sadd(self.ignore_list_key, *friends)
-            
+
             logger.info(f"宸插皢 {len(friends)} 涓ソ鍙嬫坊鍔犲埌蹇界暐鍒楄〃")
             return True
 
@@ -111,21 +116,26 @@
 
             # 妫�鏌ユ槸鍚﹀湪鐧藉悕鍗曚腑锛堥�氳繃鏄电О锛�
             whitelist_wids = self._get_whitelist_wids()
-            if w_id in whitelist_wids:
+
+            if any(w_id in wids for wids in whitelist_wids):
                 logger.info(f"w_id鍦ㄧ櫧鍚嶅崟涓紝涓嶅拷鐣ユ秷鎭�: w_id={w_id}")
                 return False
 
             # 妫�鏌ユ槸鍚﹀湪蹇界暐鍒楄〃涓�
-            is_in_ignore_list = redis_queue.redis_client.sismember(self.ignore_list_key, w_id)
+            is_in_ignore_list = redis_queue.redis_client.sismember(
+                self.ignore_list_key, w_id
+            )
 
             if is_in_ignore_list:
                 # 濡傛灉鍦ㄥ拷鐣ュ垪琛ㄤ腑锛屾鏌ユ槸鍚﹀湪娴嬭瘯缇ょ粍涓�
                 if group_id and silence_service.is_test_group(group_id):
-                    logger.info(f"娴嬭瘯缇ょ粍涓殑濂藉弸娑堟伅涓嶈蹇界暐: w_id={w_id}, group_id={group_id}")
+                    logger.info(
+                        f"娴嬭瘯缇ょ粍涓殑濂藉弸娑堟伅涓嶈蹇界暐: w_id={w_id}, group_id={group_id}"
+                    )
                     return False
-                
+
                 logger.info(f"w_id鍦ㄥ拷鐣ュ垪琛ㄤ腑锛屽拷鐣ユ秷鎭�: w_id={w_id}")
-                
+
             return is_in_ignore_list
 
         except Exception as e:
@@ -233,7 +243,7 @@
                 "in_ignore_list": False,
                 "final_ignored": False,
                 "reason": "",
-                "whitelist_nicknames": settings.friend_ignore_whitelist
+                "whitelist_nicknames": settings.friend_ignore_whitelist,
             }
 
             if not settings.friend_ignore_enabled:
@@ -244,7 +254,9 @@
                 info["reason"] = "鍦ㄧ櫧鍚嶅崟涓紝涓嶄細琚拷鐣�"
                 return info
 
-            info["in_ignore_list"] = redis_queue.redis_client.sismember(self.ignore_list_key, w_id)
+            info["in_ignore_list"] = redis_queue.redis_client.sismember(
+                self.ignore_list_key, w_id
+            )
 
             if info["in_ignore_list"]:
                 info["final_ignored"] = True
@@ -256,11 +268,7 @@
 
         except Exception as e:
             logger.error(f"鑾峰彇蹇界暐鐘舵�佷俊鎭紓甯�: w_id={w_id}, error={str(e)}")
-            return {
-                "w_id": w_id,
-                "error": str(e),
-                "final_ignored": False
-            }
+            return {"w_id": w_id, "error": str(e), "final_ignored": False}
 
 
 # 鍏ㄥ眬濂藉弸蹇界暐鏈嶅姟瀹炰緥

--
Gitblit v1.9.1